Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
81
Добавлен:
29.03.2016
Размер:
585.73 Кб
Скачать

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

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

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

Логический адрес называемый так же виртуальным, состоит из селектора (в реальном режиме просто адреса сегмента и смещения). Смещение формируется суммированием компонентов (база, индекс, смещение DISP) в эффективный адрес поскольку каждая задача может иметь до 16К селекторов, а смещение ограниченное размером сегмента может достигать 4Гбайт, логическое адресное пространство для каждой задачи может достигать 64Тбайт. Все это пространство в виртуальной памяти в принципе доступно программисту.

Блок сегментации транслирует логическое адресное пространство в 32 битное пространство линейных адресов. Линейный адрес образуется сложением базового адреса сегмента с эффективным адресом. Базовый адрес сегмента в реальном режиме образуется уменьшением содержимого используемого сегментного регистра на 16. В защищенном режиме базовый адрес загружается из дескриптора хранящегося в таблице по селектору, загруженному в используемый сегментный регистр. Физический 32 битный адрес памяти образуется после преобразования линейного адреса блоком страничной переадресации. В простейшем случае (при отключения последнего) линейный адрес совпадает с физическим, т.е. присутствующем на внешней шине адреса микропроцессора. Включенный блок страничной переадресации осуществляет трансляцию линейного адреса в физический страницами по 4Кбайта. Этот блок может включаться только в защищенном режиме. Как и у 86 для обращения к памяти (совместно с внешней схемой) формируются линейные сигналы MEMWR# и MEMRD# для операции записи и чтения соответственно. Шина адреса в 32 бита позволяет адресовать 4Гбайта физической памяти, но в реальном режиме доступен только 1Мбайт начинающейся с младших адресов. В реальном режиме по адресации памяти обеспечивается совместимость с 86, размер сегмента фиксирован, как и 86 64Кбайтами, попытка использования эффективного адреса выходившего за границу сегмента при 32 битной адресации вызывает исключение типа 13. При 16 битной адресации при вычислении эффективного адреса возможный перенос в разряд А16 игнорируется, и сегмент сворачивается в кольцо, как и в 86. Средства контроля следят за переходом через границу сегмента во время обращения по приграничному адресу. При попытках адресации к словам старшие байты, которых выходят за границы сегмента или выполнения инструкций не изменяется в данном сегменте микропроцессор генерирует исключение 13. При попытке выполнения инструкций ESCAPE с операндом памяти не умещается в сегменте, генерируется исключение 9 (только для 386).

Система команд 32 разрядных микропроцессоров предусматривает 11 режимов адресации операндов, из них только 2 не имеют отношения к памяти:

  • когда операнд содержится в регистре микропроцессора,

  • когда операнд непосредственно содержится в самой команде.

Остальные 9 режимов: косвенная регистрация, базовая, индексная, масштабированная индексная, базово индексная, масштабированная, прямая, базово индексная со смещением и масштабированная базово индексная со смещением. Используются при формировании эффективного адреса операнда из памяти. Эффективный адрес вычисляется с использованием комбинации следующей компоненты:

  • смещение (DISP)-это 8, 16 или 32 разрядное число включенное в команду;

  • база-это содержание базового регистра обычно используется для указания на начало массива;

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

Эффективный адрес вычисляется по формуле EA=B+I?S+Disp. Отдельные слагаемые в этой формуле могут отсутствовать.

Микропроцессор может использовать режимы 32 или 16 битной адресации. 16 разрядная адресация соответствует режимам 86 и 286 при этом в качестве компонентов адреса используются младшие 16 бит соответствующих регистров. 32 битная адресация использует расширенные 32 разрядные регистры и имеет дополнительные режимы использующие масштабированные индексы. В реальном режиме по умолчанию используется 16 битная адресация, но с помощью префикса изменения разрядности адреса для текущей инструкции можно переключиться в 32 битный режим, при этом появляются дополнительные возможности адресации (масштабированные, но вычисленное значение ЕАвсе равно не может преодолеть 64Кбайтный барьер, при такой попытке генерируется исключение 13). В защищенном режиме адресация по умолчанию определяется битомDдескриптора используемого кодового сегмента (D=0 16,D=1 32). Префикс разрядности адреса переключает разрядность для текущей инструкции на противоположную. При обращении к памяти использование сегментных регистров по умолчанию определяется типом обращения на время текущей инструкции, при необходимости для большинства типов обращений возможно использование альтернативного сегментного регистра на что указывает префикс замены сегмента перед кодом инструкции.

Соседние файлы в папке Лекции