Programmieren-04-Funktionsweise von Computern-3

Werbung
Vorlesung „Programmieren“
Funktionsweise von Computern
Prof. Dr. Stefan Fischer
Institut für Telematik, Universität zu Lübeck
http://www.itm.uni-luebeck.de/people/fischer
Inhalt
1. Ein Blick zurück
2. Stand der Technik
3. Funktionsweise von Computern
2
Ein Blick zurück
Überblick
•
„Mechanische Ära“
– 1623: Rechenmaschine von Wilhelm
Schickard
– 1642: Pascaline
– 1805: Jacquardwebstuhl
– 1822: Difference Engine
– 1834: Analytical Engine
•
„Elektromechanische Ära“
– 1936: Zuse Z1
– 1941: Zuse Z3
•
•
„Transistoren Ära“
– 1960: PDP 1
– 1964: IBM 360
– 1970: PDP 11
•
„Mikroprozessor Ära“
– 1971: Intel 4004
– 1974: Intel 8080
„Röhren Ära“
–
–
–
–
–
–
1941: Atanasoff-Berry-Computer
1943: Colossus
1944: Mark 1
1946: ENIAC 1
1949: EDVAC
1952: IAS
4
„Elektromechanische Ära“ 1936: Zuse Z1
• Erfinder: Konrad Zuse
– Vorläufer des modernen Computers
– Besaß Kontrolleinheit, Speicher, Mikrobefehle und
Fließkommaberechnung
– Binäre Zahlendarstellung
• Steuerung in Form von mit Löchern gestanzten,
altem Filmmaterial als Lochkarten
– Mangel: Verhakung der mechanischen Schaltglieder
(Bleche)
• Im zweiten Weltkrieg zerstört und in den 60ern
nachgebaut
5
1936: Zuse Z1
6
1941: Zuse Z3
• Nachfolger des Z1 (bzw. Zwischenversion Z2)
– Basiert (wie Z2) auf Relais-Technik
– Ein- und Ausgabegeräte
– Benutzerinteraktion während des Rechenvorgangs
– Unterstützung von Mikroprogrammen
• Erster funktionsfähiger, frei programmierbarer
Digitalrechner
– „Turing-vollständig“!!!
7
1941: Zuse Z3 (2)
8
Lochkarten
Bildquelle: Ziko-C , http://de.wikipedia.org/w/index.php?title=Datei:2005-11_lochkarten.JPG&filetimestamp=20080322185413
9
Lochkarten
10
1944: Mark 1 (Röhren)
11
Elektronenröhren
Quelle: http://de.wikipedia.org/wiki/Elektronenröhre
12
1946: ENIAC (17.468 Röhren)
13
1952: Von Neumann-Architektur
• Entwickelt von John von
Neumann am Institute for
Advanced Studies in Princeton
• Programme werden im
Speicher abgelegt (bis dahin nur
Daten)
• Von Neumann-Architektur
– Bis auf wenige Ausnahmen bildet
diese Architekturform seit 50
Jahren die Grundlagen von
Computern
14
1952: Von Neumann-Architektur
15
„Transistoren Ära“ 1960: PDP 1
• PDP-1 (Programmed Data Processor)
war der erste „Minicomputer“
– Firma DEC (Digital Equipment Corporation)
• Einsatz von Transistor- statt
Röhrentechnik
– Speicheradressierung in 18 Bit-Worten
– Hauptspeicher: 4000 18 Bit-Worte = 9 kByte
– Programmierbar in Assembler oder LISP statt
Maschinensprache
– Monitor: rundes Oszilloskop
– Erstes Computerspiel (statt Kriegsaufgaben)
– Textcodierung bereits nach ASCII-Standard
16
„Mikroprozessor Ära“ 1971: Intel 4004
• Intel 4-Bit-Mikroprozessor
– Erster „Ein-Chip-Mikroprozessor“ in
Serienproduktion
• Technische Daten
– Strukturbreite: 10 µm (heute: ~32nm)
– Transistoren: 2300 (heute: ~hunderte Mio.)
– Taktfrequenz: 500 kHz–740 kHz (heute ~GHz)
– Harvard-Architektur (heute: von Neumann)
– 46 Befehle
– Bauform: 16 Pin Dual Inline Package (DIP)
17
Stand der Technik
Typische Merkmale moderner Computer
•
Typische Merkmale
– Binäre Arithmetik (Wortbreite: 32-/64-Bit)
– Von Neumann-Architektur
•
Weitreichende Standardisierung
– Insbesondere der Schnittstellen
•
Hochintegrierte Schaltungen
(z.B. Intel Core i7 Dual Core Prozessor)
–
–
–
–
383 Mio. Transistoren (Die-Größe: 81 mm²)
Fertigungstechnik: 32nm
2,17 GHz Taktfrequenz
Taktraten: 2,8–3,6 GHz
19
Von-Neumann-Architektur: Komponenten
Steuert Programmfluss
Auch: ALU
(Arithmetic Logic Unit)
Sagt Rechenwerk was zu
tun ist.
Addition, etc
Verbindet Daten
(Quelle und Ziel)
mit ALU
Steuert Übertragung
(zur Ein- und Ausgabe)
von Daten
Interaktion mit
Peripherie:
Lochstreifenleser,
Bildschirm,
Keyboard, …
Speichert Daten und
Programm (RAM)
20
Beispiel: Moderne Rechnerarchitektur
Ein-/
Ausgabewerk
CPU mit
Rechenwerk
und
Steuerwerk
Speicherwerk
Busse
21
Peripherie
• Beispiele
–
–
–
–
–
–
Festplatten
Maus
Tastatur
Drucker
Bildschirm
...
• Bussystem
– Verbindet Prozessor, Speicher und
Peripherie
– Zur Übertragung von Daten
zwischen diesen Komponenten
22
Grafikkarte Bildquelle: Clemens Pfeiffer, http://upload.wikimedia.org/wikipedia/commons/9/97/PCI-Express-graphics-board.jpg
Speicherwerk
•
Auch: Random Access Memory (RAM)
– Enthält Programm und Daten
•
Wahlfreier Zugriff auf Speicherzellen
– Wahlfrei: Muss nicht sequenziell oder in Blöcken
gelesen/geschrieben werden
– Gegenbeispiel: EEPROM
– Zugriff auf einzelne Zellen über Adresse
•
Bei großen Speichern: Wortweiser Zugriff
– Wortbreite abhängig von Architektur (Busbreite)
– Beispiele: 8-, 32-, 64-Bit
Adresse
Inhalt
...
...
1001
12
1002
123
1003
7
1004
7
1007
9
1008
11
...
...
23
Central Processing Unit (CPU)
• Agiert in Takten
– Gegeben durch Taktfrequenz
• Hat interne Speicher: Register
CPU
Steuerwerk
Befehls-/Register-Speicher
Programmzähler
Befehlsdekoder
steuert
Rechenwerk
• Arbeitet in vier Schritten
1. Fetch
Befehl und Daten aus Speicher holen
2. Decode
Befehl decodieren und Steuersignal an
das Rechenwerk (ALU) anlegen
3. Execute
Berechnung ausführen
4. Store
Ergebnis in Speicher schreiben
(Rechen-)Registerspeicher
Rechenschaltungen
24
Central Processing Unit (CPU)
• CPU führt ständig Befehle aus
Adresse
– Befehl wird aus dem Speicher gelesen
Inhalt
...
– Instruction Pointer (IP) Register enthält Adresse des
nächsten Befehls (für Fetch)
1001
234
– Beginnt nach Neustart an festgelegter Adresse
1002
Tu dies
– Wird nach jedem Befehl verändert (z.B. um 4 erhöht)
1003
Tu das
1004
123
1007
1
• Befehle
1008
– Arithmetische/logische Operationen
...
– Steuerung der zeitlichen Reihenfolge anderer Befehle
• Wie unterscheidet die CPU Befehle von Daten?
25
Abarbeitung von Programmen
...
1003
...
Lese von Speicher
#1007 in Register A
1007
1
1008
2
Takt #1
Lese von Speicher
#1008 in Register B
Takt #2
...
1005
Addiere Register B
auf A
Takt #3
A
B
1006
Schreibe Register A
in Speicher #1008
Takt #4
1
2
A
B
3
2
1004
1007
1
1008
2
3
...
...
...
...
1007
1
1008
3
...
26
Die CPU – Maschinencode-Beispiel x86
00000000: EA 05 00 C0
07 B4 00 CD
16 2C 30 00
C0 04 30 88
00000010: C1 B4 0E BB
07 00 B0 0D
CD 10 B0 20
CD 10 CD 10
00000020: B0 0D CD 10
88 C8 3C 30
72 DB 3C 3A
72 0C 3C 45
00000030: 73 D3 B0 31
CD 10 88 C8
2C 0A CD 10
EB C7 00 00
Sprungbefehl: Lade Programmzähler
mit Adresse 07C0:0005
Datenregister mit Konstante laden: Schreibe 0 in
das Register ah
Ein-/Ausgabewerk benutzen: Signal „16“ bedeutet bei ah=0:
Lese einen Tastendruck ein. Ergebnis (ASCII-Wert) wird in das
Register al geschrieben
Addiere: Rechne „Wert in
al“ + „Wert in al“ und
schreibe Ergebnis nach
al.
Und so weiter…
Subtrahiere Konstante: Subtrahiere 30 vom Wert in al und schreibe
Ergebnis nach al
27
Woher weiß man die Codes?
• Beispiel: Intel Manual
– http://www.intel.com/design/intarch/manuals/243191.htm
28
Woher weiß man die Codes?
• Beispiel: Intel Manual
– http://www.intel.com/design/intarch/manuals/243191.htm
29
Ausführung von Programmen
Programm
Programm
Programm
Programm
Betriebssystem
(Windows, Linux, Mac OS, ...)
Treiber
Treiber
Programm
Treiber
Security - 04 Cryptology
#30
Die Central Processing Unit (CPU)
• CPU: Gewiefte Verschaltung von Transistoren
• Transistor: Schalter
– Abhängig vom Eingang lassen sie Strom passieren
– Positive Spannung: Auch 1, Vdd oder High genannt
– Lässt nur dann Strom von „oben“ nach „unten“
fließen wenn an A eine positive Spannung anliegt
– Lässt nur dann Strom von „oben“ nach „unten“
fließen wenn an A keine positive Spannung anliegt
31
Die Central Processing Unit (CPU)
• Transistoren sind so verschaltet, dass damit
gerechnet werden kann
• Verwendet das Binärsystem
– Mit nur zwei unterschiedlichen Zuständen können alle
möglichen Berechnungen realisiert werden
– Wie funktioniert das konkret?
• Wichtige Schaltung: NAND-Gatter
32
NAND-Gatter
Positive
Versorgungsspannung
Eingang A
Eingang B
A
B
Ausgang
A NAND B
Masse
Wahrheitstabelle?
33
NAND-Gatter
• Eingabe
– A = Low
– B = Low
• Ausgabe
– Out = High
Vdd
A
B
A NAND B
0
0
1
34
NAND-Gatter
• Eingabe
– A = High
– B = Low
• Ausgabe
– Out = High
A
B
Vdd
A NAND B
0
0
1
1
0
1
35
NAND-Gatter
• Eingabe
– A = Low
– B = High
• Ausgabe
– Out = High
Vdd
A
B
A NAND B
0
0
1
1
0
1
0
1
1
36
NAND-Gatter
• Eingabe
– A = High
– B = High
• Ausgabe
– Out = Low
Vss
A
B
A NAND B
0
0
1
1
0
1
0
1
1
1
1
0
37
Andere logische Verknüpfungen
• CPUs bestehen ausschließlich aus NANDs
– Realisieren damit alle Rechenarten und logische
Verknüpfungen
• Man kann jede beliebige logische
Verknüpfung auf NAND Gatter zurückführen
– Logikchips bestehen nur aus NAND Gattern
– Logik entsteht durch Verknüpfung dieser Gatter
38
NOT x mittels NAND realisieren
• Wahrheitstabelle NOT
• Wahrheitstabelle NAND
x
y
x
NOT x
0
1
1
0
x NAND y
0
0
1
0
1
1
1
0
1
1
1
0
• NOT mittels NANDs
x
NOT x
x NAND x
0
1
1
1
0
0
39
NOT x = x NAND x
• Eingabe
– A = Low
• Ausgabe
– Out = High
Vss
A
A
A NAND A
0
0
1
40
NOT x = x NAND x
• Eingabe
– A = Low
• Ausgabe
– Out = High
Vss
A
A
A NAND A
0
0
1
1
1
0
41
Logische Verknüpfungen mit NANDs
Verknüpfung Umsetzung
NOT x
x AND y
x NAND y
x NAND x
(x NAND y) NAND (x NAND y)
x NAND y
x OR y
(x NAND x) NAND (y NAND y)
x NOR y
((x NAND x) NAND (y NAND y)) NAND ((x NAND x) NAND (y NAND y))
x XOR y
x XNOR y
(x NAND (y NAND y)) NAND ((x NAND x) NAND y)
((x NAND y) NAND y)) NAND ((x NAND y) NAND x))
(x NAND y) NAND ((x NAND x) NAND (y NAND y))
≡ x⇔y
verum
(x NAND x) NAND x
falsum
((x NAND x) NAND x) NAND ((x NAND x) NAND x)
42
Anwendung: Addition
• Dezimale Addition
– Zahlen {0,1,2,3,4,5,6,7,8,9}
– Beispiel: 9+1 = 0 Übertrag 1
x
x+y
Addition
y
Übertrag
• Binäre Addition
–
–
–
–
–
Zahlen {0,1}
0+0=0
0+1=1
1+0=1
1 + 1 = 0 Übertrag 1
x
y
x+y
Übertrag
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
43
Anwendung: Addition
• Umsetzung
– x+y: x XOR y
(x NAND (y NAND y)) NAND ((x NAND
x) NAND y)
x
y
x+y
Übertrag
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
x XOR y
x⊕y
– Übertrag: x AND y
(x NAND y) NAND (x NAND y)
x AND y
xɅy
• Fertige Schaltung nennt sich
“Halbaddierer”
44
Volladdierer
• Zusätzlicher Eingang für Übertrag
vorhergehender Berechnung
0 1
0 1
+
• Lässt sich auch zwei Halbaddierern
und einem ODER-Gatter konstruieren
x
y
Übertrag
1
1 0
x+y
Addition
Übertrag
45
3-bit Addierwerk
• Eingabe: Zwei 3-bittige Zahlen x2x1x0 und y2y1y0
• Ausgabe: 4-bittige Zahl r3r2r1r0 (inkl. Übertrag)
– Für die Berechnung jeder Ausgabe wird ein Takt benötigt
x
x+y
y
Addition
Üneu
Üein
x2
y2
x
x+y
y
Addition
Üneu
Üein
x1
y1
x0
y0
0
x
x+y
y
Addition
Üneu
Üein
r0
r1
r2
r3
46
Central Processing Unit (CPU)
• Auf ähnliche Art und Weise lassen sich alle
Grundrechenarten realisieren
• Ebenfalls so realisiert: Befehlsdekoder, etc.
• Wichtig
– Repräsentation von Zahlen im Computer
– Rechnen mit (heute ausschließlich binären) Zahlen
47
Zusammenfassung
• Computer sind weniger „magisch“ als vielleicht
gedacht
• Programmierer: normal keine Kenntnis der
Maschinensprache erforderlich
• Erledigen Entwicklerwerkzeuge (sog. Compiler) auf
Basis höherer Programmiersprachen
48
NAND-Gatter
• Eingabe
– A = High
– B = High
• Ausgabe
– Out = Low
Vss
A
B
A NAND B
0
0
1
1
0
1
0
1
1
1
1
0
49
Herunterladen