Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen-...

Preview:

Citation preview

Thema 3

„von Neumann“ Architektur, CPU, Befehle

zus. Literaturempfehlungen

/1/ John von Neumann: First draft of a report on the

EDVAC.

/2/ Meiling, Fülle: Mikroprozessoren und Mikrorechner.

Akademie-Verlang Berlin 1988. Kap. 2

/3/ Tanenbaum: Computerarchitektur.

Pearson Studium 2001.

John von Neumann

geb. 28.12.1903 in

Budapest, Ungarn

gest. 8.2.1957 in

Washington DC, USA

Rechnerarchitektur nach

„John von Neumann“

in der Arbeit vom 30.06.1945

“First draft of a report on the EDVAC”

wurden die Grundlagen gelegt:

5 wesentliche Bestandteile einer Rechenanlage:

Arithmetik-Einheit

Steuer-Einheit

Speicher-Einheit

Eingabe- und Ausgabekanäle

Rechnerarchitektur nach

„John von Neumann“

Ausgabewerk

Rechenwerk

Steuerwerk

Eingabewerk Speicherwerk

Steuersignale Datensignale

Eingabewerk DIN 44300

Ausgabewerk DIN 44300

Eine Funktionseinheit innerhalb eines digitalen

Rechensystems,

Mit der das System Daten

von außen her aufnimmt

nach außen hin abgibt

Speicher(werk) DIN 44300

Eine Funktionseinheit innerhalb eines digitalen

Rechensystems,

die digitale Daten aufnimmt, aufbewahrt und abgibt.

Speicher(werk) DIN 44300

Eine Funktionseinheit innerhalb eines digitalen

Rechensystems,

die digitale Daten aufnimmt, aufbewahrt und abgibt.

Rechenwerk DIN44300

Eine Funktionseinheit innerhalb eines digitalen

Rechensystems, die Rechenoperationen ausführt.

- auch Vergleichen, Umformen,

Verschieben...

z.B. Addierschaltungen, Schieberegister,...

Leitwerk (Steuerwerk)DIN44300

Eine Funktionseinheit innerhalb eines digitalen

Rechensystems,

die die Reihenfolge steuert in der die Befehle eines Programms

ausgeführt werden,

die diese Befehle entschlüsselt und dabei gegebenenfalls

modifiziert,

die die für die Ausführung erforderlichen digitalen Signale

abgibt.

man unterscheidet:

Mikroprogramm-Leitwerk: CISC-Architektur

z.B. Z80, 68000, x86(bis 486), Mainframe

festverdrahtetes Leitwerk: RISC-Architektur

z.B SPARC, PowerPC, MIPS, ALPHA,

neuere x86 intern

CPU

heute: Busstruktur...

Speicherwerk Rechenwerk

Steuerwerk

Befehle Daten Adressen

Ein- und Ausgabekanal

Datenbus Adressbus Steuerbus

}Sammelleitungen

CPU, Prozessor (Desktop-Computer)

im Allgemeinen eine Einheit,

bestehend aus

Rechenwerk und

Steuerwerk

Opteron Socket 940 Pinout ;-)

CPU, Prozessor (Z80 Lerncomputer)

im Allgemeinen eine Einheit,

bestehend aus

Rechenwerk und

Steuerwerk

Z80 CPU Pinout

A0..A15 Adressbus

D0..D7 Datenbus

Steuerbus: /M1

/MREQ

/IORQ

/RD

/WR

/RFSH

/HALT

/WAIT

/INT, /NMI

/RESET

/BUSRQ

/BUSAK

Speicher (Desktop-Computer)

Gemeint ist der Arbeitsspeicher des Computers,

auch RAM genannt (Random Access Memory)

Größenordnung:

Desktop: 1-16GB

Server: …256 GB

Ein-und Ausgabe (Desktop-Computer)

Display (mit Grafikkarte) Audio, Netzwerk, USB-Anschluss, Maus, Tastatur, … aber auch Festplatte, DVD-Laufwerk, Flash-Speicher,…

Mini-Lerncomputer Raspberry Pi

iPhone 3GS PCB

Eigenschaften des vNR

Programme und Daten sind im Speicher in gleicher Weise

binär abgelegt.

die Bedeutung (Befehle, Daten, Adressen) ist nur aus dem Kontext

ersichtlich.

Programm- und Datenstrukturen sind für die Hardware nicht

erkennbar.

...

Die Abarbeitung eines Befehls erfolgt in zwei

(bzw. drei) Phasen

Fetch-Phase:

Lesen eines Speicherwortes

Befehlszähler erhöhen

wenn weitere Operanden nötig, diese Worte lesen sowie

Befehlszähler erhöhen

Dekodieren des Befehls (Decode-Phase)

Execute-Phase

Ausführung der durch den Befehl vorgegebenen Operation,

evtl. schreiben eines Speicherwortes

Modell-Rechner

00

01

02

03

04

05

06

07

08

09

0A

0B

...

CPU

IP

__

A

__

Register:

IP Instruction Pointer

A, B Register

IR Instruction Register

AR Address Register

Modellbefehle:

01 Laden vom Speicher in A

02 Schreiben von A in den Speicher

03 Kopieren A -> B

04 Addieren A = A + B

01

08

03

01

09

04

04

0A

04

03

