DLX - DLX

DLX
Designer John L. Hennessy und David A. Patterson
Bits 32-Bit
Eingeführt 1994
Ausführung 1.0
Entwurf RISC
Typ Registrieren–Registrieren & Laden–Speichern
Codierung Fest
Verzweigung Zustandsregister
Endianität Bi-Endian
Erweiterungen Keine, aber MDMX & MIPS-3D könnten verwendet werden
Offen Jawohl
Register
Allgemeiner Zweck 31 (R0=0)
Gleitkomma 32 (gepaarter DP für 32-Bit)

Die DLX (ausgesprochen „Deluxe“) ist eine RISC - Prozessor - Architektur entworfen von John L. Hennessy und David A. Patterson , dem Hauptdesigner des Stanford MIPS und die Berkeley RISC - Designs (jeweils), die beide Benchmark Beispiele für RISC - Design ( mit dem Namen nach dem Berkeley-Design).

Der DLX ist im Wesentlichen eine aufgeräumte (und modernisierte) vereinfachte Stanford MIPS-CPU. Der DLX hat eine einfache 32-Bit- Load/Store-Architektur, etwas anders als die moderne MIPS-Architektur- CPU. Da das DLX in erster Linie für Lehrzwecke gedacht war, wird das DLX-Design häufig in Computerarchitekturkursen auf Universitätsebene verwendet.

Es gibt zwei bekannte " Softcore "-Hardwareimplementierungen: ASPIDA und VAMP. Das ASPIDA-Projekt hat einen Kern mit vielen netten Funktionen hervorgebracht: Er ist Open Source, unterstützt Wishbone , hat ein asynchrones Design, unterstützt mehrere ISAs und ist ASIC- erprobt. VAMP ist eine DLX-Variante, die im Rahmen des Verisoft-Projekts mathematisch verifiziert wurde. Es wurde mit PVS spezifiziert , in Verilog implementiert und läuft auf einem Xilinx FPGA . Ein vollständiger Stack vom Compiler über den Kernel bis hin zu TCP/IP wurde darauf aufgebaut.

Geschichte

In der Stanford-MIPS-Architektur bestand eine der Methoden zur Leistungssteigerung darin, alle Befehle in einem Taktzyklus auszuführen. Dies zwang Compiler zum Einfügen von " No-Ops " in Fällen, in denen der Befehl definitiv länger als einen Taktzyklus dauern würde. Somit haben Ein- und Ausgabeaktivitäten (wie Speicherzugriffe) dieses Verhalten gezielt erzwungen, was zu einer künstlichen Programmaufblähung führte. Im Allgemeinen waren MIPS-Programme gezwungen, viele verschwenderische NOP-Anweisungen zu verwenden, ein Verhalten, das eine unbeabsichtigte Konsequenz war. Die DLX-Architektur erzwingt keine Ausführung mit einem einzelnen Taktzyklus und ist daher gegen dieses Problem immun.

Im DLX-Design wurde ein modernerer Ansatz zum Umgang mit langen Anweisungen verwendet: Datenweiterleitung und Neuordnung von Anweisungen. In diesem Fall werden die längeren Befehle in ihren Funktionseinheiten "angehalten" und dann wieder in den Befehlsstrom eingefügt, wenn sie abgeschlossen werden können. Äußerlich erweckt dieses Entwurfsverhalten den Anschein, als ob die Ausführung linear erfolgt wäre.

Wie es funktioniert

DLX-Befehle können in drei Typen unterteilt werden, R-Typ , I-Typ und J-Typ . Befehle vom R-Typ sind reine Registerbefehle mit drei Registerreferenzen, die im 32-Bit-Wort enthalten sind. I-Typ-Befehle spezifizieren zwei Register und verwenden 16 Bits, um einen unmittelbaren Wert zu halten . Schließlich sind Befehle vom J-Typ Sprünge , die eine 26-Bit-Adresse enthalten.

Opcodes sind 6 Bit lang, für insgesamt 64 mögliche Basisbefehle . Zur Auswahl eines von 32 Registern werden 5 Bit benötigt.

  • Bei Befehlen vom Typ R bedeutet dies, dass nur 21 Bit des 32-Bit-Wortes verwendet werden, wodurch die unteren 6 Bit als "erweiterte Befehle" verwendet werden können.
  • Der DLX kann mehr als 64 Befehle unterstützen, solange diese Befehle ausschließlich auf Registern arbeiten. Diese Eigenart ist nützlich für Dinge wie die FPU- Unterstützung.

DLX vs. MIPS

Das DLX basiert wie das MIPS-Design seine Leistung auf der Verwendung einer Befehlspipeline . Im DLX-Design ist dies ein ziemlich einfaches, "klassisches" RISC- Konzept. Die Pipeline umfasst fünf Stufen:

IF – Anweisung Einheit/Zyklus abrufen
IR<-Speicher(PC)
NPC<-PC+4
Operation: PC aussenden und Befehl aus dem Speicher in das Befehlsregister (IR) holen ; Erhöhen Sie den PC um 4, um den nächsten sequentiellen Befehl zu adressieren. Der IR wird verwendet, um den nächsten Befehl zu halten, der in nachfolgenden Taktzyklen benötigt wird; ebenso wird das Register NPC verwendet, um den nächsten sequentiellen PC zu halten.
ID – Anweisung Dekodierungseinheit
Operation: Decodieren Sie den Befehl und greifen Sie auf die Registerdatei zu, um die Register zu lesen. Diese Einheit erhält Anweisungen von IF und extrahiert Opcode und Operanden aus dieser Anweisung. Es ruft auch Registerwerte ab, wenn dies von der Operation angefordert wird.
EX – Ausführungseinheit/effektiver Adresszyklus
Operation: Die ALU bearbeitet die Operanden, die im vorherigen Zyklus vorbereitet wurden, und führt je nach DLX-Befehlstyp eine der vier Funktionen aus.
Speicherreferenz: Befehl Register–ALU registrieren, Befehl Register–Immediate ALU
Zweig
MEM – Speicherzugriffseinheit
Die in dieser Einheit aktiven DLX-Befehle sind Laden, Speichern und Verzweigen.
Speicherreferenz: Bei Bedarf auf den Speicher zugreifen. Wenn der Befehl geladen wird, kehren die Daten aus dem Speicher zurück und werden im LMD-Register (Ladespeicherdaten) abgelegt
Zweig
WB – WriteBack-Einheit
In der modernen Terminologie normalerweise als "Ladeneinheit" bezeichnet. Schreiben Sie das Ergebnis in die Registerdatei, egal ob es vom Speichersystem oder von der ALU kommt.

Siehe auch

Verweise

  • Sailer, Philip M.; Kaeli, David R. (1996). Das Handbuch zur DLX-Befehlssatzarchitektur . Morgan Kaufmann. ISBN 1-55860-371-9.
  • Patterson, David ; Hennessy, John (1996). Computerarchitektur: Ein quantitativer Ansatz (1. Aufl.). Morgan Kaufmann . ISBN 978-1-55-860329-5.
  • Patterson, David ; Hennessy, John (1994). Computerorganisation und -design (1. Aufl.). Morgan Kaufmann . ISBN 978-1-55-860281-6.

Externe Links