thumb|El microprocesador 21064. thumb|El microprocesador 21064 montado en una tarjeta de presentación.

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.

Historia

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.

Usuarios

El 21064 fue muy usado en computadoras de alta gama, como servidores y estaciones de trabajo (workstations). Entre otros:

Aspen Systems en sus workstations Alpine Carrera Computers en sus workstations Hercules 150, Hercules 200 y Pantera II Cray Research, usó el 21064 de 150 MHz en su supercomputadora Cray T3D Digital, en su workstation básica DECpc AXP 150, servidores básico DEC 2000 AXP, servidores y workstations básicos DEC 3000 AXP, servidores de rango medio DEC 4000 AXP y servidores de alta gama DEC 7000/10000 AXP Encore Computer, en su computadora de alta gama de tiempo real Infinity R/T

Prestaciones

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.Ryan 1994

Descripción

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.

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.Digital Equipment Corporation 1996, p. 2-3–2-4 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.Digital Equipment Corporation 1996, p. 2-5 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. La penalización por no predecir un salto es de cuatro ciclos.Dobberpuhl 1992, p. 37

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. 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.Digital Equipment Corporation 1996, p. 2-6

Ejecución

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.

Unidad de enteros

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.Dobberpuhl 1992, pp. 35–36 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,McLellan 1993, p. 42 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.

Unidad de direccionamiento

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.McLellan 1993, p. 43 Un translation lookaside buffer (TLB) de 32 entradas totalmente asociativas es usada para traducir direcciones virtuales a direcciones físicas. 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.

Unidad de coma flotante

La unidad de coma flotante consiste de un archivo de registros de coma flotante (FRF, floating-point register file) y la F-box.Dobberpuhl 1992, p. 36 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.Dobberpuhl 1992, p. 38 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.