Alpha , originalmente conocido como Alpha AXP , es una arquitectura de conjunto de instrucciones (ISA) de computación de conjunto de instrucciones reducido (RISC) de 64 bits desarrollada por Digital Equipment Corporation (DEC). Alpha fue diseñado para reemplazar la computadora de conjunto de instrucciones complejas (CISC) VAX de 32 bits , así como para ser un procesador RISC altamente competitivo para estaciones de trabajo Unix y mercados similares.
Diseñador | Corporación de equipos digitales |
---|---|
Bits | 64 bits |
Introducido | 1992 |
Diseño | RISC |
Tipo | Registrarse-Registrarse |
Codificación | Reparado |
Endianidad | Bi |
Extensiones | Extensión de bytes / palabras (BWX), Extensión de conversión de raíz cuadrada y coma flotante (FIX), Extensión de conteo (CIX), Instrucciones de video en movimiento (MVI) |
Abierto | Sí [1] |
Registros | |
Propósito general | 31 más R31 siempre cero |
Punto flotante | 31 más siempre-0.0 F31 |
Alpha se implementa en una serie de microprocesadores originalmente desarrollados y fabricados por DEC. Estos microprocesadores se utilizan principalmente en una variedad de estaciones de trabajo y servidores DEC, que eventualmente formaron la base de casi toda su línea de escala media a alta. Varios proveedores de terceros también produjeron sistemas Alpha, incluidas las placas base con factor de forma de PC .
Los sistemas operativos compatibles con Alpha incluyen OpenVMS (anteriormente conocido como OpenVMS AXP), Tru64 UNIX (anteriormente conocido como DEC OSF / 1 AXP y Digital UNIX), Windows NT (descontinuado después de NT 4.0 ; y versión preliminar de Windows 2000 RC1 ), [2 ] Linux ( Debian , SUSE , [3] Gentoo y Red Hat ), BSD UNIX ( NetBSD , OpenBSD y FreeBSD hasta 6.x), Plan 9 de Bell Labs , así como el kernel L4Ka :: Pistachio .
La arquitectura Alpha se vendió, junto con la mayor parte de DEC, a Compaq en 1998. [4] Compaq, que ya era cliente de Intel , eliminó el Alpha en favor de la próxima arquitectura Hewlett-Packard / Intel Itanium y vendió toda la propiedad intelectual de Alpha. a Intel en 2001, matando efectivamente el producto. Hewlett-Packard compró Compaq más tarde ese mismo año, continuando el desarrollo de la línea de productos existente hasta 2004 y vendiendo sistemas basados en Alpha, en gran parte a la base de clientes existente, hasta abril de 2007. [5]
Historia
PRISMA
Alfa nació de un proyecto anterior llamado RISC PRISM ( P an paralelo R relucida I nstruction S et M áquina), a su vez producto de varios proyectos anteriores. PRISM estaba destinado a ser un diseño flexible, compatible con aplicaciones similares a Unix, así como con el software VAX / VMS existente de Digital , después de una conversión menor. Un nuevo sistema operativo conocido como MICA apoyaría tanto ULTRIX interfaces y VAX / VMS en la parte superior de un núcleo común, permitiendo que el software para ambas plataformas a ser portado fácilmente a la arquitectura PRISM. [6]
Iniciado en 1985, el diseño de PRISM se modificó continuamente durante su desarrollo en respuesta a los cambios en el mercado de las computadoras, lo que provocó retrasos prolongados en su introducción. No fue hasta el verano de 1987 que se decidió que sería un diseño de 64 bits , uno de los primeros diseños de este tipo en formato de microprocesador . En octubre de 1987, Sun Microsystems presentó Sun-4 , su primera estación de trabajo con su nuevo procesador SPARC . El Sun-4 funciona entre tres y cuatro veces más rápido que sus últimos diseños Sun-3 utilizando el Motorola 68020 , así como cualquier oferta Unix de DEC. Los planes cambiaron de nuevo; PRISM se realineó una vez más como una parte de 32 bits y se dirigió directamente al mercado de Unix. Esto retrasó aún más el diseño. [7]
Después de haber visto cómo la fecha de entrega de PRISM seguía cayendo y enfrentando la posibilidad de más retrasos, un equipo de la oficina de Palo Alto decidió diseñar su propia estación de trabajo utilizando otro procesador RISC. Después de la debida diligencia , seleccionaron MIPS R2000 y construyeron una estación de trabajo en funcionamiento con Ultrix en un período de 90 días. [8] Esto desató un enconado debate dentro de la empresa, que llegó a un punto crítico en una reunión de la gerencia en julio de 1988. PRISM parecía ser más rápido que el R2000, pero las máquinas R2000 podrían estar en el mercado en enero de 1989, un año antes que PRISM. Cuando se aceptó esta propuesta, uno de los dos roles originales de PRISM desapareció. La decisión de hacer un VMS PRISM ya había terminado en este punto, por lo que no quedaba ningún rol. PRISM fue cancelado en la reunión. [9]
RISCy VAX
Cuando terminó la reunión, Ken Olsen se acercó a Bob Supnik , quien declaró que los chips RISC parecían ser una amenaza futura para su línea VAX. Le pidió a Supnik que considerara qué se podría hacer con VAX para mantenerlo competitivo con los futuros sistemas RISC. [7]
Esto llevó a la formación del equipo "RISCy VAX". Inicialmente consideraron tres conceptos. Una era una versión reducida de la arquitectura del conjunto de instrucciones VAX (ISA) que se ejecutaría en un sistema similar a RISC y dejaría instrucciones VAX más complejas a las subrutinas del sistema. Otro concepto era un sistema RISC puro que traduciría el código VAX existente en su propio ISA sobre la marcha y lo almacenaría en una memoria caché de la CPU . Finalmente, aún existía la posibilidad de que un procesador CISC mucho más rápido ejecutara el VAX ISA completo. Desafortunadamente, todos estos enfoques introdujeron gastos generales y no serían competitivos con una máquina RISC pura que ejecuta código RISC nativo. [10]
Luego, el grupo consideró los sistemas híbridos que combinaban una de sus soluciones de un solo chip VAX existentes, así como un chip RISC como coprocesador utilizado para necesidades de alto rendimiento. Estos estudios sugirieron que el sistema inevitablemente quedaría paralizado por la parte de menor rendimiento y no ofrecería ninguna ventaja convincente. Fue en este punto que Nancy Kronenberg señaló que la gente ejecutaba VMS, no VAX, y que VMS solo tenía algunas dependencias de hardware basadas en su modelado de interrupciones y paginación de memoria. No parecía haber una razón convincente por la que VMS no pudiera ser portado a un chip RISC mientras se conservaran estos pequeños fragmentos del modelo. El trabajo adicional sobre este concepto sugirió que este era un enfoque viable. [10]
Supnik llevó el informe resultante al Grupo de Trabajo Estratégico en febrero de 1989. Se plantearon dos preguntas: ¿podría el diseño RISC resultante ser también un líder en rendimiento en el mercado Unix y la máquina debería ser un estándar abierto? Y con eso, se tomó la decisión de adoptar la arquitectura PRISM con las modificaciones oportunas. Esto se convirtió en el concepto "EVAX", una continuación de la exitosa implementación CMOS CVAX . Cuando la gerencia aceptó los hallazgos, decidieron darle al proyecto un nombre más neutral, eliminando "VAX" y finalmente decidiéndose por Alpha. [11] Poco después, comenzó el trabajo en un puerto de VMS a la nueva arquitectura . [12]
Alfa
El nuevo diseño utiliza la mayoría de los conceptos básicos de PRISM, pero se reajustó para permitir que los programas VMS y VMS se ejecuten a una velocidad razonable sin conversión alguna. Los arquitectos principales del conjunto de instrucciones Alpha fueron Richard L. Sites y Richard T. Witek. [13] El Epicode de PRISM se desarrolló en el PALcode de Alpha , proporcionando una interfaz abstracta para las características específicas de implementación de la plataforma y el procesador.
La principal contribución de Alpha a la industria de los microprocesadores, y la principal razón de su rendimiento, no es tanto la arquitectura sino su implementación. [14] En ese momento (como lo es ahora), la industria del microchip estaba dominada por herramientas de diseño y diseño automatizadas. Los diseñadores de chips de Digital continuaron buscando un sofisticado diseño de circuitos manuales para hacer frente a la compleja arquitectura VAX. Los chips Alpha muestran que el diseño de circuito manual aplicado a una arquitectura más simple y limpia permite frecuencias de operación mucho más altas que las que son posibles con los sistemas de diseño más automatizados. Estos chips provocaron un renacimiento del diseño de circuitos personalizados dentro de la comunidad de diseño de microprocesadores.
Originalmente, los procesadores Alpha fueron designados como la serie DECchip 21x64 , [15] con "DECchip" reemplazado a mediados de la década de 1990 por "Alpha". Los dos primeros dígitos, "21", significan el siglo XXI, y los dos últimos dígitos, "64", significan 64 bits. [15] El Alpha fue diseñado como de 64 bits desde el principio y no existe una versión de 32 bits. El dígito del medio corresponde a la generación de la arquitectura Alpha. Internamente, los procesadores Alpha también fueron identificados por números EV , EV significa oficialmente "Extended VAX" pero tiene un significado humorístico alternativo de "Electric Vlasic ", que rinde homenaje al experimento Electric Pickle en Western Research Lab. [dieciséis]
Modelos mejorados
Las primeras generaciones de chips Alpha fueron algunas de las más innovadoras de su tiempo.
- La primera versión, Alpha 21064 o EV4 , es el primer microprocesador CMOS cuya frecuencia de operación rivaliza con las minicomputadoras y mainframes ECL de mayor potencia .
- El segundo, 21164 o EV5 , es el primer microprocesador que coloca un gran caché secundario en el chip. [17]
- El tercero, 21264 o EV6 , es el primer microprocesador que combina tanto la alta frecuencia operativa como la microarquitectura de ejecución desordenada más complicada .
- El 21364 o EV7 es el primer procesador de alto rendimiento que tiene un controlador de memoria en chip . [18]
- El 21464 o EV8 no producido habría sido el primero en incluir subprocesos múltiples simultáneos , pero esta versión se canceló después de la venta de DEC a Compaq . El proyecto de investigación Tarantula , que probablemente se habría llamado EV9 , habría sido el primer procesador Alpha en presentar una unidad vectorial . [19]
Un informe persistente atribuido a personas con información privilegiada de DEC sugiere que la elección de la etiqueta AXP para el procesador fue realizada por el departamento legal de DEC, que todavía estaba resentido por el fiasco de la marca registrada VAX . [20] Después de una larga búsqueda, se descubrió que la etiqueta "AXP" estaba completamente libre de obstáculos. Dentro de la industria de la computación, comenzó una broma de que el acrónimo AXP significaba "Casi eXactly PRISM". [ cita requerida ]
Criterios de diseño
La arquitectura Alpha estaba destinada a ser un diseño de alto rendimiento. Digital pretendía que la arquitectura soportara un aumento de mil veces en el rendimiento durante veinticinco años. Para garantizar esto, se eliminó cualquier característica arquitectónica que impidiera la emisión de múltiples instrucciones, la frecuencia del reloj o el multiprocesamiento. Como resultado, el Alpha no tiene:
- Ranuras de retardo de rama
- Instrucciones suprimidas
- Instrucciones de carga o almacenamiento de bytes (luego se agregaron con las extensiones de bytes de palabras (BWX)) [21] [22]
Códigos de condición
El Alpha no tiene códigos de condición para instrucciones enteras [23] para eliminar un posible cuello de botella en el registro de estado de condición. Las instrucciones que producen un desbordamiento, como sumar dos números cuyo resultado no cabe en 64 bits, escriben los 32 o 64 bits menos significativos en el registro de destino. El acarreo se genera realizando una comparación sin signo en el resultado con cualquiera de los operandos para ver si el resultado es más pequeño que cualquiera de los operandos. Si la prueba fue verdadera, el valor uno se escribe en el bit menos significativo del registro de destino para indicar la condición.
Registros
Registros DEC Alpha | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
La arquitectura define un conjunto de 32 registros enteros y un conjunto de 32 registros de punto flotante además de un contador de programa , dos registros de bloqueo y un registro de control de punto flotante (FPCR). También define registros que eran opcionales, implementados solo si la implementación los requería. Por último, se definen los registros para PALcode .
Los registros enteros se indican mediante R0 a R31 y los registros de coma flotante se indican mediante F0 a F31. Los registros R31 y F31 están cableados a cero y las escrituras en esos registros mediante instrucciones se ignoran. Digital consideró usar un archivo de registro combinado, pero se determinó que un archivo de registro dividido era mejor, ya que permite que las implementaciones de dos chips tengan un archivo de registro ubicado en cada chip y las implementaciones de solo enteros omitan el archivo de registro de punto flotante que contiene registros de coma flotante. También se determinó que un archivo de registro dividido es más adecuado para problemas de instrucciones múltiples debido al número reducido de puertos de lectura y escritura. También se consideró el número de registros por archivo de registro, siendo 32 y 64 contendientes. Digital concluyó que 32 registros eran más adecuados ya que requería menos espacio en el dado , lo que mejora las frecuencias de reloj. Se consideró que este número de registros no era un problema importante con respecto al rendimiento y el crecimiento futuro, ya que treinta y dos registros podrían admitir al menos un problema de instrucción de ocho vías.
El contador de programa es un registro de 64 bits que contiene una dirección de byte virtual alineada con una palabra larga, es decir, los dos bits inferiores del contador de programa son siempre cero. La PC se incrementa en cuatro a la dirección de la siguiente instrucción cuando se decodifica una instrucción. Las instrucciones de bloqueo de carga y condicionales de almacenamiento utilizan un indicador de bloqueo y un registro de direcciones físicas bloqueadas para el soporte de multiprocesador. El registro de control de punto flotante (FPCR) es un registro de 64 bits definido por la arquitectura destinada a ser utilizada por implementaciones Alpha con hardware de punto flotante compatible con IEEE 754 .
Tipos de datos
En la arquitectura Alpha, un byte se define como un dato de 8 bits (octeto), una palabra como un dato de 16 bits , una palabra larga como un dato de 32 bits , una palabra cuádruple como un dato de 64 bits y una octapalabra como un dato de 64 bits. un dato de 128 bits .
La arquitectura Alpha originalmente definía seis tipos de datos:
- Entero de cuatro palabras (64 bits)
- Entero de palabra larga (32 bits)
- IEEE T-punto flotante (doble precisión, 64 bits)
- IEEE S-punto flotante (precisión simple, 32 bits)
Para mantener un nivel de compatibilidad con VAX , la arquitectura de 32 bits que precedió a Alpha, se incluyen otros dos tipos de datos de punto flotante:
- VAX G-punto flotante (doble precisión, 64 bits)
- Punto flotante VAX F (precisión simple, 32 bits)
- El punto flotante VAX H (precisión cuádruple, 128 bits) no fue compatible, [24] pero otra opción de punto flotante de 128 bits, el punto flotante X, está disponible en Alpha, pero no en VAX. [25]
H y X se han descrito como similares, pero no idénticos. La emulación de software para H-flotante está disponible en DEC, al igual que un convertidor de nivel de código fuente llamado DECmigrate.
Memoria
El Alpha tiene un espacio de direcciones virtuales lineal de 64 bits sin segmentación de memoria. Las implementaciones pueden implementar un espacio de direcciones virtual más pequeño con un tamaño mínimo de 43 bits. Aunque los bits no utilizados no se implementaron en hardware como TLB , la arquitectura requirió implementaciones para verificar si son cero para garantizar la compatibilidad del software con implementaciones con un espacio de direcciones virtual más grande (o completo).
Formatos de instrucción
El Alpha ISA tiene una longitud de instrucción fija de 32 bits. Tiene seis formatos de instrucción.
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | dieciséis | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Tipo |
Código de operación | Real academia de bellas artes | Rb | No usado | 0 | Función | Rc | Entero operar | |||||||||||||||||||||||||
Código de operación | Real academia de bellas artes | Literal | 1 | Función | Rc | Operación entera, literal | ||||||||||||||||||||||||||
Código de operación | Real academia de bellas artes | Rb | Función | Rc | Operación de punto flotante | |||||||||||||||||||||||||||
Código de operación | Real academia de bellas artes | Rb | Desplazamiento | Formato de memoria | ||||||||||||||||||||||||||||
Código de operación | Real academia de bellas artes | Desplazamiento | Formato de rama | |||||||||||||||||||||||||||||
Código de operación | Función | Formato CALL_PAL |
El formato de operación de enteros es usado por instrucciones de enteros. Contiene un campo de código de operación de 6 bits, seguido por el campo Ra, que especifica el registro que contiene el primer operando y el campo Rb, especifica el registro que contiene el segundo operando. El siguiente es un campo de 3 bits que no se utiliza y está reservado. Un campo de 1 bit contiene un "0", que distingue este formato del formato literal entero. A continuación, aparece un campo de función de 7 bits, que se utiliza junto con el código de operación para especificar una operación. El último campo es el campo Rc, que especifica el registro en el que se debe escribir el resultado de un cálculo. Los campos de registro tienen 5 bits de longitud, necesarios para direccionar 32 ubicaciones únicas, los 32 registros enteros.
El formato de literal entero lo utilizan las instrucciones de entero que utilizan un literal como uno de los operandos. El formato es el mismo que el formato de operación de enteros, excepto por el reemplazo del campo Rb de 5 bits y los 3 bits del espacio no utilizado por un campo literal de 8 bits que se extiende a cero a un operando de 64 bits.
El formato de operación de punto flotante es utilizado por instrucciones de punto flotante. Es similar al formato de operación de enteros, pero tiene un campo de función de 11 bits que se hace posible mediante el uso de bits literales y no utilizados que están reservados en el formato de operación de enteros.
El formato de la memoria se utiliza principalmente en las instrucciones de carga y almacenamiento. Tiene un campo de código de operación de 6 bits, un campo Ra de 5 bits, un campo Rb de 5 bits y un campo de desplazamiento de 16 bits.
Las instrucciones de bifurcación tienen un campo de código de operación de 6 bits, un campo Ra de 5 bits y un campo de desplazamiento de 21 bits. El campo Ra especifica un registro para ser probado por una instrucción de bifurcación condicional, y si se cumple la condición, el contador del programa se actualiza agregando el contenido del campo de desplazamiento con el contador del programa. El campo de desplazamiento contiene un entero con signo y si el valor del entero es positivo, si se toma la rama, se incrementa el contador del programa. Si el valor del número entero es negativo, el contador del programa se reduce si se toma la rama. Por tanto, el rango de una rama es ± 1 Mi instrucciones, o ± 4 MiB. La Arquitectura Alpha fue diseñada con una amplia gama como parte del objetivo de la arquitectura con miras al futuro.
La instrucción usa el formato CALL_PAL CALL_PAL
, que se usa para llamar subrutinas PALcode . El formato conserva el campo de código de operación pero reemplaza a los demás con un campo de función de 26 bits, que contiene un número entero que especifica una subrutina PAL.
Conjunto de instrucciones
Instrucciones de control
Las instrucciones de control constan de saltos y bifurcaciones condicionales e incondicionales. Las instrucciones de bifurcación condicional e incondicional utilizan el formato de instrucción de bifurcación, mientras que las instrucciones de salto utilizan el formato de instrucción de memoria.
Las ramas condicionales prueban si el bit menos significativo de un registro está establecido o borrado, o comparan un registro como una palabra cuádruple con signo con cero, y se ramifican si la condición especificada es verdadera. Las condiciones disponibles para comparar un registro con cero son igualdad, desigualdad, menor que, menor o igual a, mayor o igual que y mayor que. La nueva dirección se calcula mediante la alineación de palabras largas y el signo que extiende el desplazamiento de 21 bits y lo agrega a la dirección de la instrucción que sigue a la rama condicional.
Las ramas incondicionales actualizan el contador del programa con una nueva dirección calculada de la misma forma que las ramas condicionales. También guardan la dirección de la instrucción que sigue a la rama incondicional en un registro. Hay dos instrucciones de este tipo y solo difieren en las sugerencias proporcionadas para el hardware de predicción de ramas.
Hay cuatro instrucciones de salto. Todos realizan la misma operación, guardando la dirección de la instrucción que sigue al salto y proporcionando al contador del programa una nueva dirección desde un registro. Se diferencian en las sugerencias proporcionadas al hardware de predicción de ramas. El campo de desplazamiento no utilizado se utiliza para este propósito.
Aritmética de enteros
Las instrucciones aritméticas de números enteros realizan sumas, multiplicaciones y restas en palabras largas y cuádruples; y comparación en cuatro palabras. No hay instrucciones para la división, ya que los arquitectos consideraron que la implementación de la división en hardware era adversa a la simplicidad. Además de las instrucciones estándar de sumar y restar, existen versiones escaladas . Estas versiones desplazan el segundo operando a la izquierda en dos o tres bits antes de sumar o restar. Las instrucciones Multiply Longword y Multiply Quadword escriben los 32 o 64 bits menos significativos de un resultado de 64 o 128 bits en el registro de destino, respectivamente. Dado que es útil obtener la mitad más significativa, se proporciona la instrucción Unsigned Multiply Quadword High (UMULH). UMULH se utiliza para implementar algoritmos aritméticos y de división de precisión múltiple. El concepto de una instrucción separada para la multiplicación que devuelve la mitad más significativa de un resultado se tomó de PRISM .
Las instrucciones que operan con palabras largas ignoran la mitad más significativa del registro y el resultado de 32 bits se amplía con el signo antes de escribirse en el registro de destino. De forma predeterminada, las instrucciones de sumar, multiplicar y restar, con la excepción de UMULH y las versiones escaladas de sumar y restar, no atrapan en desbordamiento. Cuando se requiere dicha funcionalidad, se proporcionan versiones de estas instrucciones que realizan detección de desbordamiento y captura en desbordamiento.
Las instrucciones de comparación comparan dos registros o un registro y un literal y escriben '1' en el registro de destino si la condición especificada es verdadera o '0' si no. Las condiciones son igualdad, desigualdad, menor o igual y menor que. Con la excepción de las instrucciones que especifican las dos condiciones anteriores, hay versiones que realizan comparaciones firmadas y no firmadas.
Las instrucciones aritméticas de enteros utilizan los formatos de instrucción de operación de enteros.
Lógico y cambio
Las instrucciones lógicas consisten en aquellas para realizar operaciones lógicas bit a bit y movimientos condicionales en los registros enteros. Las instrucciones lógicas bit a bit ejecutan AND , NAND , NOR , OR , XNOR y XOR entre dos registros o un registro y literal. Las instrucciones de movimiento condicional prueban un registro como una palabra cuádruple con signo a cero y se mueven si la condición especificada es verdadera. Las condiciones especificadas son igualdad, desigualdad, menor o igual a, menor que, mayor o igual que y mayor que. Las instrucciones de desplazamiento realizan desplazamiento aritmético a la derecha , y la izquierda lógico y desplazamientos a la derecha . La cantidad de cambio viene dada por un registro o literal. Las instrucciones lógicas y de desplazamiento utilizan los formatos de instrucción de operación entera.
Extensiones
Extensiones Byte-Word (BWX)
Los Alpha posteriores incluyen extensiones de byte-word, un conjunto de instrucciones para manipular tipos de datos de 8 y 16 bits. Estas instrucciones se introdujeron por primera vez en el microprocesador 21164A (EV56) y están presentes en todas las implementaciones posteriores. Estas instrucciones realizan operaciones que anteriormente requerían múltiples instrucciones para implementar, lo que mejora la densidad del código y el rendimiento de ciertas aplicaciones. BWX también facilita la emulación de código de máquina x86 y la escritura de controladores de dispositivo . [26]
Mnemotécnico | Instrucción |
---|---|
LDBU | Cargar byte ampliado cero de la memoria para registrar |
LDWU | Cargar palabra cero extendida de la memoria para registrar |
SEXTB | Firmar extender byte |
SEXTW | Firmar extender palabra |
STB | Almacenar bytes del registro en la memoria |
STW | Almacenar palabra del registro en la memoria |
Instrucciones de video en movimiento (MVI)
Motion Video Instructions (MVI) era una extensión del conjunto de instrucciones de Alpha ISA que agregaba instrucciones para operaciones de instrucción única y datos múltiples (SIMD). [27] Las implementaciones Alpha que implementan MVI, en orden cronológico, son Alpha 21164PC (PCA56 y PCA57), Alpha 21264 (EV6) y Alpha 21364 (EV7). A diferencia de la mayoría de los otros conjuntos de instrucciones SIMD de la misma época, tales como MIPS ' MDMX o SPARC ' s Visual conjunto de instrucciones , pero como PA-RISC 's eXtensiones Aceleración Multimedia (MAX-1, MAX-2), MVI era un conjunto de instrucciones simples compuesto por unas pocas instrucciones que operan en tipos de datos enteros almacenados en registros enteros existentes.
La simplicidad de MVI se debe a dos razones. En primer lugar, Digital había determinado que el Alpha 21164 ya era capaz de realizar la decodificación de DVD a través de software, por lo tanto, no requería provisiones de hardware para este propósito, pero era ineficiente en la codificación MPEG-2 . La segunda razón es el requisito de mantener los tiempos de ciclo rápidos de las implementaciones. Agregar muchas instrucciones habría complicado y ampliado la lógica de decodificación de instrucciones, reduciendo la frecuencia de reloj de una implementación.
MVI consta de 13 instrucciones:
Mnemotécnico | Instrucción |
---|---|
MAXSB8 | Vector máximo de bytes firmados |
MAXSW4 | Vector máximo de palabras firmadas |
MAXUB8 | Vector máximo de bytes sin signo |
MAXUW4 | Vector máximo de palabras sin firmar |
MINSB8 | Vector mínimo de bytes firmados |
MINSW4 | Vector mínimo de palabra firmada |
MINUB8 | Vector mínimo de bytes sin signo |
MINUW4 | Vector mínimo de palabras sin firmar |
PERR | Error de píxel |
PKLB | Empaquetar palabras largas en bytes |
PKWB | Empaquetar palabras en bytes |
UNPKBL | Desempaquetar bytes en palabras largas |
UNPKBW | Desempaquetar bytes en palabras |
Extensiones de punto flotante (FIX)
Las extensiones de punto flotante (FIX) son una extensión de la arquitectura Alpha. Introduce nueve instrucciones para la raíz cuadrada de punto flotante y para transferir datos hacia y desde los registros de enteros y los registros de punto flotante. El Alpha 21264 (EV6) es el primer microprocesador en implementar estas instrucciones.
Mnemotécnico | Instrucción |
---|---|
FTOIS | Movimiento de registro de punto flotante a entero, S_floating |
FTOIT | Movimiento de registro de punto flotante a entero, T_floating |
ITOFF | Movimiento de registro de entero a punto flotante, F_floating |
ITOFS | Movimiento de registro de entero a punto flotante, S_floating |
ITOFT | Movimiento de registro de entero a punto flotante, T_floating |
SQRTF | Raíz cuadrada F_floating |
SQRTG | Raíz cuadrada G_floating |
SQRTS | Raíz cuadrada S_floating |
SQRTT | Raíz cuadrada T_floating |
Recuento de extensiones (CIX)
Count Extensions (CIX) es una extensión de la arquitectura que presenta tres instrucciones para contar bits. Estas instrucciones se clasifican como instrucciones aritméticas de números enteros. Se implementaron por primera vez en el Alpha 21264A (EV67).
Mnemotécnico | Instrucción |
---|---|
CTLZ | Contar cero inicial |
CTPOP | Contar población |
CTTZ | Contar el cero final |
Implementaciones
En el momento de su anuncio, Alpha fue anunciado como una arquitectura durante los próximos 25 años. Si bien esto no fue así, Alpha ha tenido una vida razonablemente larga. La primera versión, Alpha 21064 (también conocida como EV4 ) se introdujo en noviembre de 1992 con una velocidad de hasta 192 MHz; un ligero encogimiento de la matriz (el EV4S , reducido de 0,75 µm a 0,675 µm) corrió a 200 MHz unos meses más tarde. El procesador de 64 bits era un diseño superpipelined y superescalar , como otros diseños RISC, pero sin embargo los superó a todos y DEC lo promocionó como el procesador más rápido del mundo. La atención cuidadosa al diseño de circuitos, un sello distintivo del equipo de diseño de Hudson, como un enorme circuito de reloj centralizado, les permitió ejecutar la CPU a velocidades más altas, a pesar de que la microarquitectura era bastante similar a otros chips RISC. En comparación, el Intel Pentium menos costoso funcionaba a 66 MHz cuando se lanzó la primavera siguiente.
El Alpha 21164 o EV5 estuvo disponible en 1995 con frecuencias de procesador de hasta 333 MHz. En julio de 1996, la velocidad de la línea aumentó a 500 MHz, en marzo de 1998 a 666 MHz. También en 1998 se lanzó la Alpha 21264 ( EV6 ) a 450 MHz, alcanzando finalmente (en 2001 con la 21264C / EV68CB ) 1,25 GHz. En 2003, se lanzó Alpha 21364 o EV7 Marvel , esencialmente un núcleo EV68 con cuatro enlaces de comunicación entre procesadores de 1,6 GB / s [a] para mejorar el rendimiento del sistema multiprocesador , funcionando a 1 o 1,15 GHz.
En 1996, la producción de chips Alpha se otorgó a Samsung Electronics Company . Después de la compra de Digital por Compaq, la mayoría de los productos Alpha se colocaron en API NetWorks, Inc. (anteriormente Alpha Processor Inc.), una empresa privada financiada por Samsung y Compaq. En octubre de 2001, Microway se convirtió en el proveedor exclusivo de ventas y servicios de la línea de productos Alpha de API NetWorks.
El 25 de junio de 2001, Compaq anunció que Alfa se eliminaría el año 2004 a favor de Intel 's Itanium , canceló la planeada EV8 de chip, y se vende toda la propiedad intelectual Alfa a Intel . [28] HP, nuevo propietario de Compaq más tarde ese mismo año, anunció que el desarrollo de la serie Alpha continuaría durante algunos años más, incluido el lanzamiento de una variante EV7 de 1.3 GHz llamada EV7z . Esta sería la iteración final de Alpha, y el EV79 de 0,13 µm también se cancelaría.
Alpha también se implementa en el Piranha , un prototipo de investigación desarrollado por los grupos de Investigación Corporativa y Desarrollo Ininterrumpido de Hardware de Compaq en el Laboratorio de Investigación Occidental y el Centro de Investigación de Sistemas. Piranha es un diseño multinúcleo para cargas de trabajo de procesamiento de transacciones que contiene ocho núcleos simples. Fue descrito en el 27º Simposio Internacional Anual sobre Arquitectura de Computadoras en junio de 2000. [29]
Historia del modelo
Modelo | Número de modelo | Año | Frecuencia [MHz] | Proceso [µm] | Transistores [millones] | Tamaño de matriz [mm 2 ] | Pines IO | Potencia [W] | Voltaje | Dcache [KB] [b] | Icache [KB] | Scache | Bcache | ES UN | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
EV4 | 21064 | 1992 | 100-200 | 0,75 | 1,68 | 234 | 290 | 30 | 3.3 | 8 | 8 | - | 128 KB – 16 MB | ||
EV4S | 21064 | 1993 | 100-200 | 0,675 | 1,68 | 186 | 290 | 27 | 3.3 | 8 | 8 | - | 128 KB – 16 MB | ||
EV45 | 21064A | 1994 | 200–300 | 0,5 | 2,85 | 164 | 33 | 3.3 | dieciséis | dieciséis | - | 256 KB – 16 MB | |||
LCA4 | 21066 | 1993 | 100-166 | 0,675 | 1,75 | 209 | 21 | 3.3 | 8 | 8 | - | ||||
LCA4 | 21068 | 1994 | 66 | 0,675 | 1,75 | 209 | 9 | 3.3 | 8 | 8 | - | ||||
LCA45 | 21066A | 1994 | 100–266 | 0,5 | 1.8 | 161 | 23 | 3.3 | 8 | 8 | - | ||||
LCA45 | 21068A | 1994 | 100 | 0,5 | 1.8 | 161 | 3.3 | 8 | 8 | - | |||||
EV5 | 21164 | 1995 | 266–500 | 0,5 | 9.3 | 299 | 296 | 56 | 3.3 / 2.5 | 8 | 8 | 96 KB | Hasta 64 MB | R | |
EV56 | 21164A | 1996 | 366–666 [1] | 0,35 | 9,66 [1] | 209 | 31–55 [1] | 3,3 / 2,5 [1] | 8 | 8 | 96 KB | Hasta 64 MB | R, B | ||
PCA56 | 21164PC | 1997 | 400–533 | 0,35 | 3,5 | 141 | 264 | 26–35 | 3.3 / 2.5 | 8 | dieciséis | - | 512 KB – 4 MB | R, B, M | |
PCA57 | 21164PC | 600–666 | 0,28 | 5.7 | 101 | 283 | 18-23 | 2.5 / 2.0 | dieciséis | 32 [1] | - | 512 KB – 4 MB | R,B,M | ||
EV6 | 21264 | 1998 | 450–600 | 0.35 | 15.2 | 314 | 389 | 73 | 2.0 | 64 | 64 | – | 2–8 MB | R,B,M,F | |
EV67 | 21264A | 1999 | 600–750 | 0.25 | 15.2 | 210 | 389 | 2.0 | 64 | 64 | – | 2–8 MB | R,B,M,F,C | ||
EV68AL | 21264B | 2001 | 800–833 | 0.18 | 15.2 | 125 | 1.7 | 64 | 64 | – | 2–8 MB | R,B,M,F,C,T | |||
EV68CB | 21264C | 2001 | 1000–1250 | 0.18 | 15.2 | 125 | 65–75 | 1.65 | 64 | 64 | – | 2–8 MB | R,B,M,F,C,T | ||
EV68CX | 21264D | 1.65 | 64 | 64 | – | 2–8 MB | R,B,M,F,C,T | ||||||||
EV7 | 21364 | 2003 | 1000–1150 | 0.18 | 130 | 397 | 125 | 1.5 | 64 | 64 | 1.75 MB | – | R,B,M,F,C,T | ||
EV7z | 21364 | 2004 | 1300 | 0.18 | 130 | 397 | 125 | 1.5 | 64 | 64 | 1.75 MB | – | R,B,M,F,C,T | ||
Cancelled | |||||||||||||||
EV78/EV79 | 21364A | Slated for 2004 | 1700 | 0.13 | 152 | 300 | 120 | 1.2 | 64 | 64 | 1.75 MB | – | R,B,M,F,C,T | ||
EV8 | 21464 | Slated for 2003 | 1200–2000 | 0.125 | 250 | 420 | 1800 | ?? | 1.2 | 64 | 64 | 3 MB | – | R,B,M,F,C,T | |
Model | Model number | Year | Frequency [MHz] | Process [µm] | Transistors [millions] | Die size [mm²] | IO Pins | Power [W] | Voltage | Dcache [KB] | Icache [KB] | Scache | Bcache | ISA |
- ISA extensions
- R – Hardware support for rounding to infinity and negative infinity.[30]
- B – BWX, the "Byte/Word Extension", adding instructions to allow 8- and 16-bit operations from memory and I/O
- M – MVI, "multimedia" instructions
- F – FIX, instructions to move data between integer and floating point registers and for square root
- C – CIX, instructions for counting and finding bits
- T – support for prefetch with modify intent to improve the performance of the first attempt to acquire a lock
Actuación
To illustrate the comparative performance of Alpha-based systems, some SPEC performance numbers (SPECint95, SPECfp95) are listed below. Note that the SPEC results claim to report the measured performance of a whole computer system (CPU, bus, memory, compiler optimizer), not just the CPU. Also note that the benchmark and scale changed from 1992 to 1995. However, the figures give a rough impression of the performance of the Alpha architecture (64-bit), compared with the contemporary HP (64-bit) and Intel-based offerings (32-bit). Perhaps the most obvious trend is that while Intel could always get reasonably close to Alpha in integer performance, in floating point performance the difference was considerable. On the other side, HP (PA-RISC) is also reasonably close to Alpha, but these CPUs are running at significantly lower clock rates (MHz). The tables lack two important values: the power consumption and the price of a CPU.
|
|
Sistemas basados en alfa
The first generation of DEC Alpha-based systems comprise the DEC 3000 AXP series workstations and low-end servers, DEC 4000 AXP series mid-range servers, and DEC 7000 AXP and 10000 AXP series high-end servers. The DEC 3000 AXP systems use the same TURBOchannel bus as the previous MIPS-based DECstation models, whereas the 4000 is based on FutureBus+ and the 7000/10000 share an architecture with corresponding VAX models.
DEC also produced a PC-like Alpha workstation with an EISA bus, the DECpc AXP 150 (codename "Jensen", also known as the DEC 2000 AXP). This is the first Alpha system to support Windows NT. DEC later produced Alpha versions of their Celebris XL and Digital Personal Workstation PC lines, with 21164 processors.
Digital also produced single board computers based on the VMEbus for embedded and industrial use. The first generation includes the 21068-based AXPvme 64 and AXPvme 64LC, and the 21066-based AXPvme 160. These were introduced on March 1, 1994. Later models such as the AXPvme 100, AXPvme 166 and AXPvme 230 are based on the 21066A processor, while the Alpha VME 4/224 and Alpha VME 4/288 are based on the 21064A processor. The last models, the Alpha VME 5/352 and Alpha VME 5/480, are based on the 21164 processor.
The 21066 chip is used in the DEC Multia VX40/41/42 compact workstation and the ALPHAbook 1 laptop from Tadpole Technology.
In 1994, DEC launched a new range of AlphaStation and AlphaServer systems. These use 21064 or 21164 processors and introduced the PCI bus, VGA-compatible frame buffers and PS/2-style keyboards and mice. The AlphaServer 8000 series supersedes the DEC 7000/10000 AXP and also employs XMI and FutureBus+ buses.
The AlphaStation XP1000 is the first workstation based on the 21264 processor. Later AlphaServer/Station models based on the 21264 are categorised into DS (departmental server), ES (enterprise server) or GS (global server) families.
The final 21364 chip is used in the AlphaServer ES47, ES80 and GS1280 models and the AlphaStation ES47.
A number of OEM motherboards were produced by DEC, such as the 21066 and 21068-based AXPpci 33 "NoName", which was part of a major push into the OEM market by the company,[31] the 21164-based AlphaPC 164 and AlphaPC 164LX, the 21164PC-based AlphaPC 164SX and AlphaPC 164RX and the 21264-based AlphaPC 264DP. Several third parties such as Samsung and API also produced OEM motherboards such as the API UP1000 and UP2000.
To assist third parties in developing hardware and software for the platform, DEC produced Evaluation Boards, such as the EB64+ and EB164 for the Alpha 21064A and 21164 microprocessors respectively.
The 21164 and 21264 processors were used by NetApp in various network-attached storage systems, while the 21064 and 21164 processors were used by Cray in their T3D and T3E massively parallel supercomputers.
Supercomputers
The fastest supercomputer based on Alpha processors is the ASCI Q at Los Alamos National Laboratory. The machine was built as an HP AlphaServer SC45/GS Cluster. It had 4096 Alpha (21264 EV-68, 1.25 GHz) CPUs, and reached an Rmax of 7.727 TFLOPS.[32]
Notas
- ^ In the context of data transfer, 1 GB is used to mean 1 billion bytes
- ^ In the context of cache memory, 1 KB = 1024 bytes; 1 MB = 1024 KB
Referencias
- ^ a b c d e f Paul V. Bolotoff (21 April 2007). "Alpha: The History in Facts and Comments". Archived from the original on 3 December 2013. Retrieved Nov 22, 2008.
- ^ Aaron Sakovich (2001). "Windows 2000?". The AlphaNT Source. Archived from the original on 2008-07-08. Retrieved 2007-01-01.
- ^ "SUSE Linux 7.0 Alpha Edition". SUSE. 2000. Retrieved 2014-01-08.
- ^ "Ghost of DEC Alpha is why Windows is rubbish at file compression". TheRegister.co.uk. November 2, 2016.
- ^ "Transforming your AlphaServer environment". HP. Archived from the original on 2007-02-08. Retrieved 2007-01-11.
- ^ Catherine Richardson; Terry Morris; Rockie Morgan; Reid Brown; Donna Meikle (March 1987). "MICA Software Business Plan" (PDF). bitsavers.org. Retrieved 2021-01-04.
- ^ a b Supnik, Bob (24 February 2008). "MicroPrism". The Computer History Simulation Project.
- ^ Bolotoff, Paul V (2007-04-22). "Alpha: The History in Facts and Comments". Retrieved 2019-09-09.
- ^ Mark Smotherman. "Sketch of DEC PRISM".
PRISM (Parallel Reduced Instruction Set Machine) ... first draft of PRISM architecture in August 1985; DEC cancels the project in 1988 in favor of a MIPS-based ...
- ^ a b Comerford, Richard (July 1992). "How DEC developed Alpha". IEEE Spectrum. 29 (7): 28. doi:10.1109/6.144508.
- ^ Supnik, Bob (1992). "Foreword". Digital Technical Journal. 4 (4).
- ^ "Managing Technological Leaps: A study of DEC's Alpha Design Team" (PDF). April 1993.
- ^ Richard L. Sites; Richard T. Witek (2014-05-16). Alpha AXP Architecture Reference Manual - 2nd Edition. ISBN 978-1-4831-8403-6.
- ^ Warner, W. (December 22, 2004). "Great moments in microprocessor history". IBM.
- ^ a b "cpu-collection.de - DEC Alpha AXP".
The first processors of the Alpha family were designated the DECchip 21064 series (the "21" signifying 21st century)
- ^ Bill Hamburgen; Jeff Mogul; Brian Reid; Alan Eustace; Richard Swan; Mary Jo Doherty; Joel Bartlett (1989). "WRL Technical Note TN-13: Characterization of Organic Illumination Systems" (PDF). Digital Equipment Corporation. Retrieved 2007-10-04. Cite journal requires
|journal=
(help) - ^ John H. Edmondson; Paul I. Rubinfeld; Peter J. Bannon; Bradley J. Benschneider; Debra Bernstein; Ruben W. Castelino; Elizabeth M. Cooper; Daniel E. Dever; Dale R. Donchin; Timothy C. Fischer; Anil K. Jain; Shekhar Mehta; Jeanne E. Meyer; Ronald P. Preston; Vidya Rajagopalan; Chandrasekhara Somanathan; Scott A. Taylor; Gilbert M. Wolrich (1995). "Internal Organization of the Alpha 21164, a 300-MHz 64-bit Quad-issue CMOS RISC Microprocessor". Digital Technical Journal. 7 (1): 119–135. CiteSeerX 10.1.1.38.9551.
large, on-chip, second-level, write-back cache
- ^ Reviews, C.T.I (2016). Structured Computer Organization. ISBN 978-1478426738.
21364 ... first high performance processor to have an onchip memory controller.
- ^ Roger Espasa; Federico Ardanaz; Julio Gago; Roger Gramunt; Isaac Hernandez; Toni Juan; Joel Emer; Stephen Felix; Geoff Lowney; Matthew Mattina; Andre Seznec (2002). "Tarantula: A Vector Extension to the Alpha Architecture". In Danielle C. Martin (ed.). Proceedings: 29th Annual International Symposium on Computer Architecture (ISCA '02). 29th Annual International Symposium on Computer Architecture (ISCA '02). Joe Daigle/Studio Productions. Los Alamitos, Calif: IEEE Computer Society. pp. Page(s): 281–292. doi:10.1109/ISCA.2002.1003586. ISBN 0-7695-1605-X.
- ^ "The VAX Vacuum".
... legally, if DEC had used VAX in the U.S. before that ..... "reasonable person" has no difficulty distinguishing between the two uses
- ^ "The Alpha AXP, part 8: Memory access, storing bytes and words". August 16, 2017.
Dealing with unaligned memory on the Alpha AXP is very annoying
- ^ "Alpha 21264 Microprocessor Data Sheet" (PDF).
The instructions that comprise the BWX extension are ...
- ^ "MIPS Instructions".
DEC Alpha ... , no integer condition code.
- ^ "Alpha Bits - Migrating To The Future". DEC Professional. August 1992. p. 62.
H floating datatypes are unavailable on Alpha
- ^ "Migrating an Application from OpenVMS VAX to OpenVMS Alpha".
- ^ Gronowski, P. E.; Bowhill, W. J.; Donchin, D. R.; Blake-Campos, R. P.; Carlson, D. A.; Equi, E. R.; Loughlin, B. J.; Mehta, S.; Mueller, R. O.; Olesin, A.; Noorlag, D. J. W.; Preston, R. P. (1996). "A 433-MHz 64-b quad-issue RISC microprocessor". IEEE Journal of Solid-State Circuits. 31 (11): 1687–1696. Bibcode:1996IJSSC..31.1687G. doi:10.1109/JSSC.1996.542313. S2CID 39280205.
- ^ Gwennap, Linley (18 November 1996). "Digital, MIPS Add Multimedia Extensions". Microprocessor Report.
- ^ Popovich, Ken (2001-06-28). "Alpha proved costly for Compaq". www.zdnet.com. ZDNet. Retrieved 2016-03-02.
- ^ Luiz André Barroso; Kourosh Gharachorloo; Robert McNamara; Andreas Nowatzyk; Shaz Qadeer; Barton Sano; Scott Smith; Robert Stets; Ben Verghese (2000). Piranha: A Scalable Architecture Based on Single-Chip Multiprocessing. 27th Annual International Symposium on Computer Architecture. doi:10.1145/339647.339696.
- ^ David Mosberger. "Overview of Alpha Family". Retrieved Dec 9, 2009.
- ^ Reinhardt Krause. "DEC launching Alpha board push". Electronic News, April 4, 1994.
- ^ Los Alamos National Laboratories (2002). "The ASCI Q System: 30 TeraOPS Capability at Los Alamos National Laboratory" (PDF). Archived from the original (PDF) on 2011-01-12. Retrieved 2010-06-06.
enlaces externos
- The Alpha Architecture Handbook, Version 4
- The Alpha Architecture Handbook, Version 3
- Digital Technical Journal, Volume 4, Number 4, Special Issue 1992 Alpha AXP Architecture and Systems This issue contains several articles from Alpha's Architects
- Archived technical documentation library This link features the hardware reference manuals and datasheets for Alpha microprocessors, chipsets and OEM motherboards. Includes the Alpha Architecture Handbook and various programming manuals.
- A Conversation with Dan Dobberpuhl (October 1, 2003)
- Dr. Bruce Hutton's lecture notes on Computer Architecture