Организация ЭВМ и систем. Однопроцессорные ЭВМ. Часть 3

       

СОПРОЦЕССОРЫ


Расширение диапазона возможного применения процессоров с традиционной фон-неймановской архитектурой привело к тому, что наборы команд МП стали весьма громоздкими. Дальнейшее расширение наборов команд наталкивается на проблемы, связанные с поиском компромисса между добавлением команд, которые способствовали бы повышению производительности для конкретных областей применения, и усложнением кристалла ИС. Распространенный метод введения относительно более специализированных команд, применение которого не приводит к повышению сложности и стоимости базового МП, заключается в использовании сопроцессоров. Сопроцессоры

– это дополнительные процессорные устройства, обеспечивающие выполнение дополнительных команд, в которых нуждается тот или иной пользователь.

Наиболее распространенной разновидностью дополнительного процессорного устройства (ДПУ) является сопроцессор для обработки чисел с плавающей запятой. Это достаточно сложное устройство. Его сложность сопоставима со сложностью самого процессорного устройства. Однако использование таких ДПУ позволяет примерно в 100 раз увеличить скорость выполнения команд обработки чисел с плавающей запятой и значительно повысить точность получаемых результатов. Особенности технической реализации ДПУ различны у различных изготовителей, но многие основные принципы их построения не зависят от конкретной реализации.

Для использования команд, реализуемых сопроцессором в современных процессорах (в частности, 32-разрядных), предусматривается командная маска. Она представляет собой группу резервных кодов операции, которая идентифицируется процессором по заданному набору значений определенных битов кода. В остальных битах кода операции определяется конкретная дополнительная операция.

Обычно ДПУ подключается к линиям адресов и данных процессора и в нужный момент декодирует масочный код операции. Однако возможен и другой подход, при котором для работы с отдельным кодовым пространством ДПУ необходимы внешние логические схемы, так как ДПУ не способно само декодировать масочные коды операции.
Некоторые сопроцессоры имеют возможность брать на себя управление процессорной шиной для прямого обращения к памяти. Другие же прибегают к услугам основного процессора, который предоставляет им адреса для чтения или записи данных в память. Последний вариант характерен для однокристальных ДПУ (в частности, 32-разрядных). Возможность непосредственного обращения к памяти предусмотрена в некоторых одноплатных сопроцессорах, предназначенных для обработки матриц и ВВ аналоговой информации.

В системе, где сопроцессор не установлен, его функции должен иметь возможность эмулировать центральный процессор. В его управляющем регистре может быть предусмотрен бит, который устанавливается в состояние 1 при наличии сопроцессора. Если этот бит не установлен в состояние 1, то для реализации масочной операции, входящей в расширенный набор команд, центральный процессор переходит к определенной подпрограмме, при выполнении которой эмулируются соответствующие действия ДПУ.

Некоторые сопроцессоры работают в непараллельном (синхронном) режиме, при котором центральный процессор вынужден дожидаться завершения ДПУ-команды сопроцессором, для того чтобы начать выполнение очередной команды. Другие сопроцессоры работают в параллельном (асинхронном) режиме, позволяющем центральному процессору выполнять другие команды одновременно с реализацией ДПУ-команды сопроцессором. Очевидно, что параллельная работа сопроцессора и процессора позволяет повысить производительность системы в целом. Однако при этом возникают проблемы, связанные с изменением содержимого памяти центральным процессором до того, как соответствующие данные считаны сопроцессором, а также изменением содержимого памяти сопроцессором без уведомления об этом центрального процессора. Одним из путей решения этих проблем является запрещение прямого доступа к памяти со стороны сопроцессора при работе в параллельном режиме.

Для микропроцессора I80386 ДПУ, выполняющего действия над ЧПЗ, является сопроцессор I80387, имеющий быстродействие 1.8×106 операций в секунду и функционирующий параллельно с центральным процессором (I80386) в асинхронном

режиме.


Содержание раздела