stringtranslate.com

Intel iAPX 432

Placa Intel SBC 432/100
Procesador de datos generales 43201
Procesador de datos generales 43202

El iAPX 432 ( Arquitectura de rendimiento avanzado Intel ) es una arquitectura informática descontinuada introducida en 1981. [1] [NB 1] Fue el primer diseño de procesador de 32 bits de Intel . El procesador principal de la arquitectura, el procesador de datos general , se implementa como un conjunto de dos circuitos integrados separados, debido a limitaciones técnicas del momento. Aunque algunos de los primeros sistemas y manuales basados ​​en 8086, 80186 y 80286 también usaban el prefijo iAPX por razones de marketing, las líneas de procesadores iAPX 432 y 8086 son diseños completamente separados con conjuntos de instrucciones completamente diferentes.

El proyecto comenzó en 1975 como el 8800 (después del 8008 y el 8080 ) y estaba destinado a ser el diseño principal de Intel para la década de 1980. A diferencia del 8086 , que fue diseñado el año siguiente como sucesor del 8080, el iAPX 432 fue un cambio radical de los diseños anteriores de Intel destinados a un nicho de mercado diferente y sin ninguna relación con las líneas de productos 8080 o x86 .

El proyecto iAPX 432 se considera un fracaso comercial para Intel y se suspendió en 1986. [1] [3]

Descripción

El iAPX 432 fue denominado "micromainframe", diseñado para ser programado completamente en lenguajes de alto nivel. [4] [5] La arquitectura del conjunto de instrucciones también era completamente nueva y representaba una desviación significativa de los procesadores 8008 y 8080 anteriores de Intel , ya que el modelo de programación iAPX 432 es una máquina apilable sin registros visibles de propósito general . Admite programación orientada a objetos , [5] recolección de basura y multitarea , así como una administración de memoria más convencional directamente en hardware y microcódigo . El soporte directo para diversas estructuras de datos también pretende permitir la implementación de sistemas operativos modernos utilizando mucho menos código de programa que en los procesadores normales. Intel iMAX 432 es un sistema operativo descontinuado para el 432, [6] escrito completamente en Ada , y Ada también era el lenguaje principal previsto para la programación de aplicaciones. En algunos aspectos, puede verse como una arquitectura informática de lenguaje de alto nivel .

Estas propiedades y características dieron como resultado un diseño de hardware y microcódigo que era más complejo que la mayoría de los procesadores de la época, especialmente los microprocesadores. Sin embargo, los buses internos y externos (en su mayoría) no son más anchos que 16 bits y, al igual que en otros microprocesadores de 32 bits de la época (como el 68000 o el 32016 ), las instrucciones aritméticas de 32 bits se implementan mediante un procesador de 16 bits. ALU de bits, mediante lógica aleatoria y microcódigo u otros tipos de lógica secuencial . El espacio de direcciones ampliado del iAPX 432 respecto al 8080 también estaba limitado por el hecho de que el direccionamiento lineal de datos todavía sólo podía utilizar compensaciones de 16 bits, algo similar a los primeros diseños basados ​​en 8086 de Intel, incluido el 80286 contemporáneo (el nuevo segmento de 32 bits). Las compensaciones de la arquitectura 80386 se describieron públicamente en detalle en 1984). [Nota 2]

Utilizando la tecnología de semiconductores de su época, los ingenieros de Intel no pudieron traducir el diseño en una primera implementación muy eficiente. Junto con la falta de optimización en un compilador prematuro de Ada , esto contribuyó a que los sistemas informáticos fueran bastante lentos pero costosos, realizando pruebas de referencia típicas a aproximadamente 1/4 de la velocidad del nuevo chip 80286 a la misma frecuencia de reloj (a principios de 1982). [7] Esta brecha de rendimiento inicial con respecto a la línea 8086 de bajo perfil y bajo precio fue probablemente la razón principal por la que fracasó el plan de Intel de reemplazar esta última (más tarde conocida como x86 ) con el iAPX 432. Aunque los ingenieros vieron formas de mejorar un diseño de próxima generación, la arquitectura de capacidad iAPX 432 ahora había comenzado a considerarse más como una sobrecarga de implementación que como el soporte simplificador que se pretendía que fuera. [7]

Originalmente diseñados para frecuencias de reloj de hasta 10 MHz, los dispositivos reales vendidos se especificaron para velocidades de reloj máximas de 4 MHz, 5 MHz, 7 MHz y 8 MHz con un rendimiento máximo de 2 millones de instrucciones por segundo a 8 MHz. [8] [9]

Historia

Desarrollo

