# Alpha 21264

El Alpha 21264 fue un microprocesador de Digital Equipment Corporation introducido en octubre de 1996. El 21264 implementaba el conjunto de instrucciones Alpha (ISA, "instruction set architecture").

## Descripción

El Alpha 21264 fue un microprocesador superescalar con cuatro unidades de ejecución, ejecución fuera de orden y especulativa. Tenía una tasa de ejecución pico de seis instrucciones por ciclo, y sostenida de cuatro instrucciones por ciclo. Tenía unidades de ejecución de siete etapas.

### Ejecución fuera de orden

En cualquier etapa dada, el microprocesador podía tener hasta 80 instrucciones en distintas etapas de ejecución, superando a todas las demás microprocesadores contemporáneos.
Las instrucciones decodificadas eran puestas en la cola de instrucciones y eran suministradas cuando sus operandos estaban disponibles. La cola de enteros contenía 20 entradas y la cola de coma flotante 15. Cada cola podía suministrar tantas instrucciones como unidades de ejecución.

### Ebox

La Ebox ejecuta enteros, carga y almacena instrucciones. Contiene dos unidades de enteros, dos unidades de carga y dos bancos de registros de enteros. Cada banco de registros de enteros contiene 80 entradas, de las cuales 31 son registros de arquitectura, 41 son registros de renombramiento y 8 son registros PALshadow. No hubo registro de entrada para R31, porque en la arquitectura Alpha, R31 estaba conectado a cero y era de solo lectura.
Cada banco de registros era utilizado por una unidad de enteros y una unidad de carga almacenamiento; cada banco de registros y sus dos unidades se denominaban "racimo" (cluster). Los dos racimos eran designados U0 y U1. Este esquema era usado de esta forma para reducir el número puertos de lectura y escritura requeridos para servir operandos y recibir resultados, reduciendo en consecuencia el tamaño físico del banco de registros, permitiendo al procesador trabajar con frecuencias de reloj más altas. La escritura en cualquier banco de registros debía ser sincronizada, la cual requería un ciclo de reloj completo, impactando negativamente en el rendimiento en un uno por ciento. La reducción del rendimiento por la sincronización era compensada de dos maneras. Primero, la frecuencia de reloj alcanzable compensaba la pérdida. Segundo, la lógica responsable de suministrar instrucciones evitaba, cuando era posible, crear situaciones en la cual el banco de registros tuviera que ser sincronizado suministrando instrucciones que no dependían de datos almacenados en otro banco de registros.
Los racimos eran casi idénticos excepto por dos diferencias: el U1 tenía un unidad multiplicadora de siete ciclos mientras que el U0 tenía la unidad de tres ciclos para ejecutar las "Motion Video Instructions" (MVI), una extensión de la Arquitectura Alpha definiendo instrucciones "single instruction multiple data" (SIMD) para multimedia.
Las unidades de carga almacenamiento eran simples unidades aritmético lógicas usadas para calcular direcciones virtuales para acceder a la memoria. Eran capaces de ejecutar instrucciones simples de aritmética y lógica. La lógica de suministro de instrucciones del Alpha 21264 utilizaban esta capacidad, enviaban instrucciones a esas unidades cuando estaban disponibles para usarse (no para realizar aritmética de direccionamiento).
La Ebox tenía, por lo tanto, un sumador de 64 bits, cuatro unidades lógicas, dos barras de desplazamiento, lógica de manipulación de bytes, dos juegos de lógica de saltos condicionales, repartidos equitativamente en U1 y U0.

### Fbox

La Fbox era responsable de ejecutar instrucciones de coma flotante. Consistía de dos unidades de ejecución de coma flotante y un banco de registro de coma flotante. Las unidades no eran idénticas, una ejecutaba la mayoría de las instrucciones y la otra solo las multiplicaciones. La unidad de suma tenía dos unidades no segmentadas conectadas a ella, una unidad de división y una unidad de raíces cuadradas. Sumas, multiplicacines y muchas otras instrucciones tenían una latencia de 4 ciclos, una división de doble precisión tenía 16 ciclos de latencia y una raíz cuadrada de doble precisión tenía una latencia de 33 ciclos. El registro de coma flotante contenía 72 entradas, de las cuales 32 registros de arquitectura y 40 eran registro de cambio de nombre.

### Caché

El Alpha 21264 tenía dos niveles de caché, una primaria y una secundaria. La caché de nivel tres del Alpha 21164 no se usaba debido a problemas de ancho de banda.

#### Cachés primarias

La caché primaria se divide en dos cachés separadas para datos y para instrucciones, la caché-D y la caché-I respectivamente. Ambas tienen una capacidad de 64 KB. La caché-D es de doble puerto al transferir datos en el inicio y en la caída de la señal de reloj. Este método de doble puerto permite cualquier combinación de lecturas o escrituras a la caché en cad ciclo de procesador. También evita duplicar la caché, de modo que hay dos, como en el Alpha 21164. Duplicar la caché restringe la capacidad de la misma, ya que requiere más transistores para obtener la misma capacidad, y requiere un área y un consumo de energía mayores.

#### B-cache

La caché secundaria, llamada caché-B, es externa con una capacidad de 1 a 16 MB. Es controlada por el microprocesador y está implementada en circuitos integrados de memorias de acceso aleatorio estáticas sincrónicas (SSRAM), operando a dos tercios, la mitad, un tercio y un cuarto de la frecuencia de reloj interna, o entre 133 y 333 MHz a 500 MHz. la caché-B es accedida por medio de un bus dedicado de 128 bit operando a la misma frecuencia de la SSRAM o al doble, si la opción de tasa de transferencia doble es usada. La caché-B es de mapeo directo.

### Predicción de saltos

La predicción de saltos es realizada por un algoritmo de predicción . El algoritmo fue desarrolaldo por Scott McFarling en el Western Research Laboratory (WRL) de Digital y fue detallado en un artículo de 1993. Este elemento fue usado en el Alpha 21264, y tiene una penalización en caso de una predicción errónea mínima de siete ciclos. Debido a que la caché de instrucciones tiene una latencia de dos ciclos y a la cola de instrucciones, la penalización promedio por una predicción errónea es de 11 ciclos. El algoritmo mantiene dos tablas históricas, Local y Global, y la tabla utilizada para predecir el resultado de un salto está determinada por una elección del predictor.
El predictor local es una tabla de dos niveles que registra la historia de los saltos individuales. Consiste de una tabla histórica de saltos de 10 bits de 1024 entradas. Una tabla de dos niveles tiene una precisión en la predicción similar a una tabla de nivel simple más grande, pero requiere pocos bits para el almacenamiento. Tiene una tabla histórica de 1.024 entradas. Cada entrada tiene un contador saturado de 3 bit. El valor del contador determina si el salto actual debe hacerse o no.
El selector de predictor registra la historia de los predictores locales y globales para determinar cuál predictor es el más adecuado para un salto particular. Tiene una tabla histórica de 4.096 entradas. Cada entrada tiene un contador saturado de 2 bit. El valor del contador determina si se usa el predictor local o el global.

### Interfaz externa

La interfaz externa consiste de un bus de datos de doble tasa de transferencia bidireccional de 64 bit y buses de direcciones y control unidireccionales de 15 bits multiplexados, uno para las señales originadas por el Alpha 21264 y el otro para las señales originadas en el sistema. Digital licenció el bus a Advanced Micro Devices (AMD), y lo usó en sus microprocesadores Athlon, donde es conocido como bus EV6.

## Fabricación

El Alpha 21264 contiene 15,2 millones de transistores. La lógica contiene aproximadamente seis millones de transistores, y el resto es utilizado por las cachés y las tablas de saltos históricas. La matriz mide 16,7 mm por 18,8 mm (313,96 mm²). Está fabricado en un proceso CMOS de 0,35 µm con seis niveles de interconexión.

## Encapsulado

El Alpha 21264 posee un encapsulado cerámico PGA intersticial (IPGA) de 587 pines.
Alpha Processor, Inc. más tarde vendió el Alpha 21264 en un encapsulado Slot B conteniendo el microprocesador montado en una placa de circuito impreso con la cache-B y los reguladores de voltaje. El diseño fue pensado para utilizar el éxito de los microprocesadores basados en ranura (slot) de Intel y AMD. El Slot B fue originalmente desarrollado para ser utilizado por el Athlon de AMD y, por lo que la API podría obtener materiales para el slot-B a precios de productos básicos con el fin de reducir el costo del Alpha 21264, para obtener una cuota mayor del mercado. Esto nunca se materializó, ya que AMD optó por utilizar el Slot A para sus Athlons.

## Derivados
### Alpha 21264A

