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

Организация микропроцессоров и микропроцессорных систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
41
Указатель команды 15 0
Указатель операнда
15 0
Физический адрес команды A
15-0
Физический адрес операнда A
15-0
A
19-16
КОП (11 разр)
A
19-16
Не используются
Не используются
IC
RC
PC
IEM
PM
UM
OM
ZM
DM
IM
B
С3
ST
С2
С1
С0
IR PE
UE
OE
ZE
DE
IE
Рис. 3.9
На основании этой информации процедурой обработки исключи­тельной ситуации можно точно определить команду и соответствующий операнд, вызвавшие особый случай (прерывание), и установить причину его возникновения.
Следует отметить, что прикладные программы обычно не использу­ют TR и EP. Эти средства предназначены для разработки процедур обра- ботки особых ситуаций, которые входят в состав системного программно­го обеспечения.
Программно-доступными регистрами сопроцессора являются реги­стры управления CR и состояния SR. Их форматы приведены на рис. 3.10.
Регистр управления CR
15 13 12 11 10 9 8 5 4 3 2 1 0
Регистр состояния SR
15 14 13 11 10 9 8 7 5 4 3 2 1 0
Рис. 3.10
Слово управления, хранящееся в регистре CR, определяет для сопро­цессора один из нескольких возможных вариантов обработки численных данных. Для каждого варианта программист может задавать: маскирование особых случаев; точность вычислений; способ округления результата; ва­риант интерпретации бесконечности.
Слово управления загружается из памяти специальной командой. Следовательно, программа ЦП может сформировать в памяти необходи­мый вариант слова управления, а затем сопроцессор загрузит его в CR.
Рассмотрим назначение отдельных полей этого регистра.
Шесть младших разрядов регистра CR представляют собой маски особых случаев, т.е. необычных или ошибочных ситуаций, обнаруживае­мых сопроцессором при выполнении команд: МР – маска «потеря точно­сти»; MU – маска «антипереполнение»; MО – маска «переполнение»; MZ – маска «деление на нуль»; MD – маска «денормализованный операнд»; MI ­маска «недействительная операция». Регистр состояния SR содержит 6 со­ответствующих флажков особых случаев.
42
Определим ситуации, при появлении которых фиксируются указан­ные особые случаи.
1. Потеря точности фиксируется, когда истинный результат не может
быть точно представлен в заданном формате и сопроцессор производит его округление.
2. Антипереполнение фиксируется, если значение истинного порядка
результата слишком мало и он выходит за диапазон значения порядка, ко­торый допустим в заданном формате.
3. Переполнение означает, что истинный порядок результата слиш­ком велик и выходит за диапазон значения порядка, который допустим в заданном формате. Это тот же случай, что и предыдущий, только антипе­реполнение бывает с отрицательным знаком порядка.
4. Деление на нуль 0 фиксируется при попытке деления нулевого ко­нечного числа на 0.
5. Денормализованный операнд означает появление в операции опе­ранда, который не представлен в нормализованном виде.
6. Особый случай недействительной операции является наиболее сложным. Сюда относят следующие ситуации: деление нуля на нуль; ум­ножение и деление бесконечностей; умножение бесконечности на нуль; извлечение квадратного корня из отрицательного числа; любая операция с NAN и т.д.
Разряд IEM - маска «разрешение прерываний». Когда IEM =1, сопро­цессор не может посылать запрос прерывания ЦП до тех пор, пока IEM не будет сброшен в 0. Этот механизм позволяет в программах ЦП запрещать обработку прерываний от сопроцессора.
При работе СП появление особого случая отмечается установкой в 1 соответствующего флажка в регистре состояния. Далее СП проверяет мас­ку в регистре управления. Если маска содержит 0, то СП формирует запрос на прерывание ЦП с последующим вызовом процедуры обработки особого случая (прерывание разрешается битом IEM). Если маска содержит 1, то СП выполняет встроенную процедуру маскированной реакции без преры­вания выполнения программы.
Такие встроенные процедуры обеспечивают возвращение математи­чески приемлемого результата, позволяющего продолжать вычисления. В частности, потеря точности предполагает округление результата, денорма­лизованный операнд – преобразование операнда в эквивалентное нормали­зованное число и т.д. Поэтому в прикладных программах обычно рекомен­дуется маскировать все особые случаи, за исключением недействительной операции. Обработка ее обычно производится процедурами ЦП, вызывае­мыми через прерывание.
Поле РС - управление точностью вычислений. Возможные режимы округления приведены в табл. 3.2.
43
Код поля РC
Точность (разрядность мантиссы)
00 10 11
Мантисса - 24 разряда (КВФ) Мантисса - 53 разряда (ДВФ) Мантисса - 64 разряда (ВВФ)
Код поля RC
Режим округления
00 01 10 11
Округление к ближайшему Округление вниз (к -∞) Округление вверх (к +∞) Усечение к нулю
Таблица 3.2
По умолчанию используется режим с максимальной точностью. Возможность задания режимов пониженной точности предусмотрена для совместимости с некоторыми языками программирования.
Поле RС – управление округлением. Определяет один из четырех возможных вариантов округления результатов операции сопроцессора. Оно происходит в арифметических операциях, а также при записи в па­мять, если заданный формат результата не позволяет точно представить истинный результат. Возможные режимы округления показаны в табл. 3.3.
Таблица 3.3
Режим RС=00 обеспечивает максимальную точность вычислений. Здесь за результат принимается ближайшее к истинному результату число, которое можно представить в заданном формате. Для RС=01 в качестве ре­зультата выбирается ближайшее к истинному результату меньшее число, а для RС=10 – большее число, представляемое в заданном формате. Режим RС=11 позволяет в качестве результата выбрать ближайшее к истинному результату число, меньшее по абсолютной величине и представляемое в заданном формате (применяется в целочисленной арифметике).
Бит IC – управление режимом бесконечности. При IC=1 СП работа­ет в режиме обычной (аффинной) арифметики, когда имеются две беско­нечности: +∞ и -∞. При IC=1 используется режим проективной арифмети­ки, когда имеется одна бесконечность без знака (+∞ и -∞ воспринимается как одно и то же). Обычно рекомендуется использовать проективный ре­жим, что позволяет избежать ошибок, например, в операциях с +0 и -0. Аффинный режим используется для математических расчетов, в которых необходимо учитывать знак бесконечности.
Регистр состояния SR содержит различные поля и флаги, которые при функционировании СП автоматически устанавливаются в соответст­вии с выполненными действиями или результатами этих действий. Млад­шие шесть бит представляют собой флаги регистрации особых случаев.
Бит IE – запрос прерывания. Устанавливается в состояние 1 при воз­никновении любого незамаскированного особого случая. Однако фактиче-
44
До операции
После операции
… 100 …
R0
R2
R3
ST(0) R4
ST(1) R5
Резуль­тат
ST(2) R6
ST(3) R7
ST
R1
Пустые регистры
… 011 …
R0
R2
Пустые регистры
ST(0) R3
ST(1) R4
Опе- ранды
ST(2) R5
ST(3) R6
ST(4) R7
ST
R1
ски генерация сигнала прерывания INT зависит от состояния бита IEM в слове управления.
Поле ST – указатель стека.
Бит В – флаг занятости. Устанавливается в состояние 1, когда СП выполняет арифметическую операцию. Используется для согласования ра­боты СП и ЦП.
Биты С0–С3 содержат код условия в операциях сравнения и анализа, выполняемых СП. Они аналогичны арифметическим флагам ЦП и фикси­руют особенности результата операции. Различные сочетания битов С0–С3 определяют следующие условия:
1) в операциях сравнения двух чисел - больше, меньше, равно, не-
сравнимы;
2) в операциях анализа содержимого регистров - пустой, нормали-
зованное или ненормализованное число, не число, нуль, бесконечность.
Коды условия используются для организации условных переходов.
3.3. Форматы команд математического сопроцессора
Типичная команда СП воспринимает один или два операнда, выпол­няет заданную операцию и формирует результат. При этом операндами наиболее часто служит содержимое регистров, но может быть и содержи­мое ячеек памяти.
Команды бинарных операций допускают три формы представле­ния: без явного указания операндов; с явным определением одного опе­ранда; с указанием двух операндов в команде.
В первом случае операция выполняется над двумя верхними элемен­тами стека ST(0), ST(1). После этого производится инкремент указателя стека и результат помещается в новую вершину стека [на место операнда ST(1)], как это показано на рис. 3.11.
Рис. 3.11
Во втором случае, когда в бинарной команде определен один опе­ранд (регистр или ячейка памяти), действие выполняется с этим операндом
45
1 1 0 1 1 0 1 1
1 1 1 К О П
7 4 5
0
11011 MF Х
mod Y r/m
dispL
7
0
dispH
7
0
7 3 2 1 0
КОП
ЕА
7 6 5 3 2 0
Младший байт
Старший байт
1 1 0 1 1 Х
mod Y r/m
dispL
7
0
dispH
7
0
7 3 2 0
ESC
КОП
ЕА
7 6 5 3 2 0
Младший байт
Старший байт
7 3 2 0
и содержимым стека ST(0). Результат загружается в старую вершину стека, указатель стека не изменяется.
При третьей форме представления, когда в команде указано два опе­ранда, ими является содержимое стека ST(0) и ST(i). Запись результата производится на место ST(0) или ST(i), причем во втором случае возмо­жен инкремент указателя стека, т.е. извлечение из стека.
Команда СП может иметь длину от двух до четырех байт. Обобщен­ный формат сопроцессорной команды приведен на рис. 3.12.
Рис. 3.12
Первый байт каждой команды содержит код ESC (11011) и поле Х. Второй байт имеет структуру постбайт режима адресации ЦП, в котором поле reg обозначено как Y. Поля Х и Y используются для задания кода операции, поля mod и r/m используются для задания адреса операнда. По содержимому этих полей ЦП извекает операнд из памяти и выдает его на ШД в качестве операнда для сопроцессора.
Для операции с двумя операндами один из них всегда расположен в вершине стека ST(0), а адрес второго задается полями mod и r/m, которые определяют способ формирования ЕА (см. табл. 2.3, 2.4).
Значение mod=11 показывает, что смещение отсутствует, а операнд находится в регистре ST(i), номер i которого задается в поле r/m.
Команды без явного указания операндов (первая форма представле­ния) имеют следующий формат, показанный на рис. 3.13.
разряда поля Х используются для задания типа операнда, расположенного в памяти. Такой формат показан на рис. 3.14.
табл. 3.4.
Рис. 3.13
В ряде команд применяется специальный формат. В нем два старших
Рис. 3.14
Поле MF – формат памяти. Это поле кодируется в соответствии с
46
Код поля MF
Формат операнда в памяти
00 01 10 11
КВФ (32 разряда) Короткое целое (32 разряда) ДВФ (64 разряда) Целое слово (16 разрядов) или упакованное десятичное число (80 разрядов)
Таблица 3.4
Если команда определяет операцию с одним операндом, то он всегда располагается на вершине стека. При этом mod = 11, а поле r/m использу­ется для расширения кода операции.
4. ОРГАНИЗАЦИЯ МПС НА ОСНОВЕ МИКРОПРОЦЕССОРОВ С АРХИТЕКТУРОЙ х86/16. ЗАЩИЩЕННЫЙ РЕЖИМ
4.1. Структурная организация микропроцессора в защищенном 16-разрядном режиме
В этом режиме в МП реализуются конвейерная обработка команд и данных, многозадачность, которая поддерживается защищенной архитек­турой. Емкость виртуальной памяти в этом режиме достигает 1 ГБ, а физи­ческой – 16 МБ. Такой режим является основным в МП I80286 и вспомога­тельным в МП начиная с I80386.
Упрощенная структура МП представлена на рис. 4.1. Благодаря на­личию четырех конвейерных устройств возможно одновременно для раз­ных команд выполнять дешифрирование, операцию АЛУ, вычисление фи­зического адреса, циклы шины. Рассмотрим назначение этих устройств.
Шинный интерфейс обеспечивает связь МП с его окружением. Он принимает внутренние запросы для выборки команд и для обмена данны­ми. Одновременно ШИ генерирует или обрабатывает сигналы для испол­нения текущего цикла магистрали.
Командное устройство преобразует байты команд из очереди ко- манд в микрокод. Декодированные команды в ожидании обработки хра­нятся в очереди команд.
Операционное устройство выполняет команды, взаимодействуя для этого со всеми другими блоками. Для ускорения выполнения команд с об­ращениями к памяти ОУ приступает к их выполнению до завершения вы­полнения предыдущей команды.
Устройство управления памятью (адресное устройство) организует адресацию к памяти, переключение задач и защиту задач.
47
NT
IOPL
OF
DF
IF
TF
SF
ZF AF PF CF
Блок фор-
мирования
базы
Блок фор-
мирования
смещения
Блок
форми-
рования физиче-
ского
адреса
АЛУ
Блок РОН
Блок
упр-я
МП
Рг
флагов
Блок передачи адреса
Блок управления сис-
темной шиной
Очередь команд
Блок приёма/передачи
данных
Очередь де-
шифрирован-
ных команд
Дешифратор
команд
Операционное устройство
Командное устройство
Устройство управления памятью
Шинный интерфейс
ША 0-23
ШУ
ШД 0-15
Флаги управления
Флаги состояния
Рис. 4.1
4.2. Программная модель микропроцессора
Программная модель МП содержит наряду с основными функцио­нальными регистрами, присущими реальному режиму, ряд дополнитель­ных регистров. Они предназначены для поддержки мультипрограммной и многопользовательской работы МПС и называются системными.
4.2.1. Основные функциональные регистры
В такой модели МП, так же как и в модели реального режима, при­сутствуют следующие регистры: общие AX, BX, CX, DX, BP, SP, SI, DI; указатель команд IP; флагов FLAGS.
Кроме флагов реального режима F (см. п. 2.2) регистр FLAGS до­полнен двумя полями, которые используются только в защищенном ре­жиме. Формат регистра флагов показан на рис. 4.2.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
задача была вызвана из другой программы и возврат из этой задачи должен проводиться по механизму переключения задач).
Флаг NT – вложенная задача (при NT = 1 показывает, что текущая
Рис. 4.2
48
CS
Селектор
Резерв
Базовый адрес
Размер
Доступ
SS
Селектор
Резерв
Базовый адрес
Размер
Доступ
ES
Селектор
Резерв
Базовый адрес
Размер
Доступ
DS
Селектор
Резерв
Базовый адрес
Размер
Доступ
INDEX
TI RPL
15 3 2 1 0
Поле IOPL – уровень привилегий ввода/вывода. Показывает наи­высшее значение текущего уровня привилегий программы CPL, позво­ляющее выполнять операции ввода/вывода, не приводя к обработке соот­ветствующего прерывания. Это поле задает также наивысшее значение CPL, которое позволяет изменять бит IF (разрешение маскируемых пре­рываний).
В зависимости от режима работы изменяется назначение сегментных регистров DS, ES, SS, CS. В реальном режиме они служат для хранения ба­зовых адресов соответствующих сегментов. В защищенном режиме эти ре­гистры содержат значения селекторов сегментов.
Селекторы указывают на текущие адресуемые сегменты памяти. С ними связаны программно-недоступные регистры дескрипторов сегментов (см. рис. 4.3).
15 0 15 0 23 0 15 0 7 0
63 48 47 24 23 8 7 0 Регистр сегментов Регистр дескрипторов
Рис. 4.3
Каждый дескриптор относится только к одному сегменту и описыва­ет: физический базовый адрес сегмента; размер (предел) сегмента, который может быть от 1 байта до 64 КБ; права доступа к сегменту.
В байте прав доступа (доступ) задаются биты и поля, которые опре­деляют: наличие соответствующего сегмента в ОП; уровень привилегий дескриптора сегмента; роль дескриптора в системе; тип дескриптора. Ос­тавшиеся 16 разрядов (резерв) зарезервированы под 32-разрядный защи­щенный режим (х86/32).
Дескрипторы сегментов организуются в дескрипторные таблицы: ло­кальную дескрипторную таблицу LDT и глобальную дескрипторную таб­лицу GDT. Эти таблицы хранятся в памяти.
Обращение к необходимому дескриптору осуществляется с помо­щью селектора. Селектор, хранящийся в одном из сегментных регистров, имеет структуру, приведенную на рис. 4.4.
Поле RPL – уровень привилегий инициатора запроса.
Рис. 4.4
49
GDTR
База GDT
Размер
GDTR
IDTR
База IDT
Размер IDTR
15 0
MSW
15 0
23 0 15 0
7 0
LDTR
Селектор База LDT
Размер LDT
Доступ
TR
Селектор База TSS
Размер TSS
Доступ
…….
Конец сегмента
…….
Адресуемая ЯП
…….
Начало сегмента
База
Размер
Доступ
Дескриптор
Сегмент
Селектор
Смещение
ФА ЯП
ОП
15 0 15 0
Бит TI – индикатор таблицы. Определяет, какая из таблиц - LDT (при TI=0) или GDT (при TI=1) - используется.
Поле INDEX задает номер для выбора одного из дескрипторов, со­держащихся в таблице.
При загрузке нового селектора в сегментный регистр соответствую­щий дескриптор из памяти автоматически загружается в регистр дескрип­торов. Такие регистры являются кэшированными.
В защищенном режиме, так же как и в реальном, физический адрес (ФА) ячейки памяти (ЯП) определяется путем сложения базового адреса (базы) сегмента и смещения от этого адреса. Но логический адрес пред­ставляется в другом виде: селектор: смещение.
При таком задании логического адреса формирование физического адреса будет осуществляться по схеме, приведенной на рис. 4.5.
Рис. 4.5
4.2.2. Системные регистры
При работе в защищенном режиме в МП используются следующие системные регистры: GDTR, IDTR, MSW, TR, LDTR.
Структура регистров приведена на рис. 4.6.
23 0 15 0
Рис. 4.6
50
15 4 3 2 1 0
Резерв Intel
TS
EM
MP
PE
Рассмотрим назначение этих регистров.
Регистр глобальной дескрипторной таблицы GDTR содержит ин­формацию о местонахождении таблицы GDT. Эта таблица определяет глобальную часть виртуальной памяти (0,5 ГБ), доступную задаче, выпол­няемой МП в защищенном 16-разрядном режиме.
Регистр дескрипторной таблицы прерываний IDTR адресует таблицу точек входа обработки прерываний (256 отдельных процедур обработки прерываний).
Слово состояния машины MSW. Этот регистр используется только в 16-разрядном защищенном режиме. В других режимах MSW входит в со­став одного из регистров управления. MSW содержит информацию о кон­фигурации МП и его общем состоянии. Формат регистра показан на рис.
4.7.
Рис. 4.7
РЕ – бит разрешения защиты. При РЕ =1 осуществляется инициали­зация защищенного режима.
МР – бит мониторинга процессора. Показывает присутствие сопро­цессора I80287.
ЕМ – бит эмуляции сопроцессора. Установка этого разряда позволя­ет осуществлять программную эмуляцию математического СП.
TS – бит «задача переключена». Относится к переключению задачи и сопроцессору. Показывает, соответствует ли содержимое математического сопроцессора контексту текущей задачи.
Регистр задачи TR содержит информацию о сегменте состояния за­дачи TSS, где TSS – это специальный сегмент памяти, в котором сохраня­ется содержимое текущей задачи при переключении задач.
Регистр локальный дескрипторной таблицы LDTR адресует локаль­ную дескрипторную таблицу LDT для текущей задачи. Эта таблица опре­деляет локальную часть виртуальной памяти (0,5 ГБ), доступную только текущей задаче.
Системные регистры рассмотрены в той последовательности, в кото­рой они инициализируются при переводе МП из реального режима в за­щищенный 16-разрядный режим.
4.3. Управление памятью МПС в защищенном
шестнадцатиразрядном режиме
В этом режиме МП позволяет задаче полагать, что она имеет доступ к адресному проcтранству оперативной памяти объемом 1 ГБ. Для управ­ления этим пространством предназначено адресное устройство.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]