Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen-...
Transcript of Technische Informatik - Rechnersysteme · ‚reale‘ CPU (Zilog Z80) Z80 CPU Pinout ... Maschinen-...
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
‚reale‘ CPU Opteron (AMD64)
Copyright © by Digit-Life.com, amd.com
Opteron Socket 940 Pinout ;-)
CPU, Prozessor (Z80 Lerncomputer)
im Allgemeinen eine Einheit,
bestehend aus
Rechenwerk und
Steuerwerk
‚reale‘ CPU (Zilog Z80)
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