Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Intel x86 Краткое описание

..pdf
Скачиваний:
22
Добавлен:
20.05.2014
Размер:
261.9 Кб
Скачать

MS Windows. Элементы архитектуры и системное программирование. ИУ-3.МГТУ. 2000.

Программная архитектура микропроцессоров семейства Intel x86. Краткое описание.

Автор: Сидякин И.М.

Московский Государственный Технический Университет им. Н.Э. Баумана. Кафедра ИУ-3, (11.1998)

Email:sidiakin@iu3.bmstu.ru

В этой главе даётся представление об основных элементах программной архитектуры микропроцессоров семейства x86. Системное программное обеспечение работает в тесном взаимодействии с аппаратурой. Основные принципы, на которых строится современная операционная система, такие как мультизадачность, управление памятью, защита данных, являются развитием свойств аппаратуры. Знание основ работы аппаратуры необходимо разработчику программного обеспечения. Информация, которая приводится в этой главе, послужит основой для последующего изложения принципов работы системного программного обеспечения.

Основные программные характеристики МП 8086.

Первое, и наиболее простое устройство из серии процессоров х86, которое мы рассмотрим это МП 8086. Старые операционные системы, такие как, например, DOS, разрабатывались в основном в расчёте на этот микропроцессор. Основные особенности программной архитектуры МП 8086 приведены в таблице.

 

 

 

Регистры данных.

16(8/8) бит: AX (AH/AL), BX(BH/BL), CX(CH/CL), DX(DH/DL)

Индексные регистры

16

бит: SI, DI , BP, SP, IP

и регистры

 

 

указателей.

 

 

Сегментные

16

бит: CS, DS, SS, ES

регистры.

 

 

Разрядность шины

16

бит.

данных

 

 

Разрядность шины

20

бит.

адреса

 

 

Адресуемый

1 МБ.

диапазон памяти

 

 

Для доступа к памяти это устройство использует так называемую сегментную схему адресации. Физический адрес вычисляется по двум заданным 16-ти разрядным значениям: СМЕЩЕНИЕ и СЕГМЕНТ. Эти значения МП извлекает из кода команды. Они могут быть определены косвенно или прямо в аргументах команды. Значение сегмента всегда извлекается из сегментного регистра. Имя сегментного регистра определяется кодом команды. В случае если имя регистра не определено в исходном тексте команды, используется ряд соглашений (см. ниже примеры). СМЕЩЕНИЕ может располагаться в одном из регистров данных, указателей или индексных регистров (пример.1), прямо прописываться в аргументах команды (пример.2), или вычислятся (пример. 3).

Ex.1

Mov

[SI], AX

;

сегмент

DS,

смещение

в SI

Ex.2

Mov

ES:[555h], AX

;

сегмент

ES,

смещение

равно 555

;(hexadecimal)

Ex.3 Mov [BP-2], AX ; сегмент SS, смещение равно ;содержимому BP минус 2.

МП вычисляет физический адрес (PHA) по следующей простой формуле:

PHA = (СЕГМЕНТ * 16) + СМЕЩЕНИЕ;

