Intel i860
El Intel i860 (también conocido como 80860) es un diseño de microprocesador RISC presentado por Intel en 1989. Es uno de los primeros intentos de Intel de Arquitectura de conjunto de instrucciones de gama alta completamente nueva desde el fallido Intel iAPX 432 de principios de la década de 1980. Fue el primer chip del mundo con un millón de transistores. Fue lanzado con mucha fanfarria, oscureciendo ligeramente al anterior Intel i960, que tuvo éxito en algunos nichos de sistemas integrados. El i860 nunca logró el éxito comercial y el proyecto se canceló a mediados de la década de 1990.
Implementaciones
La primera implementación de la arquitectura i860 es el microprocesador i860 XR (nombre en código N10), que funcionaba a 25, 33 o 40 MHz. El microprocesador i860 XP de segunda generación (nombre en código N11) agregó páginas de 4 Mbytes, cachés en chip más grandes, soporte de caché de segundo nivel, buses más rápidos y soporte de hardware para bus snooping, para la consistencia de caché en sistemas multiprocesador. Un proceso de reducción para el XP (de 1 μm a 0,8 CHMOS V) aumentó el reloj a 40 y 50 MHz. Ambos microprocesadores admitían el mismo conjunto de instrucciones para programas de aplicación.
Características técnicas
El i860 combinó una serie de características que eran únicas en ese momento, sobre todo su arquitectura de palabra de instrucción muy larga (VLIW) y su potente soporte para operaciones de punto flotante de alta velocidad. El diseño utiliza dos clases de instrucciones: "núcleo" instrucciones que utilizan una ALU de 32 bits y "punto flotante o gráficos" instrucciones que operan en un sumador de coma flotante, un multiplicador de coma flotante o una unidad gráfica de enteros de 64 bits. El sistema tenía canalizaciones separadas para la ALU, el sumador de punto flotante, el multiplicador de punto flotante y la unidad gráfica. Puede obtener y decodificar un "núcleo" instrucción y un "coma flotante o gráficos" instrucción por reloj. Cuando se utilizan instrucciones de punto flotante de operación dual (que transfieren valores entre instrucciones de operación dual posteriores), puede ejecutar hasta tres operaciones (una ALU, una multiplicación de punto flotante y una suma o resta de punto flotante).) por reloj.
Todos los buses de datos tenían al menos 64 bits de ancho. El bus de memoria interna al caché, por ejemplo, tenía 128 bits de ancho.
El "núcleo" Las instrucciones de clase utilizan treinta y dos registros enteros de 32 bits. Pero el "coma flotante o gráficos" Las instrucciones utilizan un archivo de registro al que pueden acceder las unidades de punto flotante como treinta y dos registros de punto flotante de 32 bits, dieciséis de 64 bits u ocho de 128 bits, o al que puede acceder la unidad gráfica como dieciséis registros de 64 bits. -bit registros enteros.
El "núcleo" la unidad es responsable de obtener las instrucciones y, en el modo normal de "instrucción única" puede obtener un "núcleo" de 32 bits o uno de 32 bits de "coma flotante o gráficos" instrucción por ciclo. Pero cuando se ejecuta en modo de instrucción dual, se accede a la caché de instrucciones como instrucciones VLIW que consisten en un "núcleo" instrucción emparejada con un "coma flotante o gráficos" de 32 bits instrucción, reunidas simultáneamente en un bus de 64 bits.
Intel se refirió al diseño como el "microprocesador i860 de 64 bits".
Las instrucciones de Intel i860 actuaron en tamaños de datos de 8 bits a 128 bits.
La unidad gráfica era única para la época. Admitía una serie de comandos para instrucciones similares a SIMD además de matemáticas básicas de enteros de 64 bits. Por ejemplo, su ruta de datos de enteros de 64 bits puede representar varios píxeles juntos como píxeles de 8 bits, píxeles de 16 bits o píxeles de 32 bits. La experiencia con el i860 influyó en la funcionalidad MMX que luego se agregó a los procesadores Pentium de Intel.
Una característica inusual del i860 era que las canalizaciones hacia las unidades funcionales eran accesibles desde el programa (VLIW), lo que requería que los compiladores ordenaran las instrucciones cuidadosamente en el código objeto para mantener las canalizaciones llenas. En las arquitecturas tradicionales, un planificador en la propia CPU manejaba estas tareas en tiempo de ejecución, pero la complejidad de estos sistemas limitaba su aplicación en los primeros diseños de RISC. El i860 fue un intento de evitar esto por completo al mover este deber fuera del chip al compilador. Esto permitió que el i860 dedicara más espacio a las unidades funcionales, mejorando el rendimiento. Como resultado de su arquitectura, el i860 podía ejecutar ciertos gráficos y algoritmos de punto flotante con una velocidad excepcionalmente alta, pero su rendimiento en aplicaciones de propósito general se vio afectado y fue difícil programarlo de manera eficiente (ver más abajo).
Rendimiento
Sobre el papel, el rendimiento fue impresionante para una solución de un solo chip; sin embargo, el rendimiento en el mundo real fue todo lo contrario. Un problema, quizás no reconocido en ese momento, fue que las rutas del código en tiempo de ejecución son difíciles de predecir, lo que significa que se vuelve extremadamente difícil ordenar las instrucciones correctamente en el momento de la compilación. Por ejemplo, una instrucción para sumar dos números llevará mucho más tiempo si esos números no están en el caché, pero el programador no tiene forma de saber si lo están o no. Si se hace una suposición incorrecta, toda la canalización se detendrá, esperando los datos. Todo el diseño del i860 se basó en que el compilador manejara eficientemente esta tarea, lo que resultó casi imposible en la práctica. Si bien teóricamente es capaz de alcanzar un máximo de 60-80 MFLOPS tanto para precisión simple como para precisión doble para las versiones XP, el código ensamblador escrito manualmente logró obtener solo hasta 40 MFLOPS, y la mayoría de los compiladores tuvieron dificultades para obtener incluso 10 MFLOP. La arquitectura posterior de Itanium, también un diseño VLIW, sufrió nuevamente el problema de los compiladores incapaces de entregar un código suficientemente optimizado.
Otro problema serio fue la falta de una solución para manejar el cambio de contexto rápidamente. El i860 tenía varias canalizaciones (para las partes ALU y FPU) y una interrupción podría derramarlas y requerir que todas se vuelvan a cargar. Esto tomó 62 ciclos en el mejor de los casos y casi 2000 ciclos en el peor. Este último es 1/20000 de segundo a 40 MHz (50 microsegundos), una eternidad para una CPU. Esto eliminó en gran medida el i860 como una CPU de propósito general.
Muerte
A medida que los compiladores mejoraron, el rendimiento general del i860 también lo hizo, pero para entonces la mayoría de los otros diseños de RISC ya habían superado al i860 en rendimiento.
A fines de la década de 1990, Intel reemplazó toda su línea RISC con diseños basados en ARM, conocidos como XScale. De manera confusa, el número 860 se ha reutilizado desde entonces para un conjunto de chips de control de placa base para sistemas Intel Xeon (Pentium de gama alta) y un modelo de Core i7.
Andy Grove sugirió que el fracaso del i860 en el mercado se debió a que Intel se estiró demasiado:
Ahora teníamos dos chips muy potentes que estábamos introduciendo al mismo tiempo: el 486, basado en gran parte en la tecnología CISC y compatible con todo el software PC, y el i860, basado en la tecnología RISC, que era muy rápido pero compatible con nada. No sabíamos qué hacer. Así que presentamos ambas cosas, pensando que dejaríamos que el mercado decida... nuestra creación causó que nuestros clientes se preguntaran qué Intel realmente defendía, el 486 o el i860?
—Andy Grove,
Aplicaciones
Al principio, el i860 solo se usaba en una pequeña cantidad de supercomputadoras como Intel iPSC/860. Posteriormente, Intel comercializó el i860 como un microprocesador para estaciones de trabajo durante un tiempo, donde compitió con los microprocesadores basados en las arquitecturas MIPS y SPARC, entre otros. Las estaciones de trabajo Oki Electric OKI Station 7300/30 y Stardent Vistra 800 Unix se basaron en un i860 XR de 40 MHz que ejecuta UNIX System V/i860. El Hauppauge 4860 y el Olivetti CP486 presentaban un Intel 80486 e i860 en la misma placa base. Microsoft desarrolló inicialmente lo que se convertiría en Windows NT en estaciones de trabajo basadas en i860XR diseñadas internamente (nombre en código Dazzle), solo transfiriendo NT a MIPS (Microsoft Jazz), Intel 80386 y otros procesadores posteriores. Algunos afirman que la designación del NT era una referencia al "N-Ten" nombre en clave del i860XR.
El i860 tuvo cierto uso en el mundo de las estaciones de trabajo como acelerador de gráficos. Se usó, por ejemplo, en NeXTdimension, donde ejecutó una versión reducida del kernel de Mach que ejecutaba una pila PostScript completa. Sin embargo, la parte PostScript del proyecto nunca se terminó, por lo que terminó simplemente moviendo píxeles de color. En esta función, el diseño del i860 funcionó considerablemente mejor, ya que el programa central podía cargarse en la memoria caché y hacerse totalmente "predecible", lo que permitía a los compiladores obtener el orden correcto. Truevision produjo una placa aceleradora basada en i860 diseñada para usarse con sus tarjetas framebuffer Targa y Vista. Pixar produjo una versión personalizada de RenderMan para ejecutar en la tarjeta que se ejecutaba aproximadamente cuatro veces más rápido que el host 386. Otro ejemplo fue RealityEngine de SGI, que utilizó una serie de procesadores i860XP en su motor de geometría. Este tipo de uso también desapareció lentamente, a medida que las CPU de uso general comenzaron a igualar el rendimiento del i860 y Intel centró su atención en los procesadores Pentium para la informática de uso general.
Mercury Computer Systems usó el i860 en su multicomputadora. De 2 a 360 nodos de cómputo residirían en una red de árbol gordo con conmutación de circuitos, y cada nodo tendría una memoria local que cualquier otro nodo podría mapear. Cada nodo en este sistema heterogéneo podría ser un i860, un PowerPC o un grupo de tres DSP SHARC. Se obtuvo un buen rendimiento del i860 al proporcionar a los clientes una biblioteca de funciones de procesamiento de señales escritas en lenguaje ensamblador. El hardware empaquetó hasta 360 nodos de cómputo en 9U de espacio de rack, lo que lo hace adecuado para aplicaciones móviles como el procesamiento de radar aerotransportado.
A principios de la década de 1990, Stratus Technologies creó servidores basados en i860, la serie XA/R, que ejecutaban su sistema operativo VOS patentado.
También en la década de 1990, Alliant Computer Systems construyó sus servidores FX/800 y FX/2800 basados en i860, reemplazando las series FX/80 y FX/8 que tenían se ha basado en el Motorola 68000 ISA. Los sistemas de cómputo de Alliant y Mercury fueron muy utilizados en la NASA/JPL para las misiones SIR-C.
El ejército de EE. UU. usó el i860 para numerosas aplicaciones aeroespaciales y de procesamiento de señales digitales como coprocesador, donde se usó hasta fines de la década de 1990.
Contenido relacionado
TAT-7
Sébastien Le Prestre de Vauban
Redes ópticas síncronas