25. Математический сопроцессор. Регистры.
Отдельное опциональное устройство на материнской плате для расширения командного множества центрального процессора и обеспечивающий его функциональностью модуля операций с плавающей запятой, для процессоров, не имеющих интегрированного модуля.
Математический сопроцессор изначально шел в качестве отдельной микросхемы. Позже, в конце 80-ых и начале 90-ых, с 80496DX его интегрировали на одну плату с основным процессором.
Дальше стали появляться дополнительные расширения процессоров (которые могут в процессоре либо быть, либо не быть). В разных процессорах расширения могут быть реализованы по-разному.
В сопроцессоре предусмотрено восемь 80-разрядных регистров R0..R7.
- по отдельности к ним доступа нет
- адресация при выполнении операций происходит в виде стека ST, который реализован внутри сопроцессора
- ST соответствует регистру - текущей вершине стека
- ST(1)..ST(7) - прочие регистры, которые находятся ниже вершины.
Для выполнения операций в качестве одного из операндов берется регистр, на который указывает вершина стека. Вершина стека автоматически каждый раз увеличивается. Когда указатель вершины доходит до восьмого регистра - самого высокого регистра, автоматически происходит сброс в ноль (стек как бы закольцован). После 8 регистра снова вершиной становится первый регистр, и так далее.
Так же в FPU имеются следующие регистры:
-
SR
- регистр состояний. Отдельные биты описывают по отдельности состояния регистров, и в целом сигнализируют о различных ошибках, переполнениях и так далее. -
CR
- регистр управления. Через него можно настраивать правила округления чисел и контроль точности. Можно с помощью специальных битов указывать, как будет производиться округление - в большую сторону, в меньшую сторону, по математическим правилам или нет. Настройки для округления чисел с плавающей запятой достаточно гибкие. -
TW
- 8 пар битов, описывающих состояния восьми регистров в стеке: число, ноль, не-число, пусто. изначально все регистры пустые, инициализированные 1 -
FIP
,FDP
- адрес последней выполненной команды и её операнда, во время работы которых произошло исключение. SR, CR и TW содержат в себе 16 разрядов (слово). Разрядность регистров FIP и FDP зависит от разрядности машины, так как адреса могут иметь разную длину.