Введение

Блок вычислений с плавающей точкой

Motorola 68881 и Motorola 68882 – это блоки вычислений с плавающей точкой (FPU), используемые в некоторых компьютерных системах совместно с 32-битными микропроцессорами Motorola 68020 или 68030. Эти сопроцессоры представляют собой отдельные чипы, разработанные до того, как вычисления с плавающей точкой стали стандартной функцией процессоров. Motorola 68881 был представлен в 1984 году. 68882 – это более производительная версия, выпущенная позднее.

Обзор

Процессоры 68020 и 68030 были разработаны с учетом отдельного чипа 68881. Их наборы инструкций зарезервировали инструкции "F-линии" – то есть, все опкоды, начинающиеся с шестнадцатеричной цифры "F", могли быть либо перенаправлены внешнему сопроцессору, либо использованы как "ловушки", вызывающие исключение и передающие управление операционной системе компьютера. Если FPU отсутствует в системе, операционная система либо вызовет эмулятор FPU для выполнения эквивалентной инструкции с использованием программного кода на основе целочисленной арифметики 68020, вернет ошибку программе, завершит программу, либо вызовет сбой и потребует перезагрузки.

Архитектура

Motorola 68881/68882 серии регистров 79 63 00 (позиция бита) Регистры чисел с плавающей точкой ± экспонента мантисса FP0 ± экспонента мантисса FP1 ± экспонента мантисса FP2 ± экспонента мантисса FP3 ± экспонента мантисса FP4 ± экспонента мантисса FP5 ± экспонента мантисса FP6 ± экспонента мантисса FP7 31 23 15 07 00 (позиция бита) Контрольный регистр 0 0 Режим включения исключений Управление FPCR Регистр статуса Состояние Коэффициент исключения Статус накопленного исключения FPSR Регистр адреса инструкции 32-битный адрес FPIAR

68881 имеет восемь 80-битных регистров данных (64-битная мантисса, бит знака и 15-битный знаковый экспонент). Он поддерживает семь различных режимов числового представления, включая числа с плавающей точкой одинарной точности, двойной точности, расширенной точности, целые числа размером 8, 16 и 32 бита, а также формат чисел с плавающей точкой в двоично-десятичном коде. Бинарные форматы чисел с плавающей точкой определены стандартом IEEE 754. Он был разработан специально для математических операций с плавающей точкой и не является универсальным процессором. Например, если инструкции требуются какие-либо вычисления адресов, центральный процессор выполняет их до передачи управления 68881. Пара процессор/FPU разработана таким образом, чтобы оба могли работать одновременно. Когда процессор встречает инструкцию 68881, он передает FPU все необходимые операнды для этой инструкции, после чего FPU освобождает процессор для выполнения следующей инструкции.

68882 - - - - - - - -

68882 — улучшенная версия 68881 с более эффективной организацией конвейера и, в конечном итоге, доступная на более высоких тактовых частотах. Набор инструкций остался прежним. В некоторых рекламных материалах Motorola заявляла, что процессор выполняет некоторые инструкции на 40% быстрее, чем 68881 при той же тактовой частоте, однако это не соответствовало типичной производительности, что подтверждается более скромным улучшением, представленным в таблице ниже. 68882 аппаратно совместим с 68881 и может использоваться в качестве прямой замены в большинстве систем. Основная проблема несовместимости программного обеспечения заключается в том, что 68882 использует увеличенный формат состояния FSAVE, что потребовало модификации UNIX и других операционных систем с вытесняющей многозадачностью для выделения под него большего объема памяти.

Использование

68881 или 68882 использовались в рабочих станциях Sun Microsystems Sun 3, IBM RT PC, компьютерах Apple Macintosh II, NeXT Computer, Sharp X68000, Amiga 3000, Convergent Technologies MightyFrame, Atari Mega STE, TT и Falcon. Некоторые сторонние продукты для Amiga и Atari использовали 68881 или 68882 как периферийное устройство, отображаемое в память 68000.

Наследие

Начиная с Motorola 68040, поддержка чисел с плавающей точкой была интегрирована непосредственно в процессор.