Программная модель математического сопроцессора.

С точки зрения программиста, сопроцессор представляет собой совокупность регистров, каждый из которых имеет свое функциональное назначение.

В программной модели сопроцессора можно выделить три группы регистров.

1. Стек сопроцессора – восемь регистров R0...R7 составляют основу программной модели сопроцессора. Размерность каждого регистра – 80 битов.

Регистровый стек сопроцессора организован по принципу кольца. Все регистры стека с функциональной точки зрения абсолютно равноправны. Контроль текущей вершины стека осуществляется аппаратно с помощью трехразрядного поля ТОР регистра SWR. В поле ТОР фиксируется номер регистра стека 0...7 (RO... R7), являющегося текущей вершиной стека. Команды сопроцессора не оперируют физическими номерами регистров стека RO...R7. Вместо этого они используют логические номера этих регистров ST(0)... ST(1). С помощью логических номеров реализуется относительная адресация регистров стека сопроцессора.

2. Три служебных регистра:

==1. регистр состояния сопроцессора SWR (Status Word Register) отражает информацию о текущем состоянии сопроцессора и содержит поля, позволяющие определить, какой регистр является текущей вершиной стека сопроцессора, какие исключения возникли после выполнения последней команды, каковы особенности выполнения последней команды; В SWR имеются:

– флаги исключительных ситуаций, сигнализирующие об ошибках работы стека сопроцессора или суммарных ошибках работы сопроцессора.

– четыре бита С0...СЗ (Condition Code), которые представляют собой код условия и отражают результат выполнения последней команды сопроцессора.

– поле ТОР, которое содержит указатель регистра текущей вершины стека.

– биты (флаги) регистрации исключительных ситуаций, т.е. особых типов прерываний.

==2. управляющий регистр сопроцессора CWR (Control Word Register) управляет режимами работы сопроцессора; с помощью полей в этом регистре можно регулировать точность выполнения численных вычислений, управлять округлением, маскировать исключения;

Он состоит из:

– шесть масок исключений, предназначеные для маскирования исключительных ситуаций;

– поле управления точностью PC (Precision Control), предназначеное для выбора длины мантиссы;

– поле управления округлением RC (Rounding Control), позволяющая управлять процессом округления чисел в ходе работы сопроцессора.

3. регистр слова тегов TWR (Tags Word Register), используется для контроля за состоянием каждого из регистров RO.. .R7 (команды сопроцессора используют этот регистр, например, для того, чтобы определить возможность записи значений в указанные регистры).

 

==3. Два регистра указателей — данных DPR (Data Point Register) и команд IPR (Instruction Point Register) — предназначены для запоминания информации об адресе команды, вызвавшей исключительную ситуацию, и адресе ее операнда. Эти указатели используются при обработке исключительных ситуаций (но не для всех команд).

Все регистры являются программно доступными. Однако к одним из них доступ получить довольно легко, для этого в системе команд сопроцессора существуют специальные команды, а к другим его получить сложнее, так как специальных команд для этого нет, поэтому необходимо выполнять дополнительные действия.

Типы данных.

Форматы данных, с которыми работает сопроцессор:

- двоичные целые числа в трех форматах — 16, 32 и 64 бита;

- упакованные целые десятичные (BCD) числа — длина максимального числа составляет 18 упакованных десятичных цифр (9 байтов);

- вещественные числа в трех форматах — коротком (32 бита), длинном (64 бита), расширенном (80 битов).

Кроме этих основных форматов, сопроцессор поддерживает специальные численные значения, к которым относятся:

- денормализованные вещественные числа — это числа, меньшие минимального нормализованного числа (см. ниже) для каждого вещественного формата, поддерживаемого сопроцессором;

- нуль;

- положительные и отрицательные значения бесконечности;

- нечисла;

- неопределенности и неподдерживаемые форматы.