Motorola 68881/68882: Устройства для вычислений с плавающей точкой
Motorola 68881
Motorola 68881/68882: сопроцессоры для 68020/68030. Ускорение вычислений с плавающей точкой в компьютерах 80-х. История, характеристики и производительность.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Блок вычислений с плавающей точкой
Computer floating point unit
Motorola 68881 и Motorola 68882 – это блоки вычислений с плавающей точкой (FPU), используемые в некоторых компьютерных системах совместно с 32-битными микропроцессорами Motorola 68020 или 68030. Эти сопроцессоры представляют собой отдельные чипы, разработанные до того, как вычисления с плавающей точкой стали стандартной функцией процессоров. Motorola 68881 был представлен в 1984 году. 68882 – это более производительная версия, выпущенная позднее.
The Motorola 68881 and Motorola 68882 are floating point units (FPUs) used in some computer systems in conjunction with Motorola's 32 bit 68020 or 68030 microprocessors. These coprocessors are external chips, designed before floating point math became standard on CPUs. The Motorola 68881 was introduced in 1984. The 68882 is a higher performance version produced later.
Обзор
Процессоры 68020 и 68030 были разработаны с учетом отдельного чипа 68881. Их наборы инструкций зарезервировали инструкции "F-линии" – то есть, все опкоды, начинающиеся с шестнадцатеричной цифры "F", могли быть либо перенаправлены внешнему сопроцессору, либо использованы как "ловушки", вызывающие исключение и передающие управление операционной системе компьютера. Если FPU отсутствует в системе, операционная система либо вызовет эмулятор FPU для выполнения эквивалентной инструкции с использованием программного кода на основе целочисленной арифметики 68020, вернет ошибку программе, завершит программу, либо вызовет сбой и потребует перезагрузки.
The 68020 and 68030 CPUs were designed with the separate 68881 chip in mind. Their instruction sets reserved the "F line" instructions – that is, all opcodes beginning with the hexadecimal digit "F" could either be forwarded to an external coprocessor or be used as "traps" which would throw an exception, handing control to the computer's operating system. If an FPU is not present in the system, the OS would then either call an FPU emulator to execute the instruction's equivalent using 68020 integer based software code, return an error to the program, terminate the program, or crash and require a reboot.
Архитектура
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 освобождает процессор для выполнения следующей инструкции.
The 68881 has eight 80 bit data registers (a 64 bit mantissa plus a sign bit, and a 15 bit signed exponent). It allows seven different modes of numeric representation, including single precision floating point, double precision floating point, extended precision floating point, integers as 8 , 16 and 32 bit quantities and a floating point Binary coded decimal format. The binary floating point formats are as defined by the IEEE 754 floating point standard. It was designed specifically for floating point math and is not a general purpose CPU. For example, when an instruction requires any address calculations, the main CPU handles them before the 68881 takes control. The CPU/FPU pair are designed such that both can run at the same time. When the CPU encounters a 68881 instruction, it hands the FPU all operands needed for that instruction, and then the FPU releases the CPU to go on and execute the next instruction.
68882 - - - - - - - -
68882 — улучшенная версия 68881 с более эффективной организацией конвейера и, в конечном итоге, доступная на более высоких тактовых частотах. Набор инструкций остался прежним. В некоторых рекламных материалах Motorola заявляла, что процессор выполняет некоторые инструкции на 40% быстрее, чем 68881 при той же тактовой частоте, однако это не соответствовало типичной производительности, что подтверждается более скромным улучшением, представленным в таблице ниже. 68882 аппаратно совместим с 68881 и может использоваться в качестве прямой замены в большинстве систем. Основная проблема несовместимости программного обеспечения заключается в том, что 68882 использует увеличенный формат состояния FSAVE, что потребовало модификации UNIX и других операционных систем с вытесняющей многозадачностью для выделения под него большего объема памяти.
The 68882 is an improved version of the 68881, with better pipelining, and eventually available at higher clock speeds. Its instruction set is exactly the same. Motorola claimed in some marketing literature that it executes some instructions 40% faster than a 68881 at the same clock speed, though this did not reflect typical performance, as seen by its more modest improvement in the table below. The 68882 is pin compatible with the 68881 and can be used as a direct replacement in most systems. The most important software incompatibility is that the 68882 uses a larger FSAVE state frame, which affects UNIX and other preemptive multitasking OSes that had to be modified to allocate more space for it.
Использование
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.
The 68881 or 68882 were used in the Sun Microsystems Sun 3 workstations, IBM RT PC workstations, Apple Computer Macintosh II family, NeXT Computer, Sharp X68000, Amiga 3000, Convergent Technologies MightyFrame, Atari Mega STE, TT, and Falcon. Some third party Amiga and Atari products used the 68881 or 68882 as a memory mapped peripheral to the 68000.
Наследие
Начиная с Motorola 68040, поддержка чисел с плавающей точкой была интегрирована непосредственно в процессор.
Starting with the Motorola 68040, floating point support was included in the CPU itself.