115
- при реализации алгоритмов возникают очень большие и малые
промежуточные данные;
- требуется высокая точность вычисления;
- необходима производительность, превышающая возможности
центрального процессора.
Наряду с традиционными арифметическими командами, работающими
как целыми, так и числами с плавающей точкой, арифметический
сопроцессор имеет команды таких сложных операций, как извлечение
квадратного корня, вычисление тригонометрических и обратных
тригонометрических функций, возведение в степень, логарифмирование и др.
2.6.1 Программная модель сопроцессора
В программную (регистровую) модель любого процессора включаются
только те регистры, которые доступны программисту на уровне машинных
команд. Арифметический сопроцессор имеет общую стековую организацию.
Выбор такой организации обусловлен несколькими обстоятельствами. Одно
из них заключается в том, что в математических расчетах результат текущей
операции часто может заместить один или оба исходных операнда и является
операндом следующей команды. Стековая организация позволяет в этих
случаях применять так называемые безадресные команды небольшой длины
(неявная адресация), сокращая, таким образом, число обращений к памяти и,
следовательно, повышая быстродействие.
Основу программной модели сопроцессора, показанной на рисунке
2.26, образует регистровый стек из восьми 80-битовых регистров R0–R7. В
этих (арифметических) регистрах хранятся числа, представленные в так
называемом временном вещественном формате. В любой момент времени
трехбитовое поле ST в слове состояния определяет регистр, являющийся
текущей вершиной стека (Stack Top) и обозначается ST(0) или просто ST. При
операции включения в стек осуществляется декремент поля ST и
загружаются адресуемые данные в новую вершину стека. При операции
извлечения из стека в получатель, которым чаще всего является память,
передается содержимое текущей вершины стека, а затем производится
инкремент поля ST.
В организации регистрового стека сопроцессора имеется несколько
отличий от классического стека, который в большинстве современных
процессоров аппаратно реализуется в памяти.
Во-первых, стек имеет круговую (кольцевую) организацию. Необходимо
помнить, что максимальное число включений в стек без промежуточных
извлечений равно восьми, а девятое включение перезапишет элемент,
помещенный в стек первым (на самом деле сопроцессор зафиксирует здесь
особый случай недействительной операции и, если прерывание замаскировано