Articulo de referencia

AMD Am29000

Microprocesador AMD 29000 AMD 29030 El AMD Am29000 , comúnmente abreviado como 29k , es una familia de microprocesadores y microcontroladores RISC de 32 bits desarrollados y fab...

Microprocesador AMD 29000
AMD 29030

El AMD Am29000 , comúnmente abreviado como 29k , es una familia de microprocesadores y microcontroladores RISC de 32 bits desarrollados y fabricados por Advanced Micro Devices (AMD). Basado en el innovador Berkeley RISC , el 29k incorporó una serie de mejoras significativas. Se utilizaban habitualmente en impresoras láser de varios fabricantes de la época y está bien documentado su uso en la serie de gama alta HP Color LaserJet, desde el primer modelo Color LaserJet (Am29030) hasta la HP Color LaserJet 5, que utiliza un Am29040.

Desarrollado desde 1984–1985, anunciado en marzo de 1987 y lanzado en mayo de 1988, [ 1 ] [ 2 ] [ 3 ] al Am29000 inicial le siguieron varias versiones, terminando con el Am29040 en 1995. [ 4 ] El 29050 fue notable por ser uno de los primeros en incorporar una unidad de punto flotante capaz de ejecutar una operación de multiplicación y suma por ciclo.

AMD estuvo diseñando una versión superescalar hasta finales de 1995, cuando abandonó el desarrollo del 29k porque el equipo de diseño fue transferido para dar soporte a la división de PC ( x86 ). Lo que quedó del negocio de sistemas embebidos de AMD se reorientó hacia la familia 186 de derivados del 80186. Para entonces, la mayor parte de los recursos de AMD se concentraban en sus procesadores x86 de alto rendimiento para PC de escritorio, utilizando muchas de las ideas y componentes individuales de los diseños del 29k para producir el AMD K5 .

Diseño

El 29k evolucionó a partir del mismo diseño RISC de Berkeley que también dio lugar a los procesadores Sun SPARC , Intel i960 , ARM y RISC-V .

Un elemento de diseño utilizado en algunos de los diseños derivados de Berkeley RISC es el concepto de ventanas de registro , una técnica empleada para acelerar significativamente las llamadas a procedimientos . La idea consiste en utilizar un amplio conjunto de registros como pila, cargando datos locales en un conjunto de registros durante una llamada y marcándolos como "muertos" cuando el procedimiento finaliza. Los valores devueltos por las rutinas se colocarían en la "página global", los ocho registros superiores en el SPARC (por ejemplo). El diseño RISC inicial de la Universidad de Stanford , el Stanford MIPS , también consideró este concepto, pero decidió que los compiladores mejorados podrían hacer un uso más eficiente de los registros de propósito general que una ventana cableada.

En el diseño original de Berkeley, SPARC e i960, las ventanas tenían un tamaño fijo. Una rutina que utilizara solo una variable local aún consumiría ocho registros en el SPARC, desperdiciando este valioso recurso. Fue aquí donde el 29k se diferenció de estos diseños anteriores, al utilizar un tamaño de ventana variable. En este ejemplo, solo se usarían dos registros: uno para la variable local y otro para la dirección de retorno . También se añadieron más registros, incluyendo los mismos 128 para la pila de procedimientos, además de otros 64 para el acceso global. En comparación, el SPARC tenía 128 registros en total, y el conjunto global era una ventana estándar de ocho. Este cambio resultó en un uso mucho mejor de los registros en el 29000 bajo una amplia variedad de cargas de trabajo.

El procesador 29k también extendió la pila de ventanas de registro con una pila en memoria (y, en teoría, en caché). Cuando la ventana se llenaba, las llamadas se desplazaban desde el final de la pila de registros a la memoria, y se restauraban según fuera necesario cuando la rutina finalizaba. En general, el uso de registros del 29k era considerablemente más avanzado que el de los diseños de la competencia basados ​​en los conceptos de Berkeley.

AMD 29040

