El R8000 es un chipset de microprocesador desarrollado por MIPS Technologies, Inc. (MTI), Toshiba y Weitek . [1] Fue la primera implementación de la arquitectura del conjunto de instrucciones MIPS IV . El R8000 también se conoce como TFP , por Tremendous Floating-Point , su nombre durante el desarrollo.
Historia
El desarrollo del R8000 comenzó a principios de la década de 1990 en Silicon Graphics , Inc. (SGI). El R8000 fue diseñado específicamente para proporcionar el rendimiento de las supercomputadoras de la década de 1990 con un microprocesador en lugar de una unidad de procesamiento central (CPU) construida a partir de muchos componentes discretos, como las matrices de puertas . En ese momento, el rendimiento de las supercomputadoras tradicionales no avanzaba tan rápidamente como los microprocesadores de computadora con conjunto de instrucciones reducido (RISC). Se predijo que los microprocesadores RISC eventualmente igualarían el rendimiento de supercomputadoras más caras y más grandes a una fracción del costo y tamaño, haciendo que las computadoras con este nivel de rendimiento sean más accesibles y permitiendo que las estaciones de trabajo y servidores de escritorio reemplacen a las supercomputadoras en muchas situaciones.
Los primeros detalles del R8000 surgieron en abril de 1992 en un anuncio de MIPS Computer Systems que detalla los futuros microprocesadores MIPS. En marzo de 1992, SGI anunció que estaba adquiriendo MIPS Computer Systems, que se convirtió en una subsidiaria de SGI llamada MIPS Technologies, Inc. (MTI) a mediados de 1992. El desarrollo del R8000 se transfirió a MTI, donde continuó. Se esperaba que el R8000 se introdujera en 1993, pero se retrasó hasta mediados de 1994. El primer R8000, una pieza de 75 MHz, se introdujo el 7 de junio de 1994. En ese momento tenía un precio de 2.500 dólares estadounidenses. A mediados de 1995, apareció una parte de 90 MHz en los sistemas de SGI. El alto costo y el estrecho mercado del R8000 (informática técnica y científica) restringieron su participación en el mercado y, aunque era popular en el mercado al que estaba destinado, fue reemplazado en gran medida por el R10000 más barato y, en general, de mejor rendimiento presentado en enero de 1996.
Los usuarios de la R8000 fueron SGI, que lo utilizó en su potencia Indigo2 estación de trabajo , Power Challenge servidor, Power ChallengeArray racimo y de energía Onyx sistema de visualización. En la lista TOP500 de noviembre de 1994 , 50 sistemas de 500 usaban el R8000. Los sistemas basados en R8000 mejor clasificados fueron cuatro Power Challenges en las posiciones 154 a 157. Cada uno tenía 18 R8000. [2]
Descripción
El conjunto de chips consistía en el microprocesador R8000, la unidad de punto flotante R8010, dos Tag RAM y la caché de transmisión. El R8000 es superescalar , capaz de emitir hasta cuatro instrucciones por ciclo y ejecuta instrucciones en el orden del programa. Tiene una canalización de enteros de cinco etapas .
R8000
El R8000 controlaba el conjunto de chips y ejecutaba instrucciones de números enteros. Contenía las unidades de ejecución de enteros, el archivo de registro de enteros , los cachés primarios y el hardware para la búsqueda de instrucciones, la predicción de rama y los búferes de búsqueda de traducción (TLB).
En la etapa uno, se obtienen cuatro instrucciones de la caché de instrucciones. La memoria caché de instrucciones tiene un tamaño de 16 kB, mapeado directo , etiquetado virtualmente e indexado virtualmente , y tiene un tamaño de línea de 32 bytes. La decodificación de instrucciones y las lecturas de registros ocurren durante la etapa dos, y las instrucciones de bifurcación también se resuelven, lo que lleva a una penalización de predicción errónea de bifurcación de un ciclo. Las instrucciones de carga y almacenamiento comienzan a ejecutarse en la etapa tres, y las instrucciones enteras en la etapa cuatro. La ejecución de enteros se retrasó hasta la etapa cuatro para que las instrucciones de enteros que utilizan el resultado de una carga como operando puedan emitirse en el ciclo posterior a la carga. Los resultados se escriben en el archivo de registro de enteros en la etapa cinco.
El archivo de registro de enteros tiene nueve puertos de lectura y cuatro puertos de escritura. Cuatro puertos de lectura suministran operandos a las dos unidades de ejecución de enteros (la unidad de rama se consideraba parte de una unidad de enteros). Otros cuatro puertos de lectura suministran operandos a los dos generadores de direcciones. Se necesitan cuatro puertos, en lugar de dos, debido al estilo de dirección base (registro) + índice (registro) agregado en MIPS IV ISA. El R8000 emite como máximo un almacén de enteros por ciclo, y un puerto de lectura final entrega los datos del almacén de enteros.
Se utilizan dos puertos de escritura de archivos de registro para escribir los resultados de las dos unidades funcionales enteras. El R8000 emite dos cargas enteras por ciclo y los otros dos puertos de escritura se utilizan para escribir los resultados de las cargas enteras en el archivo de registro.
La caché de datos de nivel 1 se organizó como dos matrices redundantes, cada una de las cuales tenía un puerto de lectura y un puerto de escritura. Los almacenes de enteros se escribieron en ambas matrices. Se pueden procesar dos cargas en paralelo, una en cada matriz.
Las unidades funcionales enteras constaban de dos unidades enteras, una unidad de desplazamiento, una unidad de multiplicación y división y dos unidades generadoras de direcciones. Las instrucciones de multiplicar y dividir se ejecutan en la unidad de multiplicar-dividir, que no está canalizada. Como resultado, la latencia de una instrucción de multiplicación es de cuatro ciclos para operandos de 32 bits y de seis ciclos para 64 bits. La latencia de una instrucción de división depende del número de dígitos significativos en el resultado y, por lo tanto, varía de 21 a 73 ciclos.
Cargas y almacenes
Las cargas y los almacenes comienzan a ejecutarse en la etapa tres. El R8000 tiene dos unidades de generación de direcciones (AGU) que calculan la dirección virtual para cargas y tiendas. En la etapa cuatro, las direcciones virtuales se traducen a direcciones físicas mediante un TLB de doble puerto que contiene 384 entradas y es asociativo de tres vías. Se accede a la caché de datos de 16 kB en el mismo ciclo. Tiene dos puertos y se accede a él a través de dos buses de 64 bits. Puede dar servicio a dos cargas o una carga y una tienda por ciclo. La caché no está protegida por paridad o por código de corrección de errores (ECC). En el caso de una falla en la caché , los datos deben cargarse desde la caché de transmisión con una penalización de ocho ciclos. La caché está virtualmente indexada, etiquetada físicamente , mapeada directamente , tiene un tamaño de línea de 32 bytes y utiliza un protocolo de escritura directa con asignación. Si las cargas golpean en la caché de datos, el resultado se escribe en el archivo de registro de enteros en la etapa cinco.
R8010
El R8010 ejecutó instrucciones de punto flotante proporcionadas por una cola de instrucciones en el R8000. La cola desacopló la canalización de punto flotante de la canalización de enteros, implementando una forma limitada de ejecución fuera de orden al permitir que las instrucciones de punto flotante se ejecuten cuando sea posible después o antes de que se emitan las instrucciones de entero del mismo grupo. Las canalizaciones se desacoplaron para ayudar a mitigar parte de la latencia de la caché de transmisión.
Contenía el archivo de registro de punto flotante, una cola de carga, una cola de almacenamiento y dos unidades idénticas de punto flotante. Todas las instrucciones, excepto las de división y raíz cuadrada, se canalizan. El R8010 implementa una división iterativa y un algoritmo de raíz cuadrada que utiliza el multiplicador para una parte clave, lo que requiere que la tubería se detenga en la unidad durante la operación.
Las instrucciones aritméticas, excepto las comparaciones, tienen una latencia de cuatro ciclos. Las divisiones de precisión simple y doble tienen latencias de 14 y 20 ciclos, respectivamente; [1] y las raíces cuadradas de precisión simple y doble tienen latencias de 14 y 23 ciclos, respectivamente. [3]
Streaming de caché y etiquetas RAM
El caché de transmisión es un caché externo de 1 a 16 MB que sirve como caché unificado L2 del R8000 y caché de datos L1 del R8010. Funciona a la misma frecuencia de reloj que el R8000 y está construido a partir de RAM estáticas sincrónicas de productos básicos . [1] Este esquema se utilizó para lograr un rendimiento sostenido de punto flotante, que requiere un acceso frecuente a los datos. Una pequeña caché primaria de baja latencia no contendría suficientes datos y fallaría con frecuencia, lo que requeriría recargas de latencia prolongada que reducen el rendimiento.
La caché de transmisión está intercalada de dos vías . Tiene dos bancos independientes , cada uno de los cuales contiene datos de direcciones pares o impares. Por tanto, puede realizar dos lecturas, dos escrituras o una lectura y una escritura en cada ciclo, siempre que los dos accesos sean a bancos separados. [1] [4] Se accede a cada banco a través de dos buses unidireccionales de 64 bits, uno para lecturas y el otro para escrituras. Este esquema se utilizó para evitar la rotación de buses , que es requerida por los buses bidireccionales. Al evitar la rotación del bus, la caché se puede leer en un ciclo y luego escribir en el siguiente ciclo sin un ciclo intermedio para la rotación, lo que se traduce en un mejor rendimiento. [4]
Las etiquetas de la caché de transmisión están contenidas en dos chips de RAM de etiquetas, uno para cada banco. Ambos chips contienen datos idénticos. Cada chip contiene 1,189 Mbit de etiquetas de caché implementadas por celdas SRAM de cuatro transistores. Los chips se implementan en un proceso BiCMOS de 0,7 μm con dos niveles de polisilicio y dos niveles de interconexión de aluminio . Los circuitos BiCMOS se utilizaron en los decodificadores y en las porciones de amplificador y comparador de detección combinados del chip para reducir el tiempo de ciclo. Cada Tag RAM tiene un tamaño de 14,8 mm por 14,8 mm, está empaquetada en un CPGA de 155 pines y disipa 3 W a 75 MHz. [5] Además de proporcionar las etiquetas de caché, las RAM de etiquetas son responsables de que la caché de transmisión sea asociativa en cuatro direcciones. Para evitar un alto número de pines, las etiquetas de caché son asociativas de conjuntos de cuatro vías y la lógica selecciona a qué conjunto acceder después de la búsqueda en lugar de la forma habitual de implementar cachés asociativas de conjuntos. [1]
El acceso a la caché de transmisión se canaliza para mitigar parte de la latencia. La canalización tiene cinco etapas: en la etapa uno, las direcciones se envían a las etiquetas RAM, a las que se accede en la etapa dos. La tercera etapa es para que las señales de las RAM de etiquetas se propaguen a las SSRAM. En la etapa cuatro, se accede a las SSRAM y los datos se devuelven al R8000 o R8010 en la etapa cinco.
Físico
El R8000 contenía 2,6 millones de transistores y medía 17,34 mm por 17,30 mm (299,98 mm²). El R8010 contenía 830.000 transistores. En total, los dos chips contenían 3,43 millones de transistores. Ambos fueron fabricados por Toshiba en su proceso VHMOSIII, un proceso de semiconductor de óxido de metal complementario de metal de triple capa (CMOS) de 0,7 μm . Ambos están empaquetados en paquetes de matriz de rejilla de clavijas cerámicas (CPGA) de 591 pines . Ambos chips usaban una fuente de alimentación de 3.3 V y el R8000 disipaba 13 W a 75 MHz.
Notas
- ^ a b c d e Hsu 1994
- ^ Dongarra 1994
- ^ Tecnologías MIPS, Inc., 1994
- ^ a b MIPS 1994
- ^ Unekawa 1993
Referencias
- "Instrucciones de alineación para envío múltiple" . Recuadro en Pountain, Dick, "The Last Bastion", Byte , agosto de 1994.
- Dongarra, Jack J .; Meuer, Hans W. y Strohmaier, Erich (9 de noviembre de 1994). TOP500 Sitios de supercomputadoras .
- Gwennap, Linley (15 de febrero de 1993). "SGI proporciona una descripción general de la CPU TFP". Informe del microprocesador , vol. 7, no. 2.
- Gwennap, Linley (23 de agosto de 1993). "TFP diseñado para un punto flotante tremendo". Informe del microprocesador , vol. 7, no. 11.
- Hsu, Peter Yan-Tek (2 de junio de 1994). Diseño del microprocesador R8000 .
- MIPS Technologies, Inc. (agosto de 1994). Descripción general del producto del conjunto de chips de microprocesador R8000 .
- Pountain, Dick (septiembre de 1994). "El último bastión" . Byte .
- Shen, John Paul; Lipasti, Mikko H. (2005). Diseño de procesador moderno: fundamentos de microprocesadores superescalares . Profesional de McGraw-Hill. págs. 418–419.
- Unekawa, Yasuo y col. (1993). "Una etiqueta RAM síncrona de 110MHz / 1Mbit". Simposio sobre circuitos VLSI . págs. 15-16.
Otras lecturas
- Ikumi, N. y col. (Febrero de 1994). "Un microprocesador superescalar CMOS de cuatro números de 300 MIPS, 300 MFLOPS". Recopilación de artículos técnicos de la ISSCC .
- Unekawa, Y. et al. (Abril de 1994). "Un TagRAM síncrono de 110 MHz / 1 Mb". IEEE Journal of Solid-State Circuits 29 (4): págs. 403–410.