Computergrundlagen Geschichte des Computers Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11
1641: Rechenmaschine von B. Pascal B. Pascal, 1632-1662 mechanische Rechenmaschine addierte & subtrahierte ganze Zahlen nicht programmierbar Axel Arnold Computergrundlagen 2/12
1837: Analytical Engine von C. Babbage C. Babbage, 1791-1871 programmierbare mechanische Rechenmaschine 3 Lochkartenleser für Programm, Konstanten und Eingabezahlen 4 Grundrechenarten, Sprünge nie gebaut Axel Arnold Computergrundlagen 3/12
1941: Z3 von K. Zuse K. Zuse, 1910-1995 Zuse Z1 Zuse Z3 Z1, 1937: programmierbare mechanische Rechenmaschine Z3, 1941: elektromechanischer Rechner: Relais und Kernspeicher 0,9 / 1,4 Flops (Fliesskomma-Operationen / Sekunde) Programm und Daten über eigene Lochkartenleser im 2. Weltkrieg zerstört, Rekonstruktion in München Axel Arnold Computergrundlagen 4/12
1946: ENIAC erster Röhrenrechner 350 Flops Grundrechenarten + Wurzeln Programmeingabe durch Verdrahtung 1948 Einbau eines Befehlsspeichers Axel Arnold Computergrundlagen 5/12
Von Neumann-Architektur (1945) J. von Neumann, 1903-1957 memory 0 1 2 3 4 5 6 7 8 9 10... control unit CPU arithmetic logic unit accumulators input/output Grundlage aller modernen Rechnerarchitekturen nach ENIAC ein linearer Ganzzahl-Speicher für Programme und Daten random access memory (RAM) Speicher mit wahlfreiem Zugriff Befehle sind Zahlen im Speicher, können überschrieben werden Axel Arnold Computergrundlagen 6/12
Von Neumann-Architektur (1945) J. von Neumann, 1903-1957 memory 0 1 2 3 4 5 6 7 8 9 10... control unit CPU arithmetic logic unit accumulators input/output Befehle werden sequenziell abgearbeitet Befehlszähler enthält die Adresse des aktuellen Befehls wird normalerweise hochgezählt Sprünge und Verzweigung sind spezielle Befehle Axel Arnold Computergrundlagen 6/12
1976: Apple I / II 1976: Apple I, erster Serien -PC, 100 Exemplare 1977: Apple II, 2 Millionen Exemplare 8-bit CPU (6502), 48kB RAM Massenmarkt: C64 30 Millionen Exemplare Grund: zahlreiche Computerspiele erst ab ca 1990 setzen sich IBM-kompatible Heim-PCs durch Axel Arnold Computergrundlagen 7/12
2008: Intel Nehalem Control unit ALUs + FPUs Intel Nehalem microarchitecture quadruple associative Instruction Cache 32 KByte, Uncore 128-entry TLB-4K, 7 TLB-2/4M per thread To Input/Output Loop Stream Decoder 2 x Retirement Register File Store Data AGU Store Addr. Unit Prefetch Buffer (16 Bytes) Predecode & Instruction Length Decoder Complex Decoder Instruction Queue 18 x86 Instructions Alignment MacroOp Fusion Simple Decoder Simple Decoder Simple Decoder Decoded Instruction Queue (28 µop entries) MicroOp Fusion 2 x Register Allocation Table (RAT) Reorder Buffer (128-entry) fused Reservation Station (128-entry) fused AGU Load Addr. Unit 128 Integer/ MMX ALU, Branch SSE ADD Move Integer/ MMX ALU SSE ADD Move Branch Prediction global/bimodal, loop, indirect jmp FP ADD Micro Instruction Sequencer Port 4 Port 3 Port 2 Port 5 Port 1 Port 0 FP MUL Integer/ MMX ALU, 2x AGU SSE MUL/DIV Move Quick Path Interconnect DDR3 Memory Controller Common L3-Cache 8 MByte 256 KByte 8-way, 64 Byte Cacheline, private L2-Cache 512-entry L2-TLB-4K 4 x 20 Bit 6,4 GT/s 3 x 64 Bit 1,33 GT/s To Memory 128 128 128 Memory Order Buffer (MOB) Result Bus 256 128 128 octruple associative Data Cache 32 KByte, 64-entry TLB-4K, 32-entry TLB-2/4M Auch ein Nehalem-Kern ist immer noch eine von Neumann-CPU! Axel Arnold Computergrundlagen 8/12
Theoretische Informatik, Berechenbarkeit A. Turing, 1912-1954 Arbeitsband (Speicher) 1 0 1 0 1 0 1 0 Aktuelle Schreib /Leseposition Turingmaschine Zustand s ca 1920, D. Hilbert: Was ist berechnenbar, was beweisbar? 1931, K. Gödel: Entweder widerspruchsfrei oder vollständig! 1936: A. Turing: Turingmaschine, in On Computable Numbers, with an Application to the Entscheidungsproblem Nicht alles ist berechnenbar! Wir können nicht mal bestimmen, was nicht beweisbar ist p Axel Arnold Computergrundlagen 9/12
Turingmaschinen Eine Turingmaschine ist definiert durch eine endliche Menge Γ, das Arbeitsalphabet, mit Leerzeichen Γ eine endliche Menge Z von Zuständen der Maschine den Startzustand s Z und den Haltezustand h Z eine Überführungsfunktion δ : Z Γ Z Γ {,, } Eine Konfiguration ist eine Zeichenkette w über dem Arbeitsalphabet eine Position p in w, die aktuelle Arbeitsposition der aktuelle Zustand z der Turingmaschine Eine Konfiguration (w, p, z) führt in eine andere (w, p, z ) über, wenn δ(z, w p ) = (z, w p, d), und d p nach p versetzt. Startkonfiguration: Eine Eingabe w, p am Anfang von w, Zustand s. Axel Arnold Computergrundlagen 10/12
Darstellung von Turingmaschinen Beispiel: Eine 1 vorne einfügen 0 : 0, A 0 : 1, : 0, 1 : 0, s h 0 : 1, 1 : 1, : 1, B :, 1 : 1, A: 0 gemerkt B: 1 gemerkt s 0 A 1 s 1 B 1 s h A 0 A 0 A 1 B 0 A h 0 B 0 A 1 B 1 B 1 B h 1 Ablauf: Schreibe Zustand in das Arbeitsband vor die aktuelle Position, bezeichnet Übergang s101 1B01 11A1 110B 1101s Axel Arnold Computergrundlagen 11/12
Turingmaschinen II Turingmaschinen können kombiniert werden Beispiel: Hinter jedem Zeichen eine 0 einfügen universelle Turingmaschine: eine Turingmaschine, die berechnet, was eine Turingmaschine tut Halteproblem: es gibt keine Turingmaschine, die entscheidet, ob eine gegebene Turingmaschine bei leerer Eingabe anhält Turingmaschinen und von Neumann-Computer sind äquivalent Church-Turing-These: Turing-berechenbare Funktionen sind genau die von Menschen intuitiv berechenbaren Funktionen Axel Arnold Computergrundlagen 12/12