Содержимое 16-ти разрядного сегментного регистра умножается на 16 ( (или, что тоже самое, сдвигается влево на 4 разряда), затем к полученному 20 разрядному значению прибавляется 16ти разрядное смещение.

1

MS Windows. Элементы архитектуры и системное программирование. ИУ-3.МГТУ. 2000.

МП 8086 имеет 20 разрядную шину адреса, что ограничивает адресуемое пространство одним мегабайтом (220 -1 максимальное значение адреса). Рассмотренная схема адресации позволяет вычислить любой адрес в пределах 1 МБ.

Архитектура МП 8086 имеет ряд особенностей. Среди прочих следует отметить:

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

-Относительно небольшой диапазон адресного пространства. Современное программное обеспечение требует для работы, как правило, гораздо больше одного мегабайта памяти.

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

Основные программные характеристики МП 80286.

В MП 80268 реализован новый защищённый режим работы. Этот МП может работать в двух режимах. В защищённом режиме доступны новые свойства, к которым относится отличное от схемы СЕГМЕНТ:СМЕЩЕНИЕ управление памятью, включая и защиту памяти. В то же время МП 80286 может работать как МП 8086. Этот режим называется реальным. В таблице приведены основные характеристики микропроцессора 80286.

 

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

 

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

Регистры

Те же 16

разрядные

регистры МП 8086

Шина данных

 

16 бит

Шина адреса

 

24 бита

Адресуемый диапазон

до 1MБ + 64КБ - 16 байт

до 16 МБ

памяти

 

 

 

 

 

 

Защита памяти

Не возможна

Возможна

Он имеет тот же, что и МП 8086 набор 16-ти разрядных регистров и 16-ти разрядную шину данных. Но шина адреса расширена до 24 разрядов, что позволяет адресоваться к 224 (= 16МБ) внешней памяти. К сожалению, эту возможность нельзя использовать в реальном режиме потому, что изложенная выше схема вычисления адреса работает в пределах немного превышающих 1МБ. Шина адреса МП 8086 имеет 20 линий, что ограничивает максимальный физический адрес значением 220-1. МП 80286 имеет дополнительные линии шина адреса, что позволяет, хотя и незначительно, увеличить адресное пространство доступное программам работающим в реальном режиме. Определим максимальное значение адреса, которое может быть получено схемой сегментной адресации принятой в МП 8086 и реальных режимах следующих моделей семейства. Подставив максимальные (216 = 0xFFFF) значения сегмента и смещения в формулу для вычисления физического адреса получим

PHA = (СЕГМЕНТ * 16) + СМЕЩЕНИЕ = 0xFFFF*16 + 0xFFFF =

0xFFFF0 + 0xFFFF = 0x10FFEF.

«1 мегабайт плюс 64 килобайта минус 16 байт». Таким образом, используя дополнительно 21-ю линию шины адреса, можно расширить адресное пространство процессора в реальном режиме примерно на на 64 килобайта. Приведённые расчеты определяют предел схемы вычисления адреса в реальном режиме. Эти дополнительные 64К – 16 байт называются верхней областью памяти (High Memory Area /HMA/) и используются, как правило, операционной системой (DOS) для размещения драйверов. HMA используется в реальном режиме всех микропроцессоров семейства, начиная с МП 80286.

В защищённом режиме применяется другой метод адресации, который позволяет адресоваться к памяти в полном диапазоне 0 – 16МБ. Этот метод получил развитие в последующих моделях МП x86. Адресное пространство было увеличено до четырёх гигабайт. Более подробно схема работы процессора в защищённом режиме описана в следующем параграфе, который посвящён МП80386.

2

MS Windows. Элементы архитектуры и системное программирование. ИУ-3.МГТУ. 2000.

Основные программные характеристики МП 80386.

Этот микропроцессор является базовой моделью, на основе которой были разработаны последующие МП компании Intel включая МП 80486 и Pentium. Несмотря на значительные усовершенствования, отличающие последние модели микропроцессоров, существуют основные принципы архитектуры, которые их объединяют. Архитектура МП80386 построена на классических концепциях, которые операционные системы используют для управления памятью и процессом исполнения программ. Основные программные характеристики процессора приводятся в таблице:

 

 

Режимы работы

Реальный, Защищённый, Режим

 

виртуального MП8086 (V86)

Регистры общего назначения

32-х разрядные. (доступны)

Сегментные регистры

16-ти разрядные (используются по

 

разному в различных режимах)

Шина данных

32 бита

Шина адреса

32 бита

Адресуемый диапазон памяти

До 4-х ГБ в защищённом режиме

Основные свойства защищённого

Защита памяти, Мультизадачность,

режима:

Управление виртуальной памятью.

Это устройство может работать в трёх различных режимах.

1. Реальный режим. Регистры общего назначения процессора расширены до 32-х бит. Например регистр 16-ти разрядный регистр Aх составляет младшее слово 32-х разрядного регистра Eax. 32-х разрядные регистры могут использоваться в реальном режиме в логических и арифметических операциях. Однако для формирования смещения адреса в реальном режиме используются только младшие 16 разрядов этих регистров. Сегментные регистры этого МП так же 16-ти разрядные.

2.Режим виртуального МП8086 (V86). В этом режиме процессор эмулирует работу МП8086. Одновременно может быть запущено несколько виртуальных машин V86 которые разделяют процессорное время.

3.Защищённый режим. Этот режим работы процессора является основным. В защищённом режиме адресуемая память расширяется до 4ГБ. Появляется новые мощные средства управления памятью и псевдопараллельным исполнением программ. Управление памятью эта одна из наиболее важных проблем, которые операционная система решает в тесном взаимодействии с аппаратурой.

Адресация в защищённом режиме МП8086

В защищённом режиме для управления памятью микропроцессор использует дополнительные «внешние» данные. Эти данные располагаются в памяти. Поэтому процессоры Intel начиная с 808386, после включения питания запускаются в реальном, а не в защищённом режиме. Системное программное обеспечение перед переключением МП в защищённый режим размещает в памяти и инициализирует все необходимые структуры данных. Ссылки на эти структуры помещаются в специальные служебные регистры МП. После этих подготовительных операций МП переключается в защищённый режим.

Сегменты и схема вычисления виртуального адреса.

С «точки зрения» процессора память это набор блоков, которые называются сегментами. Следует отметить, что в реальном режиме СЕГМЕНТом называется параметр в формуле вычисления адреса. В защищённом режиме термин сегмент просто имеет другой смысл. Сегменты могут размещаться в любом месте 32-х разрядного адресного пространства процессора и могут иметь размеры до 4ГБ. Диапазоны адресов сегментов могут перекрываться. Характеристики каждого сегмента описываются в структуре, которая называется дескриптор сегмента. Дескриптор содержит начальный адрес сегмента, размер (limit), информацию о типе,

3

MS Windows. Элементы архитектуры и системное программирование. ИУ-3.МГТУ. 2000.

уровне привилегий и других атрибутах сегмента. Упрощённый формат дескриптора приведён на рисунке 1. Следует отметить, что дескрипторы используются не только для описания сегментов содержащих код, данные или стеки программ. Некоторые системные структуры, как например, локальные дескрипторные таблицы и шлюзы так же описываются дескрипторами. Форматы дескрипторов различных типов могут отличаться.

31

 

 

 

 

20

 

16

 

 

8

 

0

Base

 

G

x

0

x

Limit

 

P

DPL

Type

 

Base 23..16

31..24

 

 

 

 

19..16

 

 

 

 

 

 

 

 

 

Base 15..0

 

 

 

 

Limit 15..0

 

Base 32-х битовый базовый адрес сегмента.

 

 

 

Limit

Размер сегмента в байтах или страницах (зависит от значения бита G).

GГранулярность. Если G = 0 Limit указан в байтах, иначе в страницах (Размер страницы 4096 байт).

Type тип дескриптора.

DPL Уровень привилегий дескриптора.

P бит присутствия.

Рисунок 1. Формат дескриптора.

Дескрипторы размешаются во внешней памяти в нескольких системных таблицах. Операционная система должна создать и проинициализировать некоторые из этих таблиц перед переключением МП в защищённый режим. ОС, по крайней мере, должна создать Глобальную дескрипторную таблицу (GDT) с одним или несколькими дескрипторами сегментов содержащих системный код, данные и стек. Кроме этого следует создать Дескрипторную таблицу прерываний (IDT) которая содержит дескрипторы обработчиков прерываний. Во время работы МП в защищённом режиме дескрипторы могут модифицироваться удаляться и добавляться. Обычно операционная система создаёт одну таблицу GDT и одну таблицу IDT. Дополнительно система может создать одну или несколько Локальных дескрипторных таблиц (LDT). Каждая такая таблица выделяется для дескрипторов сегментов отдельной пользовательской программы. Такой способ используется для защиты программ друг от друга. Адреса и размеры таблиц записываются в служебные регистры микропроцессора. В регистр GDTR заносится адрес GDT, в регистр IDTR адрес IDT и в регистр LDTR адрес текущей LDT. Содержимое регистра LDTR изменяется каждый раз, когда операционная система выделяет время для исполнения очередной программы. Сегментные регистры процессора используются для ссылки на дескриптор в одной из дескрипторных таблиц. Содержимое сегментного регистра называется селектором. Селектор содержит номер дескриптора в таблице и флаг, по которому определяется в какой из таблиц LDT или GDT расположен дескриптор. Кроме этого в селекторе указываются атрибуты защиты. 13 старших разрядов занимает номер дескриптора. Следовательно, каждая таблица может содержать до 213 = 8K дескрипторов. Бит 2 (считая с нуля) определяет таблицу, и два младших бита используются в механизме защиты памяти (Рисунок 2).

15

2

0

Index

TI

RPL

Index номер дескриптора в таблице.

TI выбор таблицы. Если TI = 0 используется GDT иначе LDT.

RPL запрашиваемый уровень привилегий.

Рисунок 2. Формат селектора.

При обращении к сегменту памяти процессор дополнительно должен считать содержимое дескриптора этого сегмента. Такой способ обмена данными с памятью может существенно снизить производительность работы системы. Однако в действительности при обращении к памяти чтение дескриптора не производится. Микропроцессор имеет так называемые теневые сегментные регистры, в которых сохраняются дескрипторы сегментов. Для каждого сегментного регистра имеется теневой регистр. Теневой регистр содержит дескриптор, на который указывает селектор, записанный в сегментном регистре. Дескриптор записывается в теневой регистр, при

4

MS Windows. Элементы архитектуры и системное программирование. ИУ-3.МГТУ. 2000.

изменении содержимого сегментного регистра. Эта технология особенно эффективна при работе с так называемой плоской моделью памяти. В такой модели используется единственный сегмент, перекрывающий всё адресное пространство. Так как вся память доступна через этот единственный сегмент, во время работы нет необходимости изменять значение сегментных регистров.

Рассмотрим процедуру вычисления адреса в защищённом режиме на примере исполнения инструкции чтения памяти MOV AL, [EDI]. Эта инструкция считывает в регистр AL байт из ячейки памяти, адрес которой вычисляется по схеме изображённой на рисунке 3.

 

 

 

ПАМЯТЬ

 

 

Считать это в AL

 

 

 

 

 

 

Mov AL, [EDI]

 

GDT (или LDT)

 

 

 

 

Дескриптор

 

 

 

 

GDTR ( или LDTR)

 

 

Процессор

+

База и размер таблицы

 

 

 

Регистр DS.

Теневой регистр DS

 

 

Index

Base

Limit

Др. атрибуты

 

 

 

EDI

 

 

 

+

СМЕЩЕНИЕ

ВИРТУАЛЬНЫЙ АДРЕС

 

 

Рисунок 3. Схема вычисления виртуального адреса в защищённом режиме.

Страничная адресация.

Физический адрес, это значение, которое выставляется на шину адреса процессора. Схема представленная на рисунке 3 используется для вычисления так называемого виртуального адреса. Процессор имеет встроенный механизм преобразования виртуального адреса в физический. Значения этих адресов могут не совпадать. Этот механизм называется трансляция страниц. Трансляция страниц разрешается программно установкой бита PG(31) в служебном регистре процессора CR0. Если трансляция страниц запрещена, физический адрес всегда равен виртуальному.

Трансляция страниц позволяет изменить 20 старших бит виртуального адреса перед выдачей его на шину. Таблица перекодировки виртуальных адресов в физические задаётся программно. Это важное свойство аппаратуры используется операционной системой для решения ряда важнейших задач. Управление физической памятью может быть скрыто от пользовательских программ. Каждая пользовательская программа работает с линейным непрерывным диапазоном виртуальных адресов, в то время как физическую основу этого диапазона формирует операционная система. Физически данные могут быть разделены на фрагменты,

5

MS Windows. Элементы архитектуры и системное программирование. ИУ-3.МГТУ. 2000.

которые располагаться в любом порядке в оперативной памяти или на диске. Эта гибкость в размещении данных позволяет операционной системе оптимизировать работу с памятью. Для использования механизма трансляции станиц операционная система должна разместить в памяти специальные таблицы перекодировки адресов: каталог таблиц страниц (Page Directory (PD)) и таблицы страниц (Page Tables(PT)).

Форматы записей каталога и таблиц страниц приведены на рисунке 4. Схема трансляции адресов приведена на рисунке 5. Начальные адреса таблиц выровнены по границе 4К. Размер одой таблицы не может больше 4К. Следовательно, каждая таблица может содержать до 1024 32-х разрядных записей. Двухуровневая схема трансляции адресов (см. рисунок 5) позволяет охватить 1024 (записи в PD)*1024(записи в PT)*4096(размер страницы) = 4GB адресов.

31

11

 

 

0

Физический адрес страницы (или таблицы станиц

xx00

D

A

00

U/S

R/W

P

для каталога)

 

 

 

 

 

 

 

Физический адрес измеряется в страницах, т.о. для адресации к любой станице в пределах 4GB достаточно 20 бит.

Aбит доступа. МПУ устанавливает этот бит перед записью или чтением из страницы.

DМПУ устанавливает этот бит (только в записях таблиц страниц) перед записью в страницу.

U/S пользователь/супервизор. Определяет уровень привелегий страницы. Используется для защиты страниц.

R/W чтение/запись. Ограничивает доступ к странице чтением.

Pбит присутствия. Указывает на то, что страница присутствует в физической памяти.

Рисунок 4. Формат записи таблицы страниц/каталога страниц (PTE/PDE).

6

MS Windows. Элементы архитектуры и системное программирование. ИУ-3.МГТУ. 2000.

ВИРТУАЛЬНЫЙ АДРЕС

31

 

 

 

 

21

 

11

0

номер таблицы в

номер страницы в

смещение внутри 4к

 

каталоге

 

таблице

страницы.

 

 

 

 

 

 

 

Регистр CR3

 

 

 

 

 

+

 

 

 

физический адрес каталога

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

каталог

Таблица страниц

 

+

адрес страницы

+

адрес таблицы страниц

Страница

(4096 байт) ФИЗИЧЕСКИЙ АДРЕС

Рисунок 5. Трансляция виртуального адреса в физический.

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

Защита памяти.

МП 80386 обеспечивает защиту памяти на уровне сегментов и на уровне страниц. Это разные методы защиты. Защита на уровне сегментов основана на использовании битов поля DPL дескриптора сегмента. Значение этого поля определяет уровень приоритета сегмента: 0 – самый высокий уровень (сегмент «наиболее защищён»), 1, 2 и 3. Эти уровни так же называются кольцами защиты. Основное правило защиты заключается в том, что код расположенный в сегменте с более низким уровнем приоритета не может получить доступ к данным (или коду), расположенным в сегменте с более высоким приоритетом. Пользовательские программы размещаются в сегментах с DLP > 0. Системные структуры, включая дескрипторные таблицы и таблицы страниц, располагаются в сегментах с DLP = 0. Защищённый код операционной системы так же располагается в сегментах с наивысшим уровнем привилегий. Этот код может модифицировать системные структуры и содержать привилегированные инструкции МП, которые используются для изменения содержимого служебных регистров. Пользовательское программное обеспечение может получить доступ к защищённым данным и коду, только под контролем операционной системы. Защита на уровне сегментов использует четыре уровня приоритетов. В механизме защиты памяти на уровне страниц применяется только два уровня. Для защиты страниц используются биты U/S и R/W записей таблиц страниц. Если бит U/S сброшен, страница относится к классу supervisor. Такая страница доступна только из 0-го кольца защиты. Если значение бита R/W равно 0, страница из любого кольца доступна только для чтения. В 32-х разрядных ОС Windows применяется двухуровневая схема защиты.

7

MS Windows. Элементы архитектуры и системное программирование. ИУ-3.МГТУ. 2000.

Пользовательские приложения Win32 размещаются в сегментах (DPL = 3) покрывающих всё адресное пространство процессора. Однако, страницы в которых размещаются системные данные и код защищены от пользовательских приложений (U/S = 0). К этим страницам может обращаться только системное ПО размещённое в сегментах с DPL = 3. Сегменты с уровнями привилегий DPL = 1 и DPL = 2 не используются.

2.Расширение памяти за счёт дискового пространства.

Оперативная память вычислительной системы, как правило, занимает незначительную часть адресного пространства. Однако современное программное обеспечение, например, системы управления базами данных или обработки изображений требует для нормальной работы значительных объемов памяти. В мультизадачной операционной системе память расходуется на все параллельно работающие приложения. Объем памяти может быть существенно увеличен с помощью механизма трансляции страниц. В оперативной памяти можно располагать только необходимые в данный момент страницы. Остальные страницы могут быть временно сохранены на жёстком диске. Эта выгрузка страниц на диск производится операционной системой, в случае если ресурсы оперативной памяти исчерпаны. Бит присутствия (P) в записях таблиц станиц (PTE) используется для организации загрузки страницы с диска в оперативную память по запросу. Если страница находится в физической памяти бит P установлен в единицу и запись PTE содержит адрес страницы в памяти. Если страница находится на диске, бит P сброшен, и запись PTE содержит ссылку на месторасположения страницы на диске, вместо её адреса . При попытке обращения к не присутствующей в оперативной памяти странице процессор вырабатывает исключение (page fault exception). Исключение приводит к передаче управления по заранее определённому операционной системой адресу. Вызывается программа обработчик исключения. Обработчик загружает страницу в оперативную память по какому либо физическому адресу и корректирует запись в таблице страниц. После этого обработчик возвращает управление и операция, которая привела к исключению, повторяется. Операционная система также отвечает за выгрузку страниц на диск для освобождения памяти. При этом каждый раз выбирается страница, обращение к которой производилось наиболее давно. Схема загрузки страниц по запросу приводится на рисунке 6.

Данные из страницы

Физическая

Страница

 

 

присутствует в

Аппаратура

 

память

 

памяти

управления

ЧТЕНИЕ ПАМЯТИ

 

Страница

 

виртуальной

 

 

памятью

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Аппаратное исключение.

 

 

 

 

 

(страница не присутствует в

 

 

 

 

 

 

 

памяти)

 

 

 

 

Системное ПО

 

 

 

 

 

 

 

 

Таблица

 

 

загружает страницу

 

 

 

 

 

 

 

страниц

 

 

в память и

 

 

 

 

 

 

модифицирует

 

 

 

 

 

 

 

 

 

 

 

 

запись PTE.

 

 

 

запись PTE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 6. Обработка исключения при обращении к памяти.

3.Поддержка многозадачного исполнения кода. Плоская модель памяти.

Процесс трансляции адресов управляется программно. Операционная система может модифицировать запись таблицы страниц, для изменения физического адреса одной страницы,, модифицировать запись каталога таблиц страниц изменив сразу же адреса 1024 страниц или полностью изменить структуру перекодировки адресов записав новое значение в регистр CR3. Корректировка таблиц используется для поддержки псевдопараллельного исполнения программ в операционных системах MS Windows. Код и данные 32-х разрядных пользовательских

8

MS Windows. Элементы архитектуры и системное программирование. ИУ-3.МГТУ. 2000.

приложений Windows размещается в сегментах, размер которых равен 4ГБ. Эти сегменты перекрывают друг друга и покрывают всё адресное пространство процессора. Реально приложения могут использовать только часть страниц этих сегментов. В Windows 95, например, приложению выделяется область виртуальных адресов в диапазоне от 4МВ до 2ГБ. Каждое приложение имеет своё собственное виртуальное пространство. Это означает, что одинаковые виртуальные адреса двух разных приложений проецируются в разные физические. В виртуальном адресном пространстве приложения Win32 как бы наложены друг на друга. Однако для каждого приложения операционная система создаёт отдельную структуру таблиц страниц. Приложения Windows 95 исполняются псевдопараллельно. Операционная система выделяет каждому приложению небольшие интервалы процессорного времени. Когда время очередного интервала истекает, система передаёт управление очередному приложению. В этот момент происходит модификация структуры таблиц страниц.

9