Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Организация вычислительных систем на базе микропроцессоров с архитектурой x86. Учебное пособие
.pdf
21
000…000
000… ...000
1
-0
+0
000…000
000… ...000
0
111…111
000… ...000
+∞
0
Знак мантиссы
Порядок
Мантисса
111…111
000… ...000
1
-∞
111…1101
111… ...111
1
Минимальное число
111…1101
111… ...111
0
Максимальное число
Представление вещественных чисел в математическом сопро-
цессоре. В сопроцессоре введены специальные коды для представления
бесконечно больших по модулю чисел +∞ и -∞. Это все единицы в порядке
и все нули в мантиссе (см. рис. 2.4)
Рис. 2.4
Значения, лежащие за пределами ±∞, обозначаются как не числа
NAN (not a number), т.е. все значения, в которых мантисса отлична от нуля,
а порядок содержит все единицы, не воспринимаются сопроцессором как
числа. Таким образом, коды допустимых числовых значений имеют следующий вид (рис. 2.5).
Рис. 2.5
Число «нуль» в вещественном формате может иметь два представления: +0 и -0 (см. рис. 2.6), которые в вычислениях интерпретируются одинаково, кроме случаев деления на 0.
Рис. 2.6
Способы записи мантиссы и порядка вещественных чисел имеют
следующие особенности.
1. Числа представляются в нормализованном виде, т.е. первая значащая цифра после запятой не является нулем. В двоичной системе счисления нормализованная мантисса всегда будет иметь единицу после запятой,
т.е. число представляется как 0.1ххххх10Р, где х – двоичное число; Р – порядок. Показанная единица старшего разряда мантиссы в коротком и
длинном вещественных форматах не хранится в памяти, т.е. является подразумеваемой. Во внутреннем вещественном формате эта единица явная.
2. Мантисса представляется в прямом коде.
3. Порядок представляется в смещенной форме, т.е. истинный поря-
док Р суммируется со смещением С, которое представляет собой некоторую

22
12C
1N
R0
R1
R2
R3
R4
R5
R6
R7
Рг управления
Рг состояния
Рг тэгов
Указатель
команды
Указатель
операнда
ЕР
TR
SR
CR
0
15
константу
, где N – число разрядов для записи порядка. Для КВФ
значение N=8, поэтому С = 257. Для ДВФ N =11 и С = 1047. Для ВВФ N =15,
С = 16383. Смещенный порядок называется характеристикой числа и всегда
принимает значение больше нуля.
2.2. Программная модель математического сопроцессора
Основу программной модели сопроцессора составляет регистровый
стек из восьми 80-битовых регистров. С этим стеком связаны регистры окружения. Программная модель сопроцессора представлена на рис. 2.7.
Регистровый стек Регистры окружения
79 78 64 63 0
Знак Порядок Мантисса
мантиссы
Рис. 2.7
Выбор стековой организации регистров обусловлен следующими об-
стоятельствами:
1) в математических расчетах результат текущей операции часто
может заместить один или два операнда и сам является операндом для следующей команды;
2) представление математических выражений в польской (бесско-
бочной) записи делает стековую организацию сопроцессора наиболее
удобной и естественной;
3) стековая организация в этих случаях позволяет применить безад-
ресные команды небольшой длины, что сокращает число обращений к памяти и тем самым повышает быстродействие.
В регистрах операнды хранятся во внутреннем вещественном форма-
те. Со стеком связан трехразрядный указатель стека ST, который всегда
определяет регистр, являющийся текущей вершиной стека. Указатель стека ST представляет собой 3-разрядное поле регистра состояния SR.
Стек работает следующим образом. При записи в стек производится
декремент поля ST и данные загружаются в новую вершину стека. При

