Сопроцессор 80287


Предыдущая | Следующая

Сопроцессор 80287
В компьютере рядом с процессором 286 почти всегда имеется панелька для сопроцессора 80287, а самого сопроцессора может и не быть. Этот сопроцессор является как бы частью процессора 286, но размещен в отдельном корпусе. Процессоры соединяются друг с другом и действуют как одно целое: они программируются как один процессор.
Математический сопроцессор 287 рассчитан на сложные численные расчеты и является улучшенным вариантом сопроцессора 8087, который применяется с процессором 8086. Для процессора 80386 выпускается сопроцессор 80387. Сопроцессоры обеспечивают высокую точность при обработке больших чисел.
В процессоре 287 есть восемь регистров, которые действуют как общие регистры процессора 286, но их длина составляет 80 бит. Они могут оперировать очень большими числами без округления, как это вынужден делать процессор 286. Процессор 287 выполняет арифметические операции типа регистр-регистр, регистр-память и память-регистр.
Регистры рассчитаны только на арифметические операции и не работают с адресами. Всю адресацию проводит процессор 286, а процессор 287 оперирует только численными данными.
Восемь 80-битовых регистров не допускают индивидуальной адресации и действуют как специальный стек. Можно обращаться только к вершине стека. Численные команды обращаются к регистрам сопроцессора 287 относительно верхнего регистра стека. В регистре флажков сопроцессора 287 есть поле вершине стека TOS (Top Of Stack). Регистром флажков управляет операционная система, а не прикладная программа. Поле TOS показывает, какой из восьми регистров является вершиной стека. В ходе операций поле TOS изменяется. При выполнении команд, проводящих включение в стек или извлечение из стека, декрементируется или инкрементируется поле TOS, т.е. верхний регистр стека изменяется.
Команда загрузки проводит включение в стек: вначале декрементируется поле TOS, а затем обрабатываемое значение помещается в новый верхний регистр стека. Команда сохранения считывает содержимое верхнего регистра, а затем инкрементируется поле TOS. При извлечении из пустого стека процессор 287 сообщает об ошибке процессору 286.
Сопроцессор 287 работает в R- и Р-режиме. В регистре слова состояния машины MSW процессора 286 для сопроцессора 287 предназначены два бита. Напомним, что бит 0 разрешения защиты РЕ определяет работу в R- или Р-режиме. Когда РЕ= 1, процессор работает в Р-режиме, а при РЕ = 0 — в R-режиме. Бит 1 в регистре MSW называется битом присутствия сопроцессора (Math Present — МР), а бит 2 называется битом эмуляции сопроцессора (Emulate Math — ЕМ). Эти два бита определяют работу процессора 286 независимо от наличия сопроцессора 287 в гнезде.
В R-режиме эти биты сброшены в нуль и не влияют на действия сопроцессора 287, который работает отдельно или параллельно с процессором 286. Однако в Р-режиме операционная система проверяет наличие сопроцессора 287 в гнезде. Если он имеется, то бит МР устанавливается в единицу, что разрешает работу пары 286/287 и повышает производительность численных расчетов.
Если сопроцессора 287 нет, операционная система фиксирует это и устанавливает в единицу бит ЕМ. Когда ЕМ=1, процессор 286 знает, что он должен работать без помощи сопроцессор 287 и он наилучшим образом эмулирует его присутствие, т.е. заменяет физический сопроцессор 287 программами. Обычно такое решение оказывается вполне приемлемым. Нельзя устанавливать в единицу оба бита ЕМ и МР одновременно. Такая комбинация используется только в текстовых процедурах при производстве процессора 286.

 

 Поиск и устранение неисправностей в персональных компьютерах