3.4 Механизмы защиты
Выполняя 3-4 миллиона операций в секунду, 80386 имеет достаточно вычислительной мощности для обеспечения самых
сложных систем, состоящих из сотен или тысяч программных модулей. В таких системах вопрос заключается не в том, будут ли ошибки, а в том как их накти и повозможности быстро устранить и насколько их действие может быть ограничено. Такие системы могут быть быстро отлажены и сделаны более надежными при серийном освоении, если процессор будет проверять каждую команду по критерию защиты. При этом степень и тип используемой защиты зависит от конкретного применения. Обычно простые системы реального времени работают достаточно хорошо без использования защиты. Различные требования к защите могут быть наиболее полно удовлетворены с помощью набора выборочно используемых функций защиты, введенных в 80386:
- разделение адресных пространств задач;
- введение 0-4 уровней привилегий ;
- использование привилегированных команд (например,HALT);
- разделение сегментов по типам (например, кодовый сег
мент или сегмент данных);
- введение прав доступа к сегментам и страницам (например, право только чтения или только исполнения);
- проверка границ сегмента.
Для сохранения максимельной производительности все проверки защиты в 80386 выполняются одновременно с выполнением
команды.
3.5 Совместимость с микропроцессорами 8086/80286
Два поколения процессоров семейства 86 предшествуют процессору 80386 - 80286 и 8086, с каждым из них 80386 совместим на уровне двоичных кодов. Благодаря такой совместимости экономятся программные затраты, обеспечивается быстрый выход на рынок и доступ к обширной библиотеке программного обеспечения, написанного для машин на базе микропроцессоров семейства х86.
Микропроцессор 80386, конечно, может выполнять программы для 8086, он также может одновременно выполнять программы для 80286 и 80386. Однако наиболее важным свойством совместимости 80386 представляется свойство, называемое VIRTUAL 86 ( виртуальный 86), устанавливающее защищенную структуру для 8086 внутри системы задач 80386. Дополняя свойство виртуального 8086 страничной организацией памяти, 80386 может закрепить за каждой задачей виртуального 8086 1 мбайтное адресное пространство в любой области физического адресного пространства 80386. Более того, если операционная система 80386 обеспечивает работу с виртуальной памятью, то задачи виртуального 8086 могут переноситься с диска и обратно как любые другие задачи. Таким образом, свойство виртуального 8086 позволяет
80386 одновременно выполнять программы, написанные для трех поколений семейства 86.
3.6 Способы адресации
Микропроцессор 80386 обеспечивает регистровую и непосредственную адресацию операндов, содержащихся, соответственно, в регистрах или командах. Eще более важным является способность 80386 обеспечивать различные способы адресации необходимые для эффективного обращения к таким элементам структур данных в памяти как массивы, записи (структуры), массивы записей и записи, содержащие массивы. При этом программа определяет поле смещения в логическом адресе по одному из способов адресации памяти в 80386. Процессор 80386 вычисляет поле смещения логического адреса по следующей формуле:
смещение = база + (идекс X масштаб) + отклонение
Для вычисления смещения могут быть использованы любые
или все переменные базы, индекса и отклонения. Переменные базы и индекса являются величинами, хранящимися в общих регисрах, а величина отклонения содержится в команде. Для хранения базы или индекса может быть использован любой общий регистр.
Величина в индексном регистре может быть отмаштабирована (умножена) коэффициэнтом 1,2,4 или 8, что дает возможность делать ссылки на элементы массива или записи соответствующей длины. Величина отклонения может иметь разрядность 8 или 32 бит и интерпретируется процесспром как величина со знаком в дополнительном коде.
Разумные комбинации базы, индекса и отклонения дают следующие способы адресации памяти 80386:
- прямая: используется только отклонение;
- регистривая косвенная: используется только база;
- базовая: используется база + отклонение;
- индексная: используется индекс (в масштабе);
- индексная с отклонением: используется индекс (в
масштабе)+отклонение;
- базовая индексная: используется база + индекс (в масштабе);
- базовая индексная с отклонением: используется база + индекс
(в масштабе) + отклонение;
3.7 Главные типы данных
В табл. 3.7.1 перечислены типы данных и команды, обеспечиваемые процессором 80386. В этой таблице приведены только наиболее употребимые команды. Варианты команд, такие как (в случае циклического сдвига) циклический сдвиг вправо и циклический сдвиг через перенос, также опущены.
Таблица 3.7.1
Главные типы данных и команды
Тип | Разрядность | Команды |
Целое, порядковое | 8, 16, 32 бит | Пересылка,обмен, преобразование, проверка, сравнение,перевод, сдвиг, двойной сдвиг, циклический сдвиг, отрицание, логическое "и", "или", исключающее "или". Сложение, вычитание, умножение, деление, увеличение на 1, уменьшение на 1, перевод (пересылка с расширением знака/ноля) |
Неупакованное десятичное | 1 цифра | Коррекция для сложения, вычитания, умножения,деления |
Упакованное десятичное | 2 цифры | Коррекция для сложения, вычитания |
Строка (байтов,слов, двойных слов) | 0-4гбайт слов, двойных слов | Пересылка, загрузка, запоминание, сравнение, просмотр, повтор |
Строка бит | 1-4гбит | Проверка, проверка и установ- ка, проверка и гашение, про- верка и дополнение, просмотр, вставление, изъятие |
Локальный указатель | 32 бит | (см. Порядковое) |
Глобальный указатель | 48 бит | Загрузка |
Примечание.
Локальный указатель - 32 битное смещение в сегменте, определенном одной из регистрированных пар сегмента/дескриптора. Глобальный указатель - это полный логический адрес, состоящий из селектора и смещения.
Многобайтные элементы могут размещаться с любого адреса байта в зависимости от структуры магистрали, для обращения к операндам, размещенным по адресу, не кратным длине операнда в байтах, могут потребоваться дополнительные магистральные циклы. Поэтому для высокой производительности, не зависящей от структуры магистрали, большинство программ ориентируют словные операнды из двойных слов на границах двойных слов и т.п.
3.7.1 Типы данных математического сопроцессора
Математический сопроцессор 80287 или 80387 добавляют к типам данных и командам процессора 80386 свои, приведенные в табл.3.7.1.1 В большинстве прикладных задач входные величины и получаемые результаты хранятся в виде типов целых, действительных или упакованных десятичных, а для промежуточных величин имеется тип данных промежуточное действительное, расширенный диапазон и точность которого в сложных вычислениях сводят к минимуму ошибки округления, переполнения и исчезновения порядка. В соответствии с такой моделью математический сопроцессор производит большую часть вычислений над промежуточными величинами, хранящимися в его регистрах. При загрузке
любого типа данных в регистровый стек, этот тип автоматически меняется на промежуточный действительный. Промежуточная действительная величина в регистре, в свою очередь, может быть
переведена в любой другой тип с помощью команды запоминания.
Таблица 3.7.1.1
Главные типы данных и команды математического сопроцессора
Команды | Тип | Разрядность |
Загрузка, запоминание, сравнение, сложение, вычитание, умножение, деление | Целое | 16,32,64 бит |
Загрузка, запоминание | Упакованное десятичное | 18 цифр |
Загрузка, запомонание, сравнение сложение, вычитание, умножение, деление | Действительное | 32,64 бит |
Сложение, вычитание, умножение, деление, извлечение квадратного корня, масштабирование остатка, вычисление части целого, смена знака, вычисление абсолютной величины, выделение порядка и мантиссы, сравнение, осмотр, проверка, обмен, арктангенс, 2-1, Y*LOG(X+1), Y*LOG(X), загрузка константы (0.0, П, и т.д.) (80387 добавляет синус, косинус, синус и косинус, неупорядоченное сравнение). | Промежуточное действительное | 80 бит |
ЗАключение
Изобретение процессоров i80386 и i80286 было большим шагом в улучшении архитектуры и производительности процессоров фирмы Intel, сейчас эти процессоры морально устарели и в основном используются о контроллерах, а так же в бытовой технике.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. В.Л. ГРИГОРЬЕВ “Микропроцессор i80486” БИНОМ Москва 1993
2. М. ГУК “Аппаратные средства IBM PC” Питер Санкт-Петербург 1997