Страничная организация памяти
Страничная организация памяти обеспечивает более эффективное заполнение памяти по сравнению с сегментной, однако, требует дополнительного времени и специальных аппаратных средств для преобразования адресов. Страничная организация имеет место, если в регистре управления CR3 бит 31 имеет значение PG=1.
Страница – это блок в 4 Кбайт физической памяти. Страницы начинаются на границах 4 Кбайт областей памяти и фиксированы по размеру. Они не имеют непосредственного отношения к логической структуре программы. При страничной организации сегмент разбивается на отдельные разделы, число которых может достигать (рисунок 8.4). Раздел может содержать 1024 страницы объемом по 4 Кбайта каждая. Границы страниц жестко фиксированы.
Адрес страницы указывает физический начальный адрес и его младшие 12 байтов всегда равны 0. Таким образом, начальные адреса страниц имеют значения от 00000000Н до FFFFF000H. Начальные адреса страниц данного раздела хранятся в соответствующей таблице страниц, содержащейся в памяти.
Обращение к этой таблице производится с помощью каталога, в котором содержатся адреса таблиц для всех разделов. В каталоге страниц адрес кадра страницы – это адрес таблицы (раздела) страниц. В таблице страниц адрес кадра страницы является адресом кадра той страницы, который содержит нужный операнд в памяти.
Таблица страниц – это массив 32 – разрядных спецификаторов страниц. Таблица также является страницей и занимает 4 Кбайта или до 1 Кбайта 32 – разрядных кодов (слов). Каждое слово содержит базовый адрес страницы (12 бит), а также 12 битовых полей используемых для защиты страниц (бит пользователь/супервизор, чтение/запись, бит присутствия, бит обращения и др.).
Таким образом, страницы, содержащие отдельные фрагменты программ или данных, могут быть рассеяны по разным частям памяти, а их размещение определяется содержанием каталога разделов и таблиц страниц. При этом границы страниц и сегментов могут не совпадать.
Страничная организация памяти обеспечивает более эффективное использование памяти по сравнению с сегментной, однако, требует дополнительного времени и специальных аппаратных средств для преобразования адресов. Линейный 32 – разрядный адрес при этом является исходной информацией для формирования физического адреса с помощью каталога разделов и таблиц страниц. Базовый физический адрес сегмента загружается из дескриптора сегмента по его селектору в регистр CR3.
Линейный адрес при страничной организации рассматривается как совокупность трех полей (рисунок 8.5):
Поле TABLE (Раздел) включает разряды А31 – А22 линейного адреса, указывает относительный адрес таблицы страниц выбираемого раздела в каталоге.
Поле PAGE (А21 – А12) задает относительный адрес требуемой страницы раздела.
Поле BYTE(А11 – А0) содержит относительный адрес выбираемого на странице байта.
Каталог занимает одну страницу памяти, где для каждого из 1024 возможных разделов содержатся 32 – разрядные указатели входа в таблицу страниц этого раздела. Каждая из таблиц страницы также занимает одну страницу, где для каждой из 1024 страниц раздела даются 32 – разрядные указатели входа в нее.
Содержимое регистра управления CR3 задает старшие 20 разрядов адреса (А31 –А12) ячейки памяти, содержащий указатель входа в таблицу страниц (оглавления) раздела, т.е. адрес начала каталога раздела сегмента.
Разряды А11 – А2 адреса этой ячейки составляют относительный адрес, содержащегося в поле TABLE линейного адреса. Старшие из дескриптора 20 разрядов указателя задают базовый адрес, определяющий начало таблицы страниц.
PAGE определяет разряды А11 – А2 адреса ячеек памяти, хранящей указатель входа в кадр выбираемой страницы. Этот указатель имеет такой же формат, как и указатель входа в таблицу. Его старшие 20 разрядов служат базовым адресом, определяющим адрес начала страницы (первого байта). Добавление к базовому адресу поля BYTE, позволяет получить физический адрес выбираемого байта.
Таким образом, при страничной организации памяти 32 – разрядный (физический) адрес формируется как сумма базового адреса задаваемого указателем входа в кадр страницы, и относительного адреса, содержащегося в поле BYTE линейного адреса.
Помимо базового адреса указатели входа в таблицу страниц и кадр страницы содержат дополнительную информацию, определяющую порядок их использования. Эта информация задается значениями определенных битов, которые:
§ разрешают или запрещают обращение к соответствующему разделу или странице (бит А0);
§ определяют право доступа к соответствующим разделам или страницам для программ пользователя, имеющих минимальные привилегии (бит А1);
§ фиксируют обращение к данному разделу или странице – запись или чтение (бит А5);
§ фиксируют процесс записи на данную страницу (бит А6);
§ определяют время последнего обращения к данному разделу или странице. Эта информация используется для определения разделов и страниц, подлежащих замене из внешней памяти (биты А11 – А9).
В 32-разрядных процессорах последующих поколений был введен ряд существенных дополнений:
§ введен внутренний кэш первого уровня (Cashe Level 1) размером 8 Кбайт единый для данных и команд и предусмотрены все необходимые средства для построения памяти с двухуровневым кэшированием, допускающей работу и в мультипроцессорных системах;
§ повышена производительность локальной шины – введены пакетные циклы, позволяющие передавать очередное слово данных в каждом такте шины (а не через такт, как в обычном режиме);
§ наряду с использованием) полной системы команд CISC (Complete Instruction Set Computers) применено RISC–ядро (Reduced Instruction Set Computers), позволяющее наиболее часто встречающиеся команды выполнять за один такт, за счет чего средняя производительность МП по сравнению с первыми 32-рязрядными процессами удвоилась;
§ в состав БИС процессора введен высокопроизводительный математический сопроцессор;
§ увеличена очередь команд до 16 байт;
§ введены буферы отложенной записи;
§ расширены средства тестирования (введены регистры TR3, TR4, TR5 для тестирования внутреннего кэша);
§ добавлены средства тестирования процессора извне по интерфейсу JTAG;
§ введено умножение тактовой частоты системной платы (кратность частоты может быть увеличена в 2, 2.5 и 3 раза);
§ добавлены новые команды (BSWAP, XADD – для прикладных задач; CMPXHG, INVLD, WBINVD – для управления кэшем);
§ введены раздельные 32-разрядные ШД и ША.
Шина адреса позволяет адресовать 4 Гб физической памяти (00000000-FFFFFFFFh) в защищенном режиме и 1 Мб из области младших адресов в реальном режиме. При выполнении инструкций ввода-вывода процессор адресуется к области в 64 Кб пространства ввода вывода (00000000-0000FFFFh).
ЛинииА[31:2] идентифицируют адрес с точностью до двойного слова, а в пределах этого слова сигналыВЕ[0:3] непосредственно указывают, какие байты используются в данном цикле (ВЕ0 – 1 байт; ВЕ3 – четвертый).
Шина данных D[31:0] допускает как 32-разрядный режим обмена, так и 16-и 8-разрядный, в зависимости от состояния входных сигналов BS16# и BS8#. СигналыBS16# или BS8# вводятся внешней схемой, если текущий цикл адресуется к 16- или 8-битному устройству, подключенному к младшей части шины данных, BS8# имеет более высокий приоритет. Для связи с системной шиной, имеющей возможность подключения 8-, 16- и 32-битных устройств (шины ISA и EISA) и полную шину адреса, включающую сигналы А0, А1 и SBHE#, недостающие сигналы генерируются из сигналов BE [0:3].
Каждый байт шины данных имеет бит паритета DP[3:0]. Схемы паритета генерируют корректные контрольные биты в циклах записи, а в циклах чтения в случае ошибки паритета только вырабатывается сигнал ошибки на выходе РСНК#, никак не влияющий на работу процессора. Он может использоваться внешними схемами по усмотрению разработчика системной платы. Контроль четности (число единиц в байте вместе с битом паритета должно быть четным) выполняется для всех байт, участвующих в конкретном цикле.
Тип цикла локальной шины определяется сигналамиM/IO#, D/C#, W/R# и LOCK# во время активности сигналаADS# .
Для управления шинными циклами процессор имеет входные сигналы готовности RDY# и BRDY#. Сигнал BRDY# вырабатывает устройства, поддерживающие пакетный режим обмена. На возможность пакетного продолжения начатого цикла процессор указывает выходным сигналом BLASTS.
Дата добавления: 2016-02-09; просмотров: 1006;