Архитектура сопроцессора
В главе 2 мы определили место сопроцессора в архитектуре компьютера. Аппарат-
ная реализация сопроцессора нас интересует лишь в видимой для программиста
части. Как и в случае с основным процессором, интерес для нас представляет про-
граммная модель сопроцессора. С точки зрения программиста, сопроцессор пред-
ставляет собой совокупность регистров, каждый из которых имеет свое функцио-
нальное назначение (рис. 17.1).
Регистры стека сопроцессора RO..R7
Знак Порядок
Мантисса
Архитектура сопроцессора 449
Регистр тегов
R5
кь
R7
15
о
6
8
14
79 78
64 63
15
Регистр управления CWR
Регистр состояния SWR
15
47
Указатель команды IPR
Указатель данных DPR
47
Рис.
Программная модель сопроцессора
В программной модели сопроцессора можно выделить три группы регистров.
Восемь регистров
составляют основу программной модели сопроцессо-
ра — стек сопроцессора. Размерность каждого регистра — 80 битов. Такая орга-
низация характерна для устройств, специализирующихся на обработке вы-
числительных алгоритмов. Вспомните, как представляются математические
выражения с использованием обратной польской записи (ПОЛИЗ). Вычисле-
ние такого выражения заключается в выборке с вершины стека очередной опе-
рации. Если это двухместная операция, то с вершины стека снимаются два опе-
ранда, над которыми и производятся действия в соответствии со снятой ранее
операцией. Более подробно представление выражения в форме ПОЛИЗ мы рас-
смотрим далее. Реализация численных алгоритмов на основе стека сопроцес-
сора позволяет получить существенный выигрыш в скорости вычислений.
Три служебных регистра:
регистр состояния сопроцессора SWR (Status
Register) отражает ин-
формацию о текущем состоянии сопроцессора и содержит поля, позволяю-
щие определить, какой регистр является текущей вершиной стека сопроцес-
сора, какие исключения возникли после выполнения последней команды,
каковы особенности выполнения последней команды (некий аналог регист-
ра флагов основного процессора) и т. д.;
П управляющий регистр сопроцессора CWR (Control Word Register) управляет
режимами работы сопроцессора; с помощью полей в этом регистре можно
регулировать точность выполнения численных вычислений, управлять
округлением, маскировать исключения;
15
256
450 Глава
Архитектура и программирование сопроцессора
регистр слова тегов TWR (Tags Word Register) используется для контроля за
состоянием каждого из регистров
(команды сопроцессора использу-
ют этот регистр, например, для того, чтобы определить возможность записи
значений в указанные регистры).
Два регистра указателей — данных DPR (Data Point Register) и команд IPR
(Instruction Point Register) — предназначены для запоминания информации об
адресе команды, вызвавшей исключительную ситуацию, и адресе ее операнда.
Эти указатели используются при обработке исключительных ситуаций (но не
для всех команд).
Все эти регистры являются программно доступными. Однако к одним из них
доступ получить довольно легко, для этого в системе команд сопроцессора суще-
ствуют специальные команды, а к другим его получить сложнее, так как специаль-
ных команд для этого нет, поэтому необходимо выполнять дополнительные дей-
ствия.
Рассмотрим общую логику работы сопроцессора и более подробно охарактери-
зуем перечисленные регистры.
Регистровый стек сопроцессора организован по принципу кольца. Это означа-
ет, что среди всех регистров, составляющих стек, нет такого, который является вер-
шиной стека. Напротив, все регистры стека с функциональной точки зрения абсо-
лютно равноправны. Но, как известно, в стеке всегда должна быть вершина. И она
действительно есть, но является плавающей. Контроль текущей вершины осуще-
ствляется аппаратно с помощью трехразрядного поля ТОР регистра SWR (рис. 17.2).
В поле ТОР фиксируется номер регистра стека 0...7
являющегося текущей
вершиной стека.
Регистр состояния SWR
b
сЗ
top
с2
с1
со
es
sf
ре
ue
ое
ze
de
ie
15 14 13 11 10
9 8
5 4 3 2 1 О
Рис.
Формат регистра состояния сопроцессора SWR
Команды сопроцессора не оперируют физическими номерами регистров стека
RO...R7. Вместо этого они используют логические номера этих регистров
С помощью логических номеров реализуется относительная адресация реги-
стров стека сопроцессора. Если текущей вершиной стека является физический
регистр RO, то после записи очередного значения в стек сопроцессора его текущей
вершиной станет физический регистр R7 (рис. 17.3, а). На рис. 17.3, б показан при-
мер, когда текущей вершиной до записи в стек является физический регистр R3,
а после записи в стек текущей вершиной становится физический регистр стека R2.
То есть по мере записи в стек указатель его вершины движется по направлению
к младшим номерам физических регистров (уменьшается на
Что каса-
ется логических номеров регистров стека
то, как следует из рисунка,
они «плавают» вместе с изменением текущей вершины стека. Таким образом, реа-
лизуется принцип кольца.
На первый взгляд, такая организация стека кажется странной. Но, как оказа-
лось, она обладает большой гибкостью. Это хорошо видно на примере передачи
Архитектура сопроцессора 451
Do'stlaringiz bilan baham: |