Реферат по информатике Кафедра информатики сунц урГУ

Вид материалаРеферат
Другие микропроцессоры: сопроцессоры
Подобный материал:
1   ...   13   14   15   16   17   18   19   20   ...   27

Другие микропроцессоры: сопроцессоры


Хотя микропроцессоры Intel 80x86 являются мощными однокристальными процессорами, их системы команд недостаточно для эффективной реализации некоторых сложных применений. В этих случаях микропроцессоры необходимо дополнить сопроцессорами, которые расширяют системы команд в направлениях, обеспечивающих более эффективную реализацию требуемых специальных вычислений. Например, микропроцессоры 8086/8088 не имеют команд арифметики с плавающей точкой, а при использовании в качестве сопроцессора процессора числовых данных1 8087 легко реализуются требования вычислений с плавающей точкой. Важно отметить, что при этом выигрыш достигается только при использовании программ, написанных специально для этого сопроцессора (или совместимого с ним).

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

Хотя выбирать команды может только главный ЦП, но сопроцессор также получает все считанные команды и контролирует выполнение команд главным ЦП. В системе команд микропроцессоров Intel 80x86 имеется команда «передать сопроцессору»,2 которая, как и любая другая, одновременно дешифруется сопроцессором и главным ЦП. Отметим, что в этой команде не указывается, для того ли она сопроцессора, который установлен в системе, или для какого-то другого. Поэтому программа должна сама определять не только наличие сопроцессора, но и его тип, и менять своё поведение соответствующим образом.

Так как ЦП выбирает команды с опережением, выборка инструкции передачи команды сопроцессору, перехватываемая им, не означает немедленного выполнения этой инструкции, а при наличии перед ней команды перехода она может не выполняться совсем. Сопроцессор должен следить за командным потоком, управляя своей очередью команд, идентичной очереди ЦП, удаляя из неё выполняемые ЦП команды и очищая очередь, когда её очищает ЦП. В мультипроцессорной системе сопроцессор должен также контролировать, какой процессор выбирает команду.

Когда ЦП дешифрует команду для сопроцессора, он может просто перейти к следующей команде, а может считать первое слово операнда для сопроцессора из памяти, а затем перейти к следующей команде. Если ЦП считывает первое слово операнда, сопроцессор перехватывает и само слово данных, и его 20-битный физический адрес в памяти. Когда операнд-источник длиннее одного слова, сопроцессор получает остальные слова посредством запроса циклов шины, когда обращается к ней только он; в это время ЦП ждёт её освобождения. Если же операнд команды является получателем, сопроцессор игнорирует считанное ЦП слово данных, а позднее запоминает результат по перехваченному адресу. В любом случает сопроцессор выдаёт сигнал занятости на системную шину и выполняет указанную в команде операцию, пока ЦП продолжает выполнение программы. Такая параллельная работа продолжается до тех пор, пока ЦП не понадобится сопроцессор для выполнения другой операции или ЦП не потребуется получить результат текущей операции. При этом ЦП должен ожидать, пока сопроцессор не снимет сигнал занятости с шины. Для этого специальная команда микропроцессоров Intel 80x86 – «ждать освобождения сопроцессора»3 – периодически проверяет линию занятости сопроцессора и при снятии с неё сигнала осуществляет передачу управления находящейся за ней команде.

Код операции «передать сопроцессору» занимает 5 бит. Эта команда имеет два операнда. Первый из них, длиной 6 бит, показывает код внешней операции, определяющий действия сопроцессора. Если второй операнд, длиной 5 бит, определяет ячейку памяти, ЦП считывает слово из этой ячейки для сопроцессора и предаёт сопроцессору адрес для запоминания результата. Если вторым операндом является регистр ЦП, недоступный сопроцессору, ЦП не делает ничего. Такой формат команды ограничивает число различных внешних команд, использующих память, до 64. Если вторым операндом является регистр ЦП, то его адрес бесполезен сопроцессору и потому поле адреса регистра в команде содержит часть кода внешней операции. Поэтому операций, не использующих память, может быть до 512. В случае использования операцией памяти адрес необходимой ячейки может следовать за описанными 16 битами. Таким образом, полная команда может занимать 16 или 32 бита.

К одному микропроцессору 8086/8088 допускается подключать до двух сопроцессоров; при этом сопроцессорам необходимо назначать непересекающиеся подмножества кодов внешних операций, и каждый сопроцессор должен распознавать и выполнять операции своего подмножества. Это означает, в частности, что сопроцессоры должны быть различными. Подключаются оба сопроцессора к одним и тем же линиям системной шины, но к различным входам запроса циклов шины ЦП. Кроме того, сопроцессоры подключаются к различным входам запросов прерываний контроллера прерываний. Запрос прерывания формируются сопроцессором при возникновении ошибки в процессе дешифрации и выполнения его команд. Сопроцессор использует те же генератор синхронизации, контроллер шины, контроллер прерываний, защёлки адреса и приёмопередатчики, что и ЦП.

Сопроцессор должен знать, с каким процессором он работает, так как они имеют различные шины данных и очереди разной длины. Тип главного процессора можно установить по сигналам, выдаваемым им на системную шину сразу после сброса (например, при включении или перезагрузке системы). Чтобы сопроцессор знал, когда ему проверять шину для определения типа ЦП, он должен иметь общую с главным процессором линию сброса.

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