El R4000 es un microprocesador desarrollado por MIPS Computer Systems que implementa la arquitectura de conjunto de instrucciones (ISA) MIPS III . Anunciado oficialmente el 1 de octubre de 1991, fue uno de los primeros microprocesadores de 64 bits y la primera implementación de MIPS III. A principios de la década de 1990, cuando se esperaba que los microprocesadores RISC reemplazaran a los microprocesadores CISC como el Intel i486 , el R4000 fue seleccionado para ser el microprocesador del Advanced Computing Environment (ACE), un estándar de la industria que pretendía definir una plataforma RISC común. ACE finalmente fracasó por varias razones , pero el R4000 tuvo éxito en los mercados de estaciones de trabajo y servidores.
Hay tres configuraciones del R4000: el R4000PC, un modelo de nivel de entrada sin soporte para un caché secundario; el R4000SC, un modelo con caché secundario pero sin capacidad multiprocesador; y el R4000MC, un modelo con caché secundario y soporte para los protocolos de coherencia de caché requeridos por los sistemas multiprocesador.
El R4000 es un microprocesador escalar superpipelined con una tubería de enteros de ocho etapas. Durante la primera etapa (IF), se genera una dirección virtual para una instrucción y el buffer de traducción de instrucciones (TLB) comienza la traducción de la dirección a una dirección física. En la segunda etapa (IS), se completa la traducción y la instrucción se obtiene de un caché de instrucciones interno de 8 KB. El caché de instrucciones está mapeado directamente e indexado virtualmente, etiquetado físicamente . Tiene un tamaño de línea de 16 o 32 bytes. Arquitectónicamente, podría ampliarse a 32 KB.
Durante la tercera etapa (RF), se decodifica la instrucción y se lee el archivo de registro . El MIPS III define dos archivos de registro, uno para la unidad entera y el otro para la de punto flotante. Cada archivo de registro tiene 64 bits de ancho y contiene 32 entradas. El archivo de registro entero tiene dos puertos de lectura y uno de escritura, mientras que el archivo de registro de punto flotante tiene dos puertos de lectura y dos de escritura. La ejecución comienza en la etapa cuatro (EX) tanto para las instrucciones enteras como para las de punto flotante; y se vuelve a escribir en los archivos de registro cuando se completa en la etapa ocho (WB). Los resultados se pueden omitir si es posible.
El R4000 tiene una unidad lógica aritmética (ALU), un desplazador, multiplicador y divisor y alineador de carga para ejecutar instrucciones de números enteros. La ALU consta de un sumador de selección de acarreo de 64 bits y una unidad lógica y está segmentada. El desplazador es un desplazador de barril de 32 bits . Realiza desplazamientos de 64 bits en dos ciclos, lo que detiene la segmentación como resultado. Este diseño se eligió para ahorrar área de matriz. El multiplicador y el divisor no están segmentados y tienen latencias significativas: las multiplicaciones tienen una latencia de 10 o 20 ciclos para números enteros de 32 bits o 64 bits, respectivamente; mientras que las divisiones tienen una latencia de 69 o 133 ciclos para números enteros de 32 bits o 64 bits, respectivamente. La mayoría de las instrucciones tienen una latencia de un solo ciclo. El sumador de la ALU también se utiliza para calcular direcciones virtuales para cargas, almacenamientos y bifurcaciones.
Las instrucciones de carga y almacenamiento se ejecutan mediante la canalización de números enteros y acceden al caché de datos de 8 KB del chip.
El R4000 tiene una unidad de punto flotante (FPU) compatible con IEEE 754-1985 , denominada R4010. La FPU es un coprocesador designado CP1 [1] (la ISA MIPS definió cuatro coprocesadores, designados CP0 a CP3). La FPU puede funcionar en dos modos, 32 o 64 bits, que se seleccionan configurando un bit, el bit FR, en el registro de estado de la CPU. En el modo de 32 bits, los 32 registros de punto flotante se convierten en 32 bits de ancho cuando se utilizan para almacenar números de punto flotante de precisión simple. Cuando se utilizan para almacenar números de precisión doble, hay 16 registros de punto flotante (los registros están emparejados).
La FPU puede funcionar en paralelo con la ALU a menos que exista una dependencia de datos o recursos, lo que hace que se detenga. Contiene tres subunidades: un sumador, un multiplicador y un divisor. El multiplicador y el divisor pueden ejecutar una instrucción en paralelo con el sumador, pero utilizan el sumador en sus etapas finales de ejecución, imponiendo así límites a la ejecución superpuesta. Por lo tanto, bajo ciertas condiciones, puede ejecutar hasta tres instrucciones en cualquier momento, una en cada unidad. La FPU es capaz de retirar una instrucción por ciclo.
El sumador y el multiplicador están segmentados. El multiplicador tiene una segmentación de multiplicadores de cuatro etapas. Tiene una frecuencia de reloj dos veces superior a la del microprocesador para un rendimiento adecuado y utiliza lógica dinámica para lograr una frecuencia de reloj alta. La división tiene una latencia de 23 o 36 ciclos para operaciones de precisión simple o doble y la raíz cuadrada tiene una latencia de 54 o 112 ciclos. La división y la raíz cuadrada utilizan el algoritmo SRT .
La unidad de gestión de memoria (MMU) utiliza un búfer de traducción de 48 entradas para traducir direcciones virtuales . El R4000 utiliza una dirección virtual de 64 bits, pero solo implementa 40 de los 64 bits, lo que permite 1 TB de memoria virtual ; los bits restantes se verifican para garantizar que contengan cero. El R4000 utiliza una dirección física de 36 bits , por lo que puede direccionar 64 GB de memoria física .
El R4000 (solo configuraciones SC y MC) admite una caché secundaria externa con una capacidad de 128 KB a 4 MB. Se accede a la caché a través de un bus de datos dedicado de 128 bits. La caché secundaria se puede configurar como una caché unificada o como una caché de datos e instrucciones dividida. En la última configuración, cada caché puede tener una capacidad de 128 KB a 2 MB. [2] La caché secundaria está indexada físicamente, etiquetada físicamente y tiene un tamaño de línea programable de 128, 256, 512 o 1024 bytes. El controlador de caché está integrado. La caché está construida a partir de memoria de acceso aleatorio estática estándar (SRAM). Los buses de datos y etiquetas están protegidos por ECC.
El R4000 utiliza un bus de sistema de 64 bits llamado bus SysAD. El bus SysAD era un bus multiplexado de direcciones y datos, es decir, utilizaba el mismo conjunto de cables para transferir datos y direcciones. Si bien esto reduce el ancho de banda, también es menos costoso que proporcionar un bus de direcciones separado, que requiere más pines y aumenta la complejidad del sistema. El bus SysAD se puede configurar para operar a la mitad, un tercio o un cuarto de la frecuencia de reloj interna. El bus SysAD genera su señal de reloj dividiendo la frecuencia de operación.
El R4000 contiene 1,2 millones de transistores. [3] Fue diseñado para un proceso de metal complementario de óxido de metal semiconductor (CMOS) de dos capas de 1,0 μm. Como MIPS no tenía fábrica propia , el R4000 fue fabricado por socios en sus propios procesos, que tenían un tamaño mínimo de característica de 0,8 μm. [4]
El R4000PC está empaquetado en una matriz de rejilla de pines cerámicos (CPGA) de 179 pines . El R4000SC y el R4000MC están empaquetados en una matriz de rejilla de pines escalonados cerámicos (SPGA) de 447 pines. La distribución de pines del R4000MC es diferente a la del R4000SC, ya que algunos pines que no se utilizan en el R4000SC se utilizan para señales que implementan la coherencia de caché en el R4000MC. La distribución de pines del R4000PC es similar a la de los microprocesadores R4200 y R4600 con paquete PGA . Esta característica permite que un sistema diseñado correctamente utilice cualquiera de los tres microprocesadores.
El R4400 es un desarrollo posterior del R4000. Se anunció a principios de noviembre de 1992. Se habían enviado muestras del microprocesador a clientes seleccionados antes de esa fecha, y estuvo disponible para el público en general en enero de 1993. El R4400 funciona a frecuencias de reloj de 100, 133, 150, 200 y 250 MHz. La única mejora importante con respecto al R4000 es el aumento del tamaño de las cachés primarias, cuya capacidad se duplicó de 8 KB a 16 KB cada una. Contenía 2,3 millones de transistores.
El R4400 fue licenciado por Integrated Device Technology (IDT), LSI Logic , NEC , Performance Semiconductor, Siemens AG y Toshiba . IDT, NEC, Siemens y Toshiba fabricaron y comercializaron el microprocesador. LSI Logic utilizó el R4400 en productos personalizados. Performance Semiconductor vendió su división de lógica a Cypress Semiconductor, donde se discontinuaron los productos de microprocesadores MIPS.
NEC comercializó su versión como VR4400. La primera versión, una pieza de 150 MHz, se anunció en noviembre de 1992. Las primeras versiones se fabricaron en un proceso de 0,6 μm. [5] A mediados de 1995, se comenzó a muestrear una pieza de 250 MHz. Se fabricó en un proceso de metal de cuatro capas de 0,35 μm. [6] NEC también produjo el MR4401, un módulo multichip cerámico (MCM) que contenía un VR4400SC con diez chips SRAM de 1 Mbit que implementaban una caché secundaria de 1 MB. El MCM era compatible con pines del R4x00PC. La primera versión, una pieza de 150 MHz, se anunció en 1994. En 1995, se anunció una pieza de 200 MHz.
Toshiba comercializó su versión como TC86R4400. A mediados de 1994 se presentó una pieza de 200 MHz que contenía 2,3 millones de transistores y medía 134 mm2 fabricada en un proceso de 0,3 μm. El R4400PC tenía un precio de 1.600 dólares , el R4400SC de 1.950 dólares y el R4400MC de 2.150 dólares en cantidades de 10.000. [7]
El R4400 es utilizado por:
Los microprocesadores R4000 y R4400 se conectaban al sistema mediante circuitos integrados de aplicación específica (ASIC) personalizados o mediante conjuntos de chips disponibles comercialmente. Los proveedores de sistemas, como SGI, desarrollaban sus propios ASIC para sus sistemas. Los conjuntos de chips comerciales fueron desarrollados, fabricados y comercializados por empresas como Toshiba con su conjunto de chips Tiger Shark, que proporcionaba un bus compatible con i486 . [13]