Otra diferencia con el diseño de Berkeley es que el 29k evitó el uso de códigos de condición. Aunque el 29k genera las banderas NZVC estándar después de operaciones aritméticas y lógicas, su único uso era por las instrucciones de suma y resta con acarreo. Las bifurcaciones condicionales se limitaban a bifurcar en el bit más significativo (signo) de un registro de propósito general, que podía establecerse por una de una serie de instrucciones de comparación (como "mayor que con signo" o "igual"). Cualquier registro podía usarse para este propósito, lo que permitía guardar fácilmente las condiciones a costa de complicar parte del código. Una caché de destino de bifurcación (512 bytes en el 29000 y 1024 bytes en el 29050) almacenaba conjuntos de 4 o 2 instrucciones secuenciales encontradas en la dirección de destino de bifurcación, reduciendo la latencia de búsqueda de instrucciones durante las bifurcaciones tomadas ; el 29000 no incluía ningún sistema de predicción de bifurcaciones, por lo que había un retraso si se tomaba una bifurcación. Esto significa que el 29000 tiene una única ranura de retardo de bifurcación . [ 5 ] El búfer mitigaba esto almacenando cuatro o dos instrucciones de la dirección de destino de la bifurcación, que podían ejecutarse instantáneamente mientras el búfer de búsqueda se volvía a llenar con nuevas instrucciones de la memoria. [ 6 ]

La compatibilidad con la traducción de direcciones virtuales seguía un enfoque similar al de la arquitectura MIPS. Un búfer de traducción anticipada (TLB) de 64 entradas conservaba las asignaciones de direcciones virtuales a físicas, y al encontrar una dirección no traducida, el consiguiente fallo de TLB provocaba que el procesador ejecutara una rutina de software encargada de proporcionar la asignación adecuada a la memoria física. A diferencia del enfoque MIPS, que empleaba un registro aleatorio para seleccionar la entrada de TLB que se reemplazaría en caso de fallo de TLB, el 29000 proporcionaba un registro lru (menos usado recientemente) dedicado. [ 7 ] Algunos productos de la familia 29000 solo disponían de 16 entradas de TLB para poder dedicar parte del silicio a periféricos. Para compensar, el tamaño máximo de página empleado por una asignación se incrementó de 8  KB a 16  MB. [ 8 ] : 305–306

Versiones

El primer Am29000 se lanzó en 1988, incluyendo una MMU integrada , pero la compatibilidad con coma flotante se delegó a la FPU Am29027 . Las unidades con MMU o Branch Target Cache defectuosas se vendieron como Am29005 . [ 6 ]

En 1991 la línea se amplió con el Am29030 y el Am29035 , que incluían una caché de instrucciones de 8 KB o 4 KB, respectivamente. [ 9 ] Para entonces [ 10 ] el Am29050 también estaba disponible, sin caché en el chip pero con una unidad de punto flotante con operaciones de multiplicación-acumulación totalmente segmentadas , una caché de destino de rama más grande de 1 KB con una tasa de acierto declarada del 80%, y operaciones de carga mejor segmentadas aceleradas por una caché de direcciones físicas tipo TLB de 4 entradas . Aunque no es un procesador superescalar , permite que una operación de punto flotante y una operación entera se completen en el mismo ciclo. Los lados entero y de punto flotante tienen cada uno su propio puerto de escritura a los registros. [ 11 ] Contenía 428.000 transistores [ 12 ] en un proceso de 1 micra [ 13 ] con una longitud de canal efectiva de 0,8 micras [ 11 ] y estaba disponible a 20, 25, 33 y 40 MHz. Posteriormente, el Am29040 se lanzó a 33, 40 y 50 MHz, siendo similar al Am29030 excepto por contar con una caché de datos de 4 KB, una unidad de multiplicación y algunas otras mejoras. [ 14 ] El Am29040 de 119 mm 2 contenía 1,2 millones de transistores en un proceso de 0,7 micras. [ 15 ] [ 16 ]     

Se estaba diseñando una versión superescalar de 29K, pero se canceló en favor de x86. Su nombre en clave era Jaguar , [ 3 ] y se describió en noviembre de 1994 y agosto de 1995. [ 17 ] [ 18 ] Era un diseño avanzado, capaz de despacho de cuatro vías a seis estaciones de reserva y ejecución especulativa fuera de orden de instrucciones, con retirada de cuatro vías. El archivo de registros permitía cuatro lecturas y dos escrituras a la vez. Las cachés para instrucciones y datos eran de 8  KB cada una. Las cargas desde la caché podían omitir las escrituras . No tenía FPU en el chip debido a razones de costo y al mercado objetivo. Se esperaba que alcanzara una frecuencia de 100 MHz en un proceso de 0,4 micras. [ 17 ] [ 19 ]

