El DLX (pronunciado "Deluxe") es una arquitectura de procesador RISC diseñada por John L. Hennessy y David A. Patterson , los principales diseñadores de los diseños Stanford MIPS y Berkeley RISC (respectivamente), los dos ejemplos de referencia del diseño RISC (llamados después del diseño de Berkeley).
Diseñador | John L. Hennessy y David A. Patterson |
---|---|
Bits | 32 bits |
Introducido | Decenio de 1990 |
Versión | 1.0 |
Diseño | RISC |
Tipo | Registrarse – Registrarse y cargar – almacenar |
Codificación | Reparado |
Derivación | Registro de condición |
Endianidad | Bi-endian |
Extensiones | Ninguno, pero se pueden utilizar MDMX y MIPS-3D |
Abierto | sí |
Registros | |
Propósito general | 31 (R0 = 0) |
Punto flotante | 32 (DP emparejado para 32 bits) |
El DLX es esencialmente una CPU MIPS simplificada limpiada (y modernizada). El DLX tiene una arquitectura simple de carga / almacenamiento de 32 bits , algo diferente a la CPU MIPS moderna. Dado que el DLX se diseñó principalmente para fines didácticos, el diseño DLX se utiliza ampliamente en cursos de arquitectura informática de nivel universitario .
Hay dos implementaciones conocidas: ASPIDA y VAMP. El proyecto ASPIDA resultó en un núcleo con muchas características interesantes: es de código abierto, es compatible con Wishbone , tiene un diseño asincrónico, es compatible con múltiples ISA y está probado con ASIC . VAMP es una variante de DLX que se verificó matemáticamente como parte del proyecto Verisoft. Se especificó con PVS , se implementó en Verilog y se ejecuta en una FPGA Xilinx . En él se construyó una pila completa desde el compilador hasta el kernel y TCP / IP .
Historia
En la arquitectura MIPS original, uno de los métodos utilizados para obtener rendimiento era forzar que todas las instrucciones se completaran en un ciclo de reloj. Esto obligó a los compiladores a insertar " no-ops " en los casos en que la instrucción definitivamente tomaría más de un ciclo de reloj. Por lo tanto, las actividades de entrada y salida (como los accesos a la memoria) forzaron específicamente este comportamiento, lo que provocó una hinchazón artificial del programa. En general, los programas MIPS se vieron obligados a tener una gran cantidad de instrucciones NOP inútiles, un comportamiento que fue una consecuencia involuntaria. La arquitectura DLX no fuerza la ejecución de un solo ciclo de reloj y, por lo tanto, es inmune a este problema.
En el diseño de DLX se utilizó un enfoque más moderno para manejar instrucciones largas: reenvío de datos y reordenamiento de instrucciones. En este caso, las instrucciones más largas se "bloquean" en sus unidades funcionales y luego se vuelven a insertar en el flujo de instrucciones cuando se pueden completar. Externamente, este comportamiento de diseño hace que parezca que la ejecución se ha producido de forma lineal.
Cómo funciona
Instrucciones DLX pueden dividirse en tres tipos, de tipo R , de tipo I y J de tipo . Las instrucciones de tipo R son instrucciones de registro puro , con tres referencias de registro contenidas en la palabra de 32 bits. Las instrucciones de tipo I especifican dos registros y usan 16 bits para mantener un valor inmediato . Finalmente, las instrucciones de tipo J son saltos , que contienen una dirección de 26 bits.
Los códigos de operación tienen una longitud de 6 bits, para un total de 64 posibles instrucciones básicas. Para seleccionar uno de los 32 registros se necesitan 5 bits.
- En el caso de las instrucciones de tipo R, esto significa que sólo se utilizan 21 bits de la palabra de 32 bits, lo que permite utilizar los 6 bits inferiores como "instrucciones ampliadas".
- El DLX puede admitir más de 64 instrucciones, siempre que esas instrucciones funcionen únicamente en registros. Esta peculiaridad es útil para cosas como la compatibilidad con FPU .
DLX frente a MIPS
El DLX, al igual que el diseño MIPS, basa su rendimiento en el uso de una canalización de instrucciones . En el diseño de DLX, éste es bastante simple, con un concepto RISC "clásico" . La tubería contiene cinco etapas:
- IF - Unidad / ciclo de obtención de instrucciones
- IR <-Mem (PC)
- NPC <-PC + 4
- Operación: envíe la PC y obtenga la instrucción de la memoria en el Registro de instrucciones (IR) ; incremente la PC en 4 para direccionar la siguiente instrucción secuencial. El IR se utiliza para contener la siguiente instrucción que se necesitará en los ciclos de reloj subsiguientes; del mismo modo, el registro NPC se utiliza para contener el siguiente PC secuencial.
- ID - Unidad de decodificación de instrucciones
- Operación: Decodifica la instrucción y accede al archivo de registro para leer los registros. Esta unidad recibe instrucciones de IF y extrae el código de operación y el operando de esa instrucción. También recupera valores de registro si lo solicita la operación.
- EX - Unidad de ejecución / ciclo de dirección efectiva
- Operación: La ALU opera sobre los operandos preparados en el ciclo anterior, realizando una de las cuatro funciones dependiendo del tipo de instrucción DLX.
- Referencia de memoria: instrucción ALU de registro-registro, instrucción ALU de registro-inmediata
- Rama
- MEM - Unidad de acceso a la memoria
- Las instrucciones DLX activas en esta unidad son cargas, tiendas y sucursales.
- Referencia de memoria: acceda a la memoria si es necesario. Si la instrucción se carga, los datos regresan de la memoria y se colocan en el registro LMD (cargar datos de la memoria)
- Rama
- WB - Unidad WriteBack
- Normalmente se denomina "la unidad de almacenamiento" en la terminología moderna. Escriba el resultado en el archivo de registro, ya sea que provenga del sistema de memoria o de la ALU.
Ver también
Referencias
- Sailer, Philip M .; Kaeli, David R. (1996). El manual de arquitectura del conjunto de instrucciones DLX . Morgan Kaufmann. ISBN 1-55860-371-9.
- Patterson, David ; Hennessy, John (1996). Arquitectura informática: un enfoque cuantitativo (1ª ed.). Morgan Kaufmann . ISBN 978-1-55-860329-5.
- Patterson, David ; Hennessy, John (1994). Organización y Diseño de Computadoras (1ª ed.). Morgan Kaufmann . ISBN 978-1-55-860281-6.
enlaces externos
- El procesador DLX
- Instrucciones DLX
- WinDLX
- Simulador DLX (GNU GPL)
- Simulador ESCAPE DLX
- openDLX - Simulador DLX de código abierto en Java (GNU GPLv3)
- Verificación formal del procesador VAMP
- Procesador DLX asíncrono ASPIDA