Intel iAPX 432 - Intel iAPX 432

Intel iAPX 432
Logotipo de Intel (1968) .svg
Logotipo de Intel Corporation, 1968–2006
Información general
Lanzado finales de 1981
Interrumpido ca 1985
Fabricante (s) común (es)
Actuación
Max. Frecuencia de reloj de la CPU 5 MHz a 8 MHz

El iAPX 432 ( Intel Rendimiento Arquitectura Avanzada ) es una discontinuada arquitectura de computadores introducido en 1981. Fue Intel primera 's de 32 bits del procesador de diseño. 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 en ese 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 procesador 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 al año siguiente como sucesor del 8080, el iAPX 432 fue una desviación radical de los diseños anteriores de Intel destinados a un nicho de mercado diferente, y completamente ajeno a las líneas de productos 8080 o x86 .

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

Descripción

El iAPX 432 se denominó "micromainframe", diseñado para ser programado completamente en lenguajes de alto nivel. La arquitectura del conjunto de instrucciones también era completamente nueva y 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 apilada sin registros visibles de propósito general . Admite programación orientada a objetos , recolección de basura y multitarea , así como una gestión de memoria más convencional directamente en hardware y microcódigo . El soporte directo para varias estructuras de datos también está destinado a permitir que los sistemas operativos modernos se implementen utilizando mucho menos código de programa que para los procesadores ordinarios. Intel iMAX 432 es un sistema operativo descontinuado para el 432, 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 no son (en su mayoría) 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 16 -bit ALU, mediante lógica aleatoria y microcódigo u otros tipos de lógica secuencial . El espacio de direcciones ampliado del iAPX 432 sobre el 8080 también estaba limitado por el hecho de que el direccionamiento lineal de datos solo podía usar 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).