El proyecto 432 de Intel comenzó en 1976, un año después de que se completara el Intel 8080 de 8 bits y un año antes de que comenzara su proyecto 8086 de 16 bits . El proyecto 432 inicialmente se denominó 8800 , [5] como su siguiente paso más allá de los microprocesadores Intel 8008 y 8080 existentes. Esto se convirtió en un paso muy grande. Los conjuntos de instrucciones de estos procesadores de 8 bits no estaban muy bien adaptados a los típicos lenguajes compilados tipo Algol . Sin embargo, el principal problema eran sus pequeños rangos de direcciones nativas, sólo 16 KB para 8008 y 64 KB para 8080, demasiado pequeños para muchos sistemas de software complejos sin utilizar algún tipo de conmutación de banco , segmentación de memoria o mecanismo similar (que estaba integrado en el 8086, unos años más tarde). Intel ahora pretendía construir un sistema completo y sofisticado en unos pocos chips LSI, que fuera funcionalmente igual o mejor que las mejores minicomputadoras y mainframes de 32 bits que requerían gabinetes completos de chips más antiguos. Este sistema admitiría multiprocesadores, expansión modular, tolerancia a fallas, sistemas operativos avanzados, lenguajes de programación avanzados, aplicaciones muy grandes, ultra confiabilidad y ultra seguridad. Su arquitectura abordaría las necesidades de los clientes de Intel durante una década. [10]

El equipo de desarrollo de iAPX 432 estuvo dirigido por Bill Lattin, con Justin Rattner como ingeniero principal [11] [12] [13] (aunque una fuente [1] afirma que Fred Pollack fue el ingeniero principal). (Rattner se convertiría más tarde en CTO de Intel). Inicialmente, el equipo trabajó desde Santa Clara, pero en marzo de 1977, Lattin y su equipo de 17 ingenieros se mudaron al nuevo sitio de Intel en Portland. [12] Pollack más tarde se especializó en superescalaridad y se convirtió en el arquitecto principal del chip i686 Intel Pentium Pro . [1]

Pronto quedó claro que se necesitarían varios años y muchos ingenieros para diseñar todo esto. Y de manera similar, se necesitarían varios años de avances en la Ley de Moore , antes de que una fabricación mejorada de chips pudiera encajar todo esto en unos pocos chips densos. Mientras tanto, Intel necesitaba urgentemente un producto provisional más simple para enfrentar la competencia inmediata de Motorola , Zilog y National Semiconductor . Entonces Intel comenzó un proyecto apresurado para diseñar el 8086 como una evolución incremental de bajo riesgo del 8080, utilizando un equipo de diseño independiente. El 8086 para el mercado masivo se envió en 1978.

El 8086 fue diseñado para ser compatible con versiones anteriores del 8080 en el sentido de que el lenguaje ensamblador del 8080 podría asignarse a la arquitectura del 8086 utilizando un ensamblador especial . El código fuente ensamblador del 8080 existente (aunque no es ningún código ejecutable ) se hizo compatible con el nuevo 8086 hasta cierto punto. Por el contrario, el 432 no tenía compatibilidad de software ni requisitos de migración. Los arquitectos tuvieron total libertad para hacer un diseño novedoso desde cero, utilizando cualquier técnica que supusieran que sería mejor para sistemas y software a gran escala. Aplicaron conceptos informáticos de moda en las universidades, en particular máquinas de capacidad , programación orientada a objetos, máquinas CISC de alto nivel, Ada e instrucciones densamente codificadas. Esta ambiciosa combinación de características novedosas hizo que el chip fuera más grande y complejo. La complejidad del chip limitó la velocidad del reloj y alargó el cronograma de diseño.

El núcleo del diseño, el procesador principal, se denominó Procesador General de Datos ( PIB ) y se construyó como dos circuitos integrados : uno (el 43201) para buscar y decodificar instrucciones, el otro (el 43202) para ejecutarlas. La mayoría de los sistemas también incluirían el procesador de interfaz ( IP ) 43203 que operaba como controlador de canal para E/S , y un procesador adjunto ( AP ), un Intel 8086 convencional que proporcionaba "potencia de procesamiento en el subsistema de E/S". [4]

Estos fueron algunos de los diseños [ se necesita aclaración ] más grandes de la época. El PIB de dos chips tenía un recuento combinado de aproximadamente 97.000  transistores [ cita necesaria ] mientras que el IP de un solo chip tenía aproximadamente 49.000. En comparación, el Motorola 68000 (introducido en 1979) tenía aproximadamente 40.000 transistores. [ cita necesaria ]