23
TAG7
TAG6
TAG5
TAG4
TAG3
TAG2
TAG1
TAG0
Код поля TAGi
Содержимое регистра Ri
00
01
10
11
Конечное число, не равное нулю
Нуль
NAN или ∞
Pегистр пуст (не инициализирован)
чтении из стека операнд выбирается из вершины стека и производится инкремент поля ST.
Регистровый стек имеет следующие особенности, отличающие его от
традиционного понятия стека.
1. Такой стек имеет кольцевую организацию. Это означает, что если
поле ST содержит код 000 и производится его декремент, то новым значением ST будет 111. И наоборот, если ST = 111, то после инкремента
ST = 000. Контроль за использованием стека осуществляет программист.
2. В командах сопроцессора допускается обращение к любому реги-
стру стека, а не только к вершине.
3. Возможно обращение к вершине стека без модификации указателя
стека ST.
Каждому регистру стека поставлен в соответствие двухбитный при-
знак (тэг). Совокупность тэгов образует слово тэгов, хранящееся в регистре TR. Его формат показан на рис. 2.8.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Рис. 2.8
Информация в этих полях кодируется в соответствии с табл. 2.1.
Таблица 2.1
Наличие регистров тэгов позволяет сопроцессору быстрее обнару-
живать особые случаи в вычислениях и эффективнее обрабатывать специальные численные значения, например нуль. В частности, попытка извлечь
число из пустого регистра фиксируется как особый случай. Аналогичный
результат вызывает попытка загрузить число в непустой регистр.
Указатель исключительных ситуаций ЕР. Представляет собой две
пары 16-разрядных регистров. В первой паре содержится указатель команды, во второй – указатель операнда.
Когда сопроцессор выполняет обработку числовых данных, он автоматически сохраняет в этих регистрах физический адрес команды сопроцессора (адрес ее первого байта), физический адрес операнда (если он
есть) и младшие 11 разрядов кода операций. Старшие пять бит любой команды сопроцессора содержат код ESC (11011) и не сохраняются.
Расположение указанной информации в регистрах ЕР показано на
рис. 2.9.

24
Указатель команды
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
Рис. 2.9
На основании этой информации процедурой обработки исключительной ситуации можно точно определить команду и соответствующий
операнд, вызвавшие особый случай (прерывание), и установить причину
его возникновения.
Следует отметить, что прикладные программы обычно не используют TR и EP. Эти средства предназначены для разработки процедур обра-
ботки особых ситуаций, которые входят в состав системного программного обеспечения.
Программно-доступными регистрами сопроцессора являются регистры управления CR и состояния SR. Их форматы приведены на рис. 2.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
Рис. 2.10
Слово управления, хранящееся в регистре CR, определяет для сопроцессора один из нескольких возможных вариантов обработки численных
данных. Для каждого варианта программист может задавать: маскирование
особых случаев; точность вычислений; способ округления результата; вариант интерпретации бесконечности.
Слово управления загружается из памяти специальной командой.
Следовательно, программа ЦП может сформировать в памяти необходимый вариант слова управления, а затем сопроцессор загрузит его в CR.
Рассмотрим назначение отдельных полей этого регистра.
Шесть младших разрядов регистра CR представляют собой маски
особых случаев, т.е. необычных или ошибочных ситуаций, обнаруживаемых сопроцессором при выполнении команд: МР – маска «потеря точности»; MU – маска «антипереполнение»; MО – маска «переполнение»; MZ –
маска «деление на нуль»; MD – маска «денормализованный операнд»; MI маска «недействительная операция». Регистр состояния SR содержит 6 соответствующих флажков особых случаев.

25
Определим ситуации, при появлении которых фиксируются указан-
ные особые случаи.
1. Потеря точности фиксируется, когда истинный результат не может
быть точно представлен в заданном формате и сопроцессор производит его
округление.
2. Антипереполнение фиксируется, если значение истинного порядка
результата слишком мало и он выходит за диапазон значения порядка, который допустим в заданном формате.
3. Переполнение означает, что истинный порядок результата слишком велик и выходит за диапазон значения порядка, который допустим в
заданном формате. Это тот же случай, что и предыдущий, только антипереполнение бывает с отрицательным знаком порядка.
4. Деление на нуль 0 фиксируется при попытке деления нулевого конечного числа на 0.
5. Денормализованный операнд означает появление в операции операнда, который не представлен в нормализованном виде.
6. Особый случай недействительной операции является наиболее
сложным. Сюда относят следующие ситуации: деление нуля на нуль; умножение и деление бесконечностей; умножение бесконечности на нуль;
извлечение квадратного корня из отрицательного числа; любая операция с
NAN и т.д.
Разряд IEM - маска «разрешение прерываний». Когда IEM =1, сопроцессор не может посылать запрос прерывания ЦП до тех пор, пока IEM не
будет сброшен в 0. Этот механизм позволяет в программах ЦП запрещать
обработку прерываний от сопроцессора.
При работе СП появление особого случая отмечается установкой в 1
соответствующего флажка в регистре состояния. Далее СП проверяет маску в регистре управления. Если маска содержит 0, то СП формирует запрос
на прерывание ЦП с последующим вызовом процедуры обработки особого
случая (прерывание разрешается битом IEM). Если маска содержит 1, то
СП выполняет встроенную процедуру маскированной реакции без прерывания выполнения программы.
Такие встроенные процедуры обеспечивают возвращение математически приемлемого результата, позволяющего продолжать вычисления. В
частности, потеря точности предполагает округление результата, денормализованный операнд – преобразование операнда в эквивалентное нормализованное число и т.д. Поэтому в прикладных программах обычно рекомендуется маскировать все особые случаи, за исключением недействительной
операции. Обработка ее обычно производится процедурами ЦП, вызываемыми через прерывание.
Поле РС - управление точностью вычислений. Возможные режимы
округления приведены в табл. 2.2.

