Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Регистры сегментов и дескрипторов сегментов

Архитектура микропроцессора поддерживает организацию памяти в виде сегментов. Всего имеется 6 сегментных регистров.

В реальном режиме: для хранения адресов начала соответствующих сегментов используется 16-хразрядные регистры CS, SS, DS, ES, FS, GS. Они выполняют те же функции, что и в микропроцессоре 8086. то есть, используются при вычислении физических адресов путем суммирования базового адреса, находящегося в сегментном регистре, со смещением. Такое суммирование выполняет блок сегментации, где располагаются и сами сегментные регистры. Максимальный размер сегмента в реальном режиме 64 Кбайт.

В защищенном режиме содержимое сегментного регистра используется как селектор сегмента. С каждым из сегментных регистров связан регистр дескриптора сегмента. Обращение к дескриптору осуществляется с помощью селектора, который представляет собой 16-хразрядный указатель, имеющий 3 поля.

Биты 0 и 1 – это поле RPL, которое определяет уровень привилегий запроса и используется в механизме защиты памяти.

Бит 2 – Это поле TI, которое служит индикатором таблицы. При TI=0 используется глобальная таблица дескрипторов GDT. При TI=1 используется локальная таблица дескрипторов LDT.

Поле INDEX – служит индексом для выбора одного из 8192 дескрипторов (213), содержащихся в таблицах GDT или LDT. Сами 8-мибайтовые дескрипторы хранятся в памяти в составе массивов данных, сформированных в виде таблиц. В микропроцессоре используется 3 таблицы дескрипторов: GDT, LDT и таблица дескрипторов прерывания IDT.

С каждой из таблиц связан соответствующий регистр, который находится в микропроцессоре. Это регистры: GDTR, LDTR и IDTR.

В качестве примера приведем формат регистра GDTR. Регистр GDTR 48-разрядный. 32-разряда задают базовый адрес таблицы дескрипторов, а 16 разрядов указывают размер этой таблицы в байтах.

 

При обращении селектора к таблице GDT сдвинутый на 3 разряда влево (умноженный на 8) селектор служит в качестве смещения для формирования адреса дескриптора. Это смещение сравнивается с границей (с размером) таблицы дескрипторов, находящейся в разрядах с 0 по 15 регистра GDTR. Если смещение превышает границу, то вырабатывается соответствующее прерывание. Если нарушения границы нет, то смещения суммируются с базовым адресом таблицы дескрипторов. В результате суммирования получается логический адрес младшего байта, выбираемого дескриптора.

Дескриптор имеет формат двойного слова, т.е. 8 байт или 64 разряда.

32-хразрядный базовый адрес сегмента (база) и 20-тиразрядный размер сегмента размещены по частям в различных байтах дескриптора. Пять байт занимает байт доступа, который определяет права доступа к выбираемому сегменту. Этот байт используется в механизме защиты. Четыре разряда 6-го байта определяют следующие атрибуты сегмента:

G – бит дробности, который указывает, в каких единицах задан размер сегмента;

При G = 0 – размер задан в байтах и максимальный объем сегмента в этом случае равен 220 = 1 Мб;

При G = 1 – размер задан в страницах, объемом 4 кб каждая страница. Максимальный объем сегмента в этом случае равен 212 х 220 = 232 = 4 Гб;

D – бит разрядности, который определяет разрядность формируемого относительного адреса или операнда.

При D = 0 – адрес или операнд – 16-тиразрядный;

При D = 1 – адрес или операнд – 32-хразрядный.

53-ий разряд – всегда = 0.

52-ой – имеет произвольное значение Х.

Дескриптор – это совокупность разрядов, определяющая основные программные объекты. Программными объектами могут быть сегменты или шлюзы.

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

 

Сегментная организация памяти

В защищенном режиме для формирования линейного адреса используется две компоненты:

1)16-тиразрядный селектор для определения базового адреса сегмента, который содержится в дескрипторе.

2)16 или 32-хразрядный эффективный адрес, который зависит от режима работы и способа адресации.

Проиллюстрируем процесс вычисления линейного адреса с помощью следующей схемы:

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

При отсутствии страничной организации памяти линейный адрес является физическим адресом для обращения к элементу памяти.

 

Страничная организация памяти

Страничный диспетчер памяти, имеющийся в микропроцессоре, обеспечивает следующую возможность: 1)представляет пользователю возможность работать с большим адресным пространством;

2)обеспечивает защиту ОС и программное обеспечение пользователя;

3)реализует быструю трансляцию адресов.

Линейное адресное пространство памяти объемом 4 Гб при страничной организации разбито на 220 страниц объемом по 4 кб каждая страница. Фиксированный размер всех страниц позволяет загружать любую требуемую виртуальную страницу в нужную физическую страницу.

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

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

В свою очередь каждый раздел может содержать до 210 страниц объемом по 4 кб каждая. Начальные (базовые) адреса страниц каждого раздела хранятся в соответствующей таблице страниц, содержащейся в памяти. Обращение к этой таблице производится с помощью каталога, в котором содержатся начальные адреса таблиц страниц для всех разделов. Таким образом, страницы могут быть рассеяны по разным частям памяти, а их размещение в памяти определяется содержимым каталогов разделов и таблиц страниц.

 
 

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

 

TABLE – указывает относительный адрес таблицы страниц выбираемого раздела в каталоге.

PAGE – задает относительный адрес требуемой страницы данного раздела.

BYTE – содержит относительный адрес выбираемого на странице байта.

Каталог разделов занимает одну страницу памяти, где для каждого раздела содержатся 32-разрядные указатели входа в таблицу страниц этого раздела. Каждая из таблиц страниц также занимает одну страницу памяти, где для каждой страницы дается 32-хразрядный указатель входа в эту страницу.

Указатели входа в раздел и в страницу имеют одинаковый формат:

Каждый указатель содержит информацию, определяющую порядок использования страниц. Старшие 20 разрядов занимает базовый адрес. Остальные разряды имеют следующий смысл.

Р – бит присутствия. Если Р=1, то разрешается использование таблицы страниц, если Р=0, то такое использование запрещается. При Р=0 попытка обращения к соответствующему разделу или странице вызывает прерывание из-за отсутствия нужной страницы в оперативной памяти. После загрузки нужной страницы в память, бит Р устанавливается в «1» и в этом случае обращение к данной странице становится возможной. Это нужно для того, чтобы ОС знала, где находится страница.

R/W - бит чтения/записи.

U/S - бит пользователь/супервизор.

Эти два бита определяют право доступа к соответствующей странице или разделу для программ пользователя. Программа пользователя обычно имеет самый низкий уровень привилегий равный 3. Если осуществляется запрос с уровнем привилегий равным 3, то при значении U/S = 0 программе пользователя запрещается доступ к разделу или странице.

При U/S = 1 обращение разрешается, но при этом учитывается значение бита R/W.

Если R/W = 0, то программе пользователя разрешается только чтение раздела или страницы.

Если R/W = 1, то разрешается как чтение, так и запись. Если осуществляются запросы с большим уровнем привилегий (0, 1 и 2), то допускается запись и чтение разделов и страниц при любых значениях ‘1’ и ‘2’ разрядов.

Такие уровни привилегий имеет ОС.

А - бит доступа. Этот бит автоматически устанавливается в «1» микропроцессором при обращении к данному разделу или странице для записи или чтения.

D – бит «мусора». В указателе кадра страницы этот бит устанавливают в «1» при записи на данную страницу. Для указателей таблиц страниц значение бита D является неопределенной.

Биты D и A используются ОС, поддерживающей виртуальную память, для определения в ОЗУ тех разделов и страниц, которые подлежат удалению из ОЗУ, поскольку к ним долгое время не было обращения. Проверку и сброс этих разрядов выполняет ОС.

Алгоритм формирования физического адреса:


 

Содержимое CR3 (регистр управления) задает старшие 20 разрядов базового адреса для входа в каталог раздела. Для получения физического адреса строки каталога разделов к этим 20 разрядам добавляется 10-тиразрядное поле TABLE линейного адреса и 2 нулевых младших разрядов. По полученному таким образом адресу обращаются к каталогу разделов, откуда выбирают указатели входа в таблицу страниц. Этот указатель содержит 20-разрядный базовый адрес таблицы страниц. К этим 20 разрядам добавляется поле PAGE и 2 нулевых младших разряда. В результате получается адрес строки таблицы страниц. В этой строке находится указатель входа в страницу, содержащий 20-разрядный базовый адрес страницы. Добавление к этому базовому адресу 12-тиразрядного поля BYTE дает физический адрес байта.

Существенное сокращение времени преобразования адресов в микропроцессоре достигается путем внутренней ассоциативной памяти, которая называется «буфером ассоциативной трансляции» и обозначается TLB.

 

 

Последнее изменение этой страницы: 2016-07-23

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...