7.3.11. Математический сопроцессор 80287

 

Сопроцессор 80287 предназначен для расширения вычислительных возможностей центрального процессора (CPU) 80286 и 386. Функционально он напоминает сопроцессор 8087, но имеет возможность работы в реальном и защищенном режимах, выполняет некоторые дополнительные инструкции и иначе обрабатывает исключения. Интерфейс взаимодействия с основным процессором существенно отличается от связки 8086-8087. За счет изменения архитектуры повышена производительность вычислений. Более поздняя модификация, официально называемая Intel287 XL MCP (Math Coprocessor), имеет улучшенную архитектуру, повышенную производительность (сокращено количество тактов на выполнение операций) и поддерживает инструкции, доступные для 387+. К этой модификации относятся также и все математические отличия, которыми обладают сопроцессоры 387+ относительно 8087 и 80287.

Аппаратный интерфейс рассчитан на подключение к локальной шине процессора 80286 или 386. Расположение выводов приведено на рис. 4, назначение сигналов — в табл. 3.

Обмен данными между процессором и сопроцессором 80287 происходит по локальной шине данных в циклах чтения и записи портов ввода/вывода. Для сопроцессора в адресном пространстве ввода/вывода зарезервирована область 00F8-00FFh. Внешний дешифратор адреса при обращении к этой зоне подает на сопроцессор сигналы NPS1#=0 и NPS2=1. На входы CMD0, CMD1 подаются защелкнутые по сигналу ALE биты А1 и А2 шины адреса. Назначение шинных циклов приведено в табл. 4.

 

Рис. 4. Расположение выводов сопроцессора 80287

 

Таблица 3. Назначение сигналов сопроцессора 80287

В отличие от 8087 сопроцессор 80287 не обращается к памяти напрямую, оставляя все заботы адресации основному процессору. Все обмены данными инициируются процессором по инструкции ESCAPE. Получив и декодировав инструкцию, сопроцессор выставляет запрос PEREQ, и процессор, установив сигнал подтверждения РЕАСК#, передает данные в шинных циклах ввода/вывода. По окончании пересылки процессор снимает сигнал РЕАСК#. Если этот выход соединить с одноименным входом процессора, то при следующей инструкции WAIT и ряде команд ESCAPE будет генерироваться исключение 16 (10h). Однако в РС/АТ-286 этот выход заводится на вход вторичного контроллера прерываний IRQ13, вызывая в случае исключения прерывание 117 (Int 75h). В отличие от сопроцессора 8087, операция WAIT встроена во все инструкции, относящиеся к сопроцессору, поэтому сопроцессор 287 применения отдельной инструкции WAIT перед каждой командой не требует.

Таблица 4. Назначение шинных циклов сопроцессора 80287

После аппаратного сброса сопроцессор устанавливается в реальный режим, в котором связка 80286/80287 программно совместима с 8086/8087. В защищенный режим сопроцессор переключается по инструкции FSETPM, из которого, в отличие от основного процессора 80286, он может вернуться в реальный по инструкции FRSTPM. Перевод в защищенный режим изменяет форматы административных инструкций, которые обычно используются только обработчиками исключений, так что на прикладном уровне 80287 в обоих режимах обратно совместим с 8087.

 

 

 

 

HotLog

Заказчику web дизайна и программирования - каталог сайтов, обзор дизайн студий