26
Код поля РC
Точность (разрядность мантиссы)
00
10
11
Мантисса 24 разряда (КВФ)
Мантисса 53 разряда (ДВФ)
Мантисса 64 разряда (ВВФ)
Код поля RC
Режим округления
00
01
10
11
Округление к ближайшему
Округление вниз (к -∞)
Округление вверх (к +∞)
Усечение к нулю
Таблица 2.2
По умолчанию используется режим с максимальной точностью.
Возможность задания режимов пониженной точности предусмотрена для
совместимости с некоторыми языками программирования.
Поле RС – управление округлением. Определяет один из четырех
возможных вариантов округления результатов операции сопроцессора.
Оно происходит в арифметических операциях, а также при записи в память, если заданный формат результата не позволяет точно представить
истинный результат. Возможные режимы округления показаны в табл. 2.3.
Таблица 2.3
Режим RС=00 обеспечивает максимальную точность вычислений.
Здесь за результат принимается ближайшее к истинному результату число,
которое можно представить в заданном формате. Для RС=01 в качестве результата выбирается ближайшее к истинному результату меньшее число, а
для RС=10 – большее число, представляемое в заданном формате. Режим
RС=11 позволяет в качестве результата выбрать ближайшее к истинному
результату число, меньшее по абсолютной величине и представляемое в
заданном формате (применяется в целочисленной арифметике).
Бит IC – управление режимом бесконечности. При IC=1 СП работает в режиме обычной (аффинной) арифметики, когда имеются две бесконечности: +∞ и -∞. При IC=1 используется режим проективной арифметики, когда имеется одна бесконечность без знака (+∞ и -∞ воспринимаются
как одно и то же). Обычно рекомендуется использовать проективный режим, что позволяет избежать ошибок, например, в операциях с +0 и -0.
Аффинный режим используется для математических расчетов, в которых
необходимо учитывать знак бесконечности.
Регистр состояния SR содержит различные поля и флаги, которые
при функционировании СП автоматически устанавливаются в соответствии с выполненными действиями или результатами этих действий. Младшие шесть бит представляют собой флаги регистрации особых случаев.
Бит IE – запрос прерывания. Устанавливается в состояние 1 при возникновении любого незамаскированного особого случая. Однако фактиче-

27
До операции
После операции
… 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) в операциях анализа содержимого регистров - пустой, нормали-
зованное или ненормализованное число, не число, нуль, бесконечность.
Коды условия используются для организации условных переходов.
2.3. Форматы команд математического сопроцессора
Типичная команда СП воспринимает один или два операнда, выполняет заданную операцию и формирует результат. При этом операндами
наиболее часто служит содержимое регистров, но может быть и содержимое ячеек памяти.
Команды бинарных операций допускают три формы представления: без явного указания операндов; с явным определением одного операнда; с указанием двух операндов в команде.
В первом случае операция выполняется над двумя верхними элементами стека ST(0), ST(1). После этого производится инкремент указателя
стека и результат помещается в новую вершину стека [на место операнда
ST(1)], как это показано на рис. 2.11.
Рис. 2.11
Во втором случае, когда в бинарной команде определен один операнд (регистр или ячейка памяти), действие выполняется с этим операндом