AMD utilizó la microarquitectura 29K, aún no lanzada, como base para la serie K5 de procesadores compatibles con x86 . Las ALU se conservaron, al igual que el búfer de reordenamiento, con una ligera modificación. La FPU se tomó del 29050, pero se extendió a una precisión de 80 bits . El K5 traducía las instrucciones x86 a "RISC-OPs" durante la decodificación, con la ayuda de la información de predecodificación almacenada en las instrucciones en caché. AMD afirmó que el superescalar 29K tendría un rendimiento solo ligeramente inferior al del K5, pero un coste mucho menor debido a la diferencia de tamaño. [ 20 ] [ 17 ]

El Honeywell 29KII es una CPU basada en el AMD 29050 y se utilizó ampliamente en aviónica en tiempo real .

Productos y aplicaciones

Posicionado como un producto para "aplicaciones integradas de rendimiento medio a alto" con potencial de uso en estaciones de trabajo Unix , [ 7 ] el 29000 se utilizó en una variedad de productos tales como terminales X , tarjetas controladoras de impresoras láser, tarjetas aceleradoras de gráficos , soluciones de reconocimiento óptico de caracteres y puentes de red . [ 21 ] La arquitectura de memoria del 29000 fue un atractivo particular para los diseñadores de productos, permitiéndoles prescindir de la memoria caché externa y emplear RAM dinámica directamente mientras mantenían un rendimiento aceptable, [ 21 ] : 1 permitiendo un grado de flexibilidad en la elección de tecnologías de memoria utilizadas para retener instrucciones y datos del programa. [ 22 ]

El 29k se utilizó como acelerador computacional o coprocesador, especialmente en plataformas compatibles con Macintosh e IBM PC. Por ejemplo, Yarc Systems Corporation produjo tarjetas "coprocesador RISC" basadas en el 29k para sistemas Macintosh II y PC AT , junto con otras tarjetas " coprocesador CISC " que incorporaban procesadores Motorola 68020 y 68030 , y tarjetas "coprocesador paralelo" que incorporaban procesadores transputer T800. [ 23 ] Sus tarjetas NuSuper (originalmente llamada McCray [ 24 ] ) y AT-Super , que empleaban la CPU Am29000 y el acelerador de punto flotante Am29027, [ 23 ] fueron seguidas por la MacRageous , que actualizó la CPU a la Am29050. [ 25 ] Estas tarjetas aceleradoras ofrecían un rendimiento varias veces superior al del propio Macintosh II y se comparaban con estaciones de trabajo RISC como la DECstation 3100. También se podían instalar varias tarjetas en un sistema. Sin embargo, el coste de un sistema Macintosh II combinado con una tarjeta de este tipo se aproximaba al de las estaciones de trabajo RISC ya establecidas que ejecutaban Unix. [ 26 ] El AT-Super tenía un precio de alrededor de 4600 dólares y, según se informó, ejecutaba Unix, compitiendo con productos similares que empleaban el procesador i860 de Intel . [ 27 ]

Un producto notable que utilizaba el 29k fue la tarjeta gráfica Macintosh Display Card 8·24 GC de Apple para su Macintosh IIfx , que contaba con un  procesador Am29000 de 30 MHz, 64  KB de caché de RAM estática y 2  MB de RAM de vídeo , con la opción de añadir 2 MB adicionales  de RAM dinámica para el kit de herramientas gráficas QuickDraw . La inclusión del 29k diferenciaba esta versión de la tarjeta de otras versiones vendidas por Apple, mejorando significativamente el rendimiento al procesar imágenes de 24 bits por píxel . [ 28 ]

Véase también

