Программная модель арифметического процессора
В ариметическом процессоре можно выделить арифметические регистры и регистры окружения. Арифметические регистры играют роль регистров общего назначения и состоят из восьми 80-разрядных регистров (рис. 2.3), организованных в стек. Со стеком связан трехразрядный указатель стека ST, значение которого указывает на один из восьми арифметических регистров (элементов стека), который является текущей вершиной стека. На рис. 2.3 показано, как нумеруются элементы стека при заданном значении (ST = 100). При выполнении операции PUSH - занесения в стек, значение ST предварительно уменьшается ST = ST - 1 и указывает номер регистра, куда заносится данное. При извлечении данных из стека по команде POP значение ST автоматически увеличивается на единицу ST = ST + 1 после извлечения. Следует отметить, что при исходном значении ST = 000 по команде PUSH будет получено значение ST = 111, а при иходном значении ST = 111 по команде POP - значение SТ = 000, т. е. регистры «закольцованы».
Рис. 2.3. Арифметические регистры и указатель стека
Регистры окружения.Включают три 16-разрядных регистра: SR - регистр состояния; CR - регистр управления; TR - регистр-этикетка и 64-разрядный регистр EP - указатель исключительных ситуаций.
Регистр состояния SR. Содержит различные поля и флаги (рис. 2.4), которые при функционировании процессора автоматически устанавливаются в соответствии с выполняемыми действиями или результатами действий.
Рис. 2.4. Регистр состояния SR и управления CR
Флаг В (от BUSY) устанавливается в «1», когда АП выполняет команду (центральный процессор при этом находится в состоянии ожидания). Поле ST принимает значение, равное текущему значению указателя стека арифметических регистров.
Флаги С0, С1, С2 и С3 принимают значения в соответствии с результатами выполнения ряда команд, как описано ниже. Пара флагов С3, С0 служит для записи результата команд сравнения чисел, одно из которых x0 находится в вершине стека, а второе х1 в памяти или POH. В табл. 2.3 приведены значения флагов С3, С0 в зависимости от соотношения между значениями чисел x0 и х1. Ситуация, соответствующая случаю «x0 несравнимо с х1» (C3C0=11), возникает, например, при сравнении некоторого конечного числа с NAN (см. табл. 2.1).
Таблица 2.3
Соотношение x0 и х1 | С3 | С0 |
x0 > х1 | ||
x0 < х1 | ||
x0 = х1 | ||
x0 несравнимо с х1 |
Все четыре флага С0 - С3 одновременно служат для записи результата команды FXAM, которая осуществляет детальный анализ содержимого вершины стека ST(0). Флаг С2 указывает знак числа, находящегося в вершине: если С2 = 0 - знак «+», иначе « - ». Флаг С3 указывает на различие в использовании значений пары флагов С0, C1 в соответствии с табл. 2.4. Значение С3 = 0 указывает, что в вершине стека находится какое-либо конечное число, а значение C3 = 1 указывает, что содержимое вершины стека не является конечным числом.
Таблица 2.4
Флаги С0 С1 | Значение вершины стека ST(0) | |
При С3 = 0 | При С3 = 1 | |
0 0 | Ненормализованное | NAN |
0 1 | Нормализованное | Бесконечность |
1 0 | Денормализованное | Вершина стека не инициализирована |
1 1 | Нулевое |
Флаги С0 - C3 служат также для кодирования результатов выполнения команды FPREM получения частичного остатка. Эта команда позволяет определить точное значение частного от деления чисел. За одно обращение она выполняет 64 вычитания (со сдвигом) делителя из делимого. Если при этом точный результат не найден, то выдается полученная часть результата и флаг С2 показывает, завершена команда полностью (C2=0) или не завершена (С2=1). В том случае, когда деление не завершено полностью (С2=1), в разряды С3, С1, С0 заносятся три младших разряда частного и команда затем может быть построена из последней точки. Для целей управления режимами обработки исключительных ситуаций служат флаги, расположенные в младшем байте регистра состояния SR (см. рис. 2.4).
Флаг IR (флаг запроса прерывания) устанавливается в «1», когда АП запрашивает прерывание (по выходу INT) у ЦП. Этот запрос осуществляется в случае возникновения какой-либо исключительной ситуации.
Флаги PE, UE, ОЕ, ZE, DE, IE соответствуют возможным исключительным ситуациям, возникающим в результате выполнения команд.
Флаг PE устанавливается в «1», когда исключительная ситуация связана с потерей точности. Это может случиться при преобразовании данных из формата ВВФ в какой-либо другой, например при выдаче результата.
Флаг UE устанавливается в «1», когда исключительная ситуация связана с денормализацией. Эта ситуация может возникнуть тогда, когда в результате операции получается настолько малое значение, что оно не может быть представлено в нормализованном виде, Флаг UE используется только при выполнении операций над вещественными числами, так как понятие «нормализованный» для целых чисел смысла не имеет.
Флаг ОЕ устанавливается в «1» при исключительной ситуации, связанной с переполнением. Эта ситуация может возникнуть тогда, когда в результате операции получается настолько большое значение, что оно не может быть представлено каким-либо конечным числом.
Флаг ZE устанавливается в «1» при попытке деления на нуль. АП анализирует значение делителя и при равенстве его нулю сигнализирует об этом.
Флаг DE устанавливается в «1» тогда, когда в качестве операнда операции задается ненормализованное значение.
Флаг IE устанавливается в «1» при попытке выполнить недействительную операцию. В качестве такой операции может быть любая, где в качестве операнда задается NAN. Операции, которые приводят, к неопределенным значениям, также вызывают исключительную ситуацию, характеризующуюся как недействительная операция.
Отметим, что каждый из перечисленных флагов, будучи установленным, не сбрасывается до тех пор, пока не будет подана команда FCLEX - обнуление флагов исключительных ситуаций.
Регистр управления CR. Служит для задания различных режимов работы сопроцессора. Различают две основные группы режимов - вычислений и обработки исключительных ситуаций. Для управления режимами вычислений служат поля, расположенные в старшем байте регистра CR (см. рис. 2.4). Поле RC осуществляет управление округлением результатов вычислений в соответствии с табл. 2.5.
Режим округления к ближайшему четному значению используется наиболее часто, так как обеспечивает максимальную точность вычислений. Режимы округления по направлению к плюс/минус бесконечности используются для определения границ значений, в пределах которых находится результат (например, полученный в режиме RC = 00). Наконец, режим округления по направлению к нулю используется в редких случаях, например для моделирования на базе АП целочисленной арифметики.
Поле РС осуществляет управление точностью представления результатов вычислений в соответствии с табл. 2.6. Обычно задается значение поля РС = 00, которое позволяет получить наиболее точные значения при вычислениях. Два других варианта задания точности РС = 01 и РС = 10 ограничивают представление результатов форматами КВФ и ДВФ. Причем, поскольку АП производит все действия в формате ВВФ, округление результатов до более коротких форматов может приводить к потере точности.
Таблица 2.5 Таблица 2.6
Код поля RC | Способ округления результата |
К ближайшему четному | |
По направлению к – оо | |
По направлению к +оо | |
По направлению к нулю |
Код поля РC | Точность представления результата |
В формате ВВФ | |
В формате КВФ | |
В формате ДВФ |
Флаг IC позволяет управлять типом арифметики. Значение IC = 1 определяет режим работы АП в обычной арифметике, использующей числа, лежащие в диапазоне от минус до плюс бесконечности. Значение IC = 0 определяет режим работы в так называемой проективной арифметике, которая имеет одну бесконечность без знака. Обычная арифметика имеет две бесконечности, между которыми расположены все вещественные числа. В проективной арифметике числа отображаются на проективную окружность, верхняя точка которой соответствует бесконечности без знака, нижняя нулю, а все остальные точки соответствуют конечным положительным и отрицательным числам. Особенность вычислений в проективной арифметике состоит, в частности, в том, что ни одно конечное число несравнимо с бесконечно большим. При выполнении операций сравнения это различие приведет к тому, что в результате сравнения чисел, одно из которых бесконечно большое, а другое конечное, в режиме IC = 1 получится вполне определенный результат (С3С0 = 00 или 01), а в режиме IC = 0 числа окажутся несравнимы (С3С0 = 11).
Для целей управления режимами обработки исключительных ситуаций служат разряды масок, расположенные в младшем байте регистра управления CR (см. рис. 2.4).
Когда возникает исключительная ситуация, необходимо осуществить какие-либо корректирующие действия. В большинстве случаев достаточно бывает выполнить стандартные действия, которые АП производит без помощи ЦП. В особых ситуациях АП посылает сигнал запроса прерывания и корректирующие действия выполняет ЦП. Соответствующие разряды масок позволяют управлять режимами обработки исключительных ситуаций стандартным способом либо с привлечением центрального процессора.
Разряд РМ = 1 маскирует флаг РЕ, и исключительная ситуация, связанная с потерей точности, обрабатывается стандартным способом. Сопроцессор в качестве результата операции выдает округленное значение.
Разряд UM = 1 маскирует флаг UE, и в качестве результата операции выдается значение в ненормализованном виде.
Разряд ОМ = 1 маскирует флаг ОЕ, и исключительная ситуация, связанная с переполнением, обрабатывается стандартным образом.
Разряд ZM = 1 маскирует флаг ZE и в качестве результата деления на нуль выдает значение бесконечности. Знак бесконечности формируется как сумма по модулю 2 знаков делимого и делителя (напомним, что нуль в форматах вещественных чисел имеет знак «+» и «-»).
Разряд DM = 1маскирует флаг DE и, сопроцессор выполняет операцию с ненормализованным значением операнда.
Разряд IM = 1 маскирует флаг IE, и в качестве результата АП выдает значение NAN. Если операция оценивается как недействительная, когда оба участвующих в ней операнда имеют значение NAN, то в качестве результата выдается то из них, которое имеет большую мантиссу.
Описанные разряды масок могут быть установлены в «1» или сброшены соответствующей командой независимо друг от друга.
Разряд IEM - маска разрешения прерываний, прямо не связан с управлением режимами обработки исключительных ситуаций, но существенно влияет на их обработку. Когда разряд IEM = 1АП не может послать сигнал запроса прерывания INT центральному процессору до тех пор, пока разряд IEM не будет сброшен в «0». Этот механизм позволяет в программах ЦП при необходимости запрещать обработку прерываний от АП. Установка в «1» и сброс в «0» разряда-маски IEM производится командой FENI и FDISI соответственно.
Рис. 2.5. Регистр этикеток
Регистр этикеток TR. Содержит восемь 2-разрядных полей TAG7 - ТАG0 (рис. 2.5), каждое из которых соответствует своему арифметическому регистру ST(7) - ST(0) . В этих полях кодируется информация о содержимом соответствующего арифметического регистра. Информация кодируется в соответствии с табл. 2.7. В обычных применениях регистр этикеток не используется пользователями при составлении программы, а служит для предотвращения переполнения стека. Перед загрузкой данных в стек сопроцессор анализирует значение соответствующей этикетки TAG и, если флаг IE не замаскирован, автоматически генерирует запрос прерывания для обработки исключительной ситуации, связанной с недействительной операцией. В ряде специальных использований имеется возможность изменения значений полей регистра TR программным путем.
Регистр - указатель исключительных ситуаций EP.Обеспечивает возможность привлечения ЦП для обработки различных исключительных ситуаций. Когда такие ситуации возникают и соответствующие им флаги РЕ, UE, ОЕ, ZE, DE и флаг IE не замаскированы, АП посылает запрос прерывания INT центральному процессору. Для того чтобы ЦП мог правильно перейти ксоответствующей программе обработки, ему необходимо иметь достаточную информацию об условиях, вызвавших прерывание. Эта информация включает адрес команды, вызвавшей прерывание, код операции, выполняемой данной командой, и адрес операнда, который участвовал в операции. АП помещает указанную информацию в регистр-указатель ЕР при выполнении каждой команды. Формат представления данных в ЕР, показан на рис. 2.6.
Рис. 2.6. Формат представления данных в регистре ЕР
Первый 32-разрядный регистр ЕР содержит 20-разрядный адрес команды, вызвавшей прерывание, и 11 младших разрядов кода операций. Отметим, что пять старших разрядов любой команды для АП содержат код 11011 (ESC) и поэтому не запоминаются в ЕР. Второй 32-разрядный регистр содержит 20-разрядный адрес операнда, а оставшиеся 12 разрядов не используются.
Дата добавления: 2015-12-22; просмотров: 978;