28
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), причем во втором случае возможен инкремент указателя стека, т.е. извлечение из стека.
Команда СП может иметь длину от двух до четырех байт. Обобщенный формат сопроцессорной команды приведен на рис. 2.12.
Рис. 2.12
Первый байт каждой команды содержит код ESC (11011) и поле Х.
Второй байт имеет структуру постбайта режима адресации ЦП, в котором
поле reg обозначено как Y. Поля Х и Y используются для задания кода
операции, поля mod и r/m используются для задания адреса операнда. По
содержимому этих полей ЦП извекает операнд из памяти и выдает его на
ШД в качестве операнда для сопроцессора.
Для операции с двумя операндами один из них всегда расположен в
вершине стека ST(0), а адрес второго задается полями mod и r/m, которые
определяют способ формирования ЕА (см. табл. 1.3, 1.4).
Значение mod=11 показывает, что смещение отсутствует, а операнд
находится в регистре ST(i), номер i которого задается в поле r/m.
Команды без явного указания операндов (первая форма представления) имеют следующий формат, показанный на рис. 2.13.
разряда поля Х используются для задания типа операнда, расположенного
в памяти. Такой формат показан на рис. 2.14.
табл. 2.4.
Рис. 2.13
В ряде команд применяется специальный формат. В нем два старших
Рис. 2.14
Поле MF – формат памяти. Это поле кодируется в соответствии с

29
Код поля MF
Формат операнда в памяти
00
01
10
11
КВФ (32 разряда)
Короткое целое (32 разряда)
ДВФ (64 разряда)
Целое слово (16 разрядов) или упакованное
десятичное число (80 разрядов)
Таблица 2.4
Если команда определяет операцию с одним операндом, то он всегда
располагается на вершине стека. При этом mod = 11, а поле r/m используется для расширения кода операции.
3. ОРГАНИЗАЦИЯ МПС НА ОСНОВЕ МИКРОПРОЦЕССОРОВ
С АРХИТЕКТУРОЙ х86/16. ЗАЩИЩЕННЫЙ РЕЖИМ
3.1. Структурная организация микропроцессора
в защищенном 16-разрядном режиме
В этом режиме в МП реализуются конвейерная обработка команд и
данных, многозадачность, которая поддерживается защищенной архитектурой. Емкость виртуальной памяти в этом режиме достигает 1 ГБ, а физической – 16 МБ. Такой режим является основным в МП I80286 и вспомогательным – в МП начиная с I80386.
Упрощенная структура МП представлена на рис. 3.1. Благодаря на-
личию четырех конвейерных устройств возможно одновременно для разных команд выполнять дешифрирование, операцию АЛУ, вычисление физического адреса, циклы шины. Рассмотрим назначение этих устройств.
Шинный интерфейс обеспечивает связь МП с его окружением. Он
принимает внутренние запросы для выборки команд и для обмена данными. Одновременно ШИ генерирует или обрабатывает сигналы для исполнения текущего цикла магистрали.
Командное устройство преобразует байты команд из очереди ко-
манд в микрокод. Декорированные команды в ожидании обработки хранятся в очереди команд.
Операционное устройство выполняет команды, взаимодействуя для
этого со всеми другими блоками. Для ускорения выполнения команд с обращениями к памяти ОУ приступает к их выполнению до завершения выполнения предыдущей команды.
Устройство управления памятью (адресное устройство) организует
адресацию к памяти, переключение задач и защиту задач.

30
NT
IOPL
OF
DF
IF
TF
SF
ZF AF PF CF
Блок фор-
мирования
базы
Блок фор-
мирования
смещения
Блок
форми-
рования
физиче-
ского
адреса
АЛУ
Блок
РОН
Блок
упр-я
МП
Рг
флагов
Блок передачи адреса
Блок управления сис-
темной шиной
Очередь команд
Блок приёма/передачи
данных
Очередь де-
шифрирован-
ных команд
Дешифратор
команд
Операционное устройство
Командное устройство
Устройство управления памятью
Шинный интерфейс
ША 0-23
ШУ
ШД 0-15
Флаги управления
Флаги состояния
Рис. 3.1
3.2. Программная модель микропроцессора
Программная модель МП содержит наряду с основными функциональными регистрами, присущими реальному режиму, ряд дополнительных регистров. Они предназначены для поддержки мультипрограммной и
многопользовательской работы МПС и называются системными.
3.2.1. Основные функциональные регистры
В такой модели МП, так же как и в модели реального режима, присутствуют следующие регистры: общие AX, BX, CX, DX, BP, SP, SI, DI;
указатель команд IP; флагов FLAGS.
Кроме флагов реального режима F (см. п. 1.2) регистр FLAGS дополнен двумя полями, которые используются только в защищенном режиме. Формат регистра флагов показан на рис. 3.2.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Флаг NT – вложенная задача (при NT = 1 показывает, что текущая
задача была вызвана из другой программы и возврат из этой задачи должен
проводиться по механизму переключения задач).
Рис. 3.2
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
