Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Организация микропроцессоров и микропроцессорных систем. Учебное пособие
.pdf
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 ГБ. Для управления этим пространством предназначено адресное устройство.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
