Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы микропроцессорной техники. Енин В.И., Алгазинов Э.К.doc
Скачиваний:
71
Добавлен:
30.04.2022
Размер:
14.75 Mб
Скачать

11.1.2. Организация памяти

В 32-разрядных процессорах используется побайтная адресация. Байты, слова (16 бит), двойные слова (32 бит) записываются в последовательности байтовых ячеек памяти, начиная с младшего байта. Адресом слова или двойного слова является адрес его младшего байта.

Более крупными единицами являются страницы и сегменты. Память может логически организовываться в виде одного или множества сегментов, которые могут выгружаться на диск и по мере необходимости с него подкачиваться в память. Кроме сегментации, в защищенном режиме (Paging) возможно разбиение логической памяти на страницы размером 4 Кбайта, каждая из которых может отображаться на любую область физической памяти. Сегментация и разбиение на страницы могут применяться в любых сочетаниях. Сегментация является средством организации логической памяти, которая используется на прикладном уровне. Разбиение на страницы используется на системном уровне для управления физической памятью.

Применительно к памяти различают три адресных пространства: логическое, линейное и физическое. Основным режимом работы 32-разрядных процессоров является защищенный режим, в котором работают все механизмы преобразования адресных пространств.

Формирование физического адреса (Рис.11.3.) начинается с формирования эффективного адреса, получаемого суммированием компонентов base, index, displacement с учетом масштаба scale. Логический адрес, называемый виртуальным, состоит из селектора сегмента (в реальном режиме – просто адреса сегмента) и эффективного адреса, называемого смещением (offset). Блок сегментации транслирует логическое адресное пространство в пространство линейных адресов. Линейный адрес образуется сложением базового адреса сегмента с эффективным адресом. Базовый адрес сегмента в реальном режиме получается умножением содержимого используемого сегментного регистра на 16 (сдвигом влево на 4 разряда). В защищенном режиме базовый адрес загружается из дескриптора, хранящегося в таблице. Запись в дескрипторной таблице определяется по селектору, загруженному в используемый сегментный регистр.

32-битный физический адрес памяти образуется после преобразования линейного адреса блоком страничной переадресации. Он выводится на внешнюю шину адреса процессора. В простейшем случае (при отключенном блоке страничной переадресации) физический адрес совпадает с линейным. Включенный блок страничной переадресации осуществляет трансляцию линейного адреса в физический страницами размером 4 Кбайт (для старших поколений процессоров также возможны страницы размером 2 или 4 Мбайт). Блок переадресации может включаться только в защищенном режиме.

32-разрядная шина адреса позволяет адресовать 4 Гбайт физической памяти, но в реальном режиме доступен только 1 Мбайт, начинающийся с младших адресов. В реальном режиме при попытке использования эффективного адреса, выходящего за границу 64-килобайтного сегмента вызывается исключение.

11.1.3. Режимы адресации

Система команд 32-разрядных процессоров предусматривает 11 режимов адресации. При обращении к памяти эффективный адрес вычисляется с использованием следующих компонентов:

смещения (Displacement или Disp) — 8-, 16- или 32-битное числа, включенного в команду;

базы (Base) — содержимое базового регистра, обычно используемого указания на начало некоторого массива;

индекса (Index) — содержимого индексного регистра, обычно используемого для выбора элемента массива;

масштаба (Scale) — множителя (1, 2, 4 или 8), указанного в коде инструкции. Этот элемент используется для указания размера элемента массива. Метод доступен только при 32-битной адресации.

Эффективный адрес вычисляется по формуле

ЕА = Base + Index  Scale + Disp.

Отдельные слагаемые в этой формуле могут отсутствовать.

Процессор может работать с 32- или 16-битной адресацией. 16-битна адресация работает так же, как и в процессорах 8086 и 80286, при этом используются младшие 16 бит соответствующих регистров. В реальном режиме по умолчанию используется 16-битная адресация. Но, с помощью префикса изменения разрядности адреса текущей инструкции, можно переключиться на 32-битную.

В защищенном режиме адресация по умолчанию определяется битом D дескриптора используемого кодового сегмента: при D=0 — 16 бит, при D=1 используется 32 бита. Префикс разрядности адреса переключает разрядность для текущей инструкции на противоположную.

Процессор предусматривает 11 режимов адресации:

    • регистровый – операнд содержится в регистре;

    • непосредственный – операнд размещается за словом команды;

    • прямая адресация (Direct Mode) с эффективным адресом равным EA=Disp;

    • косвенная регистровая адресация (Register Indirect Mode) с эффективным адресом EA=Base;

    • базовая адресация (Based Mode) с эффективным адресом EA=Base+Disp;

    • индексная адресация (Index Mode) EA=Index+Disp;

    • масштабированная индексная адресация (Scaled Index Mode) EA=ScaleIndex+Disp;

    • базово-индексная адресация (Based Index Mode) EA=Base+Index;

    • масштабированная базово-индексная адресация (Based Scaled Index Mode) EA= Base +ScaleIndex;

    • базово-индексная адресация со смещением (Based Index Mode with Displacement) EA=Base+Index+Disp;

    • масштабированная базово-индексная адресация со смещением (Based Scaled Index Mode with Displacement) EA=Base+ScaleIndex+Disp.

При обращении к памяти использование сегментных регистров по умолчанию определяется типом обращения. Для большинства типов обращения возможно на время текущей инструкции использовать альтернативный сегментный регистр, путем установки префикса замены регистра перед кодом инструкции.

Соседние файлы в предмете Микропроцессорная техника