IR AR

__ __

??

??

B

__

Vorgänge auf dem Bus

CPU MEM I/O 00 … 01 … 02 … 03 … 04 … 05 … 06 … 07 … 08 … 09 … 0A … 0B … 0C … 0D … 0E … 0F …

Adressbus Datenbus Steuerbus

*) ISA hier ‚Instruction Set Architecture‘

Maschinenprogrammierung, ISA*)

Codierung eines Programms ohne Nutzung einer

Höheren Programmiersprache

Nutzung der einzelnen CPU-Befehle

binäre Codierung notwendig

Vereinfachung: Assemblersprache

Anwendungen:

Spezialprogramme (Geschwindigkeit!)

eigentliche Geräteansteuerung (Treiber)

Betriebssystem-Kern

Maschinen- bzw. Assemblercodierung Z80

Addition zweier Zahlen - Hexcode 1800 3A6418

1803 47

1804 3A6518

1807 80

1808 326618

1864 04

1865 03

1866 ?

Assembler-Code 1800 LD A,(SP1) 1803 LD B,A 1804 LD A,(SP2) 1807 ADD A,B 1808 LD (SP3),A ............. 1864 SP1 DB 04h 1865 SP2 DB 03h 1866 SP3 DB 00h

Demonstration

Microprofessor MPF-1

Lerncomputer auf Z80

Basis

erstmals 1981 hergetellt

bis heute produziert

Demonstration

Register

schnelle Zwischenspeicher in der CPU

ursprünglich war nur ein ‚Akkumulator‘ im Rechenwerk

vorgesehen

heute sehr viele allgemeine Register im Rechenwerk und auch

spezielle Register im Steuerwerk vorhanden

allgemeine Register haben meist (mindestens) eine Bitbreite

entsprechend der Architektur

Auf die Registerinhalte werden u.a.

arithmetischen Befehle (ADD, SUB, INC, DEC, …)

Logische Befehle (AND, OR, …)

Verschiebe- und Rotationsbefehle

angewendet.

GP (general purpose) - Register zur Zwischenspeicherung von Daten u. Adressen

Bsp. AX (8086; EAX ab 80386), B (Z80), d3 (68000)

IP - Instruction Pointer (auch PC -- Programmcounter)

Flag - Register

Interne (für den Programmierer nicht zugänglich) z.B Adressregister, Befehlsregister

Programmstatuswort

Wichtige CPU-Register

Flag Register

S - Sign flag Z - Zero flag H - Half Carry P/V – Parity (even) or Overflow N – Subtract C – Carry

speichert Zustandsinformationen der CPU

Z80

7 6 5 4 3 2 1 0

S Z - H – PV N C

IA32

Befehle und Adressierungsarten

Befehle oder Instructions sind das, was die CPU kann!

Befehlsarten

arithmetische Befehle, logische Befehle, Sprungbefehle, Transferbefehle,

Kontrollbefehle

Klassifizierung

feste / variable Befehlslänge

feste / variable Operandenanzahl

Operationscode- Adress-Teil

Befehlsaufbau:

Üblich: feste Länge für Op-Code (n Bit)

2n verschiedene Befehle

oder:

mit Adressteil - kurzer Op-Code

...ohne - langer Op-Code

oder:

Op-Code-Länge entsprechend Häufigkeit

Beispiel Z80

Befehlslänge 1 Byte bis 4 Bytes

OC2

OC

OC

OC1

OC1

OC1

OC2

OC2

OC

OP

OP1 OP2

OP

OP1 OP2

3C INC A

3E05 LD A,5

2A3412 LD HL,(1234h)

DDF9 LD SP,IX

DD3401 INC (IX+1)

DD360105 LD (IX+1),5

Beispiel: IA32, AMD64(EM64T)

sehr komplexer Befehlsaufbau

Befehlslänge 1 Byte bis 18 Bytes

Legacy Prefixes: Vorsätze zur Modifikation des Befehls (z.B. REP) REX Prefix: für AMD64/EM64T Opcode: Befehlscode ModR/M: Register und Adressmodi SIB: Scale/Index/Base Byte zur Befehlsmodifikation Displacement: Verschiebung bzgl. Adressierung Immediate: Direktwert

Referenzstufen:

0: unmittelbare Adressierung

Wert des Operanden steht im Befehl

1: direkte Adressierung

Adresse des Operanden steht im Befehl

2: indirekte Adressierung

Adresse der Adresse des Operanden steht im Befehl

>2 wenig gebräuchlich

Problem der v-N-Architektur

Manipulation einzelner Speicherworte;

je Befehl mehrere Speicherzugriffe

Von-Neumann-Flaschenhals

Lösungen:

CISC-Architektur

getrennte Befehls- und Datenspeicherung für einen

gleichzeitigen Zugriff (Harvard-Architektur)

viele Universalregister (SPARC)

Befehlspipelining

Begriff “Semantische Lücke”

Semantik einer Programmiersprache:

Regeln und Konventionen, nach denen die Sprache

interpretiert wird

Semantik einer höheren PS (C++, Pascal,...) weicht ganz

erheblich von der des Maschinencodes ab

>>> Semantische Lücke

Beispiel von Hochsprachen

C++ Pascal Algol Fortran Assembler- sprache

Maschinen- code

Recommended