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 Auch: ALU (Arithmetic Logic Unit) Addition, etc Steuert Programmfluss Sagt Rechenwerk was zu tun ist. 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 Busse Speicherwerk 21
Peripherie Beispiele Festplatten Maus Tastatur Drucker Bildschirm... Bussystem Verbindet Prozessor, Speicher und Peripherie Zur Übertragung von Daten zwischen diesen Komponenten Grafikkarte Bildquelle: Clemens Pfeiffer, http://upload.wikimedia.org/wikipedia/commons/9/97/pci-express-graphics-board.jpg 22
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 Arbeitet in vier Schritten 1. Fetch Befehl und Daten aus Speicher holen Programmzähler CPU Steuerwerk Befehls-/Register-Speicher Rechenwerk Befehlsdekoder (Rechen-)Registerspeicher Rechenschaltungen steuert 2. Decode Befehl decodieren und Steuersignal an das Rechenwerk (ALU) anlegen 3. Execute Berechnung ausführen 4. Store Ergebnis in Speicher schreiben 24
Central Processing Unit (CPU) CPU führt ständig Befehle aus Befehl wird aus dem Speicher gelesen Instruction Pointer (IP) Register enthält Adresse des nächsten Befehls (für Fetch) Beginnt nach Neustart an festgelegter Adresse Wird nach jedem Befehl verändert (z.b. um 4 erhöht) Befehle Arithmetische/logische Operationen Steuerung der zeitlichen Reihenfolge anderer Befehle Adresse Inhalt... 1001 234 1002 Tu dies 1003 Tu das 1004 123 1007 1 1008... Wie unterscheidet die CPU Befehle von Daten? 25
Abarbeitung von Programmen... 1003 Lese von Speicher #1007 in Register A 1004 Lese von Speicher #1008 in Register B 1005 Addiere Register B auf A 1006 Schreibe Register A in Speicher #1008 1007 1 1008 2... 3 Takt #1 Takt #2 Takt #3 Takt #4... 1007 1 1008 2... A B... 1 2 A B... 3 2... 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,...) Programm Treiber Treiber 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, V dd 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 Ausgang A B A NAND B Masse Wahrheitstabelle? 33
NAND-Gatter Eingabe A = Low B = Low Ausgabe Out = High V dd A B A NAND B 0 0 1 34
NAND-Gatter Eingabe A = High B = Low Ausgabe Out = High V dd A B A NAND B 0 0 1 1 0 1 35
NAND-Gatter Eingabe A = Low B = High Ausgabe Out = High V dd 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 V ss 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 NAND y 0 0 1 0 1 1 1 0 1 1 1 0 NOT mittels NANDs x NOT x 0 1 1 0 x NOT x x NAND x 0 1 1 1 0 0 39
NOT x = x NAND x Eingabe A = Low Ausgabe Out = High V ss A A A NAND A 0 0 1 40
NOT x = x NAND x Eingabe A = Low Ausgabe Out = High V ss A A A NAND A 0 0 1 1 1 0 41
Logische Verknüpfungen mit NANDs Verknüpfung Umsetzung NOT x x NAND x x AND y (x NAND y) NAND (x NAND y) 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 NAND (y NAND y)) NAND ((x NAND x) NAND y) ((x NAND y) NAND y)) NAND ((x NAND y) NAND x)) x XNOR y (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 y Addition x + 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 Übertrag: x AND y (x NAND y) NAND (x NAND y) x XOR y x y x AND y x Ʌ y Fertige Schaltung nennt sich Halbaddierer 44
Volladdierer Zusätzlicher Eingang für Übertrag vorhergehender Berechnung Lässt sich auch zwei Halbaddierern und einem ODER-Gatter konstruieren + 1 0 1 0 1 1 0 x y Übertrag Addition x + y Übertrag 45
3-bit Addierwerk Eingabe: Zwei 3-bittige Zahlen x 2 x 1 x 0 und y 2 y 1 y 0 Ausgabe: 4-bittige Zahl r 3 r 2 r 1 r 0 (inkl. Übertrag) Für die Berechnung jeder Ausgabe wird ein Takt benötigt x 2 y 2 x y Addition x+y x 1 y 1 x y Addition x+y Ü ein Ü neu x 0 y 0 0 x y Addition x+y Ü ein Ü neu Ü ein Ü neu r 0 r 1 r 2 r 3 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 V ss A B A NAND B 0 0 1 1 0 1 0 1 1 1 1 0 49