Materialien zur Lehrveranstaltung. Technische Informatik Teil RA - Rechnerarchitektur - Folien zur Vorlesung. November 2015

Materialien zur Lehrveranstaltung l! Technische Informatik – Teil RA at er ia - Rechnerarchitektur - M Folien zur Vorlesung s November 2015 ...
Author: Britta Dressler
21 downloads 0 Views 3MB Size
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