Materialien zur Lehrveranstaltung
l!
Technische Informatik – Teil RA
at er
ia
- Rechnerarchitektur -
M
Folien zur Vorlesung
s
November 2015
lte
Verwendung in der Prüfung NICHT erlaubt!
A
Bitte benutzen Sie nur aktuelles Material! Die neueste Version finden Sie stets unter: tu-ilmenau.de/ra
TU Ilmenau, Fakultät IA, Fachgebiet Rechnerarchitektur, Prof. Dr. W. Fengler Druck und Vervielfältigung nur zum persönlichen Gebrauch!
Technische Informatik Teil RA
TI-RA
2015
Address Read/ Register Read EX ALU
l!
M
Next Instruction Address/ IP:=IP+4
Write Back/ Register Write
Memory Read/ MRD
at er ia
NIA IP+4
WB RWT
s
Instruction Decode/ Activate IDEC
OF RRD
lte
ID IDEC
A
IF MRD
Foto: © IBM Corporation http://www.research.ibm.com/journal/rd/492/gara.pdf
FG Rechnerarchitektur und Eingebettete Systeme
Technische Informatik Teil RA
0_010
l!
TI-RA
at er ia
Der folgende Foliensatz gilt ab Wintersemester 2015/2016. Er basiert zum größeren Teil auf diesem Foliensatz:
lte
s
M
Technische Informatik Teil RA (Rechnerarchitektur)
A
FG Rechnerarchitekturen (Prof. Fengler 03-2009) Diese ältere Fassung ist aber nicht mehr zu verwenden. FG Rechnerarchitektur und Eingebettete Systeme
Gliederung
1. Einführung
at er ia
2. Parallele Automaten zur Architekturmodellierung
1_010
l!
TI-RA
3. Grundprinzipien
M
4. Befehlssatz
s
5. Prozessor und Befehlsabarbeitung
lte
6. Speicher
A
7. Ein- und Ausgabe
8. Weiterführende Konzepte FG Rechnerarchitektur und Eingebettete Systeme
Weitere benötigte Materialien
TU Ilmenau, FG RA
Technische Informatik – Teil RA - Arbeitsblätter
1_020
Technische Informatik – Teil RA - Aufgaben
TU Ilmenau, FG RA
l!
TI-RA
Materialien zur Lehrveranstaltung
Technische Informatik – Teil RA
at er ia
Materialien zur Lehrveranstaltung
Technische Informatik – Teil RA Rechnerarchitektur
Rechnerarchitektur
Übungsaufgaben
s
M
Arbeitsblätter zur Übung
Verwendung in der Prüfung NICHT erlaubt!
A
lte
Zur Prüfung bitte im Originalzustand mitbringen!
Prof. Fengler
Däne / Nützel
Prof. Fengler
Däne / Karg / Nützel
Fengler, Karg, Däne, Fleischer 11-2008
Literatur
TI-RA
1_030
at er ia
l!
H.-D. Wuttke, K. Henke: Schaltsysteme - Eine automatenorientierte Einführung. ISBN 978-3-8273-7259-8, Pearson Studium 2006 C. Märtin: Einführung in die Rechnerarchitektur - Prozessoren und Systeme. ISBN 3-446-22242-1, Hanser-Verlag 2003
M
T. Flik: Mikroprozessortechnik und Rechnerstrukturen. ISBN 3-540-22270-7, Springer-Verlag 2005
lte
s
A. S. Tanenbaum, J. Goodman: Computerarchitektur. ISBN 3-8273-7148-1, Pearson Studium 2001 (neu 2006: ISBN 3-8273-7151-1)
A
Douglas E. Comer: Essentials of Computer Architecture. ISBN 0-13-149179-2, Prentice-Hall 2005 Siehe dazu auch www.tu-ilmenau.de/ra Fengler, Karg, Däne, Fleischer 11-2008
Übersicht: Symbolik für Automaten
TI-RA
Boolesche Schreibweise
modifizierte Schreibweise
UND
&
ODER
v
+
s
M
Logische Ausdrücke:
v
S1,y1
at er ia
l!
Zustand eines Automaten mit: Markierung für Initialzustand eindeutiger Bezeichner des Zustandes, hier: A1_1 alle Variablen, welche in diesem Zustand wahr (logisch EINS) sind, hier: S1 und y1
A1_1
A
Beispiel Verwendung in diesem Material
/ x1 x2 v x3 in Formeln v
lte
NICHT
tZugriff
2_010
Beispiel für eine Zeitbewertung
x1 & x2 + /x3 an den Automaten
Fengler, Karg, Däne, Fleischer 11-2008
2_020
lte
s
M
at er ia
l!
Simulation bei RA: eLearning
A
TI-RA
Fengler, Karg, Däne, Fleischer 11-2008
Beispiel zum Automaten: Blockbild
at er ia
Takt
2_030
l!
TI-RA
x1
M
Automat 1 S1
A
lte
s
y1
S2 Automat 2
y2
x2
Reset
System zweier gekoppelter Automaten Siehe auch „Übungsaufgaben“, Aufgaben AU-1 bis AU-4
Fengler, Karg, Däne, Fleischer 11-2008
Beispiel: Automatengraph mit Zeitverlauf TI-RA A1_1
y2 Automat 1
5
6
7
A2_3
S1&/x1
8
9
x210
11
12
S2
13
14
15
16
17
lte
y1
4
S2
S1
A
S2
S1
A1_4
s
x1 S1
at er ia
3
Takt x2
A2_2
y2
2
A1_3
y1,S1
A2_1
M
1
x1&/x2
y1
Automat 2 0
A1_2
l!
Automat 1
2_040
Automat 2 Fengler, Karg, Däne, Fleischer 11-2008
Eingebettete Rechner im Automobil 1
3_010
A
lte
s
M
at er ia
l!
TI-RA
Quelle: Schwefer, G.: Pattern-Oriented Transformations between Analysis and Design Models. Dissertation TU-Ilmenau 2008
FG Rechnerarchitektur und Eingebettete Systeme
Eingebettete Rechner im Automobil 2
3_020
A
lte
s
M
at er ia
l!
TI-RA
Quelle: Schwefer, G.: Pattern-Oriented Transformations between Analysis and Design Models. Dissertation TU-Ilmenau 2008
FG Rechnerarchitektur und Eingebettete Systeme
at er ia
Informationsverarbeitungssystem
Rechnernetz(e)
3_030
l!
Beispiel Eingebettetes Rechnersystem
Nutzer
Bedienelemente
M
Prozessor, Speicher, Ein-/ Ausgabe
s
Betriebssystem (-kern)
lte
Anwendungssoftware
Aktoren
Sensoren
Einbettendes (technisches) System
Weitere technische Systeme
A
TI-RA
FG Rechnerarchitektur und Eingebettete Systeme
Grundarchitekturen
TI-RA
at er ia
Datenspeicher
Ein- und Ausgabe
Programmspeicher
Datenspeicher
lte
s
M
Programmspeicher
Prozessor
Systembus Prozessor
A
Ein- und Ausgabe
Princeton-Architektur (von-Neumann-Architektur)
l!
Harvard-Architektur
3_040
Fengler, Karg, Däne, Fleischer 03-2009
An-2
D(An-2)
Ai+1
D(Ai+1)
Ai
D(Ai)
D(Ai)
A
lte
s
Ai
3_050
l!
D(An-1)
at er ia
An-1
M
Grundprinzip Adressierung
TI-RA
A2
D(A2)
A1
D(A1)
A0
D(A0) Fengler, Karg, Däne, Fleischer 03-2009
Adressierung 32-bit bei Bytestruktur
3_060
D(An-1)
D(An-2)
D(An-3)
D(An-4)
An-8
D(An-2)
D(An-6)
D(An-7)
D(An-8)
∙∙∙
∙∙∙
∙∙∙
∙∙∙
∙∙∙
Ai+4
D(Ai+7)
D(Ai+6)
D(Ai+5)
D(Ai+4)
Ai
D(Ai+3)
D(Ai+2)
D(Ai+1)
D(Ai)
∙∙∙
∙∙∙
∙∙∙
∙∙∙
∙∙∙
A8
D(A11)
D(A10)
D(A9)
D(A8)
D(A7)
D(A6)
D(A5)
D(A4)
D(A2)
D(A1)
D(A0)
A0
s
lte
A4
M
An-4
A
Ai (32 bit)
at er ia
l!
TI-RA
D(A3)
D(Ai+3,i+2,i+1,i) (32 bit)
Fengler, O.; Fengler, W.; 2015
Registermodell 32 bit
OR1/OA1: EAX OR2/OA2: EBX OR3/OA3: ECX OR4/OA4: EDX
at er ia
Rechenwerk (Data Path)
PSR (FLAGS) CF,ZF, SF,OF...
ALE (ALU,EX)
OP
OA (EDI)
lte
SP (ESP)
E A (I O)
s
... ...
S P (M E M)
M
OR1 (EAX) OR2 (EBX)
DBI
A
+4
3_070
l!
TI-RA
Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.1
DB
OR5/OA5: ESI OR6/OA6: EDI OR7/OA7: EBP SP(OA): ESP PSR/Flags: EFLAGS Wichtigste Flags: Carry (Übertrag) Overflow (Überlauf) Sign (Vorzeichen) Zero (Null)
FG Rechnerarchitektur und Eingebettete Systeme
Befehlsgruppen
TI-RA
Arithmetik- und Logikbefehle
Bitmanipulations- und Schiebebefehle
• Transportbefehle • Stackbefehle • Ein- und Ausgabe
• Grundrechenarten • Logische Grundoperationen • Vergleich / Test • Konvertierungen
s
M
at er ia
l!
Datentransferbefehle
4_100
• Schieben • Rotieren • Bit-Setzen / Rücksetzen
Sonstige Befehle
lte
Programmtransferbefehle
A
• Sprünge unbedingt / bedingt • Unterprogrammbefehle • Interruptbefehle
Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.2
• • • • •
Flagbeeinflussung Halt / Wait Modus-Steuerung NOP („No Operation“) …
Fengler, Karg, Däne, Fleischer 03-2009
Verwendete Symbole
TI-RA
wird ersetzt durch ...
Bemerkung
reg32
ein 32-bit-Register
const32
eine 32-bit-Konstante
const8
eine 8-bit-Konstante
mem
eine Speicherreferenz (mit 32-bit-Speicheradresse)
at er ia
l!
Symbol
lte
s
M
alle allgemeinen 32-bitRegister
ein vorzeichenbehafteter Zahlenwert im Programmcode ein vorzeichenloser Zahlenwert im Programmcode als IO-Adresse
siehe nächste Tabelle
A
label
4_110
ein Bezeichner, der vom Assembler durch eine Adresse ersetzt wird.
Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.3
FG Rechnerarchitektur und Eingebettete Systeme
Verwendetet Adressierungsarten
TI-RA
4_120
l!
... mit Speicherzugriff (Erläuterung für das Symbol mem) mem bedeutet hier
Beispiel
Direkt
[const32]
[03FF12FFH]
Indirekt
[reg32]
[ESI]
Index
[reg32 + const32]
[EAX - 0223H]
Basisindiziert
[reg32 + reg321)]
[ESP + ECX]
1)
s
... ohne Speicherzugriff
M
at er ia
Name der Adressierungsart
Operand
lte
Name der Adressierungsart
A
Register-Adressierung
Unmittelbare Adressierung („Direkt-Operand“)
ohne ESP Beispiel
reg32
EAX
const32
0FF004D56H
Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.3
FG Rechnerarchitektur und Eingebettete Systeme
Erweiterte Adressstrukturen
4_130
at er ia
l!
TI-RA
Basis-OA
Indexbasis-OA
+
+
Indexoffset-OA
lte
s
Offset-OA
M
+n -n
A
Gesamt-OA
Basisadressierung Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.3
Gesamt-OA
Indexadressierung Fengler, Karg, Däne, Fleischer 03-2009
4_140
l!
Adressbildung bei Segmentierung An-1
DWj Offset (DWj) Basis (TP 1)
M
TP 2
DWk Offset (DWk) Basis (TP 2)
at er ia
TI-RA
TP 1
lte
s
A0
A
Ein Adressraum für alle Teilprogramme
DW Datenwort TP Teilprogramm
Basis-Adr.: Änderung bei TP-Wechsel
Offset-Adr.: Änderung bei Arbeit in TP Gesamt-Adr.:
= Basis-OA + Offset-OA
Fengler, Karg, Däne, Fleischer 03-2009
RISC-Befehlssatz
4_150
l!
TI-RA
A
lte
s
M
at er ia
RISC: -> Reduced Instruction Set Computer
FG Rechnerarchitektur und Eingebettete Systeme
Transportbefehle
4_160
l!
TI-RA
Beschreibung
at er ia
MOV (Move)
Kopieren des Wertes des zweiten Operanden in den ersten Operanden Alle Flags bleiben unverändert. Beispiel MOV EAX, 0FFAB011CH
A
lte
s
MOV reg, reg MOV mem, reg MOV reg, mem MOV reg32, const32
M
Syntax
Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.2 Gilt für alle folgenden Befehle bzw. Befehlsgruppen
FG Rechnerarchitektur und Eingebettete Systeme
Stackbefehle
TI-RA
4_170
POP
Speichern des Operanden auf dem Stack
Laden des Operanden vom Stack
PUSH reg32
POP reg32
at er ia
l!
PUSH
Alle Flags bleiben unverändert.
Der Operand wird mit dem Inhalt der Speicherzelle, deren Adresse im Stackpointerregister ESP enthalten ist, geladen. Nach dem Laden wird ESP um vier erhöht.
M
Das Stackpointerregister ESP wird um vier verringert. Anschließend wird der Operand in der Speicherzelle, deren Adresse in ESP enthalten ist, abgelegt.
lte
PUSH EAX
Beispiel POP ECX
A
Beispiel
s
Alle Flags bleiben unverändert.
FG Rechnerarchitektur und Eingebettete Systeme
TI-RA
OA-Struktur nach LIFO-Prinzip
4_180
-1 (Schreiben)
at er ia
+1 (Lesen)
l!
DBI
SP
ABI
s
M
…
SP (initial)
SP – 1
erster Wert
2. Lesen: SP
SP + 1
2. Schreiben: SP
SP – 1
zweiter Wert
1. Lesen: SP
SP + 1
…
A
lte
1. Schreiben: SP
Speicherraum Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.2.5
Fengler, Karg, Däne, Fleischer 03-2009
OUT (Output) Ausgabe
Eingabe
OUT const8, EAX
IN EAX, const8
lte
Ausgabeoperation mit der durch den ersten Operanden gegebenen E/AAdresse aus dem im zweiten Operanden angegebenen Register Alle Flags bleiben unverändert. Beispiel
OUT 3FH, EAX
A
IN EAX, 40H
s
Alle Flags bleiben unverändert.
M
Eingabeoperation mit der durch den zweiten Operanden gegebenen E/AAdresse in das im ersten Operanden angegebene Register.
Beispiel
at er ia
IN (Input)
4_190
l!
Ein- und Ausgabebefehle
TI-RA
FG Rechnerarchitektur und Eingebettete Systeme
Arithmetikbefehle 1
TI-RA
4_200
l!
ADD, ADC
at er ia
Addition zweier Operanden ADD reg32, reg32
Die beiden Operanden werden addiert. Das Ergebnis der Operation wird im ersten Operanden abgelegt. Bei ADC wird zusätzlich der Wert des Carry-Flags hinzu addiert.
SUB, SBB
s
Subtraktion zweier Operanden
M
CF, ZF, SF und OF werden entsprechend dem Ergebnis der Operation gesetzt.
A
lte
Der zweite Operand wird vom ersten Operanden abgezogen. Das Ergebnis der Operation wird im ersten Operanden abgelegt. Bei SBB wird zusätzlich der Wert des Carry-Flags subtrahiert.
FG Rechnerarchitektur und Eingebettete Systeme
at er ia
INC Inkrementieren des Operanden Der Operand wird um Eins erhöht.
4_210
l!
Arithmetikbefehle 2
TI-RA
M
DEC Dekrementieren des Operanden Der Operand wird um Eins vermindert.
s
CMP Vergleich zweier Operanden
A
lte
Der zweite Operand wird vom ersten Operanden abgezogen. Es werden nur die entsprechenden Flags gesetzt, das eigentliche Ergebnis der Subtraktion wird nicht benutzt (beide Operanden bleiben unverändert). In Verbindung mit den entsprechenden bedingten Sprungbefehlen lassen sich damit Vergleiche durchführen und auswerten. FG Rechnerarchitektur und Eingebettete Systeme
Arithmetikbefehle 3
TI-RA
4_220
l!
MUL Multiplikation von 32 bit Werten (vorzeichenlos, vorzeichenbehaftet)
at er ia
MUL reg32
Der in Register EAX enthaltene 32 bit Wert wird mit dem Inhalt des angegebenen Registers multipliziert und das 64 bit Ergebnis in Register EDX (Bits 32-63) und EAX (Bits 0-31) abgelegt.
M
Alle Flags sind nach Ausführung der Operation in undefiniertem Zustand.
lte
DIV reg32
s
DIV Division eines 64 bit Wertes durch einen 32 bit Wert (vorzeichenlos, vorzeichenbehaftet)
A
Der 64 bit Dividend muss in den Registern EDX (Bits 32-63) und EAX (Bits 0-31) abgelegt sein. Dieser wird durch den im angegebenen Register enthaltenen Wert geteilt. Der Quotient wird in Register EAX abgelegt, der ganzzahlige Rest in Register EDX.
FG Rechnerarchitektur und Eingebettete Systeme
4_230
at er ia
OR Bitweise Oder-Verknüpfung zweier Operanden
l!
Logikbefehle 1
TI-RA
OR reg32, reg32
Die gleichwertigen Bits der beiden Operanden werden mit einem logischen Oder verknüpft und das Ergebnis an der Stelle des ersten Operanden gespeichert. CF und OF werden gelöscht, ZF und SF werden entsprechend dem Ergebnis gesetzt.
s
M
Beispiel OR EAX, EBX
lte
AND Bitweise Und-Verknüpfung zweier Operanden
A
Die gleichwertigen Bits der beiden Operanden werden mit einem logischen Und verknüpft und das Ergebnis an der Stelle des ersten Operanden gespeichert.
FG Rechnerarchitektur und Eingebettete Systeme
Logikbefehle - Datenformat
TI-RA
at er ia
l!
Datenformat
4_240
bitn-1 1. Eingabe-Operand
**
**
M
2. Eingabe-Operand
bit1 bit0
A
lte
s
Ergebnis
Operation
* kann UND, ODER oder EXKLUSIV-ODER sein
Inhalt Bit i Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.2.3
Fengler, Karg, Däne, Fleischer 03-2009
Logikbefehle 2
TI-RA
4_250
at er ia
l!
XOR Bitweise Exklusiv-Oder-Verknüpfung (Antivalenz) zweier Operanden
Die gleichwertigen Bits der beiden Operanden werden mit einem logischen Exklusiv-Oder verknüpft und das Ergebnis an der Stelle des ersten Operanden gespeichert. NOT Bitweise Negation des Operanden
A
lte
s
M
Jedes Bit des Operanden wird durch seine Negation ersetzt.
FG Rechnerarchitektur und Eingebettete Systeme
Bitbefehle
4_260
l!
TI-RA
at er ia
BTR, BTS BTR: Test und Rücksetzen eines Bits, BTS: Test und Setzen eines Bits BTR reg32, const8 BTS reg32, const8
Das Bit auf der durch den zweiten Operanden angegebenen Position wird im ersten Operanden rückgesetzt (=0; BTR) bzw. gesetzt (=1; BTS).
lte
BT Testen eines Bit
s
M
CF erhält den vorherigen Zustand des geänderten Bits. Die anderen Flags sind unbestimmt.
A
Das Bit auf der durch den zweiten Operanden angegebenen Position wird im ersten Operanden getestet (keine Änderung).
FG Rechnerarchitektur und Eingebettete Systeme
Schiebebefehle
at er ia
SHR, SHL Bitverschiebung innerhalb des ersten Operanden
4_270
l!
TI-RA
SHR reg32, const8 SHL reg32, const8
M
Die Bits des ersten Operanden werden um die im zweiten Operanden angegebene Anzahl Stellen nach links (SHL) bzw. rechts (SHR) verschoben. Dabei ist das höchstwertige Bit ganz links. Freiwerdende Bits werden mit Null aufgefüllt. Herausgeschobene Bits werden durch das Carry-Flag geschoben.
A
lte
s
OF ist nach der Operation undefiniert, ZF und SF sind entsprechend dem Ergebnis gesetzt. CF erhält den Wert des zuletzt herausgeschobenen Bits.
FG Rechnerarchitektur und Eingebettete Systeme
Schieben
at er ia
Beispiel: 2 mal schieben nach rechts
4_280
l!
TI-RA
bitn-1 bitn-2
M
Eingabe-Operand
bit1 bit0
lte
s
Ergebnis z.B. „0"
A
n mal schieben nach rechts n mal schieben nach links
Division durch 2n Multiplikation mit 2n
Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.2.4
Fengler, Karg, Däne, Fleischer 03-2009
ROR, ROL
at er ia
Bitrotation innerhalb des ersten Operanden
4_290
l!
Rotationsbefehle
TI-RA
Die Bits des ersten Operanden werden um die im zweiten Operanden angegebene Anzahl Stellen nach links (ROL) bzw. rechts (ROR) rotiert. Dabei ist das höchstwertige Bit ganz links. Bits, die den Operanden verlassen, werden auf der anderen Seite wieder eingefügt. Gleichzeitig werden diese in das Carry-Flag kopiert.
A
lte
s
M
ZF und SF bleiben unverändert. OF ist nach der Operation undefiniert. CF erhält den Wert des zuletzt herausgeschobenen Bits.
FG Rechnerarchitektur und Eingebettete Systeme
Rotieren
at er ia
Beispiel: 2 mal rotieren nach rechts
4_300
l!
TI-RA
bitn-1 bitn-2
M
Eingabe-Operand
bit1 bit0
lte
s
Ergebnis
A
Kein Verlust von Bitpositionen, nur Veränderung
Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.2.4
Fengler, Karg, Däne, Fleischer 03-2009
Programmablaufstrukturen Sprünge
at er ia
Verzweigung / Zusammenführung
4_310
l!
TI-RA
s
M
Verzweige-Befehl
A
lte
Zusammenführung (fest)
FG Rechnerarchitektur und Eingebettete Systeme
Sprungbefehle
TI-RA
at er ia
l!
JMP (Jump) Unbedingter Sprung
4_320
JMP label
Die Programmausführung wird mit der durch das Label gekennzeichneten Anweisung fortgesetzt.
M
Alle Flags bleiben unverändert. Beispiel JMP m1
lte
s
JNZ, JZ, JNC, JC (Jump if not zero, …) Bedingte Sprünge (Auswahl)
A
Bei erfüllter Bedingung wird die Programmausführung mit der durch das Label gekennzeichneten Anweisung fortgesetzt, ansonsten mit der dem Sprungbefehl folgenden Anweisung. Bedingungen: NZ = Zero-Flag nicht gesetzt, Z = Zero-Flag gesetzt, NC = Carry-Flag nicht gesetzt, C = Carry-Flag gesetzt. Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.2.6
FG Rechnerarchitektur und Eingebettete Systeme
TI-RA
Programmablaufstr. UP-Ruf / -rückkehr
at er ia
l!
Unterprogrammruf / -rückkehr
4_330
CALL (UP – Ruf)
Verzweigung (fest)
lte
s
M
Zusammenführung (variabel)
A
CALL
RET (Rückkehr)
FG Rechnerarchitektur und Eingebettete Systeme
Unterprogrammbefehle
TI-RA
at er ia
l!
CALL Unterprogrammaufruf
4_340
CALL label
lte
Beispiel CALL up1
s
Alle Flags bleiben unverändert.
M
Die Programmausführung wird mit der durch das Label gekennzeichneten Anweisung fortgesetzt, nachdem die Adresse des dem CALL folgenden Befehls auf dem Stack abgelegt wurde (siehe auch PUSH). Die Rückkehr zu dieser Adresse kann später durch den Befehl RET erfolgen.
A
RET (Return) Rückkehr vom Unterprogramm
Rücksprung aus einem Unterprogramm. Die Sprungadresse wird vom Stack geladen (siehe auch POP). Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.2.6
FG Rechnerarchitektur und Eingebettete Systeme
Unterprogramm verschachtelt I
UP
CALL UP
I
1
Adri
5
at er ia
0
II
CALL UP
M s lte
II
UP
2
Adrj
RET
4_350
l!
TI-RA
RET
3
4
A
x : Zeit nach Befehl
Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 2.2.6
Fengler, Karg, Däne, Fleischer 03-2009
Sonstige Befehle
TI-RA
4_360
l!
Bsp.:
at er ia
NOP (no operation) Keine Operation Syntax NOP
A
lte
s
Alle Flags bleiben unverändert.
M
Keine Operation.
FG Rechnerarchitektur und Eingebettete Systeme
Grundarchitekturen
TI-RA
5_010
Harvard-Architektur
Datenspeicher
Princeton-Architektur (von-Neumann-Architektur)
Ein- und Ausgabe
Programmspeicher
Datenspeicher
lte
s
M
Programmspeicher
A
Ein- und Ausgabe
at er ia
l!
5_010 entspricht 3_040
Prozessor
Systembus Prozessor
Fengler, Karg, Däne, Fleischer 03-2009
Grundarchitektur mit Systembus
5_020
at er ia
l!
TI-RA
M
Schnittstelle
Datenspeicher
Programmspeicher
Ein- und Ausgabe
A
lte
s
Prozessor
Systembus
Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 3.1
Fengler, Karg, Däne, Fleischer 03-2009
Prinzip von Bussen
5_030
l!
TI-RA
at er ia
DB
AB
SSi
M
Prozessor
lte
s
SSj
Block (Speicher / E/A)
Datenbus: Datentransfer bidirektional
A
Adressbus: Datentransfer unidirektional Steuerbus: Einzelsignale i.A. unidirektional Fengler, Karg, Däne, Fleischer 03-2009
Beispiel: Datenbus
TI-RA
D0
l! at er ia
D1
0 1 0 1
M
Dn-1
1
0
s
tk
lte
Änderungszeitpunkte
tk+1
Im konkr. Fall: 0 oder 1
A
1 Di 0
5_040
DB gesamt
Im konkr. Fall: Binärzahl
Siehe auch „Arbeitsblätter zur Übung“, Abschnitt 3.1
Fengler, Karg, Däne, Fleischer 03-2009
Prozessorgrundstruktur Rechenwerk (Data Path)
AST OP
M
OR1 (EAX)
S P (M E M)
OR2 (EBX)
DBI ABI
lte
s
BR (IR)
BA (IP)
PSR (FLAGS) CF,ZF, SF,OF...
ALE (ALU,EX)
BD (ID)
+1 (+n)
l!
Steuerwerk (Control Unit)
5_050
at er ia
TI-RA
DB
E A (I O)
AB
A
OA (EDI)
SBI (CBI)
SB (CB)
FG Rechnerarchitektur und Eingebettete Systeme
Erweiterte Prozessorgrundstruktur
AST
l!
Rechenwerk (Data Path)
Steuerwerk (Control Unit)
PSR (FLAGS) CF,ZF, SF,OF...
ALE (ALU,EX)
BD (ID)
OP
5_060
at er ia
TI-RA
S P (M E M)
OR1 (EAX) OR2 (EBX)
... ...
M
BR (IR)
E A (I O)
A
+4
lte
s
OA (EDI)
SP (ESP)
+4
OA-tmp
DBI ABI
BA (IP)
DB AB SB (CB)
SBI (CBI) FG Rechnerarchitektur und Eingebettete Systeme
Befehlsabarbeitung ALU-Befehl
TI-RA
Instruction Decode/ Activate IDEC
OF RRD
EX ALU
NIA IP+4
Next Instruction Address/ IP:=IP+4
M
Instruction Fetch/ Memory Read
ID IDEC
at er ia
IF MRD
l!
Address Read/ Register Read
5_070
Memory Read/ MRD
WB RWT
Write Back/ Register Write
A
lte
s
Arithmetik-Logik-Befehl (Bsp. SUB EAX, EBX) Befehl Lesen (IF) – durch Speicher Lesen (MRD) des Maschinencodes (Bsp. SUB, 00...00110011b, fiktiv)) Befehl Dekodieren (ID) – durch Aktivierung Befehlsdekoder IDEC 1. Operand: von Register OR1 (RRD) (z.B. EAX) 2. Operand: von Register OR2 (RRD) (z.B. EBX) ALU-Operation (EX) (Bsp. Subtraktion) Ergebnis nach Register OR1 (WB, RWT) (z.B. EAX) Erzeugen der nächsten Befehlsadresse (NIA) (z.B. IP:=IP+4)
FG Rechnerarchitektur und Eingebettete Systeme
Befehlsabarbeitung Speicher Lesen
ID IDEC
ADRR RRD
Instruction Decode/ Activate IDEC
MR MRD
NIA IP+4
Next Instruction Address/ IP:=IP+4
M
Instruction Fetch/ Memory Read
at er ia
IF MRD
l!
Address Read/ Register Read
5_080
Memory Read/ MRD
WB RWT
Write Back/ Register Write
lte
s
Speicher-Befehl (Lesen) (Bsp. MOV EAX, [EDI]) Befehl Lesen (IF) – durch Speicher Lesen (MRD) des Maschinencodes (Bsp. MOV , 00...00110011b, fiktiv)) Befehl Dekodieren (ID) – durch Aktivierung Befehlsdekoder IDEC Operanden-Speicheradresse: von Register OA (AR, RRD) (z.B. EDI) Speicheroperand lesen (MR, MRD) Speicheroperand: nach Register OR1 (WB, RWT) (z.B. EAX) Erzeugen der nächsten Befehlsadresse (NIA) (z.B. IP:=IP+4)
A
TI-RA
FG Rechnerarchitektur und Eingebettete Systeme
ID IDEC
IF MRD
Instruction Fetch/ Memory Read
ADR RRD
MW MWT
NIA IP+4
Next Instruction Address/ IP:=IP+4
Memory Write/ MWT
s
M
Instruction Decode/ Activate IDEC
at er ia
Address, Data Read/ RRD, RRD
5_090
l!
Befehlsabarb. Speicher Schreiben
lte
Speicher-Befehl (Schreiben) (Bsp. MOV [EDI], EAX) Befehl Lesen (IF) – durch Speicher Lesen (MRD) des Maschinencodes von Operation (Bsp. MOV , 00...00110011b, fiktiv)) Befehl Dekodieren (ID) – durch Aktivierung Befehlsdekoder IDEC Speicheradresse: von Register OA (ADR, RRD) (z.B. EDI) Schreibdaten: von Register OR1 (ADR,RRD) Speicheroperand nach Speicher schreiben (MW, MWT) Erzeugen der nächsten Befehlsadresse (NIA) (z.B.IP:=IP+4)
A
TI-RA
FG Rechnerarchitektur und Eingebettete Systeme
Instruction Decode/ Activate IDEC
FLR RRD
yes
JAR MRD
nNIA IP+4
no JumpAddr. Read/ MRD
yIPW RWT
Instr.Pointer Write/ Register Write
Next Instruction Address no/ IP:=IP+4
M
Instruction Fetch/ Memory Read
ID IDEC
at er ia
IF MRD
5_100
l!
Befehlsabarb. Bedingter Sprung
TI-RA
A
lte
s
Jcond-Befehl (Bsp. JNZ m2, 10...004b]) Befehl Lesen (IF) – durch Speicher Lesen (MRD) des Maschinencodes (Bsp. JNZ , 00...00110011b, fiktiv)) Befehl Dekodieren (ID) – durch Aktivierung Befehlsdekoder IDEC Lesen, Auswerten Flag-Register (FLR, RRD) (Bsp. Z-Flag) Erzeugen nächste Befehlskodeadr. (NIA), Adr. von Sprungadr. (z.B. IP:=IP+4) yes: (Z=0): Sprungadresse lesen (JAR, MRD) (Bsp. Adresse von m1) yes: Sprungadresse nach Instruction Pointer (yIPW) (Bsp. Adr. v. m1) no: (Z=1): Erzeugen nächste Befehlsadresse (nNIA) (Bsp. IP:=IP+4) FG Rechnerarchitektur und Eingebettete Systeme
Befehlsabarb. CALL
TI-RA
l!
Next Instruction Address after RET/ Stackpointer IP:=IP+4 Decrement CAR MRD
SPDEC SP-4
NIA IP:=up ID IDEC
Instruction Pointer Write
at er ia
CALL-Addr. Read
NIA IP+4
IPW MWT
Next Instruction Address/ IP:=upa
Instruction Decode NICA IP+4
M
IF MRD
5_110
Instruction Fetch
A
lte
s
Next Instruction Code Address Read CALL-Befehl (Bsp. CALL 200h]) (IP:=IP+4) Befehl Lesen (IF) – durch Speicher Lesen (MRD) des Maschinencodes (Bsp. von CALL , 00...00110011b, fiktiv)) Befehl Dekodieren (ID) – durch Aktivierung Befehlsdekoder (IDEC) Erzeugen der nächsten Befehlskodeadresse (NICA) (Bsp. IP:=IP+4) UP-Adresse (CAR) vom Speicher lesen (Adr. aus IP, MRD) (Bsp. 200h) Stackpointer dekrementieren (SPDEC): (Bsp. ESP:=ESP-4) Erzeugen der nächsten Befehlsadresse, gültig nach RET (NIA) Instruction Pointer (IPW) nach Speicher (Adr. aus SP) schreiben (MWT) Erzeugen der nächsten Befehlsadresse (NIA) (Bsp. IP:=200h)
FG Rechnerarchitektur und Eingebettete Systeme
Befehlsabarb. RETURN
ID IDEC
IF MRD
Stackpointer Increment
RAR MRD
SPINC SP+4
Instr.Pointer Write IPW RWT
s
M
Instruction Fetch
RET-Addr. Read
5_120
l!
Instruction Decode
at er ia
TI-RA
A
lte
RETURN-Befehl (Bsp. RET) Befehl Lesen (IF) – durch Speicher Lesen (MRD) des Maschinencodes (Bsp. JNZ , 00...00110011b, fiktiv)) Befehl Dekodieren (ID) – durch Aktivierung Befehlsdekoder IDEC Rückkehradr. lesen (RAR) mit Speicheradr. aus Stackpointer (Bsp. ESP) Stackpointer inkrementieren (Bsp. ESP:=ESP+4) Rückkehradresse nach Instruction Pointer (IPW) FG Rechnerarchitektur und Eingebettete Systeme
Interrupt
TI-RA
5_200
Interrupt-Programm (IP)
kein Zusammenhang mit Taste
Reaktion auf Taste
at er ia
l!
Hauptprogramm (HP) Taste 0 1
1. Bef.
M
Start IP
Interrupt
lte
Befi
100% Reaktion auf Taste
s
100% HP
t
A
Befi+1 100% HP
Rückkehr in das HP
IRET
Fengler, Karg, Däne, Fleischer 03-2009
Rettung des PSR
TI-RA
at er ia
INTi
M
ALE-Befehl setzt PSR
Interrupt-Programm
l!
Hauptprogramm
5_210
u.a. ALE-Befehl Setzt PSR
A
lte
s
Bed. Sprung wertet PSRBit aus
Falls weitere Register im Interrupt-Programm benötigt werden, müssen diese im Interrupt-Programm über Stack gerettet werden. Fengler, Karg, Däne, Fleischer 03-2009
Beispiel: Drucken im Hintergrund
TI-RA
5_220
Erstes Zeichen Speicherstruktur ausgeben Druckanforderung & übergeben Drucker-frei := 0 Drucker-frei = 1 Sp 1._Z-
at er ia
l!
Text bearbeiten Text bearb.
Überg.
Ausg.
M
Hauptprogramm
Interruptprogramm nächstes Zeichen
lte
s
Drucker passiv Interrupt_Dr
A
Drpassiv
Ende Druck!
ausgeben Ende / Ende Druck?
N_Zausg.
Ende
Drucker-frei := 1
Druckzeit FG Rechnerarchitektur und Eingebettete Systeme
Beispiel: Drucken im Hintergrund (genauer)
l!
at er ia
Text bearb.
Dr-frei
Sp Überg.
5_225
Erstes Zeichen ausgeben
Speicherstruktur übergeben Druckanforderung &
Text bearbeiten
Dr-belegt
1._ZAusg.
Drfrei
Drucker frei
M
Hauptprogramm Sp_Überg.
Drbelegt
lte
Drpassiv
Ende Druck!
Drucker belegt
nächstes Zeichen ausgeben
s
Drucker passiv Interrupt_Dr
A
TI-RA
Ende / Ende Druck?
N_Zausg.
Ende
Interruptprogramm
Druckzeit
FG Rechnerarchitektur und Eingebettete Systeme
Zeitverlauf dazu
Hauptprogramm
l!
a
p
5_230
1Z
at er ia
TI-RA
tZ
Interrupt-Programm
tZ
a
Interrupt_Dr
1Z Interrupt_Dr
lte
aktiv passiv ein Zeichen ausgeben Ready (Drucken) benötigte Zeit für das Drucken eines Zeichens (Druckzeit) benötigte Zeit für Interrupt-Annahme + Interrupt-Programm
A
a p 1Z RDY_INT tZ tIP
1Z
tIP