El Motorola 68881 fue un coprocesador matemático que se utilizó en algunos sistemas informáticos que empleaban la CPU 68020 o 68030. La adición del chip 68881 elevaba sustancialmente el coste del ordenador, pero disponer de una unidad de punto flotante (FPU) dedicada permitía realizar cálculos matemáticos en coma flotante mucho más rápidamente. En la época de comercialización del 68881, esto es útil principalmente para aplicaciones científicas y matemáticas.
Descripción general
Los procesadores 68020 y 68030 fueron diseñados con un chip 68881 separado en mente. Sus conjuntos de instrucciones reservaban las instrucciones de «línea F», es decir, los opcodes que empezaban por el dígito hexadecimal 0xF eran «trampas» que generaban una interrupción, cediendo el control al sistema operativo de la computadora. Si un 68881 estaba presente en el sistema, la CPU le permitía ejecutar la instrucción. Si no, el sistema operativo podía bien llamar a un emulador de FPU para ejecutar la instrucción usando código entero 68020, o bien devolver un código de error al programa.
El 68881 tenía registros de datos de 80 bits. Permitía siete modos diferentes de representación numérica, incluyendo precisión simple, precisión doble y precisión extendida, tal como definía el estándar de la IEEE para aritmética en coma flotante (IEEE 754). Estaba diseñado específicamente para aritmética en coma flotante y no era pues un procesador de propósito general. Por ejemplo, cuando una instrucción requería cualquier cálculo de dirección, el procesador principal tenía que prepararlo antes de ceder el control al 68881.
La pareja de procesador y coprocesador se diseñó de forma que ambos corriesen en paralelo: cuando la CPU encontraba una instrucción 68881, pasaba a la FPU todos los operandos necesarios, y entonces la FPU liberaba a la CPU para continuar ejecutando la siguiente instrucción.
El Motorola 68882 fue una versión mejorada del 68881, con una segmentación (pipelining) mejorada y disponibles a mayores velocidades de reloj. Su conjunto de instrucciones era el mismo que el del 68881. Motorola afirmaba en alguna documentación comercial que ejecutaba ciertas instrucciones un 40% más rápido que un 68881 a la misma velocidad de reloj, si bien esto no reflejaba el rendimiento típico en absoluto.
Ordenadores notables que incluyeron un 68881 o 68882 son el Sun 3 from Sun Microsystems, la familia Macintosh II de Apple Computer y el Commodore Amiga 3000. Algunos productos licenciados por Amiga usaban el 68881/2 como un periférico mapeado en memoria del 68000.
Cuando se presentó el Motorola 68040, su diseño ya incluía la FPU internamente. La mayoría de las instrucciones y los modos de representación numéricos del 68881 estaban soportados en hardware, pero algunos otros no, por lo que eran emulados en software.
Enlaces externos
- Manual de referencia del programador del Motorola MC68000 (inglés)
- comp.sys.m68k FAQ (inglés)