En 1983, Intel lanzó dos circuitos integrados adicionales para la arquitectura de interconexión iAPX 432: la unidad de interfaz de bus ( BIU ) 43204 y la unidad de control de memoria ( MCU ) 43205. Estos chips permitieron sistemas multiprocesador casi sin pegamento con hasta 63 nodos.

Los fracasos del proyecto

Algunas de las características innovadoras del iAPX 432 perjudicaron el buen rendimiento. En muchos casos, el iAPX 432 tenía un rendimiento de instrucciones significativamente más lento que los microprocesadores convencionales de la época, como el National Semiconductor 32016 , Motorola 68010 e Intel 80286 . Un problema fue que la implementación del GDP en dos chips lo limitaba a la velocidad del cableado eléctrico de la placa base. Un problema mayor era que la arquitectura de capacidad necesitaba grandes cachés asociativos para funcionar de manera eficiente, pero a los chips no les quedaba espacio para eso. El conjunto de instrucciones también utilizaba instrucciones de longitud variable alineadas con bits en lugar de los formatos habituales de bytes semifijos o alineados con palabras que se utilizan en la mayoría de los diseños de computadoras. Por tanto, la decodificación de instrucciones era más compleja que en otros diseños. Aunque esto no obstaculizó el rendimiento en sí mismo, utilizó transistores adicionales (principalmente para una palanca de cambios de barril grande ) en un diseño que ya carecía de espacio y transistores para cachés, buses más anchos y otras características orientadas al rendimiento. Además, la BIU fue diseñada para admitir sistemas tolerantes a fallas y, al hacerlo, hasta el 40 % del tiempo del autobús se retuvo en estados de espera .

Otro problema importante fue su compilador Ada inmaduro y no sintonizado . Usó instrucciones orientadas a objetos de alto costo en todos los casos, en lugar de instrucciones escalares más rápidas donde hubiera tenido sentido hacerlo. Por ejemplo, el iAPX 432 incluía una instrucción de llamada a procedimiento entre módulos muy costosa , que el compilador usaba para todas las llamadas, a pesar de la existencia de instrucciones de enlace y bifurcación mucho más rápidas. Otra llamada muy lenta fue enter_environment, que configuró la protección de la memoria. El compilador ejecutó esto para cada variable del sistema, incluso cuando las variables se usaron dentro de un entorno existente y no fue necesario verificarlas. Para empeorar las cosas, los datos pasados ​​hacia y desde los procedimientos siempre se pasaban por valor de retorno en lugar de por referencia. Al ejecutar el punto de referencia Dhrystone , la transferencia de parámetros tomó diez veces más tiempo que todos los demás cálculos combinados. [14]

Según el New York Times , "el i432 funcionaba entre 5 y 10 veces más lento que su competidor, el Motorola 68000". [15]

Impacto y diseños similares.

El iAPX 432 fue uno de los primeros sistemas en implementar el nuevo estándar IEEE-754 para aritmética de punto flotante. [dieciséis]

Un resultado del fracaso del 432 fue que los diseñadores de microprocesadores concluyeron que el soporte de objetos en el chip conduce a un diseño complejo que invariablemente funcionará lentamente, y los defensores de los diseños RISC citaron a menudo el 432 como un contraejemplo . Sin embargo, algunos sostienen que el soporte OO no fue el principal problema con el 432, y que las deficiencias de implementación (especialmente en el compilador) mencionadas anteriormente habrían ralentizado cualquier diseño de CPU. Desde el iAPX 432 sólo ha habido otro intento de un diseño similar, el procesador Rekursiv , aunque el soporte de proceso del INMOS Transputer era similar y muy rápido. [ cita necesaria ]

Intel había invertido mucho tiempo, dinero y mentalidad en el 432, tenía un equipo capacitado dedicado a él y no estaba dispuesto a abandonarlo por completo después de su fracaso en el mercado. Se contrató a un nuevo arquitecto, Glenford Myers , para producir una arquitectura e implementación completamente nuevas para el procesador central, que se construiría en un proyecto conjunto Intel / Siemens (más tarde BiiN ), dando como resultado los procesadores de la serie i960 . El subconjunto i960 RISC se hizo popular durante un tiempo en el mercado de procesadores integrados, pero el 960MC de gama alta y el 960MX con memoria etiquetada se comercializaron sólo para aplicaciones militares.

Según el New York Times , la colaboración de Intel con HP en el procesador Merced (más tarde conocido como Itanium) fue el intento de regreso de la compañía al mercado de gama alta. [15]

Arquitectura

Las instrucciones iAPX 432 tienen una longitud variable, entre 6 y 321 bits. [17] Inusualmente, no están alineados en bytes, es decir, pueden contener números impares de bits y se suceden directamente entre sí sin tener en cuenta los límites de bytes. [5]

