Схема АП (рис. 2.2) включает два основных блока - сопряжения с шиной (БСШ) и исполнительный ИБ. Эти блоки, как и в ЦП, осуществляют конвейерный принцип обработки данных, при котором извлечение команд и операндов выполняется параллельно с вычислениями. Команды и операнды по мультиплексированной шине адреса/данных (ША/Д) ВМ, предварительно извлекаются из памяти и размещаются в соответствующих очередях. АП может работать только в паре с центральным процессором, который в этом случае должен быть установлен в максимальный режим. Когда процессоры включены совместно, команды передаваемые по ША/Д, поступают на оба процессора одновременно. В то время как ЦП выполняет команды, АП просто «прослеживает» их прохождение, не выполняя никаких действий.
![]()
ю
Рис. 2.2. Архитектура арифметического процессора Intel 8087
Это пассивное «прослеживание» продолжается до тех пор, пока в потоке команд не встречается команда ESC, которая предназначена для АП. С момента поступления команды ESC арифметический процессор начинает анализировать состояние очереди команд ЦП по сигналам QS1, QS0 (табл. 2.2). Поскольку команды в ЦП хранятся в очереди байтов команд, точный момент начала выполнения команды ESC определяется по концу выполнения предыдущей команды в очереди.
Таблица 2.2
Состояние очереди команд | Действия с очередью команд в ЦП | |
QS0 | QS1 | |
0 | 0 | Очередь не изменилась |
0 | 1 | Первый байт команды взят из очереди |
1 | 0 | Очередь реинициализирована |
1 | 1 | Очередной байт команды взят из очереди |
Как только сопроцессор определит, что последний байт предыдущей (перед ЕSС) команды взят из очереди, он приступает к выполнению своей команды. Команда ESC, как было отмечено в 1.9, обычно предваряется командой WAIT, которая переводит ЦП в состояние ожидания. Время нахождения центрального процессора в состоянии ожидания определяется активным сигналом на входе TEST. Арифметический процессор, приступая к выполнению команды, выставляет на выходе BUSY (занят) единичный сигнал, который подается на вход TEST центрального процессора и задерживает его в состоянии ожидания на время выполнения команды.
Напомним, что, находясь в состоянии ожидания, ЦП анализирует запросы прерывания и при необходимости может их обслуживать. Для обеспечения возможности совместного использования ША/Д процессоры снабжены соответствующими аппаратными средствами. Центральный процессор обладает преимущественным правом использования шины. Когда у АП возникает необходимость использования шины, например при пересылке результата операции в память, он посылает запрос на предоставление шины центральному процессору по линии RQ/GT. ЦП по этой же линии выдает сигнал разрешения на использование шины арифметическому процессору. После того как АП выполнит действия, связанные с использованием шины, он вновь посылает сигнал по линии RQ/GT, свидетельствующий об окончании использования. Этот механизм позволяет синхронизировать работу процессоров, предоставляя ресурсы ВМ в распоряжение АП.
Закончив выполнение команды, АП сбрасывает сигнал BUSY, делая активным сигнал на входе TEST, и выводит ЦП из состояния ожидания. Из приведенного описания ясно, что побудительным стимулом для включения в работу сопроцессора является наличие кода команды ESC в потоке команд совместно включенных процессоров. Код операции, которую выполняет АП, содержится в полях Х и Y команды ESC (см. рис. 1.9). В ряде случаев при выполнении команд в АП возникают исключительные ситуации, связанные с переполнением, потерей точности при округлениях и т. п. Для обработки таких ситуаций может потребоваться вмешательство ЦП, которому предписаны соответствующие программы обработки исключительных ситуаций. Механизм передачи управления на эти программы основан на использовании системы прерываний. Для этой цели АП имеет выход INT запроса прерываний, на котором генерируется сигнал запроса, когда возникает та или иная исключительная ситуация.
Рассмотренные аппаратные и программные средства процессоров позволяют достаточно просто организовать их взаимодействие и значительно расширить возможности ЦП.
2.2. Программная модель арифметического процессора
В ариметическом процессоре можно выделить арифметические регистры и регистры окружения. Арифметические регистры играют роль регистров общего назначения и состоят из восьми 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 | 0 | 0 |
x0 < х1 | 0 | 1 |
x0 = х1 | 1 | 0 |
x0 несравнимо с х1 | 1 | 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
Код | Способ округления |
00 | К ближайшему четному |
01 | По направлению к – оо |
10 | По направлению к +оо |
11 | По направлению к нулю |
Код | Точность представления |
00 | В формате ВВФ |
01 | В формате КВФ |
10 | В формате ДВФ |
Флаг IC позволяет управлять типом арифметики. Значение IC = 1 определяет режим работы АП в обычной арифметике, использующей числа, лежащие в диапазоне от минус до плюс бесконечности. Значение IC = 0 определяет режим работы в так называемой проективной арифметике, которая имеет одну бесконечность без знака. Обычная арифметика имеет две бесконечности, между которыми расположены все вещественные числа. В проективной арифметике числа отображаются на проективную окружность, верхняя точка которой соответствует бесконечности без знака, нижняя нулю, а все остальные точки соответствуют конечным положительным и отрицательным числам. Особенность вычислений в проективной арифметике состоит, в частности, в том, что ни одно конечное число несравнимо с бесконечно большим. При выполнении операций сравнения это различие приведет к тому, что в результате сравнения чисел, одно из которых бесконечно большое, а другое конечное, в режиме IC = 1 получится вполне определенный результат (С3С0 = 00 или 01), а в режиме IC = 0 числа окажутся несравнимы (С3С0 = 11).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |


