El Alpha 21064 es un microprocesador desarrollado y fabricado por Digital Equipment Corporation que implementó el conjunto de instrucciones (ISA, "instruction set architecture") Alpha (introducido como el Alpha AXP). Originalmente se llamó DECchip 21064 antes de ser renombrado en 1994. El 21064 es también conocido por su nombre código: EV4. Fue anunciado en febrero de 1992 y disponible en cantidades en septiembre de 1992. El 21064 fue la primera implementación comercial del ISA Alpha y el primer microprocesador de Digital disponible comercialmente. Fue seguido por un derivado, el Alpha 21064A en octubre de 1993.
El primer procesador Alpha fue un chip de prueba con nombre código EV3. Este CI de prueba fue fabricado usando un proceso CMOS-3 de 1 micrómetro (µm) de Digital. El chip de prueba carecía de una unidad de coma flotante y sólo tenía 1 KB de caché. Fue usado para confirmar el funcionamiento de agresivas técnicas de diseño. El chip de prueba (junto a simuladores y emuladores) fue usado también para expandir el firmware y los varios sistemas operativos que la compañía soportaba. El CI de producción, con el nombre código de EV4, fue fabricado usando el proceso CMOS-4 de 0,75 µm. Dirk Meyer y Edward McLellan fueron los micro-arquitectos. Ed diseñó la parte lógica mientras que Dirk diseño los bloques mayores restantes. Jim Montanaro lideró la implementación del circuito. El EV3 fue usado en el Alpha Development Unit (ADU, Unidad de Desarrollo Alpha), un computador usado por Digital para desarrollar software para la plataforma Alpha antes que estuvieran disponibles los componentes EV4.
El 21064 se dio a conocer en la 39na International Solid-State Circuits Conference (ISSCC) a mediados de febrero de 1992. Fue anunciado el 25 de febrero de 1992, con un ejemplar de 150 MHz. Tenía un precio de $3.375 en cantidades de 100, $1.650 en cantidades de entre 100 y 1.000, y $1.560 para cantidades mayores a 1.000. Las entregas en cantidades comenzaron en septiembre de 1992.
A principios de febrero de 1993, el precio de la versión de 150 MHz se había reducido de $1.559 a $1.096 en cantidades mayores a 1.000.
El 25 de febrero de 1993, se lanzó la versión de 200 MHz, con un conjunto de muestra disponible, a un precio de $3.495. En cantidades mayores a 10.000, el precio era de $1.231 por unidad. Los pedidos por cantidades fueron aceptados en junio de 1993, con entregas en agosto de 1993. El precio de la versión de 150 MHz se redujo en consecuencia. El conjunto de muestra se redujo desde $3.375 a $1.690, efectivo en abril de 1993; y en cantidad, se redujo de $1.355 a $853 por unidad en cantidades menores a 10.000, efectivo en julio de 1993.
Con la introducción del Alpha 21066 y el Alpha 21068 en septiembre de 1993, Digital ajustó el posicionamiento de los existentes 21064 e introdujo una versión de 166 MHz a un precio de $499 por unidad en cantidades de a 5.000. El precio de la versión de 150 MHz fue reducido a $455 en cantidades de a 5.000.
El 6 de junio de 1994, el precio de la versión de 200 MHz fue reducido en un 31% a $544 para colocarlo en contra del Pentium de 60 MHz; y la versión de 166 MHz bajó un 19% a $404 por unidad en cantidades de a 5.000, efectivo el 3 de julio de 1994.
El Alpha 21064 fue producido en las fábricas de Digital de Hudson, Massachusetts y South Queensferry, Escocia.
El 21064 fue muy usado en computadoras de alta gama, como servidores y estaciones de trabajo (workstations). Entre otros:
El 21064 fue el microprocesador de más altas prestaciones desde que fue introducido hasta 1993, cuando International Business Machines (IBM) introdujo el multi-chip POWER2. Luego de eso, fue el microprocesador de un solo chip de más altas prestaciones, posición que mantuvo hasta que fue lanzado el 21064A de 275 MHz en octubre de 1993.[1]
El Alpha 21064 es un microprocesador superescalar de doble línea de ejecución que ejecuta las instrucciones en orden. Es capaz de ejecutar hasta dos instrucciones por cada ciclo de reloj con cuatro unidades funcionales: una unidad de enteros, una unidad unidad de coma flotante (o FPU, Floating Point Unit), una unidad de direcciones y una unidad de bifurcación o saltos. La línea de ejecución de enteros posee una longitud de siete etapas, y la unidad de coma flotante posee diez. Las cuatro primeras etapas de ambas líneas son idénticas y están implementadas por el I-Box.
El I-box es la unidad de control; ésta lee, carga y decodifica las instrucciones y controla las líneas de ejecución.[2] En la etapa uno, dos instrucciones son leídas desde la I-caché. Se realiza una predicción de salto en la lógica del I-box durante la etapa dos. Se utiliza tanto predicción dinámica como estática. La predicción estática examina el bit de signo del campo de desplazamiento de una instrucción de salto, pudiendo predecir si se realizará un salto si el bit de signo indica un salto hacia atrás (si el bit de signo contiene 1). La predicción dinámica examina una entrada en la tabla histórica de saltos de 2048 entradas de un bit. Si una entrada contiene, el salto predicho se realiza.[3] Si se utiliza predicción dinámica, la predicción de saltos es efectiva en el 80 % de los casos para la mayoría de los programas.[4] La penalización por no predecir un salto es de cuatro ciclos.[5]
Estas instrucciones son decodificadas en la etapa tres. El I-box entonces controla que los datos requeridos por las dos instrucciones están disponibles en la etapa cuatro. Si es así, se emiten las instrucciones, siempre que puedan estar vinculadas. Cuales instrucciones pueden estar vinculadas es determinado por el número de puertos de lectura y escritura en el registro de enteros.[6] El 21064 puede realizar: una operación de enteros con una de coma flotante, cualquier instrucción de carga/descarga con cualquier instrucción operacional, una operación de enteros con un salto de enteros, o una operación de coma flotante con un salto de coma flotante. Combinaciones que no son permitidas: una operación de enteros con un almacenamiento de coma flotante, y una operación de coma flotante con una almacenamiento de enteros. Si una de las dos instrucciones no puede ejecutarse junto a la otra, la primera queda en espera hasta que la instrucción restante es completada. Las cuatro primeras etapas también quedan en espera en el caso de que no se puedan suministrar instrucciones debido a falta de recursos, dependencias u otras condiciones similares.
El I-box contiene dos translation lookaside buffers (TLBs) para traducir direcciones virtuales en direcciones físicas. Estas TLB son llamadas también instruction translation buffers (ITBs). Las cachés ITBs usan tablas de paginación para el flujo de instricciones. Una ITB de ocho entradas es usada para las páginas de 8 KiB y una ITB de cuatro entradas para las páginas de 4 MiB. Ambas ITBs son completamente asociativas y utilizan algoritmos de reemplazo del último no-usado.[7]
La ejecución se realiza en la etapa cinco para toda las instrucciones. El archivo de registros se lee en la etapa cuatro. Las ejecuciones a partir de la etapa cinco no pueden ser detenidas.
La unidad de enteros es responsable de ejecutar las instrucciones de enteros. Consiste en un archivo de regsitro de enteros (IRF, integer register file) y la E-box. La IRF contiene treinta y dos registro de 64 bit y cuatro puertos de lectura y dos puertos de escritura que están divididos en partes iguales entre la unidad de enteros y la unidad de saltos.[8] La E-box contiene un sumadorm una unidad lógica, una unidad de desplazamiento y un multiplicador. Excepto para las instrucciones de multiplicación, desplazamiento y manipulación de bytes, la mayoría de las instrucciones enteras son completadas al final de la etapa cinco y tienen por lo tanto una latencia de un ciclo. La unidad de desplazamiento está en conducto, pero las instrucciones de desplazamiento y de manipulación de bytes no son completadas hasta el final de la etapa seis, teniendo una latencia de dos ciclos. El multiplicador no está en conducto para ahorrar área muerta,[4] por lo que las instrucciones de multiplicación tienen una latencia variable de 19 a 23 ciclos dependiendo de los operandos. En la etapa siete, las instrucciones de enteros escriben sus resultados en el IRF.
La unidad de direccionamiento, también conocida como la "A-box", ejecutaba las instrucciones cargadas y almacenadas. Para permitir a la unidad de direccionamiento y a la unidad de enteros operar en paralelo, la primera tenía su propio sumador de desplazamiento, el cual se usaba para calcular direcciones virtuales en lugar de usar el sumador de la unidad de enteros.[9] Un translation lookaside buffer (TLB) de 32 entradas totalmente asociativas es usada para traducir direcciones virtuales a direcciones físicas.[9] Este TLB es referenciado como el data translation buffer (DTB). El 21064 implementaba un direccionamiento virtual de 43 bit y un direccionamiento físico de 34 bit, y por consiguiente era capaz de direccionar hasta 8 TiB de memoria virtual y hasta 16 GiB de memoria física.
El resultado de las instrucciones se almacenaba en un búffer de escritura de 4 entradas de 32 bytes. El búffer de escritura mejoraba el rendimiento reduciendo el número de escrituras al bus del sistema mezclando datos de los almacenes adyacentes y por retrasos temporales en los mismos, permitiendo The write buffer improved performance by reducing the number of writes on the system bus by merging data from adjacent stores and by temporarily delaying stores, permitiendo servir las cargas más rápido mientras el bus del sistema no se utiliza.[9]
La unidad de coma flotante consiste de un archivo de registros de coma flotante (FRF, floating-point register file) y la F-box.[6] La FRF contiene 32 registros de 64 bits y tiene tres puertos de lectura y dos de escritura. La F-box contiene una línea o conducto de coma flotante y una unidad de división la cual retira un bit por ciclo.
El archivo de registro de coma flotante es leído y el dato formateado en fracción, exponente y signo en la etapa cuatro. Si se ejecuta la instrucción suma, el sumador calcula la diferencia de exponente, y una predicción usando uno o cero utilizando operandos de entrada para normalizar el resultado. Si se ejecuta la instrucción multiplicación, se genera un multiplicando 3 X.
En las etapas cinco y seis, se realiza una alineación o un desplazamiento de normalización para sumas y restas. Las instrucciones de multiplicación son ejecutadas en una matriz intercalada de dos vías en un conducto o línea de ejecución, la cual usa el algoritmo de Booth de base 8.[4][10] En la etapa ocho, la suma final es realizada en paralelo, con redondeo. Las instrucciones de coma flotante almacenan sus instrucciones en el FRF es la etapa diez.[10]
La instrucciones ejecutadas en conducto tienen una latencia de seis ciclos.[10] Las divisiones de simple precisión (32 bit) y doble precisión (64-bit), las cuales no se ejecutan en conducto, tienen una latencia de 31 y 61 ciclos, respectivamente.[11]
El 21064 tenía dos cachés primarias: una caché de datos de 8 KiB (conocida como la caché-D) usando una política de escritura directa, y una caché de instricciones de 8 KiB (conocida como la caché-I). Ambas cachés son de mapeo directo para un acceso de un solo ciclo y tienen un tamaño de línea de 32 bytes. Las cachés están construidas con celdas SRAM de seis transistores que tienen un área de 98 µm². Las cachés tienen 1.024 celdas de ancho por 66 celdas de alto, con las dos filas superiores usadas para redundancia.
Soporta una caché secundaria externa opcional, conocida como la caché-B, con capacidad de 128 KiB a 16 MiB. La caché opera a una frecuencia de entre 1/3 y 1/16 de la velocidad de reloj interna, o de entre 12,5 y 66,67 MHz a 200 MHz.[12] La caché-B es de mapeo directo y tiene una línea de 128 byte por defecto, que puede ser configurada para usar cantidades más grandes. Se accede a la caché-B mediante el bus del sistema.
La interfaz externa es un bus de datos de 128-bit que opera entre 1/2 y 1/8 de la velocidad de reloj interna, o entre 25 y 100 MHz a 200 MHz. El ancho del bus es configurable, los sistemas que usan el 21064 pueden tener una interfaz externa de 64 bit. La interfaz externa también consiste en un bus de direcciones de 34 bit.
El 21064 contiene 1,68 millones de transistores.[13] El EV4 original fue fabricado por Digital con su proceso CMOS-4, el cual tenía un tamaño de 0,75 µm y tres niveles de interconexión de aluminio.[13] El EV4 mide 13,9 mm por 16,8 mm, para un área de 233,52 mm². El posterior EV4S estaba fabricado en CMOS-4S, CMOS-4 disminuido ópticamente en un 10% con un tamaño de 0,675 µm. Esta versión medía 12,4 mm por 15,0 mm, para un área de 186 mm².[14]
El 21064 usaba alimentación de 3,3 voltios (V).[13] El EV4 disipaba una energía máxima de 30 W a 200 MHz. El EV4S disipaba un máximo de 21 W a 150 MHz, 22,5 W a 166 MHz y 27 W a 200 MHz.[15]
El 21064 era encapsulado en un pin grid array (PGA) de cerámica de 431 pines, midiendo 61,72 mm por 61,72 mm.[16] De los 431 pins, 291 eran para señales y 140 para alimentación y masa.[17][13] El disipador es colocado directamente en el encapsulado, asegurado por dos trabas a dos postes que sobresalen del difusor de calor de tungsteno.
El Alpha 21064A, introducido como el DECchip 21064A, nombre en código EV45, es un desarrollo posterior del Alpha 21064 introducido en octubre de 1993. Opera a velocidades de reloj de 200, 225, 233, 275 y 300 MHz. El modelo de 225 MHz fue reemplazado por el de 233 MHz el 6 de julio de 1994, con un precio de US$788 por unidad en cantidades de 5.000, 10% menos que el modelo de 255 MHz que reemplazaba. El mismo día, el precio del modelo de 275 MHz también se redujo, en un 25%, a US$1.083 en cantidades de 5.000. El modelo de 300 MHz fue anunciado el 2 de octubre de 1995 y las entregas comenzaron en diciembre de 1995. Hubo también un modelo, el 21064A-275-PC, que tenía restricciones para correr el Windows NT o los sistemas operativos que usaran el mismo modelo de administración de memoria que el Windows NT.
El 21064A reemplazó al original 21064 como el microprocesador de alta gama de Alpha. Posteriormente vio uso en la mayoría de los sistemas de gama alta. Los usuarios incluyen:
El 21064A tenía varias mejoras en la microarquitectura sobre el 21064. La caché primaria fue mejorada de dos maneras: la capacidad de las caché-I y caché-D fue duplicada de 8 KB a 16 KB y se agregó protección de paridad a la etiqueta de la caché y a la matriz de datos. El divisor de coma flotante tiene ahora menos latencia debido a una mejora que permite retirar dos bits por ciclo en promedio. La predicción de salto fue mejorada con un BHT más grande, de 4.096 entradas por 2 bit.
EL 21064A contiene 2,8 millones de transistores y un tamaño de 14,5 por 10,5 mm, para un área de 152,25 mm². Era fabricado por Digital con su proceso CMOS de quinta generación, el CMOS-5, un proceso de 0,5 µm con cuatro niveles de interconexión de aluminio.[18]
El Alpha 21066, introducido como el DECchip 21066, nombre en código LCA4 (Low Cost Alpha, "Alpha de Bajo Costo"), es una variante de bajo precio del Alpha 21064. Las muestras se lanzaron el 10 de septiembre de 1993, y las entregas en grandes cantidades a principios de 1994. Al momento de la introducción, el Alpha 21066 de 166 MHz tenía un precio de US$385 en cantidades de 5000. También existió un modelo de 100 MHz, pensado para sistemas embebidos. Las muestras comenzaron a fines de 1994, y las entregas en grandes cantidades en el tercer trimestre de 1995. El Microprocessor Report reconoció al Alpha 21066 como el primer microprocesador con un controlador PCI integrado.
El Alpha 21066 estaba orientado a aplicaciones de bajo costo, específicamente computadoras personales corriendo Windows NT. Digital usó varios modelos del Alpha 21066 en sus clientes Multia, placas madre original equipment manufacturer (OEM) AXPpci 33 y computadoras de una sola placa AXPvme. Fuera de Digital, los usuarios incluyeron Aspen Systems en su workstation Alpine, Carrera Computers en su workstation Pantera I, NekoTech usó un modelo de 166& MHz en su computadora personal Mach 1-166, y Parsys en sus supercomputadoras Serie TransAlpha TA9000.
Debido al proceso de reducción, fue posible incluir características deseables en sistemas embebidos de bajo costo. Estas características incluían caché-B y controlador de memoria con soporte ECC, una aceleradora gráfica, limitada pero funcional, con hasta 8 MiB de VRAM para implementar un framebuffer, una controladora PCI y un generador de reloj de phase locked loop (PLL) para multiplicar la señal de reloj externo de 33 MHz a la frecuencia interna deseada.
El controlador de memoria soportoba desde 64 KiB hasta 2 MiB de caché-B y desde 2 MiB hasta 512 MiB de memoria. La implementación ECC era capaz de detectar errores de 1, 2 y 4 bit y corregir errores de 1 bit. Para reducir costos, el Alpha 21066 tenía un bus de sistema de 64 bit, lo cual reducía el número de pines, y por lo tanto, el tamaño del encapsulado. La reducción del ancho del bus del sistema también reducía el ancho de banda y, por lo tanto, el rendimiento en un 20 %, pero se consideró aceptable.
El 21066 contenía 1,75 millones de transistores y medía 17,0 por 12,3 mm, para un área de 209,1 mm². Estaba fabricado en CMOS-4S, un proceso de 0,675 µm con tres niveles de interconexión. El 21066 estaba encapsulado en CPGA de 287 pines midiendo 57,4 por 57,4 mm.
El Alpha 21066A, nombre en código LCA45, fue una variante de bajo costo del Alpha 21064A. Fue anunciado el 14 de noviembre de 1994, con modelos de muestra de 100 y 233 MHz. Ambos modelos fueron entregados en marzo de 1995. Cuando fue anunciado, los modelos de 100 y 233 MHz costaban $175 y $360, respectivamente, en cantidades de 5000 unidades. Un modelo de 266 MHz estuvo disponible posteriormente.
Mitsubishi Electric fue el segundo proveedor del 21066A, con el nombre de M36066A, siendo el primer procesador Alpha fabricado por la compañía, anunciando en noviembre de 1994 los modelos de 100 y 233 MHz. Las muestras para ingeniería estuvieron disponibles en diciembre de 1994, las muestras comerciales en julio de 1995, y las entregas en grandes cantidades en septiembre de 1995. El modelo de 233 MHz tenía un precio de $490 en cantidades de 1000.[19]
A pesar de estar basado en el 21064A, el 21066A no tenía las cachés de 16 KiB de datos e instrucciones. Una característica específica del 21066A fue la administración de energía; la frecuencia interna del reloj del microprocesador podía ajustarse por software.
Digital usó varios modelos del 21066A en los productos que antes habían usado el 21066. Fuera de Digital, Tadpole Computer usó el modelo de 233 MHz en su notebook ALPHAbook 1.
El 21066A contenía 1,8 millones de transistores en una matriz de 14,8 por 10,9 mm, para un área de 161,3 mm². Fue frabicado con el proceso CMOS de quinta generación de Digital, CMOS-5, un proceso de 0,5 µm con tres niveles de interconexión. Mitsubishi Electric fabricó el M36066A con su propio proceso de tres niveles de 0,5 μm.
El Alpha 21068, introducido como el DECchip 21068, es una versión del 21066 para sistemas embebidos. Era idéntico al 21066 pero ofrecía una frecuencia de reloj más baja para reducir la disipación de energía y el costo. Las muestras estuvieron disponibles el 10 de septiembre de 1993 y las entregas en grandes cantidades a principios de 1994. Operaba 66 MHz y disipaba un máximo de 9 W. Al momento del lanzamiento, el 21068 costaba US$221 cada uno en cantidades de 5.000. El 6 de junio de 1994, Digital anunció que reducía el precio en un 16%, a US$186, a partir del 3 de julio de 1994.
El Alpha 21068 fue usado por digital en su placa madre AXPpci 33 y en las computadoras de una sola placa AXPvme 64 y 64LC.
El Alpha 21068A, introducido como el DECchip 21068A, es una variante del 21066A para sistemas embebidos. Operaba con una frecuencia de reloj de 100 MHz.
Al principio, no había chipset estándar para los 21064 y 21064A. Las computadoras de Digital usaban un ASIC (Application-Specific Integrated Circuit), "Circuito Integrado para Aplicaciones Específicas") para interconectar el microprocesador con el sistema. Debido al costo de desarrollo por parte de terceros, que deseaban desarrollar productos basados en el Alpha, Digital desarrolló un chipset estándar, el DECchip 21070 (Apecs), para los original equipment manufacturers (OEM, Fabricantes de Equipos Originales).
Hubo dos modelos del 21070, el DECchip 21071 y el DECchip 21072. El 21071 estaba orientado a las workstations, mientras que el 21072 estaba orientado a las workstations de alta gama o a los servidores monoprocesadores de baja gama. Los dos modelos se diferencaban en las características del subsistema de memoria: el 21071 tenía un bus de memoria de 64 bit soportaba desde 8 MiB hasta 2 GiB de memoria protegida por paridad mientras que el 21072 tenía un bus de memoria de 128 bit y soportaba desde 16 MiB hasta 4 GiB de memoria ECC.
El chipset consistía de tres diseños de circuitos integrados, la caché-B COMANCHE y el controlador de memoria, el corte de datos DECADE y el controlador PCI EPIC. El chip DECADE implementaba el camino de datos en cortes de 32 bit, y por lo tanto el 21071 tenía dos chips, mientras que el 21072 tenía cuatro. El chip EPIC usaba un camino de 32 bit con el chip DECADE.
El 21070 fue introducido el 10 de enero de 1994,[20] con muestras disponibles. Las entregas en grandes cantidades comenzaron a mediados de 1994. En cantidades de 5.000, el 21071 costaba $90 y el 21072 $120.
Usuarios del 21070 incluyeron a Carrera Computers para sus workstation Pantera y Digital en algunos modelos de las AlphaStations y de los AlphaServers monoprocesadores.