Capacidades y memoria orientada a objetos.

El iAPX 432 tiene soporte de hardware y microcódigo para programación orientada a objetos y direccionamiento basado en capacidades . [18] [19] El sistema utiliza memoria segmentada , con hasta 224 segmentos de hasta 64  KB cada uno, proporcionando un espacio de direcciones virtuales total de 240 bytes . El espacio de direcciones físicas es de 24 bytes (16  MB ).

Los programas no pueden hacer referencia a datos o instrucciones por dirección; en su lugar, deben especificar un segmento y un desplazamiento dentro del segmento. Los segmentos son referenciados por descriptores de acceso (AD) , que proporcionan un índice en la tabla de objetos del sistema y un conjunto de derechos ( capacidades ) que rigen los accesos a ese segmento. Los segmentos pueden ser "segmentos de acceso", que sólo pueden contener descriptores de acceso, o "segmentos de datos" que no pueden contener AD. El hardware y el microcódigo imponen rígidamente la distinción entre datos y segmentos de acceso, y no permitirán que el software trate los datos como descriptores de acceso, o viceversa.

Los objetos definidos por el sistema constan de un único segmento de acceso o de un segmento de acceso y un segmento de datos. Los segmentos definidos por el sistema contienen datos o descriptores de acceso para datos definidos por el sistema en compensaciones designadas, aunque el sistema operativo o el software del usuario pueden ampliarlos con datos adicionales. Cada objeto del sistema tiene un campo de tipo que se verifica mediante un microcódigo, de modo que un objeto de puerto no se puede utilizar cuando se necesita un objeto de transporte. Los programas de usuario pueden definir nuevos tipos de objetos que obtendrán el beneficio completo de la verificación de tipo de hardware, mediante el uso de objetos de control de tipo (TCO) .

En la versión 1 de la arquitectura iAPX 432, un objeto definido por el sistema normalmente consistía en un segmento de acceso y, opcionalmente (según el tipo de objeto), un segmento de datos especificado por un descriptor de acceso en un desplazamiento fijo dentro del segmento de acceso.

En la versión 3 de la arquitectura, para mejorar el rendimiento, los segmentos de acceso y los segmentos de datos se combinaron en segmentos únicos de hasta 128 kB, divididos en una parte de acceso y una parte de datos de 0 a 64 KB cada uno. Esto redujo drásticamente la cantidad de búsquedas en la tabla de objetos y duplicó el espacio máximo de direcciones virtuales. [20]

El iAPX432 reconoce catorce tipos de objetos del sistema predefinidos : [21] : págs.1-11–1-12 

Recolección de basura

El software que se ejecuta en el 432 no necesita desasignar explícitamente objetos que ya no son necesarios. En cambio, el microcódigo implementa parte de la parte de marcado del algoritmo de recolección de basura paralelo sobre la marcha de Edsger Dijkstra (un recolector de estilo marcar y barrer ). [22] Las entradas en la tabla de objetos del sistema contienen los bits utilizados para marcar cada objeto como blanco, negro o gris según lo necesite el recolector. El sistema operativo iMAX 432 incluye la parte de software del recolector de basura. [23]

Formato de instrucción

Las instrucciones ejecutables están contenidas dentro de un "objeto de instrucción" del sistema. [21] : p.7-3  Debido a que las instrucciones están alineadas en bits, un desplazamiento de bits de 16 bits en el objeto de instrucción permite que el objeto contenga hasta 65,536 bits (8,192 bytes) de instrucciones.

Las instrucciones constan de un operador , que consta de una clase y un código de operación , y de cero a tres referencias de operandos . "Los campos están organizados para presentar información al procesador en la secuencia requerida para la decodificación". Los operadores utilizados con más frecuencia se codifican utilizando menos bits. [21] : p.7-6  La instrucción comienza con el campo de clase de 4 o 6 bits que indica el número de operandos, llamado orden de la instrucción, y la longitud de cada operando. Opcionalmente, esto va seguido de un campo de formato de 0 a 4 bits que describe los operandos (si no hay operandos, el formato no está presente). Luego vienen de cero a tres operandos, como lo describe el formato. La instrucción finaliza con el código de operación de 0 a 5 bits, si lo hay (algunas clases contienen sólo una instrucción y, por lo tanto, no tienen código de operación). "El campo Formato permite que el GDP se presente al programador como una arquitectura de cero, una, dos o tres direcciones". El campo de formato indica que un operando es una referencia de datos, o el elemento superior o el siguiente al superior de la pila de operandos. [21] : págs.7-3–7-5 

