E. E. Modellrechner Modellrechner E.1. Einordnung
Einfache Rechnerarchitektur:von Neumann Rechnerarchitektur,Mima Akkumulatormaschine,MIPS-CPU ohne Pipeline,Ablaufsteuerung.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 1
Architektur: - Modellrechner, Pipelining, Out-Of-Order Technik
Systemprogrammierung: - Betriebssystemkonzepte, Ein- & Ausgabe
Digitaltechnik: - Logikbausteine, Schaltnetze & -werke, Zahlen
Elektronik
„Höhere Informatik“
B
C
G I
J
HF
D
K
Modellrechner E
E.2. MiMa - Minimalmaschine
Auf Grundlage einer "Von Neumann-Maschine":Programme und Daten sind in einem Speicher abgelegt,Speicherwörter können als Daten oder als Befehle dienen,Befehle werden nacheinander ausgeführt:
Phasen der Befehlsausführung:Fetch: holt den Befehl aus dem Speicher,Decode: bestimmt die gew. Funktion,Execute: führt die Operation durch.
Prozessor: engl. CPU, Central Processing Unit (ohne Speicher & E/A).Mikroprozessor: CPU auf einem Chip.Aktuelle Prozessoren weichen vom Modell des von Neumann Rechners ab und erreichen damit eine höhere Rechenleistung . . .
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 2
Speicherwerk
Steuerwerk
E/A-Werk
Rechenwerk Steuerleitungen
Daten
Instruktionen
E.2.1. Warum eine Minimal-MaschineVorteile:
kompakter Befehlssatz (etwa 20 Befehle),einfacher, übersichtlicher Aufbau,einheitlicher Speicherzugriff.
Realer Prozessorgroße Befehlssätze (zwischen 250 und 1000 Befehlen),detaillierter Prozessoraufbau meist gar nicht dokumentiert,viele verschiedene Speicherzugriffspfade,Überlappende Ausführung.
"Fortgeschrittene" Prozessoren:viele Adressierungsarten, virtueller Speicher,Pipelining, interne ParallelbearbeitungOut-of-order-Ausführung, Register Score Boarding, Sprungvorhersage, Pufferung ...
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 3
E.2.2. Minimalmaschine aus ProgrammierersichtElemente:
Akkumulator (z.B. 32 Bit),Speicher,ALU,E/A.
Instruktionen:Akkumulator als Operand,maximal eine Adresse pro Instruktion,Load... , Store ... , Jump ... , Rotate ... , V: Value, C: Constant, N: negative.
15 Instruktionen:LDV, STV, LDC,HALT, NOT, RAR,ADD, AND, OR, XOR, EQL,JMP, JMN,OUT, INP.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 4
ALU
Speicher
E/A
ACC
E.2.3. MiMa Instruktionssatz Vorerst 15 Instruktionen:
LDC Konstante // Load Constant, Konstante in Akkumulator ladenLDV Adresse // Load Variable, Speicherwort[ Adresse ] in Akkumulator ladenSTV Adresse // Store Variable, Akkumulator im Wort[ Adresse ] speichernADD Adresse // Speicherwort[ Adresse ] zum Akkumulator addierenAND Adresse // AND mit Speicherwort[ Adresse ] und AkkumulatorOR Adresse // OR mit Speicherwort[ Adresse ] und AkkumulatorXOR Adresse // XOR mit Speicherwort[ Adresse ] und AkkumulatorEQL Adresse // Vergleich zw. Speicherwort[ Adresse ] und AkkumulatorJMP Adresse // Jump, nächste Instruktion aus Speicherwort[ Adresse ] holenJMN Adresse // Springen falls Akkumulator negativOUT Gerät // Akkumulator[ 0:7] am Gerät ausgebenINP Gerät // Akkumulator[ 0:7] vom Gerät ladenHALT // Maschine anhaltenNOT // Akkumulator komplementieren (1er Komplement)RAR // Rotate Arithmetic, Akkumulator 1 Bit nach rechts schieben
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 5
E.2.4. Instruktionscodierung"Maschinensprache" der MiMa.Instruktionsformat (32-Bit z.B.):
8-Bit Codierung für Opcode:( $00, $10, $20, $30 ) = ( ADD, AND, OR, XOR ),( $40, $50, $60 ) = ( LDV, STV, LDC ),( $70, $80, $90 ) = ( JMP, JMN, EQL ),( $A0 ... $E0 ) = reserviert.( $F0, $F1, $F2 ) = ( HALT, NOT, RAR ),( $F3, $F4, … ) = ( OUT, INP, …),Opcodes reservieren für Indexregister-Befehle etc. .
Möglicherweise 16-Bit Minimalmaschine:4-Bit Opcodes mit 12-Bit Parameter,($F0 .. $F4) => ($A .. $E).
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 6
8-Bit Opcode
24-Bit Instruktionsparameter
E.2.5. MiMa Programm im Speicher:MiMa-Speicherauszug:
Hexadezimale Notation,Programmstart bei 0C,Variable X bei 0A.
IF-Anweisung in Pascal:
if X < 0 then write( output, '1' ) else write(output, '2' );
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 7
X:
LDV X
JMN then
JMP else
LDC '1'
OUT 200
JMP endif
LDC '2'
OUT 200
HALT
09 . . .
0A F0112233
0B . . .
0C 4000000A
0D 8000000F
0E 70000012
0F 60000031
10 F30000C8
11 70000014
12 60000032
13 F30000C8
14 F0000000
E.2.6. Blockschaltbild der MinimalmaschineEinheiten:
Steuerwerk,Rechenwerk,Speicherwerk,Ein-/Ausgabe,Transportbus.
Register:Akkumulator,Instruktionsreg,Instruktionsadr,Memoryadresse,Memorybuffer,X, Y, Resultat,Deviceadresse.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 8
ALU
BUS
RES
X YIAR IR
Steuerwerk
Speicher
MAR MBR DAR
E/A
ACC
E.2.7. Ablauf von MaschinenbefehlenArbeitsweise eines Prozessors lässt sich gut durch den Transfer von Daten
zwischen Registern beschreiben:pro Taktzyklus wird ein Wort über den Bus transportiert,eine Maschineninstruktion benötigt mehrere Taktzyklen,hier beispielsweise 32-Bit Wörter.
Ausführung in 3 Phasen (z.B.):FETCH: Instruktion aus dem Speicher holen,DECODE: Operationscode bestimmen,EXECUTE:Operation ausführen.
Unsere Notation zur Beschreibung des Ablaufes:Registerinhalte: ACC, MBR, X, Y, ...Teilregister: ACC[0:23]Transport: IR <= MBRSteuersignal: read(mem) ...
Dies ist nicht die standardisierte Register-Transfer-Sprache.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 9
FETCH
DECODE
EXECUTE
E.2.8. Beispiel eines Maschinenbefehls in Assemblernotation: LDV 14 (= Load Variable 14):
Lade Speicherwort 14 in den Akkumulator,Hier 32 Bit Instruktionen:
6 Ausführungszyklen:MAR <= IAR; X <= IAR; // 2 Empfänger im selben Transportzyklusread(mem); Y <= 1; // Instruktion holen (fetch), IAR inkrement, add(alu); IAR <= RES; // IAR inkrementIR <= MBR; MAR <= MBR // Instruktion decodieren (decode), MAR vorsorglichread(mem); // Speicherwort M[MAR] lesenACC <= MBR; // Speicherwort zum ACC, Instr. ausführen (execute)
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 10
LDV=$04
Adresse=$00000E
02331
Opcode Instruktionsparameter
E.2.9. Steuerwerk / Leitwerk / Control UnitErzeugt die Steuersignale synchron zum Systemtakt:
Registerinhalte vom Bus lesen,Registerinhalte auf den Bus legen,Schreib/Lesebefehle zum Speicher,Funktionsvariante der ALU,Aktivieren der E/A-Einheit . . .
Vorzeichenbewertung:erlaubt eine bedingte Instruktionsausführung,z.B. Jump on negative: Jmn <Adresse> ,vorderstes Bit im Akkumulator.
Minimalmaschine:Keine Überlaufanzeige,keine Interrupts ...
Die Ausführung einer Maschineninstruktion erfolgt eigentlich als µ-Programm durch das Steuerwerk (=>PLA/ROM).
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 11
Steuerwerk
FETCHDECODEEXECUTE
Zyklus# 1..6..
E.2.10. Ein- und AusgabeeinheitAusgabe: OUT Geräte#
8 Bit Zeichen in Akkumulator[0:7] Gerätenummer in Device-Address Register.Steuersignal "Ausgabe".
Eingabe: INP Geräte#Gerätenummer in Device-Address Register,Steuersignal "Eingabe",8 Bit in den Akkumulator[0:7] lesen.
In realen Systemen elegante und autonome E/A-Konzepte:Interrupt-Anforderungen durch die externen Geräte,Direkte Übertragung ganzer Datenblöcke (DMA),Geräteregister in einem E/A-Adressraum ...
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 12
ACC
DAR E/A
E.2.11. SRAM Speicher - Static Random Access Memory
Aufbau eines SRAM Speichers mit 2b Zellen:
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 13
E.3. MIPS Einzelzyklusmaschine E.3.1. Vereinfachte Sicht einer MIPS (=> Ti-1).
Informationsflüsse:Steuersignale, Speicherdaten, Registerdaten, Adressen, (Instruktionen)
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 14
Register- satzInstruktions-
speicher +
(Steuerwerk)
ALU
Daten-speicher Daten-speicher
E.3.2. Einzelzyklusmaschine etwas genauerEtwa Patterson & Hennessy: Rechnerorganisation & -entwurf (Elsevier).Register, ALUs, Multiplexer, Speicher.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 15
Register- satzP
Z Instruktions-speicher
4
Daten-speicher
ALU
+
Sign ext.
Shift 2
+
E.3.3. Befehlsholphase – "Instruction Fetch"Programmzähler (32 Bit, engl. Program Counter/PC):
speichert und liefert die aktuell auszuführende Instruktionsadresse,an den Instruktionsspeicher und an das Addierwerk (a),übernimmt die Adresse der Folgeinstruktion (c).
Addierwerk:Fortlaufende Addition mit 4, da 4-Byte Instruktionen (b),Der neue Wert für PZ wird im Register gespeichert (c),Die hintersten 2 Bit im PZ sind immer null.
Instruktionsspeicher:Liefert die auszuführende Maschineninstruktion (b),Hier als statischer Festwertspeicher vorgestellt,keine Taktung, kein Refresh,also ein Schaltnetz.
Instruktionswort (32 Bit):Gelesener Befehl erscheint am Ausgang des Speichers,Instruktionsformat bestimmt den weiteren Ablauf,Instruktion hier nicht als Register realisiert.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 16
P Z Instruktions-
speicher
+4
Inst
rukt
ion
(b)
(a)
(c)
(b)
E.3.4. Zeitverhalten der Instruktionsholphase Programmzähler aus 32 Master-Slave Flip-Flops:
flankengesteuert entsprechend Pattterson & Hennessy (Pegelsteuerung auch möglich),Master übernimmt neuen Wert bei ansteigender Taktflanke (noch keine Ausgabe),Slave liefert Instruktionsadresse bei absteigender Taktflanke,Instruktionszyklus beginnt mit absteigender Taktflanke.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 17
n+4
n+4 n n+8
low high low high
n+4n n+8
Instruktion[n+4] ..-4
n
Instruktion[n]
tTakt
tMasterPZ
tSlavePZ
tALU-out
tSpeicher-out
Instruktion[n] Instruktion[n+4]
E.3.5. Versuch einer AnimationAblauf:
-1. Stabiler Wert am PZ-Eingang,0. Ansteigende F.: Master übernimmt Wert,1. Abfallende F.: Slave übernimmt Wert,2. Weitergabe an Speicher & Incrementer,3. Incrementer ist fertig, neuer PZ stabil,4. Absteigende Flanke, Master übernimmt ...
Die Flanken leiten jeweils eine neue Taktphase ein. Während einer halben Taktperiode können sich die Signale durch die Schaltung fortpflanzen.N.B.: Das Weiterschalten des
PZ-Registers würde auch bei unendlich schnellem Incrementer nur Schritt für Schritt geschehen (No race, no hazard).
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 18
Master Slave
Master Slave
Master Slave
Master Slave
t
0
12
-1
3
4
E.3.6. Decodierungsstufe ("Instruction Decode")z.B. R-Format Instruktion:
Zwei Register lesen, eines schreiben,gelesene Register weiter zur ALU,Drei Instruktionsfelder à 5 Bit:Resultat zurück von ALU.
Quell/Input-Register für die ALU:ALU ist die Stufe nach dem Registersatz,rt=IR[20-16] selektiert Register[rt] zur ALU,rs=IR[25-21] selektiert Register[rs] zur ALU.
Zielregister für Resultat von ALU:rd=IR[15-11] wählt Register[rd] für Resultat.
Ansteuerung des Registersatzes:Register immer auslesen (kein Takt) und Transport zur ALU bzw. zum Multiplexer,Schreiben des Zielregisters ( Register[rd] ) am Ende der Taktperiode.
Keine Vorzeichenerweiterung, da kein Immediate-Operand im R-Format.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 19
Registersatz
Sign ext.
25-21
r[25-21]
Res
=>
r[15-
11]
20-16
r[20-16]15-11In
stru
ktio
n
opcode rs rt rd shamt func
E.3.7. Zeitverhalten der InstruktionsdecodierungZeit für Speicherzugriff und für die primäre ALU muss eingeplant werden.Ausgabe des Instruktionsspeichers wird über die ganze Dauer gehalten.Wäre das Resultat früher bereit, so könnte der Rechner schneller laufen.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 20
low high low high tTakt
Instruktion[n] Instruktion[n+4]
Registerindizes aus Instruktion trs,rt,rd
treg[rs,rt]
Resultatregister schreiben treg[rd]
ALU, Datenspeicher
Quellregister ausgeben
z.B. I-Format Instruktion:
Ein Basis-/Indexregister: rs=IR[25-21],Ein Ziel-/Quellregister: rt=IR[20-16],Direktoperand: imm=IR[15-0].
Umschalten von IR[20-16]:je nachdem ob R- oder I-Format vorliegt, Quellregister bei Store-Instruktionen,Zielregister bei Load-Instruktionen,zusätzlichen Multiplexer vorsehen.
Multi-Ported Registersatz:Zwei gleichzeitige Lesezugriffe im selben Taktzyklus,Kein Schreibzuriff bei Store-Operationen (Mem-Write),zwei Lesebusse, ein Schreibbus zu den Registern.
Vorzeichenerweiterung des Direktoperanden von 16 auf 32 Bit:erleichtert die Unterbringung kleiner Konstanten im Instruktonsformat,vom Steuerwerk aus abschaltbar für „Unsigned“ Befehle.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 21
opcode rs rt Direktoperand
Registersatz
Sign ext.
25-21
r[25-21]
Res
ulta
t
20-16
r[20-16]15-11In
stru
ktio
n
E.3.8. Binäres Format der InstruktionenFormatbetrachtung mithilfe eines Testprogrammmes:
.textMain: # R-Format: add $1,$0,$31 # hex: 001f0820 # binaer: 000000,00 000,11111 00001,000 00,100000 # op, rs, rt, rd
sub $1,$31,$0 # hex: 03e00822 # binaer: 000000,11 111,00000 00001,000 00,100010
and $31,$0,$1 # hex: 0001f824 # binaer: 000000,00 000,00001 11111,000 00,100100
# i-Format # Vorsicht, unalignierte Adresse lw $7,0x0aff($3) # hex: 8c670aff # binaer: 100011,00 011,00111,00001010 11111111 # index target
# i-Format sw $7,0x0aff($3) # hex: ac670aff # binaer: 101011,00 011,00111,00001010 11111111 # index source addi $2,$0,10 # request exit syscall # that is all
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 22
E.3.9. Ausführungsstufe – "Execute"Getrennter Addierer zur Sprungzielberechnung:
Prüfschaltung auf Gleichheit zweier Register in der primären ALU ( „eql“ ),Bedingte Sprünge mit einem 16-Bit Direktoperanden ( beq $7, $8, loop ),maximal möglicher Offset von +/-17 Bit nach einer 2-Bit Verschiebung,unbedingte Sprünge mit 28-Bit Adresse werden später eingeführt.
Adressierung von Variablen im Speicher:Adressrechnung in der primären ALU,Basisregister plus Direktoperand,Registerinhalt lesen/schreiben.
Registeroperationen:Operanden im Register oder als Direktoperand,üblicher Satz an ALU-Operationen,Register $0 liefert den Wert 0.
Load-/Store-Architektur:Speicheroperationen können keine Arithmetik,also z.B. kein inc 0xaff0($basis), 0x0004,ALU wird schon zur Adressrechnung benötigt.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 23
ALU
Shift 2
+
Sprung-adresse
Daten/ Adresse
Speicher-wert
PZ+4
Direkt-operand
Basis-register
Register-operand
eql
E.3.10. Speicherzugriff – "Memory Access"Getrennte Speicher für Code & Daten:
Aktuelle Instruktion wird bis zum Ende des Gesamtzyklus gehalten, kein zweiter Zugriff möglich.
Quellregister speichern falls Store:Speichersteuerung durch besonderes Schreibsignal.
Zielregister laden:falls Ladebefehl aus dem Speicher,falls Rücksprungadresse (Magic),falls Resultat aus ALU.
ALU-Resultat nutzen:Für "Register-Write-Back",als Datenspeicheradresse,nicht direkt speichern.
Multiplexer evtl. in nächste Stufe.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 24
Daten-speicher
ALU Resultat
Speicheradresse
Schreibsignal
Wert aus Quellregister
Ziel
regi
ster
E.3.11. Register zurückschreiben – "Write Back"Multiplexer evtl. in Speicherstufe verschieben.Nummer des Zielregisters (Zielregisterselektor):
stammt aus IR[15-11] oder IR[20-16], 5-Bit Bereich 0-31.
Steuersignal:Zielregister zum Ende des Instruktionszyklus schreiben,Schreibsignal an Registersatz falls nötig.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 25
Register- satz
Zum Zielregister
ALU Resultat
gelesenes Speicherwort
Zielregister-selektor
Schreibsignal
E.3.12. Ergänzung mit weiteren SprungbefehlenPseudorelative Sprungadressierung (Jump xLabel):
kein separater Addierer erforderlich, nur ein zusätzlicher MUX-Eingang,Die obersten 4 Bits bleiben unverändert, die unteren 28 Bit werden ersetzt,Jump-and-Link sichert den alten Pogrammzähler im Register 31 (Subroutine).
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 26
Register- satzP
Z Instruktions-speicher
4
Daten-speicher
ALU
+
Sign ext.
Shift 2
+
31
4,26,2
eql
E.3.13. Erforderliche Steuerleitungen:Für Speicher:
2 Bit Steuersignal: 0/8/16/32 Bit zum Datenspeicher schreiben,Instruktionsspeicher liest immer.
Für Registersatz:2 Bit Steuersignal: 0/8/16/32 Bit zum Registersatz schreiben,Register erst am Ende der Instruktionsausführung laden.
Für 4 Multiplexer:2 Bit: Auswahl des Zielregisters (1 aus 3),2 Bit: Datenquelle für Zielregister,2 Bit: Sprungziel wählen,1 Bit: ALU-Eingang unten (B-Op).
Für arithmetische Elemente:1 Bit: Vorzeichenerweiterung,2 Bit: Zero-/Nonzerotester,5 Bit: ALU-Operation.
Ca. 20 Steuersignale sind erforderlich => mittelgrosses PLA auf Chip.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 27
PLA
Opcode(6)
Function(6)
eql-Bit(1)
E.4. Provisorische Fazit
Programmzählerregister PZ wird in jedem Taktzyklus neu gesetzt.Taktperiode muss so lang sein wie die längste Instruktion:
fetch, decode, execute, memory, write-back,load word.
Flexibler aber reduzierter Instruktionssatz:vorerst keine Fliesskomma-Arithmetik,vorerst keine Unterbrechungen,vorerst keine Teilwörter.
Nur etwa 20 Steuersignale => einfaches Steuerwerk !Mehrheitlich ungetaktete Schaltnetze:
ALU, Speicher, Incrementer, Vergleicher, Multiplexer, Vorzeichenerweiterung
Aber eine Einzyklenmaschine ist unwirtschaftlich:die Komponenten arbeiten jeweils nur einen kleinen Teil der Gesamtzeit,Zeitverlust bei potentiell kurzen Instruktionen,
Empfehlung: überlappende Instruktionsausführung.
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 28
E.5. Überblick und Historie
Rechner vor 1980:Meist komplexer Instruktionssatz (CISC) und umfangreiches Steuerwerk,Spezielle Instruktionen zur Unterstützung von Hochsprachen,Steuerwerk mit grossem ROM und evtl. Mikroprogramm,Wenige Register, kostspieliger Hauptspeicher,Intel, Burroughs 5000 Serie, IBM 360/370 ...
RISC – Reduced Instruction Set Computers (ab 1980):Hochintegrierte Schaltkreise, gesamte CPU auf einem Chip (Mikroprozessor),Viel Chip-Area für Register, wenig für Steuerwerk, einfache Instruktionen,Optimierende Compiler, "Explicit Instruction Scheduling",Beispiele: Berkeley RISC, IBM 801, SUN Sparc, MIPS ...
Aktuelle Rechnersysteme:Grosszügiger Umgang mit Transistoren und Chipfläche,Mehrfache Recheneinheiten und Rechnerkerne,Out-of-Order Execution,Intel x86, AMD 64 ...
Technische Informatik 2, Winter 2008/09, © VS Informatik, Uni Ulm, P. Schulthess E - 29
Top Related