double arrow

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

Физическая память, к которой микропроцессор имеет доступ, называется оперативной памятью (или оперативным запоминающим устройством - ОЗУ). ОЗУ представляет собой цепочку байтов, имеющих свой уникальный адрес (его номер), называемый физическим. Диапазон значений физических адресов от 0 до 4 Гбайт. Механизм управления памятью полностью аппаратный.

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

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

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

Использование и реализация этих моделей зависит от режима работы микропроцессора:

  1. Режим реальных адресов (реальный режим). Режим аналогичный работе i8086 процессора. Необходим для функционирования программ, разработанных для ранних моделей процессоров.
  2. Защищенный режим. В защищенном режиме появляется возможность многозадачной обработки информации, защиты памяти с помощью четырехуровнего механизма привилегий и ее страничной организации.
  3. Режим виртуального 8086. В этом режиме появляется возможность работы нескольких программ для i8086. При этом возможна работа программ реального режима.

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

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

Каждая программа в общем случае может состоять из любого количества сегментов, но непосредственный доступ она имеет к трем основным: кода, данных и стека – и от одного до трех дополнительных сегментов данных. Операционная система размещает сегменты программы в оперативной памяти по определенным физическим адресам, после чего помещает значения этих адресов в соответствующие регистры. Внутри сегмента программа обращается к адресам относительно начала сегмента линейно, то есть начиная с адреса 0 и заканчивая адресом, равным размеру сегмента. Относительный адрес или смещение, который микропроцессор использует для доступа к данным внутри сегмента, называется эффективным.

Формирование физического адреса в реальном режиме

В реальном режиме диапазон изменения физического адреса от 0 до 1 Мбайт. Максимальный размер сегмента 64 Кбайт. При обращении к конкретному физическому адресу оперативной памяти определяется адрес начала сегмента и смещение внутри сегмента. Адрес начала сегмента берется из соответствующего сегментного регистра. При этом в сегментном регистре содержатся только старшие 16 бит физического адреса начала сегмента. Недостающие младшие четыре бита 20-битного адреса получаются сдвигом значения сегментного регистра влево на 4 разряда. Операция сдвига выполняется аппаратно. Полученное 20-битное значение и является настоящим физическим адресом, соответствующим началу сегмента. То есть физический адрес задается как пара "сегмент:смещение", где "сегмент" (segment) - это первые16 битов начального адреса сегмента памяти, которому принадлежит ячейка, а "смещение" - 16-битовый адрес этой ячейки, отсчитанный от начала данного сегмента памяти (величина 16*сегмент+смещение дает абсолютный адрес ячейки). Если, например, в регистре CS хранится величина 1234h, тогда адресная пара 1234h:507h определяет абсолютный адрес, равный 16*1234h+507h =12340h+507h = 12847h. Такая пара записывается в виде двойного слова, причем (как и для чисел) в "перевернутом" виде: в первом слове размещается смещение, а во втором - сегмент, причем каждое из этих слов в свою очередь представлено в "перевернутом" виде. Например, пара 1234h:5678h будет записана так: | 78 | 56| 34 | 12|.

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


Сейчас читают про: