Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура компьютеров_1 / 9_Процессор-суперскаляр-Intel.doc
Скачиваний:
48
Добавлен:
20.03.2015
Размер:
285.18 Кб
Скачать

9.6.1. Сегментация памяти для семейства процессоров ia-32

В разделе 5.1 кратко рассказывалось об использовании сегментных регистров в архитектуре IA-32 для формирования адресов памяти (см. рис. 5.1). Мы про­должим развивать эту тему. Для начала читателю полезно будет узнать, как сег­ментные регистры использовались в процессоре 8086. Более современные про­цессоры IA-32 способны функционировать в так называемом реальном режиме, где они могут выполнять машинный программный код процессора 8086.

Реальный режим

Реальный режим процессоров IA-32 — это режим генерирования адресов, исполь­зуемый процессором 8086. В нем память рассматривается как последователь­ность сегментов объемом по 64 Кбайт. Для каждого сегмента 16-разрядные ис­полнительные адреса формируются с использованием режимов адресации про­цессора 8086. Для доступа к сегментам кода, стека и двум сегментам данных в этом процессоре применяются сегментные регистры CS, SS, DS и ES. В процес­сор 80386 были включены еще два сегментных регистра — FS и GS.

На рис. 9.6.1 представлен процесс генерирования 20-разрядных внешних адре­сов памяти. Заданное в сегментном регистре 16-разрядное значение сдвигается на четыре позиции влево, вследствие чего получается 20-разрядный адрес памяти, представляющий собой начальный адрес сегмента. Для получения 2-разрядного исполнительного адреса к начальному адресу сегмента добавляется сгенериро­ванный процессором 16-разрядный исполнительный адрес, обозначенный на ри­сунке как смещение.

Чтобы локализовать в памяти сегмент, в сегментный регистр помещаются 16 старших разрядов 20-разрядного адреса начала этого сегмента. В адресном пространстве, занимающем 1 Мбайт и покрываемом 20-разрядными адресами, может располагаться 16 неперекрывающихся сегментов объемом 64 Кбайт. Одна­ко сегменты могут и перекрываться. Это удобно при организации совместного доступа к командам и данным разными программами. Сегменты CS и SS исполь­зуются в тех случаях, когда в программе имеются ссылки на команды или стек. Для хранения данных по умолчанию выделяется сегментный регистр DS. Если же для доступа к данным команды должен применяться регистр ES, в начало этой команды добавляется соответствующий код.

Рис. 9.6.1. Формирование адреса памяти в процессоре 8086

Защищенный режим

Процессоры архитектуры IA-32 обычно работают в защищенном режиме. На рис. 9.6.2 показано, как в этом режиме генерируется физический адрес памяти на основе содержимого базового и индексного регистров, а также содержащегося в команде значения смещения. Для получения 32-разрядного исполнительного ад­реса значение индексного регистра умножается на коэффициент масштабирова­ния, равный 1, 2, 4 или 8, затем результат прибавляется к содержимому базового регистра с учетом заданного в команде смещения. Четырнадцать старших битов одного из шести сегментных регистров определяют де­скриптор, используемый в качестве индекса в таблице дескрипторов сегментов, из которой извлекается 32-разрядный базовый адрес. Этот адрес прибавляется к исполнительному адресу внутри сегмента, вследствие чего получается 32-разряд­ный линейный адрес. Страничный блок, используя таблицу страниц, транслирует линейный адрес в 32-разрядный физический адрес.

Рис. 9.6.2. Формирование адреса в архитектуре IA-32

Таблицы страниц и дескрипторов сегментов довольно велики, поэтому они хранятся в основной памяти. Для обеспечения быстрой трансляции адресов мо­жет использоваться буфер быстрого преобразования адресов TLB. В таблицах дескрипторов сегментов содержатся поля прав доступа, а также поля границ сегментов, определяющие их максимальный размер. Этими парамет­рами управляет операционная система. Они нужны для защиты как операцион­ной системы, так и прикладных программ, находящихся в основной памяти. От­сюда и название данного режима работы процессора — «защищенный»

Сегменты и страницы используются для организации памяти одним из сле­дующих способов:

  • в виде плоского адресного пространства, в котором исполнительный ад­рес играет роль физического;

  • в виде одного или нескольких сегментов переменой длины (без разбиения на страницы);

  • в виде 32-разрядного пространства памяти, разделенного на страницы объе­мом 4 Кбайт;

  • в виде структуры, состоящей из сегментов и страниц.