DLX-Mikroprozessor

aus Wikipedia, der freien Enzyklopädie

Wechseln zu: Navigation, Suche

Der DLX-Mikroprozessor ist eine hypothetische Prozessorarchitektur die von John L. Hennessy und David A. Patterson (den ursprünglichen Designern der MIPS und Berkeley RISC-Architektur) entwickelt wurde. Er wurde in dem - von beiden gemeinsam verfassten - Buch 'Computer Architecture: A Quantitative Approach' vorgestellt. Der DLX-Prozessor wird mit einem RISC-Befehlssatz (Reduced Instruction Set Computing) angesteuert und besitzt 32 Register, wobei R0 immer fest verdrahtet mit 0 ist. Der Hauptspeicherzugriff erfolgt byteweise. Weiterhin erfolgt der Speicherzugriff aligned und im Big Endian-Modus. Die Befehlswortlänge beim DLX beträgt 32 Bit; es gibt drei Befehlsformate (I-, R- und J-Format).

Inhaltsverzeichnis

[Bearbeiten] Die Bezeichnung DLX

Für die Herkunft der Bezeichnung "DLX "gibt es mehrere mögliche historische Erklärungen:

  • DLX wie deluxe
  • DLX als römische Zahl: 560 (Mittelwert aus den damals üblichen Prozessor-Architekturen: AMD 29K, DECstation 3100, HP 850, IBM 801, Intel i860, MIPS M/120A, MIPS m/1000, Motorola 88000, RISC 1, SGI 4D/60, SPARCstation-1, Sun-4/110, Sun-4/260)

[Bearbeiten] Registerbedeutungen

  • R0 null; unveränderlich
  • R1 reserviert für den Assembler
  • R2-R3 Funktionsrückgabewerte
  • R4-R7 Funktionsparameter
  • R8-R15 beliebig
  • R16-R23 Registervariablen
  • R24-R25 beliebig
  • R26-R27 reserviert für das Betriebssystem
  • R28 Globaler Pointer
  • R29 Stackpointer
  • R30 Registervariable
  • R31 Rücksprungadresse

[Bearbeiten] DLX Befehlsformate

Die Befehlsformate definieren die Aufteilung des 32-Bit-Befehls in Felder. Bei allen drei Formaten sind die ersten 6 Bit immer der Opcode.

[Bearbeiten] I-Format

Befehle dieses Formates sind Load/Store Instruktionen, arithmetische Befehle oder bedingte/unbedingte Sprünge. Die Instruktion besteht aus einem Quellregister rs1 und einem Zielregister rd, zusätzlich sind 16 Bit für den Immediate-Wert vorgesehen, die je nach Befehlstyp benutzt werden.

 0         5 6  10 11 15 16              31
 ==========================================
 | opcode   | rs1 |  rd |  immediate      |
 ==========================================

Beispielbefehle: LW, SW, JALR

[Bearbeiten] R-Format

Dieses Format wird benutzt um Operationen auf Registern durchzuführen, dabei werden die Quellregister rs1 und rs2 mit der Register-ALU Operation func ausgeführt, und das Ergebnis auf das rd–Register abgelegt.

 0         5 6  10 11 15 16 20 21        31
 ==========================================
 | opcode   | rs1 | rs2 |  rd |   func    |
 ==========================================

Beispielbefehl: SLT, ADD, SUB

[Bearbeiten] J-Format

Befehle dieses Formates sind Sprungbefehle. Die (dist)anz wird einfach auf den Befehlszähler hinzuaddiert.

 0         5 6                           31
 ==========================================
 | opcode   |            dist             |
 ==========================================

Beispielbefehle: J, JAL

[Bearbeiten] DLX Befehlssatz

Dies ist ein Auszug aus dem DLX-Befehlssatz ohne Floating-Point-Befehle.

                        

Instruction                       Instruction meaning
LB / LH / LW         R1,val(R2)   Load byte / load half word / load word
LBU / LHU            R1,val(R2)   Load byte unsigned / load half word unsigned
SB / SH / SW         val(R2),R1   Store byte / store half word / store word
LHI                  R1,#val      Load high immediate
ADD / SUB            R1,R2,R3     Add / subtract
ADDU / SUBU          R1,R2,R3     Add unsigned / subtract unsigned
ADDI / SUBI          R1,R2,#val   Add immediate / subtract immediate
ADDUI / SUBUI        R1,R2,#val   Add immediate unsigned / subtract immediate unsigned
AND / OR / XOR       R1,R2,R3     And / or / exclusive or
ANDI / ORI / XORI    R1,R2,#val   And immediate / or immediate / exclusive or immediate
SLL / SRL / SRA      R1,R2,R3     Shift left logical / shift right logical / shift right arithmetic
SLLI / SRLI / SRAI   R1,R2,#val   Shift- left log. / right log. / right arithmetic -immediate
SLT / SLE / SEQ      R1,R2,R3     Set- less than / less or equal than / equal
SLTI / SLEI / SEQI   R1,R2,#val   Set- less than / less or equal than / equal -immediate
SGT / SGE / SNE      R1,R2,R3     Set- greater than / greater equal than / not equal
SGTI / SGEI / SNEI   R1,R2,#val   Set- greater than / greater equal / not equal -immediate
BEQZ / BNEZ          R4,name      Branch equal zero / branch not equal zero
J                    name         Jump
JR                   R5           Jump register
JAL                  name         Jump and link (save return address in R31)
JALR                 R5           Jump and link register (save return address in R31)
val:  16 Bit Wert als Adress-Offset oder Immediate-Wert
name: 16 oder 26 Bit Adress-Distanz

[Bearbeiten] Siehe auch

[Bearbeiten] Weblinks

Persönliche Werkzeuge
Buch erstellen