El Intel 8231 y 8232 fueron los primeros diseños de matemáticas de punto flotante coprocesadores (FPU), comercializado para su uso con su i8080 línea de primarias CPU . Eran versiones con licencia de las FPU Am9511 y Am9512 de AMD , de 1977 y 1979, que AMD afirmó como las primeras soluciones FPU de un solo chip del mundo. [1] [2]
Adopción
Si bien el i8231 / i8232 (y sus primos de la marca AMD) estaban destinados principalmente a asociarse con el i8080 (o el clon de AMD Am9080), las múltiples opciones de interfaz en su diseño, desde la simple inserción del estado de espera y las rutinas de sondeo de estado hasta la interrupción y el controlador DMA métodos controlados adecuados para un procesador periférico o placa complementaria, significaban que, con una pequeña cantidad de lógica de pegamento , se podía usar en casi cualquier sistema de microprocesador que tuviera un subsistema DMA o un vector de interrupción / entrada de interrupción de repuesto disponible, y el original de AMD La documentación proporcionó varios ejemplos diferentes. [2] Esta fue una característica valiosa para una de las primeras FPU de un solo chip disponibles comercialmente, ampliando en gran medida su mercado potencial, y contrastaba con las FPU 8087 (y otras familias x87 ) de diseño interno de Intel, que estaban estrechamente vinculado a la línea de CPU x86 . Por ejemplo, el i8231A se usó en las tarjetas aceleradoras Applied Analytics MicroSPEED II y II + para la línea Apple II basada en 6502 , [3] pero también se dieron ejemplos para el Z80 , MC6800 , i8085 e incluso el Z8000 de 16 bits . Además, antes de la introducción del 8087, las propias hojas de datos preliminares de Intel sugerían los chips como compañeros adecuados para el entonces nuevo 8086 . [4]
Capacidad
El Intel 8231 (y 8231A revisado) es la Unidad de procesamiento aritmético (APU). Ofrecía precisión "doble" de 32 bits (un término posterior y más comúnmente utilizado para describir números de punto flotante de 64 bits, mientras que 32 bits se considera precisión "simple" ) punto flotante y 16 bits o 32 bits (precisión "simple" o "doble") cálculo de punto fijo de 14 funciones aritméticas y trigonométricas diferentes según un estándar patentado. La APU utilizó los polinomios de Chebyshev utilizando los algoritmos proporcionados aquí. La versión APU disponible de 4-MHz costaba USD $ 235.00 y la de 2 MHz costaba USD $ 149.00 en cantidades de 100 o más. [5] El último Intel 8232 es la unidad de procesador de punto flotante (FPU). Realizó cálculos de punto flotante de 32 bits o 64 bits (verdadera precisión simple y doble) que cumplen con el estándar ( borrador) IEEE-754 (tal como lo usan el i80387 y otras FPU posteriores), pero solo en las cuatro aritméticas primarias funciones (suma, resta, multiplicación y división). [1] [6] La versión FPU disponible de 4 MHz costaba USD $ 235.00 y la de 2 MHz costaba USD $ 149.00 en cantidades de 100 o más. [7]
Los tres chips utilizaron un diseño de bus de datos de 8 bits , en línea con el i8080 y la mayoría de los otros microprocesadores contemporáneos. El 8231 podía funcionar a hasta 3 MHz , [1] y el 8231A y 8232 hasta 4 MHz [1] [4] (una ligera mejora en el Am9512 que estaba limitado a 3 MHz [2] ), ya sea en sincronía con la CPU o (en el 8231A y 8232) de forma asíncrona dependiendo del grado de separación del bus en el sistema host. La operación asincrónica fue una adición útil al conjunto de características, ya que permitió, por ejemplo, que un sistema Apple II de aproximadamente 1 MHz se expandiera con un 8231A de 4 MHz y disfrutara del beneficio de un procesamiento numérico mucho más rápido de lo que podría haber estado limitado de otra manera, o un Sistema basado en i8085 de 5 MHz para alojar un 8231A o 8232 sin tener que reducir la velocidad a 4 MHz o menos para mantener la compatibilidad. También, junto con el diseño periférico impulsado por interrupciones, permitió un grado de procesamiento paralelo entre la CPU y la FPU, con el primero reanudando su propio procesamiento normal después de pasar comandos y datos al coprocesador esencialmente "externo", solo volviendo a la configuración flotante. -punto de la subtarea (para recibir resultados y, opcionalmente, emitir más comandos) cuando el copro le indica que el procesamiento se completó. Esta paralelización fue vital para mejorar el rendimiento general del sistema, cuando algunas de las funciones más complejas aún podían demorar a la FPU varios milisegundos en completarse, una eternidad en términos de computación.
Los tiempos de ejecución de las instrucciones eran muy variables y, como diseño de la primera generación, por lo general mucho más largos que los observados en las FPU posteriores más evolucionadas. Por ejemplo, ignorando las instrucciones de manejo de datos y de pila, en el 8232 oscilaron entre 56 períodos de reloj para una resta de precisión simple (32 bits), hasta 4560 períodos completos para una división de doble precisión (64 bits), [4 ] para una velocidad de procesamiento efectiva (si tiene una frecuencia de 4 MHz) de 877 a 71429 FLOPS . Las instrucciones del 8231 (A) iban desde 17 períodos para una adición de punto fijo de 16 bits, hasta 98 a 378 períodos para operaciones flotantes comunes de 32 bits (que dependen en gran medida no solo de la función en sí, sino de la magnitud real de la operandos y resultado, e incluso el número de "1" bits en cada número), hasta 12032 períodos para un cálculo de "potencia" de máxima complejidad, dando 332, a través de 10.6k ~ 40.8k, a 235.3k FLOPS de rendimiento ( a 4 MHz) dependiendo de la combinación de instrucciones y datos. [6] Si bien estos números pueden parecer bajos desde una perspectiva moderna, se comparan razonablemente bien con el sucesor i8087 (cuyas mayores ventajas fueron un bus de datos más amplio y un rango de direcciones, lo que permite transferencias más rápidas dentro y fuera de un espacio de memoria más grande, mayor precisión numérica, conjunto ampliado de instrucciones / funciones y casi cumplimiento con IEEE-754), y eran radicalmente más rápidos en comparación con realizar los mismos cálculos utilizando emulación de software en una CPU normal; incluso un 8086 de 16 bits relativamente sofisticado que se ejecuta a una velocidad completa de 8 MHz solo podía lograr en algún lugar entre unas pocas docenas , a no más de alrededor de 1000 FLOPS sin un coprocesador, [8] y sus predecesores y rivales de 8 bits, de frecuencia más lenta, habrían salido aún peor.
Referencias
- ^ a b c d "Procesadores aritméticos: entonces y ahora - The CPU Shack Museum" . www.cpushack.com . Consultado el 14 de abril de 2018 .
- ^ a b c "Manual del procesador de punto flotante AMD Am9511A / Am9512" (PDF) . Enterprise One Two Eight . Consultado el 19 de abril de 2019 .
- ^ "InfoWorld, 30 de noviembre de 1981, página 69" . Libros de Google . 30 de noviembre de 1981 . Consultado el 19 de abril de 2019 .
- ^ a b c "Unidad de procesamiento de punto flotante Intel 8232, hoja de datos preliminar" . Archivo de hojas de datos . Consultado el 19 de abril de 2019 .
- ^ Intel Corporation, "Los periféricos Intel mejoran el diseño del sistema 8086", Edición especial de Intel Preview: Solución de 16 bits, mayo / junio de 1980, pág. 22
- ^ a b "Hoja de datos de Intel 8231A" (PDF) . Octopart . Consultado el 19 de abril de 2019 .
- ^ Intel Corporation, "Los periféricos Intel mejoran el diseño del sistema 8086", Edición especial de Intel Preview: Solución de 16 bits, mayo / junio de 1980, pág. 22
- ^ "Hoja de datos Intel 8087" (PDF) . Octopart . Consultado el 20 de abril de 2019 .