40
Thema 3 „von Neumann“ Architektur, CPU, Befehle

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

  • Upload
    dangtu

  • View
    245

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

Thema 3

„von Neumann“ Architektur, CPU, Befehle

Page 2: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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.

Page 3: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

John von Neumann

geb. 28.12.1903 in

Budapest, Ungarn

gest. 8.2.1957 in

Washington DC, USA

Page 4: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 5: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

Rechnerarchitektur nach

„John von Neumann“

Ausgabewerk

Rechenwerk

Steuerwerk

Eingabewerk Speicherwerk

Steuersignale Datensignale

Page 6: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 7: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

Speicher(werk) DIN 44300

Eine Funktionseinheit innerhalb eines digitalen

Rechensystems,

die digitale Daten aufnimmt, aufbewahrt und abgibt.

Page 8: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

Speicher(werk) DIN 44300

Eine Funktionseinheit innerhalb eines digitalen

Rechensystems,

die digitale Daten aufnimmt, aufbewahrt und abgibt.

Page 9: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

Rechenwerk DIN44300

Eine Funktionseinheit innerhalb eines digitalen

Rechensystems, die Rechenoperationen ausführt.

- auch Vergleichen, Umformen,

Verschieben...

z.B. Addierschaltungen, Schieberegister,...

Page 10: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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.

Page 11: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 12: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

CPU

heute: Busstruktur...

Speicherwerk Rechenwerk

Steuerwerk

Befehle Daten Adressen

Ein- und Ausgabekanal

Datenbus Adressbus Steuerbus

}Sammelleitungen

Page 13: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

CPU, Prozessor (Desktop-Computer)

im Allgemeinen eine Einheit,

bestehend aus

Rechenwerk und

Steuerwerk

Page 15: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

Opteron Socket 940 Pinout ;-)

Page 16: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

CPU, Prozessor (Z80 Lerncomputer)

im Allgemeinen eine Einheit,

bestehend aus

Rechenwerk und

Steuerwerk

Page 18: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

Z80 CPU Pinout

A0..A15 Adressbus

D0..D7 Datenbus

Steuerbus: /M1

/MREQ

/IORQ

/RD

/WR

/RFSH

/HALT

/WAIT

/INT, /NMI

/RESET

/BUSRQ

/BUSAK

Page 19: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

Speicher (Desktop-Computer)

Gemeint ist der Arbeitsspeicher des Computers,

auch RAM genannt (Random Access Memory)

Größenordnung:

Desktop: 1-16GB

Server: …256 GB

Page 20: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

Ein-und Ausgabe (Desktop-Computer)

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

Page 21: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

Mini-Lerncomputer Raspberry Pi

Page 22: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

iPhone 3GS PCB

Page 23: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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.

Page 24: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

...

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

Page 25: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

__

Page 26: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 27: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

*) 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

Page 28: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 29: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

Microprofessor MPF-1

Lerncomputer auf Z80

Basis

erstmals 1981 hergetellt

bis heute produziert

Demonstration

Page 30: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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.

Page 31: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 32: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 33: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 34: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 35: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 36: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 37: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 38: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 39: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

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

Page 40: Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen- bzw. Assemblercodierung Z80

Beispiel von Hochsprachen

C++ Pascal Algol Fortran Assembler- sprache

Maschinen- code