Ver también

Notas

  1. ^ A veces , arquitectura de procesador avanzada Intel [2]
  2. ^ aunque el chip 80386 no se produjo en masa hasta mediados de 1986

Referencias

  1. ^ abcd Dvorak, John C. "¿Qué pasó con el Intel iAPX432?" . Consultado el 19 de julio de 2012 .
  2. ^ Definición de Intel: 25 años / 25 eventos (PDF) . Intel. 1993. pág. 14.
  3. ^ Herrero, Eric. "Micromainframe Intel iAPX-432" . Consultado el 6 de diciembre de 2015 .
  4. ^ ab Intel Corporation (1981). Introducción a la arquitectura iAPX 432 (PDF) . págs.iii.
  5. ^ abcd Stanley Mazor (enero-marzo de 2010). "Intel 8086". Anales IEEE de la historia de la informática . 32 (1): 75–79. doi :10.1109/MAHC.2010.22. S2CID  16451604.
  6. ^ Kahn, Kevin C.; Corwin, William M.; Dennis, T. Don; d'Hooge, Herman; Hubka, David E.; Hutchins, Linda A.; Montague, John T.; Pollack, Fred J. (diciembre de 1981). "iMAX: un sistema operativo multiprocesador para una computadora basada en objetos" (PDF) . Revisión de los sistemas operativos ACM SIGOPS . 15 (5): 127-136. doi :10.1145/800216.806601. S2CID  9245960.
  7. ^ ab Colwell, Robert; Gehringer, Eduardo (1988). "Efectos de rendimiento de la complejidad arquitectónica en Intel 432" (PDF) . Transacciones sobre Sistemas Informáticos . 6 (3): 296–339. doi :10.1145/45059.214411. S2CID  8314206.
  8. ^ Microordenador Intel iAPX-432
  9. ^ Maliniak, Lisa (21 de octubre de 2002). "Diez fracasos notables: aprender de los errores". Diseño Electrónico.
  10. ^ David Rey; Liang Zhou; Jon Bryson; David Dickson (15 de abril de 1999). "Intel iAPX 432 - Informática 460 - Proyecto final".
  11. ^ Mazor, Stanley (2010). "Intel 8086". Anales IEEE de la historia de la informática . 32 : 75. doi : 10.1109/MAHC.2010.22. S2CID  16451604.
  12. ^ ab Heike Mayer (2012). Emprendimiento e Innovación en Regiones de Segundo Nivel. Editorial Edward Elgar. págs. 100-101. ISBN 978-0-85793-869-5.
  13. ^ Definición de Intel: 25 años / 25 eventos (PDF) . Intel. 1993. pág. 14.
  14. ^ Mark Smotherman, Descripción general de Intel 432
  15. ^ ab John Markoff, Inside Intel, El futuro depende de un nuevo chip, 5 de abril de 1998
  16. ^ Vickery, Cristóbal. "Material de referencia IEEE-754" . Consultado el 5 de diciembre de 2015 .
  17. ^ Tadao Ichikawa; H. Tsubotani (1992). Arquitecturas de lenguajes y entornos de programación. Científico mundial. pag. 127.ISBN _ 978-981-02-1012-0.
  18. ^ Levy, Henry M. (1984). "Capítulo 9: Intel iAPX 432" (PDF) . Sistemas informáticos basados ​​en capacidades. Prensa Digital .
  19. ^ Organick, Elliott I. (1983). "Capítulo 4: Estructuras de objetos i432 para la ejecución de programas". La visión de un programador del sistema Intel 432. Nueva York: McGraw-Hill. ISBN 0-07-047719-1. OCLC  9110667.
  20. ^ Glenford J. Meyers (1982). "Sección VI: Descripción general de la arquitectura Intel iAPX432". Avances en arquitectura de computadoras (2ª ed.). Wiley. ISBN 978-0-471-07878-4.
  21. ^ abcd Intel Corporation (1983). MANUAL DE REFERENCIA DE ARQUITECTURA GENERAL DEL PROCESADOR DE DATOS iAPX432 (PDF) . Consultado el 16 de noviembre de 2015 .
  22. ^ Dijkstra, EW ; Lamport, L .; Martín, AJ; Scholten, CS; Steffens, EFM (noviembre de 1978). "Recolección de basura sobre la marcha: un ejercicio de cooperación". Comunicaciones de la ACM . 21 (11): 966–975. doi : 10.1145/359642.359655 . S2CID  8017272.
  23. ^ "Manual de referencia de iMAX 432" (PDF) . Intel . Mayo de 1982.

enlaces externos