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 MIPS de Stanford y RISC de Berkeley (respectivamente), los dos ejemplos de referencia del diseño RISC (que reciben su nombre del diseño de Berkeley).
El DLX es esencialmente una CPU MIPS de Stanford simplificada y modernizada. El DLX tiene una arquitectura de carga/almacenamiento simple de 32 bits , algo diferente a la arquitectura MIPS moderna . Dado que el DLX fue diseñado principalmente con fines didácticos, su diseño se utiliza ampliamente en cursos universitarios de arquitectura de computadoras.
Existen dos implementaciones de hardware de " núcleo blando " conocidas: ASPIDA y VAMP. El proyecto ASPIDA dio como resultado un núcleo con muchas características interesantes: es de código abierto, admite Wishbone , tiene un diseño asíncrono, admite múltiples ISA y está probado como ASIC . VAMP es una variante de DLX que fue verificada matemáticamente como parte del proyecto Verisoft. Se especificó con PVS , se implementó en Verilog y se ejecuta en una FPGA de Xilinx . Sobre él se construyó una pila completa, desde el compilador hasta el kernel y TCP/IP .
Historia
En la arquitectura MIPS de Stanford, uno de los métodos utilizados para mejorar el rendimiento consistía en forzar que todas las instrucciones se completaran en un solo ciclo de reloj. Esto obligaba a los compiladores a insertar instrucciones " no-ops " en los casos en que la instrucción tardaría definitivamente más de un ciclo. Por lo tanto, las actividades de entrada y salida (como los accesos a memoria) forzaban específicamente este comportamiento, lo que generaba un aumento artificial del tamaño del programa. En general, los programas MIPS se veían obligados a tener muchas instrucciones NOP innecesarias, un comportamiento que era una consecuencia no deseada. La arquitectura DLX no fuerza la ejecución en un solo ciclo de reloj y, por lo tanto, es inmune a este problema.
En el diseño DLX, se empleó un enfoque más moderno para el manejo de instrucciones largas: el reenvío de datos y la reordenación de instrucciones. En este caso, las instrucciones más largas se "bloquean" en sus unidades funcionales y luego se reinsertan en el flujo de instrucciones cuando pueden completarse. Externamente, este comportamiento de diseño da la impresión de que la ejecución se produjo de forma lineal.
Decodificación de instrucciones
Las instrucciones DLX se pueden clasificar en tres tipos: R , I y J. Las instrucciones R son instrucciones de registro puro , con tres referencias a registros contenidas en la palabra de 32 bits. Las instrucciones I especifican dos registros y utilizan 16 bits para almacenar un valor inmediato . Finalmente, las instrucciones J son saltos , que contienen una dirección de 26 bits.
Los códigos de operación tienen una longitud de 6 bits, lo que da un total de 64 instrucciones básicas posibles. Para seleccionar uno de los 32 registros se necesitan 5 bits.
- En el caso de las instrucciones de tipo R, esto significa que solo se utilizan 21 bits de la palabra de 32 bits, lo que permite que los 6 bits inferiores se utilicen como "instrucciones extendidas".
- El DLX puede admitir más de 64 instrucciones, siempre y cuando estas operen exclusivamente sobre registros. Esta particularidad resulta útil para funciones como la compatibilidad con la unidad de punto flotante (FPU) .
Tubería
El DLX, al igual que el diseño MIPS, basa su rendimiento en el uso de una arquitectura de segmentación de instrucciones . En el diseño DLX, esta es bastante simple, de concepto RISC "clásico" . La segmentación consta de cinco etapas:
- IF – Unidad/ciclo de obtención de instrucciones
- IR<-Mem(PC)
- NPC<-PC+4
- Funcionamiento: Se envía el contador de programa (PC) y se obtiene la instrucción de la memoria, almacenándola en el registro de instrucciones (IR) . El PC se incrementa en 4 para acceder a la siguiente instrucción secuencial. El IR se utiliza para almacenar la siguiente instrucción necesaria en los ciclos de reloj subsiguientes; asimismo, el registro NPC se utiliza para almacenar el siguiente PC secuencial.
- ID – Unidad de decodificación de instrucciones
- Operación: Decodifica la instrucción y accede al archivo de registros para leerlos. Esta unidad recibe la instrucción de la función IF y extrae el código de operación y el operando de dicha instrucción. También recupera los valores de los registros si la operación lo solicita.
- EX – Ciclo de unidad de ejecución/dirección efectiva
- Funcionamiento: 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 a registro, instrucción ALU de registro a inmediato
- Rama
- MEM – Unidad de acceso a la memoria
- Las instrucciones DLX activas en esta unidad son cargas, almacenes y bifurcaciones.
- Referencia de memoria: accede a la memoria si es necesario. Si la instrucción es de carga, los datos regresan de la memoria y se colocan en el registro LMD (cargar datos de memoria).
- Rama
- WB – Unidad de escritura diferida
- Generalmente se la conoce como "unidad de almacenamiento" en la terminología moderna. Escribe el resultado en el banco de registros, ya sea que provenga del sistema de memoria o de la ALU.
Véase también
Referencias
- Sailer, Philip M.; Kaeli, David R. (1996). Manual de la arquitectura del conjunto de instrucciones DLX . Morgan Kaufmann. ISBN 1-55860-371-9.
- Patterson, David ; Hennessy, John (1996). Arquitectura de computadoras: 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 archivado el 23/06/2015 en Wayback Machine .
- openDLX - Simulador DLX de código abierto en Java (GNU GPLv3)
- Verificación formal del procesador VAMP
- Procesador asíncrono DLX ASPIDA
- HERA: Arquitectura RISC educativa de Haverford
- Arquitecturas de conjuntos de instrucciones
- microprocesadores blandos