// Arbeitsweise eines Computers Informatik I Aufbau und Funktionsweise eines Computers, abstrakte Maschinenmodelle Eingabe (Input) Computer Programm Ausgabe (Output) G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Computer Programm legt die Bearbeitung der Eingaben fest kann fast beliebige Aufgaben übernehmen Universalrechner G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers Internet Zwischen Hardware und User weltweite Vernetzung praktisch aller Computer ("Das Internet ist der Computer") ist in Wahrheit ein Netz von Netzen ISP Internet Service Provider (ISP) ISP ISP ISP Weiter Weg von der Hardware bis zum User Hardwareebene CPU (Central Processing Unit) kann nicht viel mehr als - Speicherinhalte in Register auf der CPU laden - Registerinhalte in den Speicher ablegen - Registerinhalte logisch oder arithmetisch verknüpfen - Registerinhalte mit Peripheriegeräten austauschen Benutzerebene User möchte z.b. - Briefe editieren und drucken - Photos bearbeiten - Computerspiele ausführen G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 3 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 4
// Hardware Anwendungsprogramme Speicher Kleinste Speichereinheit hat Zustände Anforderungen Anwendungsprogramm z.b. Word, Excel, Netscape, Photoshop, Schach,... Graphisches User-Interface (GUI) Verwaltung von Fenstern, Menüs, Maus, Ereignissen,... Betriebssystem (operating system) Dateisystem, Speicherverwaltung, Prozeßsystem,... Hardware Prozessor, Speicher, Laufwerke, Bildschirm,... Bereitstellung von Diensten Bit Zustände werden i.a. mit und bezeichnet Mit Speichereinheiten =4 Zustände darstellbar Mit Bit sind = Zustände darstellbar Bit = Byte Heutzutage sind Bytes die kleinsten adressierbaren Speichereinheiten - Kleinere Einheiten müssen aus einem Byte extrahiert werden Viele Daten benötigen 4 Byte = Wort Bit Bit Zustand Zustand Zustand Zustand 3 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers Kilo, Mega, Giga In der Informatik wird mit kilo meist 4= gemeint kbyte = 4 Byte Mit Mega 4 4= - MByte = 4 kbyte Mit Giga 4 4 4= 3 - GByte = 4 MByte Entsprechend kbit, MBit - Manchmal auch kb für kbyte und kb für kbit (entsprechend MB, Mb, GB, Gb) Widerspricht eigentlich dem normierten Sprachgebrauch, in dem k immer, und M immer bezeichnen muß Festplattenhersteller benutzen diesen normierten Sprachgebrauch Damit scheint die Speicherkapazität etwa höher Weitere Einheiten: Wort (word) = 4 Byte Heutige Rechner können meist 3 Bit oder 4 Bit auf einmal verarbeiten Pentium noch 3 Bit Itanium- Prozessor schon mit 4 Bit Spiele-Konsolen schon ab 4-Bit CPUs G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers
// Adressen Famous last words Jedes Byte im Speicher hat eine Nummer = Adresse Mit Speicheradressen von 3 Bit können 3 Byte = 4 3 Byte = 4 Gbyte = 4 MByte adressiert werden 4 Bit ergeben 4 Byte = 34 Gbyte Gbyte adressiert werden Wenn ein Wort aus den Bytes mit den Adressen n, n+, n+, n+3 besteht, dann ist n die Adresse des Worts In einem Speichermodul sind die Werte von n, die durch 4 teilbar sind, die natürlichen Grenzen für Worte An solchen Stellen beginnende Worte sind an den Wortgrenzen (word boundary) ausgerichtet (aligned) Adresse RAM Datum Bill Gates in : 4 K ought to be enough for anybody, Thomas Watson, chairman of IBM in 43: I think there is a world market for five computers only. G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers Big endian, Little endian Ein Wort fängt immer mit dem am weitesten links stehenden Byte an in dem die Bits mit den höchsten Nummern (=Wertigkeiten) stehen Es endet mit dem am weitesten rechts stehenden in dem die niederwertigsten Bits stehen Frage: Beginnt die Zählung n, n+, n+, n+3 der Bytes links oder rechts? Auf diese Frage gibt es beide Antworten! Sowohl Big Endian als auch Little Endian werden benutzt SUN SPARC, IBM Mainframes, und SGI sind Big Endian Die Intel Familie ist Little Endian Dieser Unterschied macht dann große Probleme, wenn ein Wort byteweise zwischen verschiedenen Computern übermittelt wird Das "NUXI"-Problem Little Endian n+3 n+ n+ n Beispiel: Repräsentation von 3..4 3...... Big Endian n n+ n+ n+3 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 3
// Organisation der Hardware Architektur eines einfachen Computersystems mit Bus Architektur eines PC Systems mit mehreren Bussen an Brücken CPU L Cache Level Cache System-Bus 33 MHz PCI Brücke Hauptspeicher PCI Bus, 33 MHz, 33 MB/s freier PCI Steckplatz USB Grafik Adapter SCS Bildschirm ISA Brücke ATA IDE Platte Maus Tastatur ISA Bus,,33 MHz,, MB/s CPU = Central Processing Unit freier ISA Steckplatz Modem Soundkarte Drucker G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 3 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 4 Prozessor und Programmausführung Chip Technik CPU = Steuerwerk + ALU + FPU + Register + Cache Steuerwerk = holt aus Speicher Befehle und interpretiert sie, sorgt für den richtigen Datenfluß in der CPU, ALU (arithmetic-logic unit) = "einfache" Operationen (+) FPU (floating-point unit) = Operationen auf reellen Zahlen Register = "Variablen" (typ. ca. 4 Stück) Cache = sehr schneller Zwischenspeicher Befehle sind in Maschinensprache CISC = complex instruction set computer RISC = reduced instruction set computer CPU in VLSI Technik VLSI=very large scale integration Transistoren als Grundstruktur Größenordnung - nm (Nanometer) Moore's Law: Anzahl Transistoren/Chip verdoppelt sich in jeweils Monaten (eigtl. Jahre) D.h., exponentielles Wachstum! Pentium II: Mill. Transistoren Itanium-: Mill. Transistoren Phys. Grenze ( Transistor besteht aus wenigen Atome) um - Was kommt dann???? G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 4
// Ein paar Takte zur Geschwindigkeit... Leistungssteigerung der CPUs Chips sind getaktet : Pro Takt wird eine einfache Operation ausgeführt heute 4 GHz: Takt =. ns Lichtstrecke bei. ns =, cm Im Abstand von cm beobachten (z.b. per Radio) wir am Chip also die vergangenen Zustände von vor Takten! Komplexe Operationen brauchen mehrere Takte (z.b. Mult, externe Operanden holen) Partielle Lösung: pipelining Neues Problem: bei Sprüngen alles umsonst (pipeline invalidation) Lösung hierzu: viele Register, schnelle Zwischenspeicher (Caches) MFLOPS = Million Floating Point Operations Per Second MFLOP = Gleitkommaoperationen pro Sekunde MFLOPS,, > Transistoren/Chip - > NB: TeraFLOP-Rennen (früher GFLOP-Rennen) im Super- Computer-Bereich Siehe top.org BlueGene (IBM), Altix (SGI), EarthSimulator (NEC), G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers Trend Itanium- (): Mio Transistoren 3MB L3-Cache.4 GByte/sec IO Dallas Morning News, Nov Mehrere "Cores" um Cache herum anordnen G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers
// Von Neumann Architektur 3, MHz : Pentium IV, 3 GHz Daten und Programm gemeinsam im Hauptspeicher Mbyte RAM 4 MB Platte 4 bit/sec (Baud) DOS VGA (4x4) 4: : 4: ca. 4: Gbyte RAM GB Platte Mbit/sec (DSL) DOS / WinNT x4 "Moore's Wall" Fundamentaler Instruktionszyklus Spezielles Register mit Befehlszähler (program counter = PC) enthält Adresse des aktuellen Maschinenbefehls 3 - Programm Central Processing Unit Arithmetic Logic Unit ALU FPU Reg. Speicher CPU Daten Cache (Vorratslager) Eingabegeräte Ausgabegeräte Floating Point Unit G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers Fundamentaler Instruktionszyklus Beispiel: Der TOY-Computer Fetch: Hole den Befehl, dessen Adresse im Befehlszähler steht, aus dem Speicher in das Befehlsregister Increment: Inkrementiere den Befehlszähler, damit er auf die nächste auszuführende Instruktion weist Decode: Dekodiere die Instruktion, damit klar wird, was zu tun ist Fetch operands: Falls nötig, hole die Operanden aus den im Befehl bezeichneten Stellen im Speicher Execute: Führe die Instruktion aus, ggf. durch die ALU. (Bei einem Sprung wird neuer Wert in das Befehlsregister geschrieben.) Loop: Gehe zum ersten Schritt (Fetch) Quelle: http://www.cs.princeton.edu/introcs/machine/ (courtesy Robert Sedgewick and Kevin Wayne. ) G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 3 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 4
// Was ist TOY? Eine gedachte Maschine ähnlich zu alten Computern heutigen Mikroprozessoren Warum beschäftigt man sich damit? Maschinensprache - Jedes Programm wird früher oder später in irgend einer Form in Maschinensprache übersetzt - in manchen Bereichen/Situationen heute noch notwendig Computerarchitektur - wie ist ein Computer aufgebaut? - wie funktioniert er? vereinfachte Maschine - beinhaltet das Wesentliche eines echten Computers Pentium Celeron G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers Was ist in der Box Daten und Programme sind binär codiert Schalter Eingabe der Daten und Programme Lämpchen Zeigen Daten an Register schnellste Form des Speichers Verwendung als Variablen während der Berechnung Register, jedes speichert Bit Register ist immer Program counter (PC) ein extra -Bit Register behält nächste auszuführende Anweisung im Auge Datenspeicher speichert Daten und Programme Wörter" - ein TOY-Wort hat Bit Adresse (= FF) für I/O Arithmetic-logic unit (ALU) verarbeitet Daten Jedes Bit hat Zustände: Der Schalter ist ON oder OFF. Spannung oder keine Spannung. oder. Wahr oder falsch. Wie stellt man Zahlen dar? Verwendung binärer Codierung. Bsp: 3 = 4 3 = 3 4 3 + + + + + + + + Dec 3 4 Bin Dec 3 4 Bin 3 = 4 +4 + +4 +3 +4 + + G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers
// Shorthand-Notation Der Core-Dump Verwendung hexadezimaler (Basis ) Zahlendarstellung. Binärer Code, 4 Bits auf einmal. Bsp: 3 = = E 4 3 3 = 3 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 4 3? E = 4 + + 4 Dec 3 4 Bin Hex + 4 + 4 3 4 Dec 3 4 Bin + + + + Hex A B C D E F Kompletter Inhalt der Maschine (Speicher + Register) zu bestimmter Zeit. R Aufzeichung was das Programm getan hat. Legt komplett fest, was Maschine tun wird. Registers R4 R R R R3 RC R R RD R RA RE R RB RF PC Nächste Anweisung Daten Programm Variablen : : : A B CAB C : : :.. Main Memory E: F: F: G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 3 Warum heißt es core? Eins dieser berühmten Zitate ( Er könnte nicht mehr daneben liegen") von : Howard Aiken, leitender Designer des Mark I, während einer Unterhaltung mit John Curtiss, vom National Council of Investigation of the USA: Wir werden niemals genug Probleme haben, um genug Arbeit zu haben, damit Computer daran arbeiten könnten." G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 3 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 3
// Ein Beispielprogramm Load Ein Beispielprogramm. Addition + = D (hex) RA RB RC PC : : : : A add.toy RA mem[] Opcode [opcode = operation code] Lade Inhalt einer Speicherstelle in ein Register. A = Lade Inhalt von Zelle in Register A. RA RB RC pc : : : add.toy Register : : 3: 4: B RB mem[] CAB RC RA + RB C mem[] RC halt Datenspeicher Register : : : 3: 4: A B CAB C RA mem[] RB mem[] RC RA + RB mem[] RC halt 4 3 4 3 Wegen PC =, interpretiert die Maschine A als einen Maschinenbefehl.? A opcode dest d addr G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 33 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 34 Add B = Lade Inhalt von Zelle in Register B. Opcode Addiere Inhalt von Registern und speichere in Ziel-Register RA RB RC pc : : : add.toy CAB = Addiere Inhalt von A und B und gebe Ergebnis in Register C. RA RB RC PC : : : add.toy Register : : : 3: 4: A B CAB C RA mem[] RB mem[] RC RA + RB mem[] RC halt Register : : : 3: 4: A B CAB C RA mem[] RB mem[] RC RA + RB mem[] RC halt 4 3 4 3 4 3 4 3?? B opcode dest d addr C opcode dest d A B source s source t G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 3 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 3
// Store Halt opcode Opcode Speichere Inhalt eines Registers in einer Speicherzelle. Maschine anhalten. C = Speichere Inhalt von Register A in Speicherzelle. RA RB RC PC : : : add.toy RA RB RC pc : : : add.toy Register D 3 : : : 3: 4: A B CAB C RA mem[] RB mem[] RC RA + RB mem[] RC halt Register D 4 : : : 3: 4: A B CAB C RA mem[] RB mem[] RC RA + RB mem[] RC halt 4 3 4 3? C opcode dest d addr G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 3 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 3 Programm und Daten TOY Instruction Set Architecture Programm: Sequenz von Anweisungen. Anweisungstypen: -Bit Wort (interpretiert auf eine Weise). Ändert den Inhalt von Registern, Datenspeicher und PC in spezifischer, wohl-definierter Weise. Daten: -Bit Wort (interpretiert auf eine andere Weise). Program counter (PC): speichert Addressen der "nächsten Anweisung." Instructions : halt : add : subtract 3: and 4: xor : shift left : shift right : load address : load : store A: load indirect B: store indirect C: branch zero D: branch positive E: jump register F: jump and link TOY instruction set architecture (ISA). Definiert Aufbau und genaues Verhalten jeder Instruktion Register, Wörter des Hauptspeichers, -Bit Wörter. Anweisungen. Jede Anweisung besteht aus Bits. Bits - codieren einen von Anweisungsarten oder opcodes. Bits - codieren Zielregister d. Bits - codieren, ja nach Opcode: - Format : Quellenregister s und t - Format : -Bit Speicheradresse oder Konstante Format Format 4 3 4 3? opcode dest d source s source t opcode dest d addr G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 3 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 4
// Bedienung des TOY-Computers Benutzung der TOY Maschine: Run Wie man ein Programm eingibt:. Setze Speicheradressenschalter.. Setze Datenschalter. 3. Drücke LOAD. Um das Programm zu starten: Setze Speicheradressenschalter auf die Adresse der ersten Anweisung Drücke LOOK um den PC auf erste Anweisung zu setzen. Drücke RUN Button - führt Fetch-Execute-Zyklus bis zum halt opcode durch Wie man das Resultat abruft: Setze Speicheradressenschalter. Drücke LOOK: Inhalt des adressierten Wortes erscheint an Lämpchen Fetch-Execute-Zyklus FETCH: Anweisung vom Speicher holen. EXECUTE: PC erhöhen, Daten zu oder aus Speicher und Registern bewegen, Berechnungen durchführen. Fetch Execute G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 4 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 4 Programmieren der TOY-Maschine Beispiel: Multiplikation Um die volle Mächtigkeit zu haben, brauchen wir Schleifen und Bedingungen in der TOY-Maschine Idee: PC benutzen, um Programmfluß zu kontrollieren. Ändere PC abhängig von Bedingung in einem Register Springen wenn. (opcode C) ändert PC, abhängig vom Wert einiger Register. zum Implementieren benutzt: for, while, if-else. Springen wenn positiv. (opcode D) Analog. keine direkte Unterstützung in der TOY Hardware. Lade Zahlen a und b, und speicher c = a b. Brute-force Algorithmus: Initialisierung c = b zu c addieren, a mal int a = 3; int b = ; int c = ; while ( a!= ) { c = c + b; a = a - ; } Java ingorierte Probleme: Overflow, langsam, negative Zahlen. G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 43 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 44
// Multiplizieren Step-By-Step Trace R RA RB RC A: 3 3 B: C: Eingabe Ausgabe multiply.toy : AA RA mem[a] : BB RB mem[b] : CD RC mem[d] 3: E R mem[e] 3 D: E: Konstanten 4: CA if (RA == ) pc : CCB RC RC + RB : AA RA RA R : AA RA mem[a] a : BB RB mem[b] b : CD RC mem[d] c = : C4 pc 4 4: CA if (RA == ) pc : CCB RC RC + RB : AA RA RA R 3: E R mem[e] always : C4 pc 4 loop 4: CA if (RA == ) PC while (a!= ) { : CCB RC RC + RB c = c + b : AA RA RA - R a = a - : C4 PC 4 } : CC mem[c] RC : halt 4: CA if (RA == ) pc : CCB RC RC + RB : AA RA RA R : C4 pc 4 4: CA if (RA == ) pc : CC mem[c] RC : halt B G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 4 G. Zachmann Informatik - WS / Aufbau und Funktionsweise eines Computers 4