Referencias

  1. Martin, James A. (23 de marzo de 1987). "La empresa afirma que el chip de 32 bits maneja 17 MIPS" . Computerworld . Vol.  21, n.º  12, pág.  14.
  2. Cole, Bernard C. (28 de abril de 1988). "RISC Slugfest: ¿Es el marketing más importante que el rendimiento?" (PDF) . Electronics . pág. 66 (pág. 68 del .pdf). 
  3. 1 2 "Historia oral de William Michael 'Mike' Johnson" (PDF) . Museo de Historia de la Computación (Entrevista). Entrevistado por Kevin Krewell. 9 de mayo de 2014. Bueno, comenzó en el 85. Y tardó, diría yo, unos tres años y tal vez cuatro revoluciones hasta que fue funcional.
  4. Betker, Michael R.; Fernando, John S.; Whalen, Shaun P. (otoño de 1997). "La historia del microprocesador" (PDF) . Bell Labs Technical Journal : 48.
  5. "Evaluación y programación de la familia RISC 29K, tercera edición – BORRADOR" (PDF) . pág. 54. Consultado el 20 de diciembre de 2023 . 
  6. 1 2 Stewart, Brett (1990). "Nuevas generaciones de soluciones de la familia 29 K". Resumen de ponencias Compcon Primavera '90 . Trigésimo quinta Conferencia Internacional de la Sociedad de Computación IEEE sobre Apalancamiento Intelectual. págs. 295–298 . doi : 10.1109/CMPCON.1990.63690 . 
  7. 1 2 Mann, Daniel (octubre de 1991). "Unix y el microprocesador Am29000" . IEEE Micro . págs. 23–31 . ISSN 0272-1732 . Recuperado el 19 de mayo de 2023 .  
  8. Mann, Daniel (1995). Evaluación y programación de la familia RISC 29K . Advanced Micro Devices . Consultado el 19 de mayo de 2023 .
  9. Fickel, Louise (13 de mayo de 1991). "Advanced Micro Devices refuerza la familia 29000 con dos CPU RISC" . InfoWorld . Vol. 13, n.º 19, pág. 28.   
  10. "ANUNCIOS SOBRE MEMORIA FLASH" . Archivo de Computer Business Review en Tech Monitor . 9 de octubre de 1990.
  11. 1 2 "Manual del usuario del microprocesador Am29050" . archive.org . 1991.
  12. Ganapathy, Gopi; Abraham, Jacob A. La aceleración por hardware por sí sola no hará realidad la clasificación de fallos en ULSI . Conferencia Internacional de Pruebas de 1991.
  13. Lynch, Thomas Walker; Swartzlander (Jr), Earl E. (julio de 1991). "El sumador de celdas redundante" . Actas del 10.º Simposio IEEE sobre Aritmética Computacional . doi : 10.1109/ARITH.1991.145553 .
  14. "Microprocesador RISC de alto rendimiento Am29040 con cachés de instrucciones y datos" (PDF) . chipdb.org . Consultado el 18 de septiembre de 2022 .
  15. Gwennap, Linley. "Digital, MIPS añade extensiones multimedia" (PDF) . Microprocessor Report . 10 (15): 24– 28.
  16. Carpeta del Foro de Microprocesadores . 1994.
  17. 1 2 3 McMinn, Brian (14 de agosto de 1995). "El primer miembro de la familia superescalar 29K" (PDF) . Hot Chips .
  18. "SE REVELA EL PRIMER SUPERESCALAR Am29000" . Archivo de Computer Business Review en Tech Monitor . 28 de noviembre de 1994.
  19. Detar, Jim (31 de octubre de 1994). "AMD prepara Superscalar 29K". Noticias electrónicas .
  20. Slater, Michael (24 de octubre de 1994). "El K5 de AMD diseñado para superar al Pentium" (PDF) . Microprocessor Report . 8 (14): 1– 7.
  21. 1 2 FUSIONews 29K . Advanced Micro Devices. Verano de 1990 . Consultado el 20 de mayo de 2023 .
  22. Marshall, Trevor (mayo de 1988). "RISC del mundo real" . Byte . págs. 263–268 . Recuperado el 20 de mayo de 2023 . 
  23. 1 2 YARC, la empresa de soluciones . Yarc Systems Corporation.
  24. "YARC afirma que la placa amplificadora Mac II funciona a 50 MHz" . Byte . Agosto de 1988. pág. 16. Consultado el 20 de mayo de 2023 . 
  25. Sistema de coprocesador RISC MacRageous para Macintosh-II . Yarc Systems Corporation. 1990.
  26. Varhol, Peter D. (octubre de 1989). "NuSuper de YARC mejora el Mac" . MIPS . págs. 81–83 . Recuperado el 20 de mayo de 2023 . 
  27. Pastore, Richard (3 de septiembre de 1990). "Combinando PCs Intel con RISC" . Computerworld . pág. 37. Consultado el 3 de marzo de 2024 . 
  28. Smith, Bud E. (mayo de 1990). "Una Macintosh grande y rápida con gráficos RISC" . Personal Workstation . págs. 46–50 . Recuperado el 20 de mayo de 2023 . 
  • Guía de identificación del procesador AMD 29k (procesador de instrucciones optimizadas)
  • Mann, Daniel (1995), Evaluación y programación de la familia RISC 29K (PDF) , Advanced Micro Devices, archivado del original (PDF) el 27 de septiembre de 2007.Libro en PDF sobre la familia 29k
  • chipdb.org Imágenes de diferentes procesadores Am29000