El Alpha 21264A, nombre en código EV67 fue una reducción del Alpha 21264 introducido a fines de 1999. Hubo seis versiones: 600, 667, 700, 733, 750 y 833 MHz. El EV67 fue el primer microprocesador Alpha en implementar la extensión del contador (count extension, CIX), el cual amplía el juego de instrucciones para calcular el peso de Hamming. Fue fabricado por Samsung Electronics en proceso CMOS de 0,25 µm, con transistores de 0,25 µm pero con capas de metal de 0,35 µm. La matriz tenía un área de 210 mm². El EV68 usaba suministro eléctrico de 2,0 V, y disipaba 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.

### Alpha 21264B

El Alpha 21264B es un desarrollo mayor para incrementar las frecuencias de reloj. Hubo dos modelos, uno fabricado por IBM, nombre en código EV68C, y el otro por Samsung, nombre en código EV68A.
El EV68A fue fabricado con un proceso CMOS de 0,18 µm con interconexiones de aluminio. Tenía una matriz de 125 mm², un tercio más pequeña que la del Alpha 21264A, y era alimentado con 1,7 V. Estuvo disponibles en cantidad en el año 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.
El EV68C fue fabricado con un proceso de 0,18 µm con interconexiones de cobre. Estuvo disponible a comienzos del año 2000 y alcanzó una velocidad máxima de 1,25 GHz.
En septiembre de 1998, Samsung anunció que podía fabricar una variante del Alpha 21264B en un proceso de 0,18 µm de silicio sobre aislante (Silicon on Insulator, SOI) completamente agotado con interconexiones de cobre que era capaz de alcanzar una frecuencia de reloj de 1,5 GHz. Esta versión nunca se materializó.

### Alpha 21264C

EL Alpha 21264C, nombre en código EV68CB, fue un derivado del Alpha 21264. Estaba disponible a 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². Estaba fabricado por IBM en un proceso CMOS de 0,18 µm con siete niveles de interconexión de cobre. Tenía un encapsulado flip-chip ceramic land grid array (CLGA) midiendo 49,53 por 49,53 mm. El EV68A usaba alimentación de 1,7 V, y disipaba un máximo de 64 W a 1,0 GHz, 75 W a 1,25 GHz y 80 W a 1,33 GHz.

### Alpha 21264D

El Alpha 21264D, nombre en código EV68CD es un derivado más rápido fabricado por IBM.

### Alpha 21264E

El Alpha 21264E, nombre en código EV68E, fue un desarrollo derivado de Samsung, luego cancelado, anunciado por primera vez el 10 de octubre de 2000 en el Microprocessor Forum 2000 programado para introducirlo a mediados del 2001. Unas mejoras le dieron una velocidad de reloj más alta, 1,25 GHz, y una caché secundaria integrada de 1,85 MB. Iba a ser fabricado en un proceso CMOS con 0,18 micrones con interconexiones de cobre.

## Chipsets

Tanto Digital como Advanced Micro Devices (AMD) desarrollaron chipsets para el Alpha 21264.

### 21272

El Digital 21272, también conocido como Tsunami y Typhoon, fue el primer chipset para el Alpha 21264. El chipset 21272 soportaba multiprocesamiento de dos, tres y cuatro vías, y uno o dos buses PCI-X de 33 MHz. Tenía bus de memoria de 128 a 512 bit que operaba a 83 MHz, con un ancho de banda con un rendimiento máximo de 5.312 MB/s. El chipset suportaba ECC SDRAM registrada de 100 MHz.
El chipset consistía de tres dispositivos, un chip-C, un chip-D y un chip-P. El número de dispositivos que componían el chipset variaba de acuerdo a su configuración. El chip-C es un chip de control que contiene el controlador de memoria. Se requiere un chip-C por cada procesador.
El chip-P es un controlador PCI, implementando un bus PCI-X de 33 MHz. El 21272 podía tener uno o dos chips-P.
El 21272 fue usado extensivamente por Digital, Compaq y Hewlett Packard en sus AlphaServers básicos y de rango medio y en todos los modelos de AlphaStation. También fue usado en los productos para terceros de Alpha Processor, Inc. (luego conocidos como API NetWorks), como su placa madre UP2000+.

### Irongate

AMD desarrolló dos chipset compatibles con el Alpha 21264, el Irongate, también conocido como AMD-751, y su sucesor, el Irongate-2, también conocido como AMD-761. Estos chipsets fueron desarrollados para los procesadores Athlon, pero debido a que AMD licenció el bus EV6 usado en el Alpha de Digital, el Athlon y el Alpha 21264 eran compatibles en términos de protocolo de bus. El Irongate fue usado por Samsung en sus placas madre UP1000 y UP1100. El Irongate-2 fue usado también por Samsung en su placa madre UP1500.