Архитектура процессоров второго поколения
Структурная схема 16-разрядного процессора второго поколения, разработанного фирмой Intel, изображена на рисунок 6.8. Процессор состоит из четырех блоков: адресного AU, шинного BU, исполнительного EU и командного IU, причем все блоки могут работать параллельно.
Шинный блок осуществляет считывание памяти и портов ввода/вывода. Адресный блок вычисляет все адреса и формирует физические адреса. За счет независимой параллельной работы блоков производительность возрастает в 2-3 раза по сравнению с процессором 8086 (при том, что тактовая частота у него возросла всего до 12,5 МГц по сравнению с 5 МГц в 8086). Для использования шин с максимальной эффективностью применяется 6-байтовая очередь команд. При этом осуществляется упреждающее считывание команд, время выполнения которых в АЛУ велико. Результаты дешифрации помещаются в очередь результата. Поэтому командный блок после выполнения одной команды сразу же переходит к выполнению следующей. При наличии команд переходов очередь сбрасывается.
Рисунок 6.8 – Структурная схема 16-разрядного процессора второго поколения |
Процессор может работать в двух режимах: реальном и защищенном. Реальный режим используется для выполнения программ МП предыдущего поколения и инициализации регистров защищенного режима. Защищенный режим обеспечивает возможность поддержки виртуальной памяти, реализовать механизм привилегий с целью защиты памяти и многозадачную работу.
После подачи питания или сигнала сброса процессор устанавливается в реальный режим. В этом режиме процессор х286 имеет такую же базовую архитектуру, что и 8086, которая работает с большой скоростью. Различие двух режимов состоит в способе вычисления базового адреса.
БИС процессора 80286 имеет встроенное устройство управление памяти УУП. Это устройство оказывает поддержку виртуальной памяти и мультипрограммного режима. Регистровая структура МП имеет вид, изображенный на рисунке 5.9. В защищенном режиме в сегментных регистрах располагается не информация о физическом адресе, а селекторы, указывающие на описатели сегментов. С помощью селекторов, расположенных в сегментных регистрах, центральный процессор получает из локальной или глобальной таблиц дескрипторов описатели, характеризующие размещение и длину используемых сегментов.
Если процедура получения дескрипторов будет осуществляться при выполнении каждой команды, то это приведет к существенному снижению быстродействия. Дескрипторы находятся в ОЗУ и при поступлении нового селектора считываются в регистры дескрипторов. Таким образом, информация о физическом адресе сегмента и его длине при загрузке сегментного регистра загружается в так называемый теневой регистр, который имеется для каждого сегментного регистра. Т.е. каждый сегментный регистр содержит кроме видимой части – 16 битового селектора – другую невидимую часть, имеющую ширину 48 бит (для каждого из четырех селекторов). Аналогичные теневые регистры имеются для регистров глобальной и локальной таблиц дескрипторов.
TI – Table Indicator; RPL – Requested Privilege Level.
Загрузка теневых регистров относительно медленная операция. Так для выполнения команды MOV DS, AXв реальном режиме требуется только два такта, то в защищенном режиме 18.
По сравнению с МП 8086 структура регистров CS, DS, SS и ES, предназначенных для управления памятью, расширена за счет дополнительных регистров, используемых в качестве дескрипторов сегментов. Содержимое дескрипторов не используется непосредственно в программе. Их содержимое автоматически записывается центральный процессор и используется для управления памятью.
Регистр задачи TR указывает задачу, выполняемую в данный момент.
Все пространство виртуальных адресов состоит из локальных адресных пространств, отдельных для каждой задачи, и глобального адресного пространства, общего для всех задач. Системные программы (ОС и др.) хранятся в глобальном адресном пространстве. Пространство виртуальных адресов каждой задачи занимает объем 1 Гбайт =213 сегментов ´ 216 – объем сегмента. Для разделения пространства на глобальное и локальное в секторе сегмента выделяется один бит TI (индикатор таблицы: 0 – глобальный, 1 – локальный).
Физические адреса, выдаваемые МП во внешние блоки, являются 24-разрядными (т.е. объем основной памяти может достигать 16 Мбайт). С помощью 24-разрядной базы физического адреса, хранящейся в дескрипторе сегмента, вычисляется физический адрес, который равен базе физического адреса + смещение сегмента.
Одновременно на основании атрибута и размера сегмента, хранящемся в этом же регистре, обнаруживаются сегментные ошибки и ошибки памяти. При их возникновении инициируется обработка исключительной ситуации.
Селектор – это 16-разрядный указатель, с помощью которого выбираются дескрипторы. В логическом адресе селекторная часть определяет индивидуальный дескриптор.
Селектор имеет следующие поля:
§ Индекс – биты 15-3. Индекс выбирает один из 8192 дескрипторов в таблице дескрипторов; 81928 (число байт в дескрипторе) = 64К – емкость сегмента;
§ Индикатор таблицы TI – бит 3 определяет таблицу, на которую ссылается селектор: 0 – означает GDT, а 1 – текущую таблицу LDT;
§ Запрашиваемый уровень привилегий RPL (2-0).
Регистры системных адресов GDTR, IDTR, LDTR и TR служат для обращения к элементам, которые управляют механизмом сегментации памяти.
Такими элементами являются таблицы и сегменты, входящие в структуру защиты памяти МП 286/386:
GDT – таблица глобальных дескрипторов
IDT – таблица дескрипторов прерываний
LDT – таблица локальных дескрипторов
TSS – сегмент состояния задачи.
Регистры GDTR и IDTR содержат 24–разрядные линейные адреса базы и 16-разрядные величины границ GDT и IDT, которые являются глобальными по отношению ко всем задачам. Перед переходом в защищенный режим программа должна создать в ОЗУ таблицу GDT и загрузить регистр GDTR при помощи специальной команды LGDT.
Регистр таблицы локальных дескрипторов LDTR и регистр задачи TR содержит 16-разрядные селекторы сегментов LDT и TSS, которые определены для конкретной задачи. С каждым из них связан программно недоступный регистр дескрипторов сегмента.
В МП 80286 входит регистр слова состояния машины (это не регистр флагов! Он имеется само собой) В его состав входят следующие поля:
§ PE (Protected Mode Enable) – «защита разрешена». Устанавливается в 1 при работе в виртуальном режиме, 0 – в реальном;
§ MP – бит присутствия сопроцессора. Если MP=1, то 286 будет учитывать команды WAIT, ESC;
§ EM – режим эмуляции. Если ЕМ=1, то МП при встрече команды ESC генерирует особый случай отсутствия сопроцессора. Процедура обработки особого случая в случае отсутствия сопроцессора может эмулировать команды сопроцессора программно;
§ TS – бит “задача переключена”. Устанавливается автоматически, когда МП осуществляет переключение задач.
Процессор имеет различные виды адресного пространства: физическое, логическое и линейное.
Физическое – это реальные адреса, используемые для выбора ячеек микросхем физической памяти, содержащих данные.
Логический адрес состоит из селектора и относительного адреса внутри сегмента.
Линейный адрес – это адрес, сформированный добавлением относительного адреса к базовому адресу сегмента.
Допустим, что процессор выполняет задачу, в которой используется некоторое локальное адресное пространство и ЛТД сегментов, расположенных в нем. Дескрипторы ЛТД-сегментов хранятся в ГТД. При инициировании этой задачи селектор ЛТД, служащий для выбора дескриптора сегмента, автоматически помещается в соответствующее поле регистра ЛТД (РгЛТД). Индекс, содержащийся в селекторе, дает смещение относительно базового адреса ГТД. Дескриптор сегмента имеет длину 4 слова или 8 байт. Индекс помещается в старшие 13 бит селектора. Поэтому смещение в памяти равно:
Смещение=Числовое_значение_индекса8 .
При таком способе обращения автоматически считываются дескрипторы сегментов ЛТД, хранящиеся в ГТД, и помещаются в свой РгЛТД. С помощью содержимого этого регистра можно обратиться в ЛТД. Схема преобразования виртуальных адресов в физические изображена на рисунок 6.10.
В селекторной части регистра CS хранится селектор сегмента программы. Дескриптор сегмента программы, указываемый этим селектором, автоматически считывается из ЛТД и помещается в регистр дескрипторов сегментов CS. Содержимое его принимается за базу, а содержимое IP – за смещение, и на основании их значений осуществляется обращение к памяти. Процессор может одновременно обратиться к четырем сегментам. В этих сегментах уже задается смещение, поэтому формирование адреса может осуществляться с высокой скоростью.
Система команд процессора 80286 включает все команды 8086-го процессора и дополнена рядом новых команд:
§ сохранение константы в стеке, сохранение и восстановление всех регистров PUSHA (Push All – все регистры), POPA;
§ целочисленное умножение на константу;
§ сдвиги с указанием счетчика в константе;
§ вход и выход из процедур ENTER, LEAVE;
§ контроль диапазона BOUND;
§ ввод/вывод байта (слова) в строку, одиночный INSB, INSW, OUTSB, OUTSW, или по счетчику в регистре СХ, повторение строковых команд по префиксу REP;
§ сброс флага переключения задач CTS;
§ команды управления защитой LGDT, SGDT, LIDT, LMSW, SMSW, доступные в обоих режимах и только в защищенном режиме: LLDT, SLDT, LTR, STR, ... .
Попытка выполнения недействительной команды (или в реальном режиме команды, предназначенной только для защищенного режима) вызывает исключение 6.