Понятие оперативной памяти. Формирование адреса в процессорах с архитектурой IA-32.

Понятие оперативной памяти.

Оперативная память – последовательность ячеек памяти для временного хранения программ и данных, каждая из которых имеет свой номер, т.е. адрес.

На самом нижнем уровне память компьютера можно рассматривать как массив битов.

Один бит может хранить значение 0 или 1.

Для физической реализации битов и работы с ними идеально подходят логические схемы.

Микропроцессор не работает с памятью на уровне битов, поэтому реально ОЗУ организовано как последовательность ячеек – байтов. Один байт состоит из 8 бит. Каждому байту соответствует свой уникальный адрес (его номер), называемый физическим.

Диапазон значений физических адресов зависит от разрядности шины адреса микропроцессора. Размер адресуемой памяти ОЗУ ограничен возможностями адресной шины процессора.

Для i486 и Pentium он находится в пределах от 0 до 232 – 1 (4 Гбайт). Для микропроцессоров семейства Р6 (Pentium Рrо/П/Ш) этот диапазон шире – от 0 до 236 -1 (64 Гбайт).

Механизм управления памятью полностью аппаратный и позволяет обеспечить:

1 - компактность хранения адреса в машинной команде;

2 - гибкость механизма адресации;

3 - защиту адресных пространств задач в многозадачной системе;

4 - поддержку виртуальной памяти.

Микропроцессор аппаратно поддерживает две модели использования оперативной памяти:

- сегментированную (сегментная) модель. В этой модели программе выделяются непрерывные области памяти (сегменты), а сама программа может обращаться только к данным, которые находятся в этих сегментах;

- страничную модель. Представляет собой надстройку над сегментированной моделью. Оперативная память рассматривается как совокупность блоков фиксированного размера (4 Кбайт). Применение этой модели связано с организацией виртуальной памяти, что позволяет операционной системе использовать для работы программ пространство памяти большее, чем объем физической памяти.

Виртуальная память отличается от обычной оперативной памяти тем, что находится обычно на внешнем носителе информации, где хранятся редко используемые фрагменты кода, которые могут подгружаться в оперативную память по мере необходимости. Это позволяет снять ограничение, накладываемое на объем физической оперативной памяти. Для микропроцессоров i486 и Pentium размер возможной виртуальной памяти может достигать 4 Тбайт.

 

Формирование адреса в процессорах с архитектурой IA-32.

Команды работают с регистрами, константами и с операндами, находящимися в оперативной памяти, – логическими адресами. Логический (виртуальный) адрес получается аналогично приведенному выше и имеет следующий формат:

 

<селектор сегмента>:<32-разрядный эффективный адрес>

 

Эффективный 32-разрядный адрес (ЕА) в общем случае вычисляется сложением любой комбинации следующих четырех адресных элементов:

 

ЕА = База + (Индекс * Масштаб) + Смещение

 

Смещение – 8-, 16- или 32-разрядное значение.

База (Base) – содержимое любого из 32-разрядных регистров общего назначения.

Индекс (Index) – содержимое любого из 32-разрядных регистров общего назначения, кроме ESP.

Масштаб (Scale) – константа 2, 4 или 8, на которую умножается значение индексного регистра.