El Alpha 21164 , también conocido por su nombre en código, EV5 , es un microprocesador desarrollado y fabricado por Digital Equipment Corporation que implementó la arquitectura de conjunto de instrucciones (ISA) Alpha . Fue presentado en enero de 1995, sucediendo al Alpha 21064A como el microprocesador insignia de Digital. Fue reemplazado por el Alpha 21264 en 1998.
El primer silicio del Alpha 21164 se produjo en febrero de 1994, y los sistemas operativos OpenVMS , Digital UNIX y Windows NT se iniciaron con éxito en él. Se probó a fines de 1994 y se presentó en enero de 1995 a 266 MHz. Se presentó una versión de 300 MHz en marzo de 1995. El Alpha 21164 final, una versión de 333 MHz, se anunció el 2 de octubre de 1995, disponible en cantidades de muestra. El Alpha 21164 fue reemplazado por el Alpha 21164A como el microprocesador insignia de Digital en 1996, cuando una versión de 400 MHz estuvo disponible en grandes cantidades.
Digital utilizó el Alpha 21164 funcionando a varias frecuencias de reloj en sus servidores AlphaServer y estaciones de trabajo AlphaStation . Digital también utilizó el Alpha 21164 en sus computadoras monoplaca Alpha VME 5/352 y Alpha VME 5/480 y en las placas base AlphaPC 164 y AlphaPC 164LX . El socio de Alpha, Cray Research, utilizó un Alpha 21164 de 300 MHz en su supercomputadora T3E-600 . Terceras empresas, como DeskStation, también construyeron estaciones de trabajo utilizando el Alpha 21164.
El 21164 continuó liderando en rendimiento desde el Alpha 21064A de 275 MHz hasta la introducción del Intel Pentium Pro en noviembre de 1995, cuando una versión de 200 MHz superó al 21164 de 300 MHz en la suite de pruebas SPECint95_base . El 21164 mantuvo su liderazgo en rendimiento de punto flotante. El 21164 de 333 MHz introducido el año siguiente superó al Pentium Pro, pero luego fue superado por el MIPS Technologies R10000 y luego por el Hewlett-Packard PA-8000 en el mismo año. [1]
El Alpha 21164 es un microprocesador superescalar de cuatro bits capaz de emitir un máximo de cuatro instrucciones por ciclo de reloj a cuatro unidades de ejecución: dos de enteros y dos de coma flotante . La secuencia de enteros tiene una longitud de siete etapas, y la secuencia de coma flotante tiene una longitud de diez etapas. El 21164 implementó una dirección virtual de 43 bits y una dirección física de 40 bits . Por lo tanto, era capaz de direccionar 8 TB de memoria virtual y 1 TB de memoria física .
La unidad de enteros constaba de dos canales de enteros y el archivo de registro de enteros . Los dos canales, el canal de adición y el canal de multiplicación, no son idénticos, cada uno es responsable de ejecutar instrucciones diferentes, aunque ambos son capaces de ejecutar instrucciones comunes de adición, lógica, carga, comparación y movimiento condicional. El canal de multiplicación ejecuta exclusivamente instrucciones de desplazamiento, almacenamiento y multiplicación (en un multiplicador no segmentado). El canal de adición ejecuta exclusivamente instrucciones de bifurcación.
A excepción de las instrucciones de bifurcación, movimiento condicional y multiplicación, todas las demás instrucciones comienzan y terminan su ejecución durante la etapa cinco con una latencia de un ciclo. Las instrucciones de bifurcación y movimiento condicional se ejecutan durante la etapa seis para que se les pueda emitir una instrucción de comparación de cuyo resultado dependen.
El archivo de registro de números enteros contenía cuarenta registros de 64 bits, de los cuales treinta y dos están especificados por la arquitectura Alpha y ocho son para uso de PALcode como memoria de borrador. El archivo de registro tiene cuatro puertos de lectura y dos puertos de escritura divididos equitativamente entre las dos tuberías de números enteros. [2]
La unidad de punto flotante constaba de dos canales de punto flotante y el archivo de registro de punto flotante. Los dos canales no son idénticos, uno ejecutaba todas las instrucciones de punto flotante excepto la multiplicación, y el otro ejecutaba solo instrucciones de multiplicación. Ambos canales tienen cuatro etapas. Un divisor de punto flotante no segmentado está conectado al canal de adición. Todas las instrucciones de punto flotante excepto la división tienen una latencia de cuatro ciclos. Las divisiones tienen una latencia variable que depende de si la operación se realiza en números y números de punto flotante de precisión simple o doble . Incluyendo la sobrecarga, las divisiones de precisión simple tienen una latencia de 15 a 31 ciclos, mientras que las divisiones de precisión doble tienen una latencia de 22 a 60 ciclos.
El 21164 tiene tres niveles de caché , dos en el chip y uno externo y opcional. Las cachés y la lógica asociada constaban de 7,2 millones de transistores. [3]
La caché principal se divide en cachés independientes para instrucciones y datos, denominados caché I y caché D respectivamente. Tienen un tamaño de 8 KB, están mapeados directamente y tienen un tamaño de línea de caché de 32 bytes. La caché D tiene dos puertos para mejorar el rendimiento y se implementa duplicando la caché dos veces. Utiliza una política de escritura simultánea y una política de asignación durante la lectura.
La caché secundaria, conocida como S-cache, está en el chip y tiene una capacidad de 96 KB. Se requirió una caché secundaria en el chip ya que el 21164 requería más ancho de banda del que una caché secundaria externa podía proporcionar para proporcionarle suficientes instrucciones y datos. [4] La caché requería dos ciclos para acceder debido a su gran área. Para mejorar el rendimiento, la caché está segmentada. Otro beneficio de una caché secundaria en el chip era que se podía implementar fácilmente como una caché multidireccional y, como resultado, la caché es asociativa de conjuntos de tres vías , lo que ofrece tasas de aciertos mejoradas que las cachés mapeadas directamente. [5] La S-cache, debido a la gran área física requerida, se implementó en dos mitades que flanquean la I-box, la E-box, la F-box y la M-box. Esto se hizo para que la caché pudiera devolver datos en dos ciclos.
La caché terciaria, conocida como caché B, se implementa con SRAM externas. La caché B era opcional y algunos sistemas que usaban Alpha 21164 no tenían ninguna. La caché B podía tener una capacidad de 1 a 64 MB, no se admitían capacidades menores ya que la caché S integrada las volvía inútiles. [6] Tiene un mapeo directo, utiliza una política de escritura diferida y una política de asignación en escritura. La caché B está controlada por la lógica de interfaz externa integrada, a diferencia del 21064, que requería un controlador de caché externo. La caché B se podía construir con SRAM asíncronas o síncronas. Se accede a la caché B a través del bus del sistema.
La interfaz externa es un bus de sistema de 128 bits. El bus de sistema funciona a una frecuencia de reloj que es de 3 a 15 veces menor que la frecuencia de reloj interna, o de 20 a 100 MHz con una frecuencia de reloj interna de 300 MHz. La señal de reloj del bus de sistema es generada por el microprocesador.
La frecuencia del reloj interno se genera dividiendo una señal de reloj externa por dos. Por lo tanto, el Alpha 21164 requiere una señal de reloj externa de 600 MHz para un Alpha 21164 de 300 MHz.
El Alpha 21164 contiene 9,3 millones de transistores en una matriz que mide 16,5 por 18,1 mm (299 mm 2 ), que estaba cerca de los límites máximos del proceso. La matriz se fabricó en el proceso complementario de metal-óxido-semiconductor (CMOS) de quinta generación de Digital , CMOS-5, un proceso de 0,50 μm con cuatro niveles de interconexión de aluminio . [7] El 21164 utilizó una fuente de alimentación de 3,3 voltios (V). Disipó 46 W a 266 MHz, 51 W a 300 MHz, 56 W a 333 MHz.
El Alpha 21164 está encapsulado en una matriz de rejilla de pines intersticiales (IPGA) de cerámica de 499 pines que mide 57,40 x 57,40 mm. El encapsulado tenía un difusor de calor con dos pernos a los que se atornillaba el disipador de calor .
El Alpha 21164 fue la base de un desarrollo posterior denominado EV56 . Se presentó como Alpha 21164, pero originalmente se conocía como Alpha 21164A . Operaba a frecuencias de reloj de 366, 433, 500, 533, 566, 600 y 666 MHz. [8] [9] [10]
Se describió por primera vez en octubre de 1995 en el Microprocessor Forum. El 13 de noviembre de 1995, Digital anunció que las muestras se enviarían más adelante en el mes. La primera versión, que operaba a 366 MHz, se presentó en 1996. El 8 de julio de 1996, Digital anunció que estaba disponible una versión de 433 MHz y que se estaba probando una versión de 500 MHz con cantidades de volumen previstas para septiembre de 1996. La versión de 433 MHz tenía un precio de $ 1,492 por unidad en cantidades de 1,000. La versión de 600 MHz se presentó el 31 de marzo de 1997, y se envió en grandes cantidades. Samsung Electronics firmó un acuerdo con Digital en junio de 1996 para obtener un segundo proveedor del Alpha 21164A y la compañía fue la única que fabricó el modelo de 666 MHz. Las muestras de 366 a 500 MHz se introdujeron el 11 de noviembre de 1996 y estuvieron disponibles en volumen en 1997. El Alpha 21164A se fabricó en las plantas de fabricación de Digital en Hudson, Massachusetts y de Samsung en Kihueng, Corea del Sur .
Entre los usuarios del Alpha 21164A se encontraban Cray Research, Digital, Network Appliance (ahora NetApp) y DeskStation. Cray Research utilizó Alpha 21164A de 450, 600 y 675 MHz en modelos posteriores de su supercomputadora T3E . Digital utilizó el Alpha 21164A funcionando a varias frecuencias de reloj en sus AlphaServers , AlphaStations , estaciones de trabajo Celebris XL y Digital Personal Workstations . NetApp utilizó Alpha 21164A de 400, 500 y 600 MHz en sus sistemas de almacenamiento . DeskStation utilizó el Alpha 21164A en sus estaciones de trabajo Raptor Reflex.
El cambio más notable fue la inclusión de Byte Word Extensions (BWX), una extensión de la arquitectura Alpha diseñada para mejorar los accesos a bytes y palabras. Estas instrucciones son ejecutadas por la tubería de multiplicación. El Alpha 21164A contenía 9,66 millones de transistores en una matriz que medía 14,4 mm por 14,5 mm, para un área de matriz de 209 mm 2 . [11] Digital fabricó la matriz en su proceso CMOS de sexta generación, CMOS-6, un proceso de 0,35 μm con cuatro capas de interconexión. Samsung fabricó la matriz en su proceso de 0,35 μm con cuatro capas de interconexión basadas en un proceso de 0,3 μm que desarrollaron a principios de 1996. El Alpha 21164A utilizó una fuente de alimentación de 3,3 V, disipando 31,0 W a 366 MHz, 36,0 W a 433 MHz, 41,0 W a 500 MHz, 43,5 W a 533 MHz y 48,5 W a 600 MHz.
El Alpha 21164PC , también conocido como PCA56 , es una versión de bajo costo del Alpha 21164A presentado el 17 de marzo de 1997. El microprocesador fue desarrollado conjuntamente por Digital y Mitsubishi Electric Corporation , y ambas compañías fabricaron el diseño. Mitsubishi suspendió posteriormente el acuerdo de desarrollo conjunto para futuros microprocesadores Alpha con Digital a principios de 1998 y dejó de fabricar el Alpha 21164PC a mediados de 1998, abandonando el mercado Alpha debido a las condiciones económicas en los mercados de la compañía. [12] [13]
El Alpha 21164PC operaba a frecuencias de reloj de 400, 466 y 533 MHz. Los cambios principales fueron la omisión de la caché S, una caché I más grande y la inclusión de instrucciones de video en movimiento (MVI), una extensión de la arquitectura Alpha que introdujo instrucciones de instrucción única múltiples datos (SIMD) para mejorar el rendimiento de la codificación MPEG . La caché S se eliminó para reducir el número de transistores, lo que redujo el tamaño del chip y, a su vez, el costo. La caché I se duplicó en capacidad de 8 KB a 16 KB para compensar la falta de caché S, ya que el Alpha 21164 dependía de la caché S para complementar la caché I con el fin de proporcionar suficiente ancho de banda para lograr un rendimiento adecuado. La cantidad de caché B se limitó a 512 KB a 4 MB, con capacidades de 1 y 2 MB también admitidas. El microprocesador utiliza una dirección virtual de 43 bits y una dirección física de 33 bits.
El Alpha 21164PC contenía 3,5 millones de transistores en una matriz de 8,65 x 16,28 mm, para un área de matriz de 141 mm 2 . Digital fabricó la matriz con el mismo proceso que el Alpha 21164, CMOS-5. El Alpha 21164PC estaba empaquetado en un IPGA de 413 pines que medía 49,78 x 49,78 mm. Utilizaba una fuente de alimentación de 3,3 V, que disipaba 26,5 W a 400 MHz, 30,5 W a 466 MHz y 35,0 W a 533 MHz.
Digital utilizó el Alpha 21164PC en su placa base AlphaPC 164SX.
El PCA57 , un derivado del PCA56, fue diseñado y fabricado por Samsung Electronics en un proceso CMOS de 0,28 μm. El PCA57 se presentó a finales de 1998 y funcionaba a frecuencias de reloj de 533, 600 y 666 MHz. Las mejoras en la microarquitectura del PCA56 incluían capacidades duplicadas de caché I y caché D: 32 KB y 16 KB respectivamente. El PCA57 contenía 5,7 millones de transistores en una matriz de 6,7 mm por 15 mm, para un área de matriz de 101 mm 2 . Funcionaba con una fuente de alimentación de 2,5 V y disipaba 18 W a 533 MHz, 20 W a 600 MHz y 23 W a 666 MHz.
El PCA57 fue utilizado por Digital en su placa base AlphaPC 164RX.
Digital y VLSI Technology desarrollaron chipsets para el 21164 y sus derivados. Digital también desarrolló circuitos integrados específicos para aplicaciones (ASIC) personalizados para su uso en los modelos de gama alta de su familia AlphaServer , como AlphaServer 8200 y 8400.
El 21171, también conocido como Alcor, fue el primer chipset para el 21164, presentado en enero de 1995 junto con el microprocesador que soporta. Fue desarrollado y fabricado por Digital. El 21171 es un DECchip 21071 mejorado y modificado para soportar el nuevo protocolo de bus de sistema que utiliza el 21164. Consistía en un chip de control que contenía los controladores de memoria y PCI, y cuatro chips de segmento de datos que interconectaban el bus de memoria de 256 bits y el bus PCI con el bus de sistema. El 21171 proporciona un bus PCI de 64 bits de ancho que funciona a 33 MHz.
El 21172, también conocido como Alcor2, era un 21171 actualizado que soportaba el 21164A.
El chipset Pyxis, también conocido como 21174, era compatible con los microprocesadores 21164A y 21164PC. A diferencia de los chipsets anteriores, estaba diseñado para sistemas de bajo coste. Como resultado, era un diseño de un solo chip empaquetado en una matriz de rejilla de bolas de cerámica (CBGA) de 474 contactos en lugar de múltiples paquetes. [14] Posteriormente se utilizó en aplicaciones sensibles al coste, como estaciones de trabajo de nivel de entrada ( Digital Personal Workstation a-Series ) y placas base como AlphaPC 164LX y 164SX. Cuando se presentó, el 21174 tenía un precio de 142 dólares estadounidenses en cantidades de 1.000. [15]
El modelo 21174 contiene un controlador de memoria y un controlador PCI. El controlador de memoria admite hasta 512 MB de memoria de acceso aleatorio dinámico sincrónico (SDRAM) y accede a ella a través de un bus de memoria de 128 bits . La memoria puede estar protegida por ECC o por paridad. El controlador PCI proporciona un bus PCI o PCI-X .
Polaris es un controlador de sistema desarrollado por VLSI Technology para computadoras personales que soporta los microprocesadores 21164A y 21164PC. Polaris fue anunciado el 16 de junio de 1997. [16] Admite hasta 768 MB de EDO DRAM o hasta 512 MB de SDRAM. Se accede a la memoria a través de un bus de 128 bits. Proporciona un bus PCI de 32 bits y 33 MHz para E/S.
Los usuarios de Polaris incluyeron a Digital, por su placa base AlphaPC 164RX.