1 Vom Schalter zum Computer
38 Woraus besteht eigentlich ein Computerchip?
All computers are just carefully organized sand Abbildung: Siliziumquelle SiO 2 The Desert by John O'Nolan CC-BY-2.0, http://flic.kr/p/aej8rk 40
Vom Sandkorn zum Chip Durchmesser 3040 cm Länge 2 m Gewicht > 100 kg Reinheitsgrad > 99.999 999 9 % Abbildung: Hochreiner Silizium-Einkristall. By Oleg Alexandrov CC-BY-SA-3.0 via Wikimedia Commons. 41
Vom Sandkorn zum Chip 42 Abbildung: Ein Wafer c Intel Abbildung: Chip im Package
Vom Sandkorn zum Chip Abbildung: Industrielle Chipfertigung 43
Chiptechnologie ein Gröÿenvergleich Stellen Sie sich vor: Ein 14 nm Transistor wäre so groÿ wie ein Fingernagel... 47
Chiptechnologie ein Gröÿenvergleich Stellen Sie sich vor: Ein 14 nm Transistor wäre so groÿ wie ein Fingernagel...... dann wäre ein menschliches Haar so dick dass es auf dem Podium keinen Platz mehr hätte. 47
Chiptechnologie ein Gröÿenvergleich Anders gesagt: Ein rotes Blutkörperchen ist etwa 500x gröÿer als ein 14 nm Transistor! 48
Chiptechnologie ein Generationenvergleich Intel 4004 Einführung 1971 4-Bit (vier!) Architektur 1 Kern 740 khz 2300 Transistoren 16 Pins 144 mm 2 Die Fläche 10 µm Prozess Intel Core i7 2600 (Sandy Bridge) Einführung 2011 64-Bit Architektur 4 Kerne 3.4 GHz 1.16 Milliarden Transistoren 1155 Pins 216 mm 2 Die Fläche 32 nm Prozess 49
Chiptechnologie ein Generationenvergleich 1971: Intel 4004 2011: Intel i7 Abbildung: Die Designs in ihrer Technologie gefertigt c Intel 50
Chiptechnologie ein Generationenvergleich 2011: Intel 4004 144 mm 2 0.000 3 mm 2 2011: Intel i7 Abbildung: Das 40 Jahre altes Design in aktueller Technologie gefertigt c Intel 50
Chiptechnologie ein Generationenvergleich 2011: Intel 4004 144 mm 2 0.000 3 mm 2 2011: Intel i7 Abbildung: Das 40 Jahre altes Design in aktueller Technologie gefertigt c Intel 50
Chiptechnologie Miniaturisierung Abbildung: Mailüfterl (1958); 8000 Transistoren, 20 km Schaltdraht By Florian Staudacher CC-BY-3.0 via Wikimedia Commons. 51
Chiptechnologie Miniaturisierung Abbildung: Traditionalles FET-Transistordesign c Intel 51
Physikalische Realisierung von Schaltern Es gibt verschiedene Methoden zur physikalischen Realisierung: Relais Transistor Mechanischer Schalter, gesteuert durch Elektromagnet Steuerung mittels elektrischem Feld Keine beweglichen Teile Steuereingang: G Eigentlich analog, digitale Abstraktion meist ausreichend G S D n+ n+ p B 7
Physikalische Realisierung von Schaltern Es gibt verschiedene Methoden zur physikalischen Realisierung: Relais Transistor Mechanischer Schalter, gesteuert durch Elektromagnet Steuerung mittels elektrischem Feld Keine beweglichen Teile Steuereingang: G Eigentlich analog, digitale Abstraktion meist ausreichend G S D n+ n+ p B 7
Warum Digital? Der Transistor ist ein analoges Bauelement, warum die digitale Abstraktion? Vereinfacht Entwurf und Test. Macht das Speichern viel ezienter. Bietet einen intuitiven und dennoch mächtigen mathematischen Werkzeugkasten! Geringere Störempndlichkeit! 8
Vom Schalter zum Computer Kann man aus Schaltern einen Computer bauen? Wir benötigen pegelgesteuerte Schalter (Logikpegel am Steuereingang G). Schlieÿer G Öner G Leitet, wenn G = 1 Unterbricht, wenn G = 0 Leitet, wenn G = 0 Unterbricht, wenn G = 1 2
Analog vs. digital Was bedeutet logisch 1 bzw. logisch 0? Abstraktion des gemessenen Signals log. 1 log. 1 Spannung Spannung log. 0 t log. 0 t 3
Logikgatter Logisches Gatter: Ausgangswert als Funktion der Eingangswerte Ausgang Logisch Eins: (über Schalter) mit positiver Versorgungsspannung verbunden. Ausgang Logisch Null: (über Schalter) mit negativer Versorgungsspannung/Masse verbunden. Ausgang ohne Verbindung zu deniertem Pegel: unbestimmt (vermeiden!) '1' '0' 'X' 4
Inversion Funktion Invertierung des Eingangs Eingang (a) = 0 Ausgang (y) = 1 Eingang (a) = 1 Ausgang (y) = 0 Prinzipschaltung a a y Wahrheitstabelle a y 0 1 1 0 Symbol a y 5
Inversion Funktion Invertierung des Eingangs Eingang (a) = 0 Ausgang (y) = 1 Eingang (a) = 1 Ausgang (y) = 0 Prinzipschaltung a = 0 a = 0 y = 1 Wahrheitstabelle a y 0 1 1 0 Symbol a y 5
Inversion Funktion Invertierung des Eingangs Eingang (a) = 0 Ausgang (y) = 1 Eingang (a) = 1 Ausgang (y) = 0 Prinzipschaltung a = 1 a = 1 y = 0 Wahrheitstabelle a y 0 1 1 0 Symbol a y 5
Nicht-Oder (NOR) Verknüpfung Funktion Invertierte Oder Verknüpfung der Eingänge (a, b) Prinzipschaltung Beide Eingänge (a, b) = 0 Ausgang (y) = 1, b Sonst Ausgang (y) = 0 a y Wahrheitstabelle a b y 0 0 1 0 1 0 1 0 0 1 1 0 Symbol a b a b y 6
Nicht-Oder (NOR) Verknüpfung Funktion Invertierte Oder Verknüpfung der Eingänge (a, b) Beide Eingänge (a, b) = 0 Ausgang (y) = 1, Sonst Ausgang (y) = 0 Wahrheitstabelle a b y 0 0 1 0 1 0 1 0 0 1 1 0 Prinzipschaltung Symbol b = 0 a = 0 y = 1 a = 0 b = 0 a y b 6
Nicht-Oder (NOR) Verknüpfung Funktion Invertierte Oder Verknüpfung der Eingänge (a, b) Beide Eingänge (a, b) = 0 Ausgang (y) = 1, Sonst Ausgang (y) = 0 Wahrheitstabelle a b y 0 0 1 0 1 0 1 0 0 1 1 0 Prinzipschaltung Symbol b = 1 a = 0 a = 0 a b y = 0 b = 1 y 6
Nicht-Oder (NOR) Verknüpfung Funktion Invertierte Oder Verknüpfung der Eingänge (a, b) Beide Eingänge (a, b) = 0 Ausgang (y) = 1, Sonst Ausgang (y) = 0 Wahrheitstabelle a b y 0 0 1 0 1 0 1 0 0 1 1 0 Prinzipschaltung Symbol b = 0 a = 1 a = 1 a b y = 0 b = 0 y 6
Nicht-Oder (NOR) Verknüpfung Funktion Invertierte Oder Verknüpfung der Eingänge (a, b) Beide Eingänge (a, b) = 0 Ausgang (y) = 1, Sonst Ausgang (y) = 0 Wahrheitstabelle a b y 0 0 1 0 1 0 1 0 0 1 1 0 Prinzipschaltung Symbol b = 1 a = 1 a = 1 a b y = 0 b = 1 y 6
Komplexere Funktionen NOR Verknüpfung a b y 0 0 1 0 1 0 1 0 0 1 1 0 NAND Verknüpfung a b y 0 0 1 0 1 1 1 0 1 1 1 0 XNOR Verknüpfung a b y 0 0 1 0 1 0 1 0 0 1 1 1 Durch Inversion des Ausganges erhält man weitere Grundgatter NOR OR NAND AND XNOR XOR 9
Umschalter (Multiplexer) Funktion Auswahl mittels Pegel an Anschluss s: s = 0 Eingang a wird ausgegeben s = 1 Eingang b wird ausgegeben Wahrheitstabelle s y 0 a 1 b Prinzipschaltung Symbol s a s b a s b y y 10
Umschalter (Multiplexer) Funktion Auswahl mittels Pegel an Anschluss s: s = 0 Eingang a wird ausgegeben s = 1 Eingang b wird ausgegeben Wahrheitstabelle s y 0 a 1 b Prinzipschaltung Symbol s = 0 a s = 0 y b a s = 0 y b 10
Umschalter (Multiplexer) Funktion Auswahl mittels Pegel an Anschluss s: s = 0 Eingang a wird ausgegeben s = 1 Eingang b wird ausgegeben Wahrheitstabelle s y 0 a 1 b Prinzipschaltung Symbol s = 1 a s = 1 y b a s = 1 y b 10
Wahlschalter (Multiplexer) Funktion Für mehr als 2 Eingänge: Kaskadieren von Umschaltern Wir erhalten mehrere Steuersignale s 1, s 2, Wahrheitstabelle s 2 s 1 y 0 0 a 0 1 b 1 0 c 1 1 d Prinzipschaltung a b c d Symbol a bc d s 1 s 1 s 1 s 1 s 2 s 2 (s 2, = s 1) 0, s 1 = 0) y y 11
Wahlschalter (Multiplexer) Funktion Für mehr als 2 Eingänge: Kaskadieren von Umschaltern Wir erhalten mehrere Steuersignale s 1, s 2, Wahrheitstabelle s 2 s 1 y 0 0 a 0 1 b 1 0 c 1 1 d Prinzipschaltung s 1 = 0 a s 2 = 0 s 1 = 0 b s 1 = 0 y c s 2 = 0 s 1 = 0 d Symbol a (s 2 = 0, s 1 = 0) bc y d 11
Wahlschalter (Multiplexer) Funktion Für mehr als 2 Eingänge: Kaskadieren von Umschaltern Wir erhalten mehrere Steuersignale s 1, s 2, Wahrheitstabelle s 2 s 1 y 0 0 a 0 1 b 1 0 c 1 1 d Prinzipschaltung s 1 = 1 a s 2 = 0 s 1 = 1 b s 1 = 1 y c s 2 = 0 s 1 = 1 d Symbol a (s 2 = 0, s 1 = 1) bc y d 11
Wahlschalter (Multiplexer) Funktion Für mehr als 2 Eingänge: Kaskadieren von Umschaltern Wir erhalten mehrere Steuersignale s 1, s 2, Wahrheitstabelle s 2 s 1 y 0 0 a 0 1 b 1 0 c 1 1 d Prinzipschaltung s 1 = 0 a s 2 = 1 s 1 = 0 b s 1 = 0 y c s 2 = 1 s 1 = 0 d Symbol a (s 2 = 1, s 1 = 0) bc y d 11
Wahlschalter (Multiplexer) Funktion Für mehr als 2 Eingänge: Kaskadieren von Umschaltern Wir erhalten mehrere Steuersignale s 1, s 2, Wahrheitstabelle s 2 s 1 y 0 0 a 0 1 b 1 0 c 1 1 d Prinzipschaltung s 1 = 1 a s 2 = 1 s 1 = 1 b s 1 = 1 y c s 2 = 1 s 1 = 1 d Symbol a (s 2 = 1, s 1 = 1) bc y d 11
Zahlendarstellung Wie kann ein Computer überhaupt Zahlen darstellen? Mit Schaltern und Pegeln kann man doch nur Nullen und Einsen unterscheiden! Lösung: Zusammensetzen von Zahlen aus mehreren Signalen (Bits), unter Berücksichtigung des Stellenwertes Mit jeder Stelle (Position nach links) kommt eine Zweierpotenz hinzu. Summieren über die Zweierpotenzen ergibt Zahl im Dezimalsystem: 1001 2 ˆ= 1 2 3 + 0 2 2 + 0 2 1 + 1 2 0 = 1 8 + 0 4 + 0 2 + 1 1 = 8 + 1 = 9 10 Gleiches Prinzip wie im vertrauten dekadischen System. Diese Art der Darstellung einer Zahl wird Binärdarstellung genannt! 12
Rechnen mit Logikgattern Und wie rechne ich jetzt mit Binärzahlen und Gattern? Betrachten wir als Ausgangspunkt die Addition von zwei Dezimalzahlen a und b: a 1234 b 5678 Summe 6912 Übertrag 0011 13
Addition von Binärzahlen Das gleiche Konzept kann für Binärzahlen verwendet werden. Addiere jede Stelle unter Berücksichtigung des Übertrages: a 100011 b 000111 Summe 101010 Übertrag 000111 14
Addition von Binärzahlen Allgemeine Rechenregel für die Addition zweier Binärzahlen? Welche Möglichkeiten gibt es für eine Stelle? a 0 0 1 1 b 0 1 0 1 Summe (s) 0 1 1 0 Übertrag (u) 0 0 0 1 15
Addition von Binärzahlen Allgemeine Rechenregel für die Addition zweier Binärzahlen? Welche Möglichkeiten gibt es für eine Stelle? a 0 0 1 1 b 0 1 0 1 Summe (s) 0 1 1 0 Übertrag (u) 0 0 0 1 Rechenregeln Summe: XOR-Verknüpfung der Operanden 15
Addition von Binärzahlen Allgemeine Rechenregel für die Addition zweier Binärzahlen? Welche Möglichkeiten gibt es für eine Stelle? a 0 0 1 1 b 0 1 0 1 Summe (s) 0 1 1 0 Übertrag (u) 0 0 0 1 Rechenregeln Summe: XOR-Verknüpfung der Operanden Übertrag: AND-Verknüpfung der Operanden 15
Addition von Binärzahlen Rechenregeln Summe: XOR-Verknüpfung der Operanden Übertrag: AND-Verknüpfung der Operanden Halbaddierer Mittels dieser Regeln können wir einen Addierer für zwei 1 Bit Zahlen bauen 15
Halbaddierer Schaltung a b s u 16
Halbaddierer Schaltung a b s u Wieviele Schalter (Transistoren) werden benötigt? 16
Halbaddierer Schaltung a b s u Wieviele Schalter (Transistoren) werden benötigt? AND NAND + INV 4 + 2 = 6 Transistoren XOR 6 Transistoren Halbaddierer 6 + 6 = 12 Transistoren 16
Halbaddierer Schaltung a b s u Was ist mit den anderen Stellen? Wie können wir den Übertrag von der vorherigen Stelle verwenden? 16
Addieren von Mehrbit-Zahlen Funktionsweise Erste Stelle hat keinen Übertrag Halbaddierer Weitere Stellen: Übertrag als zusätzlicher Summand Volladdierer Schaltung a b u ein s Wahrheitstabelle a b u ein s u aus 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 u aus 17
Acht-Bit Addierer Wie addiert man längere Zahlen? Halb- und Volladdierer jeweils nur für ein Bit! Kombination aus Halb- und Volladdierern Übertrag: u aus geht an linken Nachbarn als u ein 18
Acht-Bit Addierer Wie addiert man längere Zahlen? Halb- und Volladdierer jeweils nur für ein Bit! Kombination aus Halb- und Volladdierern Übertrag: u aus geht an linken Nachbarn als u ein Schaltung b 7 a 7 b 6 a 6 b 5 a 5 b 4 a 4 b 3 a 3 b 2 a 2 b 1 a 1 b 0 a 0 u 7 VA VA VA VA VA VA VA HA s 7 s 6 s 5 s 4 s 3 s 2 s 1 s 0 18
Speicherzelle Funktionsweise Schreiben: s = 0 y = a Eingang wird an Ausgang durchgereicht Halten: s = 1 y = y Ausgang hält den letzten Wert Schaltung a s y Wahrheitstabelle a s y alt y neu 0 0 0 1 0 1 1 0 0 1 1 1 19
Welche Bausteine haben wir? Entwickelte Bausteine Logische Gatter (AND, OR, XOR,... ). Arithmetische Bausteine (+,,... ). Umschalter, Wahlschalter. Speicherzellen. Das alles konnten wir nur aus Schaltern (Transistoren) realisieren. Reicht das aus, um einen Computer zu bauen? 20
ALU Das Rechenwerk eines Computers Wie können wir ein programmierbares Rechenwerk bauen? Eingänge (a, b) für die Operanden Ausgang (y) für das Ergebnis Das hatte bereits unser Addierer Wir schalten parallel noch andere Funktionen mit den selben Eingängen Über einen Wahlschalter selektieren wir jene, die uns gerade interessiert Die Steuersignale op des Wahlschalters denieren die Funktion 21
ALU Das Rechenwerk eines Computers Wie können wir ein programmierbares Rechenwerk bauen? Eingänge (a, b) für die Operanden Ausgang (y) für das Ergebnis Das hatte bereits unser Addierer Wir schalten parallel noch andere Funktionen mit den selben Eingängen Über einen Wahlschalter selektieren wir jene, die uns gerade interessiert Die Steuersignale op des Wahlschalters denieren die Funktion Jetzt sind sowohl Daten als auch Operation frei wählbar! 21
Schaltung Acht-Bit ALU LDL ADD SUB SBB CMP AND MOV 0 op y Funktionsweise Alle Befehle werden parallel ausgeführt! op selektiert das Ergebnis des gewünschten Befehls a b 22
Das Programm Wie bringe ich der ALU bei, was sie machen soll? Für eine Berechnung benötigt die ALU also folgende Informationen: Operanden a, b gewünschte Operation op Zur Ansteuerung der Schalter werden diese als Bitmuster benötigt Maschinencode 0001 0000 0000 0101 0101 0010 0110 0110 0101 1010 0110 0001 0111 0001 0010... 23
Das Programm Wie bringe ich der ALU bei, was sie machen soll? Für eine Berechnung benötigt die ALU also folgende Informationen: Operanden a, b gewünschte Operation op Zur Ansteuerung der Schalter werden diese als Bitmuster benötigt Maschinencode 0001 0000 0000 0101 0101 0010 0110 0110 0101 1010 0110 0001 0111 0001 0010... 23
Das Programm Mühsamer und fehleranfälliger Prozess! Gibt es Alternativen? 24
Das Programm Mühsamer und fehleranfälliger Prozess! Gibt es Alternativen? Natürlich! 0001 0000 0000 0101 0101 LDL 85 0010 0110 0110 0101 1010 AND 102, 90 0110 0001 0111 0001 0010 ADD 23, 18... Durch Verwendung von Namen werden die Befehle verständlicher Entwurf in Assemblercode, danach automatische Übersetzung 24
Von der ALU zum Prozessor Die Macht der Speicherung Meine ALU wird ezienter, wenn ich Daten und Instruktion nicht jedesmal neu selbst eingeben muss: Ich kann ganze Folgen von Instruktionen in Listen speichern (Programm) Ich kann die dazugehörigen Operanden ebenfalls in Listen speichern (Operandenspeicher) Ich kann Zwischenergebnisse in den Operandenspeicher eintragen und in nachfolgenden Schritten weiter bearbeiten Zur Identikation des gewünschten Eintrags in der Liste verwende ich Adressen. Diese sind nichts anderes als die Steuersignale eines Wahlschaltes. Auf diese Weise kann ich unglaublich komplexe Algorithmen realisieren und automatisch ablaufen lassen. 25
Registerle (Operandenspeicher) Schaltung sel a sel b Register 0 Register 1 Register 2 Register 3 Register 4 Register 5 sel d d Funktionsweise Mehrere, parallele Speicherstellen (Register) um Operanden und Ergebnisse zu speichern Auswahlschalter (sel a, sel b, sel d ) an den Ein- (d) und Ausgängen (a, b) um gewünschtes Register auszuwählen (Adresse) Register 6 Register 7 a b 26
Programmspeicher Darstellung in unserem Demonstrator 0 Instruktion 1 1 Instruktion 2 2 Instruktion 3 3 Instruktion 4... Funktionsweise Frei adressierbarer Speicher Enthält das Programm das ausgeführt werden soll Jeder Eintrag (Instruktion) umfasst die gewünschte Operation und die (Register)Adressen der gewünschten Operanden Abarbeitung normalerweise nacheinander (linear) Sprunginstruktionen erlauben Abweichen von linearer Abfolge 27
Control Unit (Dekodiereinheit) Funktion der Control Unit 1. Programmzähler (Instructionpointer, IP) zeigt auf aktuelle Instruktion 2. Berechnet die Adresse der nächsten Instruktion (IP, Jump Oset) 3. Liest Instruktionen vom Programmspeicher (Instruction) 4. Dekodiert die Instruktion und steuert andere Komponenten an Operandenwahl (Reg. A, Reg. B, Literal) Ergebnisregister (Reg. D) Auswahl der ausgeführten Operation (OpCode ) Darstellung in unserem Demonstrator Reg. A: Reg. B: Reg. D: Literal: OpCode: IP: Instruction: Phase: Jump Oset: 28
Kommunikation mit der Auÿenwelt Funktionsweise Komponenten, die Daten einlesen oder ausgeben können Mensch-Maschinen Kommunikation Maschinen-Maschinen Kommunikation Beispiele: Leuchtdioden Schalter Tastatur Netzwerkschnittstelle USB-Schnittstelle Darstellung (Beispiel LEDs) a b 29
Das Programm für den gesamten Prozessor Welche Informationen werden benötigt? Welche Operation soll ausgeführt werden? Welche Operanden werden verwendet? Wo sind die Operanden zu nden? Wohin soll das Ergebnis gespeichert werden? Welches ist die nächste Instruktion? Jede Kombination der vorhandenen Operationen mit (dazu passenden) Operanden ist möglich, dadurch können beliebige Abfolgen von Instruktionen (Programme) geschrieben werden. 30
Ein simples Programm LDL r0, #0 ; Lade den Wert 0 in Register 0 LDL r7, #255 ; Lade den Wert 255 in Register 7 loop1: ADD r0, r0, #1 ; Addiere 1 zu Register 0, Ergebnis: Register 0 ST r7, r0 ; Schreibe den Wert aus Register 0 an die Adresse ; in Register 7 Ausgabe auf LEDs LDL r4, #2 ; Lade den Wert 2 in Register 4 loop2: SUB r4, r4, #1 ; Subtrahiere 1 von Register 4, Ergebnis: Register 4 CMP r4, #0 ; Ist Register 4 gleich 0? BNZ loop2 ; Falls nein, führe als nächstes den Befehl bei loop2 aus JMP loop1 ; Führe als nächstes den Befehl bei loop1 aus 31
Ein simples Programm maschinenlesbar LDL r0, #0 0000 0000 0000 0001 LDL r7, #255 1111 1111 1110 0001 ADD r0, r0, #1 1000 1000 0000 0110 ST r7, r0 0000 0111 0001 0011 LDL r4, #2 0000 0010 1000 0001 SUB r4, r4, #1 1000 1100 1000 1000 CMP r4, #0 1000 0100 0001 0001 BNZ -2 1111 1110 0001 1100 JMP -6 1111 1010 0001 1111 32
Ein simples Programm Live-Demo 33
Reale Prozessoren Demo Intel Core i7 2600 ARM Cortex A17 Taktfrequenz 62 MHz 3.4 GHz 2 GHz # Register 8 16 31 Datenbreite 8 bit 64 bit 32 bit Arbeitsspeicher 0 B max. 32 GB max. 1 TB # Cores 1 4 14 # Threads/Core 1 2 1 Pipeline Stufen 4 > 14 > 11 Cache Speicher 0 B 8 MB 8 MB Tabelle: Prozessorvergleich 34
Abstraktion Instruktion (Assemblercode) Operation (Maschinencode) Bitfolgen Komponenten (ALU, Registerle,... ) Gatter (Schaltwerke, Boolesche Algebra) Logikpegel (Digitalelektronik) Spannung (Analogelektronik) Schalter (Digitalelektronik) Transistor (Analogelektronik) Halbleiterphysik 35 Abbildung: Bisher verwendete Abstraktionen
Weitere Abstraktion Assemblercode ist immer noch schwer zu verstehen und zu schreiben. ist maschinenabgängig. benötigt manuelle Auswahl von Registern, Speicherstellen,... benötigt manuelle Optimierung (keine Übersetzerunterstützung). benötigt manuelle Handhabung von Spezial-Features: parallele Pipelines, Prediction, etc. Programmieren in Assemblercode erreicht deshalb eine geringe Produktivität! 36
Weitere Abstraktion Abhilfe: Hochsprachen Versteckt Maschinenspezika hinter einem Übersetzer Dadurch ist maschinenunabhängiger Code möglich Code kann bei der Übersetzung automatisch optimiert werden Beispiel in C uint8_t i = 0; while (1) { LEDS = i++; wait(1000); } 37
Übersetzer Aufgaben des Übersetzers Optimierung des Codes. Auswahl der passenden Maschinenbefehle. Auswahl der zu verwendenden Register. Auswahl des zu verwendenden Speichers. Zuordnung von Variablen zu Register/Speicherstellen. Initialisierung der benötigten Hardware.... 38
Maschinenunabhängigkeit Übersetzer ermöglichen Entwicklung weitgehend maschinenunabhängiger Software. Einmal (in Hochsprache) schreiben öfters (auf jeweiligen Maschinencode) übersetzen. Muss man dennoch Ahnung von Prozessorarchitektur haben? 39
Maschinenunabhängigkeit Übersetzer ermöglichen Entwicklung weitgehend maschinenunabhängiger Software. Einmal (in Hochsprache) schreiben öfters (auf jeweiligen Maschinencode) übersetzen. Muss man dennoch Ahnung von Prozessorarchitektur haben? Ja! Wenn es nicht nur um Schönwetterprogrammierung sondern um Performanz Echtzeitverhalten Energieezienz Robustheit/Fehlertoleranz geht, muss der Programmierer wissen, was sein Programm in seiner Hardware bewirkt. 39
Moderne Konzepte Multicore Pipelining Out of order execution Superscalar Hyper-threading OpenCL GPU programming Massively parallel Auto-vectorization Garbage collection Virtual machine Cloud computing Cluster Super-computer Low power Speculative execution Many core... 40
Zusammenfassung Ein Prozessor ist nicht mehr als eine Ansammlung von clever gesteuerten Schaltern Repräsentation von Zahlen durch Logikpegel. Wählbare Operation auf frei wählbare Operanden. Speicherung ermöglicht Programmierung von Abläufen. Konzept der Adressierung ermöglicht Datenübergabe und Sprünge. Abstraktion befreit Programmierer von Details bezüglich Halbleiterphysik Elektrotechnik Prozessorspezika 41
Zusammenfassung Ein Prozessor ist nicht mehr als eine Ansammlung von clever gesteuerten Schaltern Repräsentation von Zahlen durch Logikpegel. Wählbare Operation auf frei wählbare Operanden. Speicherung ermöglicht Programmierung von Abläufen. Konzept der Adressierung ermöglicht Datenübergabe und Sprünge. Abstraktion befreit Programmierer von Details bezüglich Halbleiterphysik Elektrotechnik Prozessorspezika Enorme Produktivität 41
Zusammenfassung Ein Prozessor ist nicht mehr als eine Ansammlung von clever gesteuerten Schaltern Repräsentation von Zahlen durch Logikpegel. Wählbare Operation auf frei wählbare Operanden. Speicherung ermöglicht Programmierung von Abläufen. Konzept der Adressierung ermöglicht Datenübergabe und Sprünge. Abstraktion befreit Programmierer von Details bezüglich Halbleiterphysik Elektrotechnik Prozessorspezika Enorme Produktivität Dennoch: Erstellung von ezienten und performanten Programmen erfordert Wissen über die verwendete Prozessorarchitektur! 41