Teil 2: Rechnerorganisation Inhalt: Zahlendarstellungen Rechnerarithmetik schrittweiser Entwurf eines hypothetischen Prozessors mit Daten-, Adreß- und Kontrollpfad Speicherorganisation Mikroprogrammierung Entwurf einer hypothetischen CPU Prozessor = CPU ( Central Processing Unit ) Mikroprozessor = CPU auf einem Chip CPU = Steuerwerk + Rechenwerk Von Neumann Prinzip: Programme und Daten sind im gleichen Speicher E/A-Werk hier nicht weiter behandelt 2
Entwurf einer hypothetischen CPU (Forts.) Wieso zunächst Betrachtung einer hypothetischen CPU? hypothetische CPU: einfacher, übersichtlicher Aufbau aus bereits bekannten Komponenten einheitlicher Speicherzugriff kompakter Befehlssatz (ca. 25 Instruktionen) reale CPU: detaillierter Aufbau des Prozessors nicht dokumentiert verwirrende Vielzahl unterschiedlicher Speicherzugriffsmöglichkeiten sehr großer Befehlssatz (ca. 25 Instruktionen) viele neue, hier nicht betrachtete Architekturkonzepte (z.b. Instruktionspipelining, Parallelität, Out-of-Order Befehlsausführung) 3 Aufbau der hypothetischen CPU CPU besteht aus Datenpfad: Datenregister, ALU und MBR Adreßpfad: Programmzähler ( Program Counter, PC), Inkrementer und Adreßregister (MAR) Kontrollpfad: Instruktionsregister (IR), Kontrolleinheit ( Control Unit ) und Statusregister ( Condition Code Register, CCR) Speicher nicht Teil der CPU! 4 2
Speicherorganisation SRAM ( Static Random Access Memory ) mit 2 b Speicherzeilen allgemeiner Aufbau: 2 b n D-Flip-Flops je Zeile ein n-bit Wort Steuersignale E (Enable) und R/W (Read/Write) 5 RTL ( Register Transfer Language ) Arbeitsweise eines Prozessors läßt sich einfach durch Transfers von Registerinhalten beschreiben Notationen: [Di] [M(x)] [Y] [X] Beispiele: [D] [D] [D] [M(3)] [M(5)] [D] [D] [D]+ Inhalt von Datenregister D i Inhalt des Speichers M an Adresse x Transfer des Inhalts von Register X nach Register Y Registerinhalt von D nach D kopieren Speicherinhalt von Adresse 3 nach D kopieren Registerinhalt von D nach Speicheradresse 5 kopieren Registerinhalt von D inkrementieren [D] [M(AR)] Speicherinhalt von Adresse, die in einem Register AR enthalten ist, nach D kopieren RTL ist keine Programmiersprache! 6 3
Adreßpfad der hypothetischen CPU Adresse a ist eine b-bit Zahl, die die a-te Zeile eines Speichers aus 2 b Speicherzeilen auswählt jede n-bit Speicherzeile enthält eine Instruktion oder eine Zahl PC enthält die Speicheradresse der nächsten auszuführenden Instruktion Holen der nächsten Instruktion ( Fetch Phase) in RTL: FETCH: [MAR] [PC] [PC] [PC]+ [MBR] [M(MAR)] [IR] [MBR] CU [IR(Opcode)] 7 Adreßpfad der hypothetischen CPU (Forts.) Execute Phase: Ausführung der Instruktion in IR n-bit Instruktion besteht aus 8-Bit Befehlscode ( Operation Code oder Opcode ) und b-bit Adresse Ausführung jeder Instruktion unterschiedlich Beispiel: Execute Phase für die Instruktion MOVE 7,D in RTL: MOVE: [MAR] [IR(Addr)] [MBR] [M(MAR)] [D] [MBR] 8 4
Datenpfad der hypothetischen CPU n-bit ALU kann A) einstellige Operation auf Inhalt von Datenregister D ausführen (Beispiel: NOT D) B) zwei Operanden aus D und aus Speicheradresse a verknüpfen (Beispiel: ADD a,d) Auswahl der ALU-Funktion mittels Opcode und Steuerwerk Ergebnis einer arithmetischen oder logischen Operation in D Beispiel: Execute Phase für die Instruktion ADD 7,D in RTL: ADD: [MAR] [IR(Addr)] [MBR] [M(MAR)] ALU [D]; ALU [MBR] [D] ALU 9 Eine einfache n-bit ALU Arithmetische und Logische Einheit zur Addition, Multiplikation und bitweisen logischen Verknüpfung zweier n-bit Zahlen Aufbau: Auswahl von Addierer, Multiplexer oder Logikeinheit über zwei Multiplexer-Steuersignale ALU, ALU 2 5
Eine einfache n-bit ALU (Forts.) entweder die n höherwertigen oder die n niedrigwertigen Bits des 2n Bit breiten Produktes y = a b können ausgegeben werden bei Wahl von NOT= und CIN= kann Addierer auch y = a b berechnen Funktionen der Logikeinheit: F 2 F F Bedeutung y i = a i b i y i = a i + b i y i = a i b i y i = a i y i = a i y i = a i+ für i < n, y n = CIN, C = a y i = a i+ für i < n, y n = a n, C = a y i = a i für i >, y = CIN, C = a n Eine einfache n-bit ALU (Forts.) ALU generiert vier Statussignale: N=, wenn Ergebnis y negativ ist, d.h. wenn y n = Z=, wenn y = ist ( Zero ), d.h. wenn y n +... + y + y = V=, wenn im Addierer bei c n+ c n = ein Überlauf generiert wird ( overflow ) C=, wenn bei Addition oder Subtraktion zweier n-bit Zahlen das Carry-Bit c n+ gesetzt ist, oder: C=, wenn bei Linksschieben einer n-bit Zahl a das Bit a n = ist, bzw. wenn bei Rechtsschieben von a das Bit a = ist 2 6
Befehlssatz der hypothetischen CPU arithmetische und logische Befehle: AND a,d bitweise UND-Verknüpfung von [M(a)] und [D] OR a,d bitweise ODER-Verknüpfung von [M(a)] und [D] XOR a,d bitweise XOR-Verknüpfung von [M(a)] und [D] NOT D Negation (er-komplement) von [D] LSR D Logisches Rechtsschieben von [D], Bit nach C ASR D Arithmetisches Rechtsschieben von [D], Bit nach C ROR D Rechtsrotieren von [D], C nach Bit n, Bit nach C LSL D Logisches Linksschieben von [D], Bit n nach C ROL D Linksrotieren von [D], C nach Bit, Bit n nach C ADD a,d Addition von [M(a)] und [D] ADDC a,d Addition von [M(a)] und [D] und C SUB a,d Subtraktion [D]-[M(a)] MUL a,d Bits n,..., der Multiplikation von [M(a)] und [D] MULH a,d Bits 2n,...,n der Multiplikation von [M(a)] und [D] 3 Befehlssatz der hypothetischen CPU (Forts.) Lade- und Speicherbefehle: MOVE a,d MOVE D,a MOVE #x,d Laden von [D] mit Inhalt von Speicheradresse a Speichern von [D] in Speicheradresse a Laden einer Konstanten x in D beim Befehl MOVE #x,d befindet sich die Konstante x im Adreßfeld der Instruktion: zur Kodierung von x stehen nur b < n Bits zur Verfügung beim Transfer [D] [IR(Addr)] wird durch Ergänzung führender Bits mit Wert x b ein n-bit Operand generiert 4 7