 |
Когда 80386 загружает свои регистры из TSS, у которого флаг
VM86 установлен, процессор входит в виртуальный режим 86.
Когда при последующем переключении задачи, процессор загружа-
ет значения в регистр из TSS, у которого флаг VM86 сброшен,
он выходит из виртуального режима 86. Таким образом от задачи
к задаче процессор эмулирует 80386 или 8086 согласно значению
флага VM86. 80386 Также выходит из виртуального режима 86,
когда он выдает особую ситуацию или возникает прерывание, и
предоставляет полные ресурсы архитектуры обработчику прерыва-
ний и исобых ситуаций. При возврате из обработчика, вызванно-
го в виртульном режиме 86,80386 автометически возвращется в
виртуальный режим 86. Так как адресное пространство 8086 рав-
но 1 мбайту, логические адреса, генерируемые задачей в вирту-
альном режиме 86, попадает в первый мбайт линейного адресного
пространства 80386. Множество задач, работающих в виртуальном
режиме 86, могут пересекаться друг с другом, поэтому они все
должны разделять младший мбайт линейного адресного пространс-
тва. Операционная система может использовать страничный меха-
низм 80386 для перемещения линейных адресных пространств за-
дач, работающих в виртуальном режиме 86, в различные области
физического адресного пространства. Используя страничный ме-
ханизм таким способом, не только предотвращают наложение за-
дач, работающих в виртуальном режиме 86, но позволяют опера-
ционной системе с виртуальной памятью обменивать страницы за-
дач, работающих в виртуальном режиме 86, как если бы они были
задачами 80386.
Задача, работающая в виртуальном режиме 86, может выпол-
нять программу, которая была написана для выполнения на одно-
задачном персональном компьюторе. Такая программа может со-
держать команды, которые потенциально опасны, когда они вы-
полняются в многозадачной среде. Например позволяя задаче,
работающей в виртуальном режиме 86, выполнять команду Oчистки
флага прерываний, тем самым запрещая прерывания, можно оста-
новить всю систему. Для предотвращения таких нарушений 80386
выдает особую ситуацию, когда задача, работающая в виртуаль-
ном режиме 86, пытается исполнять команду ввода/вывода или
команду, относящуюся к прерываниям.
Запрещение исполнения таких команд защищает остальную
часть системы от задач, работающих в виртуальном режиме 86,
но не удовлетворяет потребности задач виртуального режима 86
в исполнении команд. Решение заключается в моделировании
опасных команд в процедуре операционной системы, называемой
монитором виртуальной машины. Когда вызывается обработчик
особых ситуаций, он может проверить флаг VM86 в образе регис-
тров флагов в стеке, чтобы определить, является ли источник
особой ситуации задачей виртуального режима 86, в этом случае
обработчик особых ситуаций может вызвать монитор виртуальной
машины, который может промоделировать команду и вернуть уп-
равление задаче виртуального режима 86. Следует заметить, что
монитор виртуальной машины моделирует только несколько команд
8086, и как моделируемые команды, так и те команды, которые
80386 исполняет непосредственно, выполняются значительно быс-
трее на 80386, чем на 8086.
Работая совместно, 80386 и монитор виртуальной машины
реализует полный набор команд 8086, и страничный механизм мо-
жет обеспечить каждую задачувиртуального режима 86 своим соб-
ственным защищенным адресным пространством. Однако, большинс-
тво задач 8086 требуют дополнительных ресурсов, обеспечивае-
мых опеарционной системой и периферийным оборудованием. В ка-
честве примера первого типа ресурсов можно привести файловую
систему, в качестве второго типа можно привести контроллер
растрового дисплея, работающего непосредственно под управле-
нием прикладной программы. Эти ресурсы могут присутствовать в
системе, основанной на 80386 в форме, отличной от топ, в ко-
торой они присутствовали ранее в системах, для которых была
создана программа 8086, чтобы упростить работу для предостав-
ления этих ресурсов в различных средах, 80386 может реализо-
вать ловушки при обращении к операционной системе и к перифе-
рийным устройствам, которые делаются задачами виртуального
режима 86.
Например, большинство операционных систем 8086 использу-
ют команду прерывания для реализации вызовов операционной
системы. 80386 Выдает особую ситуацию, когда задача виртуаль-
ного режима 86 пытается исполнить команду прерываний. Монитор
виртуальной машины может затем протранслировать вызов опера-
ционной системы в вызов операционной системы 80386, как это
показано на рис.4-1. Если IOPL задачи виртуального режима 86
установлен равным значению, меньшему 3, то 80386 будет анало-
гичным образом создавать ловушки при исполнении всех команд
ввода/вывода программой 8086. Страничный механизм 80386 может
быть использован для перенаправления обращений к устройствам
ввода/вывода, распределенным в память, на другие адреса, если
это необходимо. Подобные обращения могут также вызвать особые
ситуации путем указания соответствующих страниц памяти, как
предназначенных только для чтения (чтобы быть обнаруженным в
случае записи) или как отсутствующих (для обнаружения при
чтении или записи).
5. Аппаратурная реализация
Архитектура процессора 80386, описанная в предыдущих
разделах, реализована более чем в 275000 транзисторах, ис-
пользующих технологический процесс CHMOS III фирмы ИНТЕЛ. В
данном разделе кратко рассматривается внутреннее устройство
кристалла 80386 и более подробно сигналы, при помощи которых
80386 взаимодействует с другими компонентами.
5.1. Внутренняя структура
На рис.5.1. приведена обобщенная функциональная структу-
ра процессора 80386. Показанные 6 устройств организованы в
конвейерную структуру, которая позволяя им рабитать парал-
лельно над различными комнадами или над различными частями
одной и то же команды. Устройство управления шиной управляет
передачами на шине для других устройств. Если ни одно из дру-
гих устройств не требуется шиной, устройство предварительной
выборки читает следующее двойное слово комнадного потока из
памяти в очередь предварительной выборки. Таким образом,
большинство чтений байтов команды производится параллельно с
исполнением других команд во время свободных циклов шины. Ус-
тройство декодирования расшифровывает каждый код операции.,
Преобразовывает его в указатель на микрокод, которые реализу-
ет данную команду. Исполнительное устройство выполняет микро-
инструкции. Исполнительное устройство может складывать два
32-битные регистра за 2 такта. Аппаратура умножения/деления
выполняет 32-битное умножение за время от 9 до 41 такта, в
зависимости от каличества значащих цифр, а 32-битное деление
за время от 38 до 42 тактов, в зависимости от того, являются
операнды знаковыми или беззнаковыми. Сдвиг, циклический сдвиг
и операции над полями битов выполняются при помощи быстрого
сдвигателя, который может сдвигать до 64 бит за один такт. В
типичной смеси команд, которая включает переходы и вызовы,
80386 исполняет команды со средней скоростью в 4,4 такта каж-
дая.
Исполнительное Страничное Устройство
устройство устройство сегментации
ЙНННННННННННННННННН» ЙНННННННННННН» ЙНННННННННННННННННННН»
є є є є є перекодировочный є
є регистры є є регистры є є буфер просмотра є
є є є сегментов є є исключений є
МНННННННННННННННННН№ є є є є
є быстрый є є є є є
є сдвигатель є є є є є
МНННННННННННННННННН№ МНННННННННННН№ МНННННННННННННННННННН№
є умножение/делениеє є транслятор є є транслятор є
МНННННННННННННННННН№ є сегментов є є страниц є
єариф.лог.устр-во МН>є МН>є є
ИННННЛНННЛНННННННННј ИНННННЛННННННј ИНННННННННЛННННННННННј
є є є ЙНННННННј
ЙННННј є є є устройство
є є є є управления шиной
є є є є ЙНННННННННННННН»
є є V V є интерфейс є
є ИННННННННННЛННННННННННННННННННННННН№ шины М»
є V ИННННННННННННННјє
є ЙННННННННННННННН» ЙННННННННННННННННН» є
є є дешифратор є<НННН№очередь предвари-є<ННННј
є є є є тельной выборки є
є МННННННННННННННН№ МННННННННННННННННН№
є є очередь є є узел предварите-є
ИННННННННННННН№ команд є є ной выборки є
ИНННННННННННННННј ИНННННННННННННННННј
устройство
декодирования
Конвейерная организация выборки команды, ее декодирова-
ние и исполнение на одном кристалле не является типичным для
современных микропроцесоров. С другой стороны помещение уст-
ройства управления памятью (MMU) на кристалл, содержащий кон-
вейерную структуру, также является нововведением. Включение
MMU в процессорный кристалл улучшает производительность, ус-
коряет трансляцию адреса. За счет уменьшения задержки расп-
ространения сигнала (большинство устройств управления па-
мятью, организованных в виде отдельных кристаллов, вводят,
как минимум, один такт ожидания на каждое обращение к памя-
ти). Еще одним средством ускорения работы процессора является
использование границ полутактов синхросигнала, которые дос-
тупны внутри кристалла (частота синхронизации на входе 80386
вдвое выше частоты, используемой в кристалле). Устройство уп-
равления памятью 80386 состоит из сегментного устройства и
устройства управления страницами, как показано на рис.5-1.
Устройство управления сегментами транслирует логические
адреса и проверяет каждый доступ на соответствие атрибутам
защиты сегмента. Для большинства команд устройство управления
сегментами получает данные для трансляции и защиты из регист-
ров сегментов и дескрипторов, находящихся на кристалле 80386.
Устройство управления страницами включается или выключается
программами операционной системы. Когда устройство выключено,
линейные адреса, полученные устройством управления, проходят
через устройство управления страницами без изменения. Когда
страничный механизм включен, устройство управления страницами
транслирует линейные адреса в физические адреса и проверяет,
что доступ соответствует атрибутам страницы. Устройство уп-
равления страницами включает 32-элементный перекадировочный
буфер просмотра исключений (TLB), который запоминает необхо-
димую для трансляции информацию для некоторого числа страниц,
к которым происходили последние обращения. Используя TLB, ус-
тройство управления страницами может транслировать большинст-
во обращений к страницам (обычно 98-99%) без обращения к
страничным таблицам, находящимся в памяти. При необходимости
устройство управления страницами генерирует циклы шины, необ-
ходимые для возврата старых элементов TLB в их страничные
таблицы и для загрузки свободных мест в TLB элементами стар-
ничных таблиц, обращение к которым имеет место в текущей ко-
манде.
5.2. Внешний интерфейс
|