Usando 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 Ada prematuro , esto contribuyó a sistemas informáticos bastante lentos pero costosos, que realizaban pruebas de rendimiento típicas a aproximadamente 1/4 de la velocidad del nuevo chip 80286 a la misma frecuencia de reloj (a principios de 1982). Esta brecha de rendimiento inicial con la línea 8086 de bajo perfil y bajo precio fue probablemente la razón principal por la que falló el plan de Intel para reemplazar este último (más tarde conocido 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 se había comenzado a considerar más como una sobrecarga de implementación que como el soporte simplificador que se pretendía que fuera.

Diseñado originalmente 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.

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 se llamó inicialmente 8800 , como su siguiente paso más allá de los microprocesadores Intel 8008 y 8080 existentes . Esto se convirtió en un gran paso. Los conjuntos de instrucciones de estos procesadores de 8 bits no estaban muy bien equipados para la típica Algol -como lenguajes compilados . Sin embargo, el principal problema eran sus pequeños rangos de direccionamiento nativo, solo 16K para 8008 y 64K para 8080, demasiado pequeño para muchos sistemas de software complejos sin usar algún tipo de conmutación de banco , segmentación de memoria o mecanismo similar (que estaba integrado en el 8086 , unos años después). Intel ahora tenía como objetivo construir un sistema completo sofisticado en unos pocos chips LSI, que fuera funcionalmente igual o mejor que los mejores miniordenadores y mainframes de 32 bits que requieren 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.

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

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 mayor progreso en la Ley de Moore , antes de que la fabricación mejorada de chips pudiera encajar todo esto en unos pocos chips densos. Mientras tanto, Intel necesitaba con urgencia un producto provisional más simple para hacer frente a 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 desde el 8080, utilizando un equipo de diseño separado. El 8086 para el mercado masivo enviado 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 mapearse en la arquitectura del 8086 usando un ensamblador especial . El código fuente ensamblador existente del 8080 (aunque sin código ejecutable ) se hizo compatible con el nuevo 8086 hasta cierto punto. Por el contrario, el 432 no tenía requisitos de migración o compatibilidad de software. Los arquitectos tenían total libertad para hacer un diseño novedoso desde cero, utilizando las técnicas que supusieron que serían las mejores para sistemas y software a gran escala. Aplicaron conceptos de ciencias de la computación de moda de las universidades, particularmente 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 más complejo. La complejidad del chip limitó la velocidad del reloj y alargó el programa de diseño.

El núcleo del diseño, el procesador principal, se denominó Procesador de datos generales ( GDP ) 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 43203 ( IP ) que funcionaba 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".

Estos fueron algunos de los diseños más grandes de la época. El GDP de dos chips tenía un recuento combinado de aproximadamente 97,000  transistores, 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.

En 1983, Intel lanzó dos circuitos integrados adicionales para la arquitectura de interconexión iAPX 432: la unidad de interfaz de bus 43204 ( BIU ) y la unidad de control de memoria 43205 ( MCU ). 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 fueron perjudiciales para el buen rendimiento. En muchos casos, el iAPX 432 tenía un rendimiento de instrucción significativamente más lento que los microprocesadores convencionales de la época, como el National Semiconductor 32016 , Motorola 68010 e Intel 80286 . Un problema era que la implementación de dos chips del GDP lo limitaba a la velocidad del cableado eléctrico de la placa base. Un problema mayor fue la arquitectura de capacidad que necesitaba grandes cachés asociativos para funcionar de manera eficiente, pero los chips no tenían espacio para eso. El conjunto de instrucciones también usó instrucciones de longitud variable alineadas en bits en lugar de los formatos habituales de bytes semifijos o alineados por palabras que se usan en la mayoría de los diseños de computadora. La decodificación de instrucciones fue, por tanto, 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 bus se detuvo en estados de espera .

Otro problema importante fue su compilador Ada inmaduro y desajustado . Usó instrucciones orientadas a objetos de alto costo en todos los casos, en lugar de las instrucciones escalares más rápidas donde hubiera tenido sentido hacerlo. Por ejemplo, el iAPX 432 incluía una instrucción de llamada de procedimiento entre módulos muy cara , 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 una de las variables del sistema, incluso cuando las variables se usaban dentro de un entorno existente y no tenían que verificarse. Para empeorar las cosas, los datos que se transmiten desde y hacia los procedimientos siempre se transmiten por valor de retorno en lugar de por referencia. Al ejecutar el punto de referencia de Dhrystone , el paso de parámetros tomó diez veces más tiempo que todos los demás cálculos combinados.

Según el New York Times , "el i432 funcionó de 5 a 10 veces más lento que su competidor, el Motorola 68000".

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 coma flotante.

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 se ejecutará lentamente, y el 432 fue citado a menudo como un contraejemplo por los defensores de los diseños RISC . Sin embargo, algunos sostienen que el soporte de OO no fue el problema principal con el 432, y que las deficiencias de implementación (especialmente en el compilador) mencionadas anteriormente habrían hecho que cualquier diseño de CPU fuera lento. Desde el iAPX 432 sólo ha habido otro intento de un diseño similar, el procesador Rekursiv , aunque el soporte de procesos del INMOS Transputer fue similar y muy rápido.

Intel había pasado considerable tiempo, dinero, y Mindshare en el 432, tenía un equipo experto dedicado a ella, y no estaba dispuesto a abandonar 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 de memoria etiquetada se comercializaron solo 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 para el mercado de muy alta gama.

Arquitectura

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

Capacidad 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 . El sistema utiliza memoria segmentada , con hasta 2 24 segmentos de hasta 64  KB cada uno, lo que proporciona un espacio total de direcciones virtuales de 2 40 bytes. El espacio de direcciones físicas es 2 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 gobiernan los accesos a ese segmento. Los segmentos pueden ser "segmentos de acceso", que solo 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 solo segmento de acceso o 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 desplazamientos designados, 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 comprueba 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 máximo beneficio de la verificación de tipos de hardware, mediante el uso de objetos de control de tipos (TCO) .

En la Versión 1 de la arquitectura iAPX 432, un objeto definido por el sistema típicamente consistía en un segmento de acceso y, opcionalmente (dependiendo del 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 el número de búsquedas en la tabla de objetos y duplicó el espacio máximo de direcciones virtuales.

El iAPX432 reconoce catorce tipos de objetos del sistema predefinidos :

  • el objeto de instrucción contiene instrucciones ejecutables
  • El objeto de dominio representa un módulo de programa y contiene referencias a subrutinas y datos.
  • El objeto de contexto representa el contexto de un proceso en ejecución.
  • El objeto de definición de tipo representa un tipo de objeto definido por software
  • El objeto de control de tipo representa un privilegio específico de tipo
  • La tabla de objetos identifica la colección del sistema de descriptores de objetos activos.
  • El objeto de recurso de almacenamiento representa un grupo de almacenamiento gratuito.
  • El objeto de almacenamiento físico identifica los bloques de almacenamiento libres en la memoria.
  • El objeto de reclamo de almacenamiento limita el almacenamiento que pueden asignar todos los objetos de recursos de almacenamiento asociados
  • El objeto de proceso identifica un proceso en ejecución.
  • El objeto port representa un puerto y una cola de mensajes para la comunicación entre procesos.
  • transportista Los transportistas llevan mensajes desde y hacia los puertos
  • El procesador contiene información de estado para un procesador en el sistema.
  • El objeto de comunicación del procesador se utiliza para la comunicación entre procesadores.

Recolección de basura

El software que se ejecuta en el 432 no necesita desasignar explícitamente los 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 paralela sobre la marcha de Edsger Dijkstra (un recolector de estilo de marca y barrido ). Las entradas en la tabla de objetos del sistema contienen los bits que se utilizan para marcar cada objeto como blanco, negro o gris, según lo necesite el recopilador. El sistema operativo iMAX 432 incluye la parte de software del recolector de basura.

Formato de instrucción

Las instrucciones ejecutables están contenidas en un "objeto de instrucción" del sistema. Dado que las instrucciones están alineadas en bits, un desplazamiento de 16 bits en el objeto de instrucción permite que el objeto contenga hasta 8192 bytes de instrucciones (65,536 bits).

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 operando . "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. 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. Esto es seguido opcionalmente por un campo de formato de 0 a 4 bits que describe los operandos (si no hay operandos, el formato no está presente). Luego, obtenga de cero a tres operandos, como se describe en el formato. La instrucción termina con el código de operación de 0 a 5 bits, si lo hay (algunas clases contienen solo una instrucción y, por lo tanto, no tienen código de operación). "El campo Formato permite que el PIB le aparezca 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 siguiente de la pila de operandos.

Ver también

  • iAPX , para el nombre de iAPX

Notas

Referencias

enlaces externos