Motorola 68881 и Motorola 68882 — это блоки с плавающей точкой (FPU), используемые в некоторых компьютерных системах в сочетании с 32-битными микропроцессорами Motorola 68020 или 68030. Эти сопроцессоры представляют собой внешние чипы, разработанные до того, как математика с плавающей точкой стала стандартом для ЦП. Motorola 68881 был представлен в 1984 году. [1] 68882 — это более производительная версия, выпущенная позже.
Процессоры 68020 и 68030 были разработаны с учетом отдельного чипа 68881. Их наборы инструкций зарезервировали инструкции «F-line» — то есть все коды операций, начинающиеся с шестнадцатеричной цифры «F», могли быть либо перенаправлены на внешний сопроцессор, либо использоваться в качестве «ловушек», которые выдавали исключение , передавая управление операционной системе компьютера . Если в системе отсутствует FPU, ОС либо вызывала эмулятор FPU для выполнения эквивалента инструкции с использованием целочисленного программного кода 68020, либо возвращала ошибку программе, завершала программу или аварийно завершала ее работу и требовала перезагрузки.
68881 имеет восемь 80-битных регистров данных (64-битная мантисса плюс знаковый бит и 15-битная знаковая экспонента). [2] Он допускает семь различных режимов числового представления, включая плавающую точку одинарной точности, плавающую точку двойной точности, плавающую точку расширенной точности, целые числа в виде 8-, 16- и 32-битных величин и двоично-десятичный формат с плавающей точкой. Двоичные форматы с плавающей точкой определены стандартом IEEE 754 с плавающей точкой. Он был разработан специально для математики с плавающей точкой и не является универсальным процессором. Например, когда инструкция требует каких-либо адресных вычислений, основной процессор обрабатывает их до того, как 68881 получает управление.
Пара CPU/FPU спроектирована таким образом, что они оба могут работать одновременно. Когда CPU встречает инструкцию 68881, он передает FPU все операнды, необходимые для этой инструкции, а затем FPU освобождает CPU для продолжения и выполнения следующей инструкции.
68882 — это улучшенная версия 68881 с улучшенной конвейеризацией и, в конечном итоге, доступная на более высоких тактовых частотах . [3] [4] Его набор инструкций точно такой же. Motorola утверждала в некоторых маркетинговых материалах, что он выполняет некоторые инструкции на 40% быстрее, чем 68881 на той же тактовой частоте, хотя это не отражает типичную производительность, как видно из его более скромного улучшения в таблице ниже. 68882 совместим по выводам с 68881 и может использоваться в качестве прямой замены в большинстве систем. Самая важная несовместимость программного обеспечения заключается в том, что 68882 использует больший фрейм состояния FSAVE, что влияет на UNIX и другие ОС с вытесняющей многозадачностью, которые пришлось модифицировать, чтобы выделить для него больше места.
68881 или 68882 использовались в рабочих станциях Sun Microsystems Sun-3 , рабочих станциях IBM RT PC , семействе Apple Computer Macintosh II , NeXT Computer , Sharp X68000 , Amiga 3000 , Convergent Technologies MightyFrame, Atari Mega STE , TT и Falcon . Некоторые [ какие? ] сторонние продукты Amiga и Atari использовали 68881 или 68882 в качестве периферийного устройства с отображением памяти для 68000 .
Эта статистика взята из часто задаваемых вопросов comp.sys.m68k. [3] Статистика для 16 МГц и 20 МГц 68882 не указана, хотя эти чипы действительно производились.
Начиная с Motorola 68040 , поддержка вычислений с плавающей точкой была включена в сам процессор.