El Alpha 21264 es un microprocesador RISC desarrollado por Digital Equipment Corporation lanzado el 19 de octubre de 1998. El 21264 implementó la arquitectura del conjunto de instrucciones Alpha (ISA).
El Alpha 21264 es un microprocesador superescalar de cuatro etapas con ejecución fuera de orden y ejecución especulativa . Tiene una tasa de ejecución máxima de seis instrucciones por ciclo y podría soportar cuatro instrucciones por ciclo. Tiene una secuencia de instrucciones de siete etapas .
En cualquier etapa dada, el microprocesador podría tener hasta 80 instrucciones en varias etapas de ejecución, superando a cualquier otro microprocesador contemporáneo.
Las instrucciones decodificadas se almacenan en colas de instrucciones y se emiten cuando sus operandos están disponibles. La cola de enteros contenía 20 entradas y la cola de punto flotante, 15. Cada cola podía emitir tantas instrucciones como canales.
El Ebox ejecuta instrucciones de números enteros, de carga y de almacenamiento. Tiene dos unidades de números enteros, dos unidades de carga y almacenamiento y dos archivos de registros de números enteros . Cada archivo de registros de números enteros contiene 80 entradas, de las cuales 32 son registros de arquitectura, 40 son registros de cambio de nombre y 8 son registros de sombra PAL. No había ninguna entrada para el registro R31 porque en la arquitectura Alpha, R31 está cableado a cero y es de solo lectura.
Cada archivo de registro servía una unidad de enteros y una unidad de almacenamiento de carga, y el archivo de registro y sus dos unidades se denominan "clúster". Los dos clústeres se designaron U0 y U1. Este esquema se utilizó porque reducía la cantidad de puertos de escritura y lectura necesarios para servir operandos y recibir resultados, lo que reducía el tamaño físico del archivo de registro, lo que permitía al microprocesador funcionar a frecuencias de reloj más altas. Por lo tanto, las escrituras en cualquiera de los archivos de registro deben sincronizarse, lo que requiere un ciclo de reloj para completarse, lo que afecta negativamente al rendimiento en un uno por ciento. La reducción del rendimiento resultante de la sincronización se compensó de dos maneras. En primer lugar, la mayor frecuencia de reloj alcanzable compensó la pérdida. En segundo lugar, la lógica responsable de la emisión de instrucciones evitó la creación de situaciones en las que el archivo de registro debía sincronizarse mediante la emisión de instrucciones que no dependían de los datos almacenados en otro archivo de registro cuando era posible.
Los clústeres son casi idénticos excepto por dos diferencias: U1 tiene un multiplicador canalizado de siete ciclos mientras que U0 tiene un canalizado de tres ciclos para ejecutar instrucciones de video en movimiento (MVI), una extensión de la arquitectura Alpha que define instrucciones de instrucción única, múltiples datos (SIMD) para multimedia.
Las unidades de almacenamiento de carga son unidades lógicas aritméticas simples que se utilizan para calcular direcciones virtuales para el acceso a la memoria. También son capaces de ejecutar instrucciones lógicas y aritméticas simples. La lógica de emisión de instrucciones Alpha 21264 utilizaba esta capacidad, emitiendo instrucciones a estas unidades cuando estaban disponibles para su uso (no realizando aritmética de direcciones).
Por lo tanto, el Ebox tiene cuatro sumadores de 64 bits , cuatro unidades lógicas, dos desplazadores de barril , lógica de manipulación de bytes y dos conjuntos de lógica de rama condicional divididos equitativamente entre U1 y U0.
El Fbox es responsable de ejecutar instrucciones de punto flotante . Consta de dos pipelines de punto flotante y un archivo de registro de punto flotante. Los pipelines no son idénticos, uno ejecuta la mayoría de las instrucciones y el otro solo las instrucciones de multiplicación. El pipeline de suma tiene dos unidades no pipeline conectadas a él, una unidad de división y una unidad de raíz cuadrada. Las sumas, multiplicaciones y la mayoría de las demás instrucciones tienen una latencia de 4 ciclos, una división de doble precisión tiene una latencia de 16 ciclos y una raíz cuadrada de doble precisión tiene una latencia de 33 ciclos. El archivo de registro de punto flotante contiene 72 entradas, de las cuales 32 son registros de arquitectura y 40 son registros de cambio de nombre.
El Alpha 21264 tiene dos niveles de caché : un caché primario y un caché secundario. El caché de nivel tres (L3 o "víctima") del Alpha 21164 no se utilizó debido a problemas con el ancho de banda.
La caché primaria se divide en cachés separados para instrucciones y datos (" arquitectura Harvard modificada "), el caché I y el caché D, respectivamente. Ambos cachés tienen una capacidad de 64 KB. El caché D tiene puerto dual al transferir datos tanto en los flancos ascendentes como descendentes de la señal de reloj. Este método de puerto dual permitió cualquier combinación de lecturas o escrituras en el caché en cada ciclo del procesador. También evitó la duplicación del caché para que haya dos, como en el Alpha 21164. Duplicar el caché restringió la capacidad del caché, ya que requirió más transistores para proporcionar la misma cantidad de capacidad y, a su vez, aumentó el área requerida y la energía consumida.
La caché secundaria, denominada caché B, es una caché externa con una capacidad de 1 a 16 MB. Está controlada por el microprocesador y se implementa mediante chips de memoria de acceso aleatorio estático sincrónico (SSRAM) que funcionan a dos tercios, la mitad, un tercio o un cuarto de la frecuencia de reloj interna, o de 133 a 333 MHz a 500 MHz. Se accedió a la caché B con un bus dedicado de 128 bits que funciona a la misma frecuencia de reloj que la SSRAM o al doble de la frecuencia de reloj si se utiliza una SSRAM de doble velocidad de datos . La caché B se asigna directamente. [1]
La predicción de bifurcaciones se realiza mediante un algoritmo de predicción de bifurcaciones de torneo. El algoritmo fue desarrollado por Scott McFarling en el Laboratorio de Investigación Occidental (WRL) de Digital y se describió en un artículo de 1993. Este predictor se utilizó porque el Alpha 21264 tiene una penalización mínima por error de predicción de bifurcaciones de siete ciclos. Debido a la latencia de dos ciclos de la caché de instrucciones y las colas de instrucciones, la penalización promedio por error de predicción de bifurcaciones es de 11 ciclos. El algoritmo mantiene dos tablas de historial, Local y Global, y la tabla utilizada para predecir el resultado de una bifurcación está determinada por un predictor Choice.
El predictor local es una tabla de dos niveles que registra el historial de las ramas individuales. Consiste en una tabla de historial de ramas de 1024 entradas por 10 bits. Se utilizó una tabla de dos niveles porque la precisión de la predicción es similar a la de una tabla de un solo nivel más grande, pero requiere menos bits de almacenamiento. Tiene una tabla de predicción de ramas de 1024 entradas. Cada entrada es un contador de saturación de 3 bits. El valor del contador determina si se toma o no la rama actual.
El predictor global es una tabla de historial de ramificaciones de un solo nivel con 4096 entradas. Cada entrada es un contador de saturación de 2 bits; el valor de este contador determina si se toma o no la ramificación actual.
El predictor de elección registra el historial de los predictores locales y globales para determinar cuál es el mejor predictor para una rama en particular. Tiene una tabla de historial de ramas de 4096 entradas. Cada entrada es un contador de saturación de 2 bits. El valor del contador determina si se utiliza el predictor local o global.
La interfaz externa constaba de un bus de datos de doble velocidad (DDR) bidireccional de 64 bits y dos buses de dirección y control multiplexados en el tiempo unidireccionales de 15 bits , uno para las señales que se originaban en el Alpha 21264 y otro para las señales que se originaban en el sistema. Digital licenció el bus a Advanced Micro Devices (AMD) y, posteriormente, se utilizó en sus microprocesadores Athlon , donde se lo conocía como bus EV6.
La CPU Alpha 21264 admite direcciones virtuales de 48 o 43 bits (espacio de direcciones virtuales de 256 TiB u 8 TiB respectivamente), seleccionables bajo control IPR (usando el registro de control VA_CTL). Alpha 21264 admite una dirección física de 44 bits (hasta 16 TiB de memoria física). Esto supone un aumento con respecto a las CPU Alpha anteriores (43 bits virtuales y 40 bits físicos para Alpha 21164 , y 43 bits virtuales y 34 bits físicos para Alpha 21064 ). [2]
El Alpha 21264 contenía 15,2 millones de transistores. La lógica consistía en aproximadamente seis millones de transistores, y el resto se encontraba en las cachés y las tablas de historial de ramificaciones. La matriz medía 16,7 mm por 18,8 mm (313,96 mm²). [3] Se fabricó mediante un proceso de metal-óxido-semiconductor complementario (CMOS) de 0,35 μm con seis niveles de interconexión.
El Alpha 21264 estaba empaquetado en una matriz de rejilla de pines intersticiales de cerámica (IPGA) de 587 pines .
Alpha Processor, Inc. vendió posteriormente el Alpha 21264 en un paquete Slot B que contenía el microprocesador montado en una placa de circuito impreso con la memoria caché B y los reguladores de voltaje. El diseño tenía como objetivo aprovechar el éxito de los microprocesadores basados en ranuras de Intel y AMD. El Slot B se desarrolló originalmente para que lo utilizara también el Athlon de AMD, de modo que API pudiera obtener materiales para el Slot B a precios de productos básicos con el fin de reducir el costo del Alpha 21264 y ganar una mayor participación en el mercado. Esto nunca se materializó, ya que AMD decidió utilizar el Slot A para sus Athlon basados en ranuras.
El Alpha 21264A , cuyo nombre en código era EV67, era una versión reducida del Alpha 21264 que se presentó a finales de 1999. Había seis versiones: 600, 667, 700, 733, 750 y 833 MHz. El EV67 fue el primer microprocesador Alpha en implementar la extensión de conteo (CIX), que amplió el conjunto de instrucciones con instrucciones para realizar el conteo de población . Fue fabricado por Samsung Electronics en un proceso CMOS de 0,25 μm que tenía transistores de 0,25 μm pero capas de metal de 0,35 μm. La matriz tenía un área de 210 mm². El EV68 usaba una fuente de alimentación de 2,0 V. Disipó un máximo de 73 W a 600 MHz, 80 W a 667 MHz, 85 W a 700 MHz, 88 W a 733 MHz y 90 W a 750 MHz.
El Alpha 21264B es un desarrollo posterior para aumentar las frecuencias de reloj. Hubo dos modelos, uno fabricado por IBM, con nombre en código EV68C , y otro por Samsung, con nombre en código EV68A .
El EV68A se fabricó mediante un proceso CMOS de 0,18 μm con interconexiones de aluminio . Tenía un tamaño de chip de 125 mm², un tercio más pequeño que el Alpha 21264A, y utilizaba una fuente de alimentación de 1,7 V. Estuvo disponible en grandes cantidades en 2001 a frecuencias de reloj de 750, 833, 875 y 940 MHz. El EV68A disipaba un máximo de 60 W a 750 MHz, 67 W a 833 MHz, 70 W a 875 MHz y 75 W a 940 MHz. [4]
El EV68C se fabricó mediante un proceso CMOS de 0,18 μm con interconexiones de cobre. Se probó a principios de 2000 y alcanzó una frecuencia de reloj máxima de 1,25 GHz.
En septiembre de 1998, Samsung anunció que fabricaría una variante del Alpha 21264B en un proceso de silicio sobre aislante (SOI) totalmente agotado de 0,18 μm con interconexiones de cobre que era capaz de alcanzar una frecuencia de reloj de 1,5 GHz. Esta versión nunca se materializó.
El Alpha 21264C , cuyo nombre en código era EV68CB, era un derivado del Alpha 21264. Estaba disponible en frecuencias de reloj de 1,0, 1,25 y 1,33 GHz. El EV68CB contenía 15,5 millones de transistores y medía 120 mm². Fue fabricado por IBM en un proceso CMOS de 0,18 μm con siete niveles de interconexión de cobre y dieléctrico de baja K. Estaba empaquetado en una matriz de rejilla de tierra cerámica (CLGA) de 675 almohadillas con chip invertido que medía 49,53 por 49,53 mm. El EV68CB utilizaba una fuente de alimentación de 1,7 V, disipando un máximo de 64 W a 1,0 GHz, 75 W a 1,25 GHz y 80 W a 1,33 GHz. [5]
El Alpha 21264D , cuyo nombre código es EV68CD, es un derivado más rápido fabricado por IBM.
El Alpha 21264E , cuyo nombre en código era EV68E , era un derivado cancelado desarrollado por Samsung que se anunció por primera vez el 10 de octubre de 2000 en el Microprocessor Forum 2000 y que estaba previsto que se presentara a mediados de 2001. Las mejoras eran una mayor frecuencia de funcionamiento de 1,25 GHz y la adición de una caché secundaria de 1,85 MB en la matriz. Se fabricaría en un proceso CMOS de 0,18 micrómetros con interconexiones de cobre.
Tanto Digital como Advanced Micro Devices (AMD) desarrollaron chipsets para el Alpha 21264.
El Digital 21272 , también conocido como Tsunami , y el 21274, también conocido como Typhoon , fueron los primeros chipsets para el Alpha 21264. El chipset 21272 admitía multiprocesamiento unidireccional o bidireccional y hasta 8 GB de memoria, mientras que el 21274 admitía multiprocesamiento unidireccional, bidireccional, tridireccional o cuádruple, hasta 64 GB de memoria, y ambos admitían uno o dos buses PCI de 64 bits a 33 MHz . Tenían un bus de memoria de 128 a 512 bits que operaba a 83 MHz, lo que producía un ancho de banda máximo de 5312 MB/s. El chipset admitía SDRAM ECC registrada de 100 MHz.
El chipset constaba de tres dispositivos: un chip C, un chip D y un chip P. La cantidad de dispositivos que componían el chip variaba según la configuración del mismo. El chip C es el chip de control que contiene el controlador de memoria. Se necesitaba un chip C para cada microprocesador.
El chip P es el controlador PCI, que implementa un bus PCI de 33 MHz. El 21272 podría tener uno o dos chips P.
El chip D es el controlador de DRAM, que implementa el acceso a/desde las CPU y al chip P. El 21272 podría tener dos o cuatro chips D y el 21274 podría tener dos, cuatro u ocho chips D.
Los modelos 21272 y 21274 fueron utilizados ampliamente por Digital, Compaq y Hewlett Packard en sus AlphaServers de gama básica y media y en todos los modelos de AlphaStation. También se utilizaron en productos de terceros de Alpha Processor, Inc. (más tarde conocida como API NetWorks), como su placa base UP2000+.
AMD desarrolló dos chipsets compatibles con Alpha 21264, el Irongate , también conocido como AMD-751 , y su sucesor, Irongate-2 , también conocido como AMD-761 . Estos chipsets fueron desarrollados para sus microprocesadores Athlon, pero debido a que AMD licenció el bus EV6 utilizado en Alpha de Digital, el Athlon y Alpha 21264 eran compatibles en términos de protocolo de bus. El Irongate fue utilizado por Samsung en sus placas base UP1000 y UP1100. El Irongate-2 fue utilizado por Samsung en su placa base UP1500.