nutzt heute Diese Prinzipien werden wir im Kapitel 4 behandelt Lehrstuhl für Informatik 3 - D. Fey Vorlesung GRa - SS
|
|
- Robert Sauer
- vor 6 Jahren
- Abrufe
Transkript
1 4.1 Einführung (1) Nahezu jeder Prozessor in einem Desktop-Rechner (der auf oder unter dem Tisch steht) und in einem Server- Rechner (auf dem man sich von der Ferne einloggt und dort rechnet) nutzt heute Caches (s. Kap ) Pipelining Superskalare Befehlsabarbeitung Out-of-order execution (Abarbeitung der Befehle entgegen der vom Compiler erzeugten Reihenfolge) Diese Prinzipien werden wir im Kapitel 4 behandelt , Folie 1
2 4.1 Einführung (2) Ferner: Evolution der Prozessor-Architektur Stationen dieser Evolution von CISC bis Multi-Core Complex Instruction Set Computing (CISC) Reduced Instruction Set Computing (RISC) Superskalare Architekturen Very long instruction Word (VLIW) Explicitly Parallel Instruction Computing (EPIC) Multithreading (Simultanes Multithreading (SMT) Hyperthreading (HT)) Multi/Vielkernkern-Architekturen , Folie 2
3 4.2 CISC-Architekturen (1) Am Anfang war CISC (Complex Instruction Set Computer): Technik der Mikroprogrammierung ist CISC So benannt in den 1980er Jahren nachdem RISC aufkam Vorteile CISC: Erforderliche Speicherkapazität geringer es erfolgt Expansion eines CISC-Befehls im Prozessor Abbildung Makrobefehl -> Folge von Mikrobefehlen (Mikroprogramm) (s. Bsp. Folie 7, Kap. 3) A B A Könnte z.b so kodiert sein SUB A B Kostet weniger Speicher als , Folie 3
4 4.2 CISC-Architekturen (2) Weiterer Vorteil: in den 60er Jahren vorhandene sog. semantische Lücke überbrückbar Durch Mikroprogramm einen Hochsprachen-Befehl implementieren Gilt für Chip-Hersteller und deren Compiler-Bauer Details zu semantischer Lücke, s. Vorlesung SP Beispiel: Switch-Befehl als Mikroprogramm Befehl in Hochsprache switch ( i ) { case 0 : a = 1 ; break ; case 1 : a = 2 ; break ; } ; Lücke durch Mikroprogramm überbrücken (fiktive Syntax) 0: i -> ACCU 1: if ACCU=0 JMP TO 6 2: DECR ACCU 4: if ACCU=0 JMP TO 8 5: RETURN 6: SET a=1 7: RETURN 8: SET a=2 9: RETURN nackte Menge der 10-Befehlsmuster der Maschine Entsprechende Mikrobefehle , Folie 4
5 4.2 CISC-Architekturen (3) Lange Zeit der Zufriedenheit mit diesem Ansatz Konzept der Mikroprogrammierung zuerst in Großrechner eingeführt dort auf in der Kapazität limitierte Ferritkernspeicher ausgerichtet CISC Mikroprozessor-Architekturen waren dem Stand der Großrechnertechnik bis Anfang der 80er Jahre angepasst Gründe: wohl einfacher adaptierbar technologische Gründe für diese Orientierung gab es nicht, denn Mikroprozessoren waren von Anfang an mit Halbleiter-Arbeitsspeichern ausgestattet , Folie 5
6 4.2 CISC-Architekturen (4) Mit der Zeit: immer neue Prozessoren Erweiterung der Befehlssätze Zwang zur Abwärtskompatibilität Folge der Entwicklung immer größere und undurchschaubarere Befehlssätze Komplizierte Adressierungsarten (z.b. VAX11/780 verwendete 22 verschiedene Adressierungsarten) Befehle mit sehr unterschiedlichen Längen Compiler-Bauer verwendeten nur noch kleine Teilmenge des Befehlssatzes Sog. Patterson-Studie , Folie 6
7 4.2 CISC-Architekturen (5) Beispiel: Eigenschaften Befehlssätze CISC-Prozessoren , Folie 7
8 4.2 RISC-Architekturen (1) Die Zeit war reif für Neues: RISC-Prozessoren (Reduced Instruction Set Computer) Prozessoren der vierten Generation Vierte Generation: Hochintegration (VLSI - > 10 6 Transistoren) RISC-Architekturen gekennzeichnet durch Elementare und kleine, einheitliche Maschinenbefehlssätze einheitliche (dadurch aber auch redundante) Befehlsformate, die schnell dekodierbar sind Operanden- und Befehlsholphase während eines Grundtaktes ausführbar Adressrechnungen werden durch explizite Befehle ausgeführt Vorteil: keine komplizierten Adressierungsarten in Befehlen und damit verbundene Adressierungsberechnungen Load-Store-Architektur Alle Operanden liegen in Registern vor Keine Befehle, in denen ein Operand direkt auf Speicheradresse verweist Wenn nicht, dann Operanden laden bzw. speichern durch explizite Lade- /Speicherbefehle , Folie 8
9 4.2 RISC-Architekturen (2) große universelle Registersätze festverdrahtete Leitwerke kein Mikroprogramm; kein Mikroprogrammspeicher Schafft Platz auf dem Chip für Caches und Register Jeder RISC-Befehl wird direkt in binäres Befehlsmuster dekodiert konsequentes Ausnutzen von Fließbandverarbeitung (Pipelining) nach Möglichkeit alle Befehle bis auf Laden/Speichern innerhalb eines Taktes abzuwickeln (im Durchsatz) war später jedoch nicht mehr konsequent durchzuhalten (z.b. numerische Gleitkomma-Operationen) ab Pentium Pro wird in Intel-Prozessoren komplexer Maschinenbefehl intern in eine Folge einfacher nach dem RISC-Prinzip abzuarbeitender Befehle zerlegt Erforderlich: Zusammenspiel von optimierenden Compiler und RISC- Prozessor-Architektur, um Fließbandverarbeitung auch effizient auszunutzen , Folie 9
10 4.3.1 RISC-Architekturen Pipelining (1) Fließbandprinzip (Pipelining) Übertragung des z.b. in der Automobilindustrie angewandten Prinzips der überlappten Bearbeitung von Arbeitsteilschritten auf den Befehlszyklus eines Prozessors Phasen des Befehlszyklus streng synchron arbeitenden unabhängigen Teilwerken zuweisen jeder einzelne Befehl durchläuft sequentiell alle Teilwerke Gegenteil: Nicht zeitlich überlapptes Abarbeiten der Befehle (s. Bild) , Folie 10
11 4.3.1 RISC-Architekturen Pipelining (2) Elementare Phasen des Befehlszyklus BH: Befehl holen inkl. Befehlszähler inkrementieren BD: Befehl dekodieren OH: Operanden holen BA: Befehl ausführen ES: Ergebnisse zurückschreiben (in Register bzw. in Speicher bei Store- Operationen) inkl. Befehlszähler im Falle eines Sprungs überschreiben 5 Phasen 5 Teilwerke 1. Befehl BH BD OH BA ES 2. Befehl BH DE OH BA ES 3. Befehl Beispielhaft; kein ehernes Gesetz! kann in der Realität viel fein-granularer sein, z.b. Intel P4-Architekturen über 30 Stufen [in Hennessy/Patterson BD/OH zusammengefasst, extra Phase für Zugriff auf Arbeitsspeicher] Zeit , Folie 11
12 4.3.1 RISC-Architekturen Pipelining (3) überlapptes Arbeiten 1. Befehl BH BD OH BA ES 2. Befehl BH DE OH BA ES 3. Befehl Zeit BH BD OH BA ES 1. Befehl BH BD OP BA ES 2. Befehl BH BD OH BA ES 3. Befehl BH BD OH BA ES 4. Befehl Dauer eines Befehls mindestens genauso lang wie zuvor (Latenzzeit) evtl. länger, denn Fließband muss sich nach der langsamsten Komponente richten Durchschnitt (Durchsatz) steigt an im Idealfall auf das n-fache bei n Teilschritten , Folie 12
13 4.3.1 RISC-Architekturen Pipelining (4) Viele Eierköpfe gleichzeitig unterwegs , Folie 13
14 4.3.1 RISC-Architekturen Pipelining (5) Leistungssteigerung bei vier Befehlen? anstatt 20 Zeiteinheiten nur (bitte selbst überlegen wie viele) Zeiteinheiten Welche Leistungssteigerung ist (theoretisch) möglich? Allgemein gilt: jede Pipeline-Stufe verursacht gewissen Zusatz-Aufwand für Datenbewegung Zwischenspeicherung im Datenfluss zwischen einzelnen Stufen kritisch bei vielen Unterbrechungen im synchronen sequentiellen Ablauf Vorsicht: Steuerlogik zur Behandlung von Register- und Speicher- Abhängigkeiten steigt mit Zahl der Stufen Evtl. höherer Gatteraufwand für Steuerung der Stufen als für die Stufen selbst , Folie 14
15 4.3.1 RISC-Architekturen Pipelining (6) Pipeline dominiert von langsamster Stufe Zykluszeit t einer Pipeline (bestimmt zugleich Takt = 1 /t ) t max t i d t m d 1 i i k t m = maximale Stufen-Verzögerung k = Anzahl Stufen d = Zeitverzögerung bedingt durch Zwischenspeicherung Gesamtzeit T k zur Bearbeitung von n Instruktionen T k ( n 1) t k , Folie 15
16 4.3.1 RISC-Architekturen Pipelining (7) erreichbarer Speed-Up S k Verhältnis von Ausführungszeit T 1 ohne Pipeline zur Ausführungszeit T k in einer Pipeline mit k Stufen S k / nkt nk T1 Tk k ( n 1) t k ( n 1) lim n S k k nk ( n 1) k , Folie 16
17 4.3.1 RISC-Architekturen Pipelining (8) Kurvenverlauf des Speed-Up S k in Abhängigkeit der Anzahl Instruktionen n für verschieden große Anzahl an Stufen k Speed-Up 12 Stufen 9 Stufen 6 Stufen #Instruktionen (10^x) , Folie 17
18 4.3.1 RISC-Architekturen Pipelining (9) Je mehr Stufen um so später läuft Kurve in Sättigung Wunderbar: dann möglichst viele Pipelinestufen k realisieren? Damit ist auch höherer Chiptakt möglich Je mehr Stufen desto kürzere Laufwege von einer Stufe zur nächsten Kürzere Laufwege -> schnellerer Takt (Erklärung s. Skizze Tafel) Preis für potentiellen Gewinn zusätzlicher Pipeline-Stufen zu zahlen (s. nächste Folie) , Folie 18
19 4.3.1 RISC-Architekturen Pipelining (10) Anstieg HW-Kosten Zwischen Pipelinestufen müssen Daten gefangen werden wg. Entkopplung der einzelnen Stufen, d.h. zwischen einzelnen Stufen liegen Register Je mehr Stufen je mehr Register Pipeline-Einschwingphase erhöht sich je mehr Stufen gegeben Damit Anstieg der Latenzzeit pro Befehl Nicht so schlimm könnte durch höheren Durchsatz kompensiert werden Energieverbrauch nimmt zu Kein Beitrag zu GreenIT Wahrscheinlichkeit leerer Pipeline-Zyklen steigt bei Datenabhängigkeiten bei Verzweigungen , Folie 19
20 4.3.1 RISC-Architekturen Pipelining (11) Problem: Datenabhängigkeiten (sog. Datenhazards) Ein Befehl benötigt Ergebnis eines vorherigen Befehls, dessen Ergebnis noch nicht in die Register zurückgeschrieben wurde Beispiel: t BH BD BH Befehle MUL R1, R2 R3 ADD R3, R1 R5 sind nacheinander in Pipeline OH BD 4 BA OH 5 ES BA 6 7 ES MUL R1,R2 R3 Details Vorlesung Rechnerarchitektur (2 + 2/4 SWS, 5/7.5 ECTS) 8 ADD R3, R1 R5 R1 R2 noch nicht in R3 zurückgeschrieben! Erfolgt erst zum Zeitpunkt 5 (ES-Phase MUL-Befehl) , Folie 20
21 4.3.1 RISC-Architekturen Pipelining (12) Probleme: Verzweigungen Sprünge (sog. Steuerungshazards) Nächster Befehl in Pipeline ist nicht der Richtige t : if (R1 == R2) jmp 72 BH BD OH BA ES 44: (R1 and R12) R5 BH BD OH BA ES 48: (R1 or R12) R5 BH BD OH BA ES 52: (R14 add R2) R2... BH BD OH BA ES 72: (R12 add R2) R2 Erst nach Zeitschritt 4 steht fest, wie Vergleich (R1==R2) ausgeht. Der nächste Befehl in der Pipeline steht an Adresse 44, evtl. falscher Befehl. Lösung: statische und dynamische Sprungvorhersagen (sog. Spekulative Befehlsausführung) Details: Vorlesung zur Lösung Steuerungs-/Sprunghazard Rechnerarchitektur , Folie 21
22 4.3.1 RISC-Architekturen Pipelining (13) Nochmaliges Beispiel Sprungbefehl (detailliertere strukturelle Sicht der Vorgänge in den Stufen) Zeitpunkt 0: 1.Stufe 2.Stufe 3.Stufe 4.Stufe BH BD OH BA 40: if (R1 == R2) jmp 72 44: (R1 and R12) R5 48: (R1 or R12) R5 52: (R14 add R2) R2.. Registerinhalte 72: (R12 add R2) R2 R1: 0 R8: 9 R2: 0 R9: 10 R3: 2 R10: 23 R4: 1 R11: 34 R5: 23 R12: 15 R6: 4 R7: , Folie 22
23 4.3.1 RISC-Architekturen Pipelining (14) Zeitpunkt 1: 1.Stufe 2.Stufe 3.Stufe 4.Stufe BH BD OH BA 44: (R1 and R12) R5 48: (R1 or R12) R5 40: if (R1 == R2) jmp 72 52: (R14 add R2) R2.. 72: (R12 add R2) R2 Registerinhalte R1: 0 R8: 9 R2: 0 R9: 10 R3: 2 R10: 23 R4: 1 R11: 34 R5: 23 R12: 15 R6: 4 R7: , Folie 23
24 4.3.1 RISC-Architekturen Pipelining (15) Zeitpunkt 2: == -Vergleich ist auszuführen 1.Stufe 2.Stufe 3.Stufe 4.Stufe BH BD OH BA 48: (R1 or R12) R5 52: (R14 add R2) R2.. 72: (R12 add R2) R2 44: (R1 and R12) R5 40: if (R1 == R2) jmp 72 Registerinhalte R1: 0 R8: 9 R2: 0 R9: 10 R3: 2 R10: 23 R4: 1 R11: 34 R5: 23 R12: 15 R6: 4 R7: , Folie 24
25 4.3.1 RISC-Architekturen Pipelining (16) Zeitpunkt 3: Operanden werden aus R1 und R2 geholt 1.Stufe 2.Stufe 3.Stufe 4.Stufe BH BD OH BA 52: (R14 add R2) R2.. 72: (R12 add R2) R2 48: (R1 or R12) R5 44: (R1 and R12) R5 40: if (0 == 0) 72 Registerinhalte R1: 0 R8: 9 R2: 0 R9: 10 R3: 2 R10: 23 R4: 1 R11: 34 R5: 23 R12: 15 R6: 4 R7: , Folie 25
26 4.3.1 RISC-Architekturen Pipelining (17) Zeitpunkt 4: Ergebnis Vergleich wird berechnet 1.Stufe 2.Stufe 3.Stufe 4.Stufe BH BD OH BA.. 72: (R12 add R2) R2 52: (R14 add R2) R2 48: (R1 or R12) R5 44: (0 and 15) R5 Ergebnis des Vergleichs 0==0 ist true Nächster Befehl in der Pipeline sollte somit 72 sein Registerinhalte R1: 0 R8: 9 R2: 0 R9: 10 R3: 2 R10: 23 R4: 1 R11: 34 R5: 23 R12: 15 R6: 4 R7: 8 Der nächste Befehl in Stufe 3 ist aber Befehl , Folie 26
27 4.3.2 RISC-Architekturen Superskalare Architekturen (1) Weitere Entwicklung: Superskalare Recheneinheiten Gruppierung von mehreren Befehlen, die nach dem Fließbandprinzip abgearbeitet werden Vorsicht: Befehle müssen nicht synchron abgearbeitet werden! BH BD OH BA ES BH BD OH BA ES BH BD OH BA ES BH BD OH BA ES BH BD OH BA ES BH BD OH BA ES BH BD OH BA ES BH BD OH BA ES BH BD OH BA ES 1. Befehl 2. Befehl 3. Befehl 4. Befehl 5. Befehl 6. Befehl 7. Befehl 8. Befehl 9. Befehl Zeit , Folie 27
28 4.3.2 RISC-Architekturen Superskalare Architekturen (2) erfordert mehrere Rechenwerke heute Stand der Technik , Folie 28
29 4.3.2 RISC-Architekturen Superskalare Architekturen (3) Technik eigentlich alt: übernommen von Supercomputern (CDC6600) gleichzeitige Anwendung von Operationen auf einzelne Komponenten eines Vektors (Vektorrechner) nicht alle Operationen sind Vektoroperationen skalare Werte müssen auch berechnet werden dennoch Prozessor mit mehreren Rechenwerken besser als skalarer, eben superskalar Anwendung auf Befehle benötigt Befehlsgruppierer Umordnung sequentiell einlaufender Befehle zur Laufzeit, um sie parallel auszuführen (dynamische Parallelisierung) allgemeines Prinzip superskalarer Rechner!! keine direkte Parallelität (vom Compiler erzeugt) Herausziehen von Parallelität aus sequentiellem Befehlsstrom in der Hardware , Folie 29
30 4.3.2 Superskalare Architekturen: Bsp. Sandy Bridge (4) , Folie 30
31 4.4 VLIW, Multi-Threading, EPIC (1) Im weiteren zeitlichen Verlauf neue Ansätze entwickelt VLIW, EPIC, Multi-Threading Generell die Frage, wer parallelisiert? die Software: d.h. Compiler (statisch) Vorteil: macht Hardware einfacher Vorteil: Software erfasst ganzes Programm, im Gegensatz zur Hardware, die nur Ausschnitt erfasst oder die Hardware: d.h. das Leitwerk im Prozessor (dynamisch) Vorteil: Hardware kann besser auf Situationen bedingt durch Verzweigungen reagieren Erfasst somit besser den dynamischen Ablauf , Folie 31
32 4.4.1 VLIW (1) VLIW (very long instruction word) Parallelität (paralleles Befehlswort) vom Compiler erzeugen Prozessor hat viele ALUs - jeder ALU genau einen Teil des langen Befehlswortes zuordnen Erfordert Analyse Datenab- hängigkeitsgraph (DAG) Beispiel: 1: ADD R2, R3 R1 2: MUL R4, R5 R6 3: SUB R6, R1 R7 4: ADD R8, R9 R10 5: DIV R10, R6 R11 6: ADD R7, R11 R12 7: STORE R12 X DAG : ADD R2, R3 R1 2: MUL R4, R5 R6 4: ADD R8, R9 R10 3: SUB R6, R1 R7 5: DIV R10, R6 R11 6: ADD R7, R11 R12 7: STORE R12 X , Folie 32
33 4.4.2 EPIC (1) VLIW: heute häufig in Digitalen Signalprozessoren (DSP) eingesetzt In anderen Architekturen: kaum Bedeutung mehr EPIC (Explicitly Parallel Instruction Computing) Kombiniert superskalar und VLIW Compiler gruppiert wo möglich und gibt Hinweise (sog. Prädikation) an Hardware für dynamische Befehlsgruppierung Realisiert in INTEL Itanium-Architekturen , Folie 33
34 4.4.2 EPIC (2) Beispiel Weit voran getriebene spekulative Befehlsausführung Beide Verzweigungsstränge werden gleichzeitig ausgeführt EPIC vereint superskalaren und VLIW Ansatz Geht davon aus, dass Instruktionen 4 und 5 bzw. Instruktionen 8 und 9 auch keine Abhängigkeiten aufweisen , Folie 34
35 4.4.2 EPIC (2) Grundlegendes Beispiel für EPIC-Prinzip (vereinfacht) Prädikation bei case-anweisungen t switch (func(rw)) { // func(rw) liefert 1, 2, oder 3 case 1 : ra = rb + rc ; break ; case 2 : ra = rd + re ; break ; case 3 : ra = rf rh ; break ; } ; rb = 2 * ra ; Func(rw) Func(rw) starten in einem Pipelinezweig ra := rb + rc P1 ra := rd + re P2 ra := rf rh P3 Func(rw) berechnet Func(rw) = 1 P1 true Func(rw) = 2 P2 true Func(rw) = 3 P3 true if P1 ra := ra if P2 ra := ra if P3 ra := ra Ausführung mit Prädikaten versehen Prädikate bestimmen, vorher mit 0 vorbesetzt rb := 2 * ra , Folie 35
36 4.4.3 Multi-Threading (1) Multithreading-Architekturen (vielfädige Architekturen) Rechenwerke werden nicht mit einzelnen Befehlen gefüttert, sondern mit Befehlen aus Threads (Programmfäden) Thread? Abgespeckter Prozess Mehrere Threads gehören zu einem Prozess Threads untereinander weitgehend unabhängig Zuteilung Threads zu Rechenwerken (Scheduling) geschieht in der Hardware Prozess Thread 1 Thread 2 Thread 3 Rechenwerk 1 Rechenwerk 2 Rechenwerk , Folie 36
37 4.4.3 Multi-Threading (2) Simultanes Multi-Threading Variante davon bei INTEL als Hyper-Threading bezeichnet logische Prozessoren auf einem physikalischen Prozessor Antrieb für diese Entwicklung: überproportionaler Anstieg an elektrischer Leistung und Chip-Fläche gegenüber Zuwachs an Rechenleistung , Folie 37
38 4.4.3 Multi-Threading (3) Parallelismus auf Thread-Ebene Zeit-Scheiben Multi-Threading (time-slice multi-threading) Jeder Thread bekommt festes zeitliches Raster zugeteilt Nach Ablauf Umschalten auf anderen Thread Ereignis-gesteuertes Multi-Threading (switch-on-event multithreading) Schalten bei Ereignissen, die lange Latenzen nach sich ziehen Simultanes Multi-Threading (SMT) ohne Schalten, sondern Auswählen logische Prozessor durch Architekturzustand charakterisiert Eigenen Registersatz Eigenen Befehlszähler Maschinenzustands-Register Eigenes Steuerregister für Unterbrechungen (APIC, advanced programmable interrupt controller) , Folie 38
39 4.4.3 Multi-Threading (5) Beispiel: Hyper-Threading Mischen der Instruktionen von zwei Threads und gleichzeitige Zuweisung auf Ressourcen Zwei aufeinander folgende Befehle aus verschiedenen Threads weisen zumeist keine Datenabhängigkeiten auf Verarbeitungsprinzip (vereinfacht) , Folie 39
40 4.5 Multi-Core-Architekturen (1) Leistungssteigerung bis ca Primär durch Drehen an der Taktschraube Sekundär durch intelligentere Architektur Seit 2003/04 Verlagerung hin zur Architektur , Folie 40
41 4.5 Multi-Core-Architekturen (2) Erhöhung des Taktes stößt an Grenzen wegen Energiebedarf , Folie 41
42 4.5 Multi-Core-Architekturen (3) Antwort: Multicore-Architekturen Mehrere Prozessorkerne auf einem Chip Grund: Technologie: Drehen Taktschraube kostet zu viel Energie (je höher Takt um so schwieriger gleichzeitig V dd zu senken) P diss a V C Architektur: superskalares Prinzip ausgereizt: z.b. dynamische Sprungvorhersage bei mehr als 95% Trefferquote Wayt Gibbs, Spektrum d. Wissenschaft, 03/2005 f 2 dd f (Frequenz) und V dd (Versorgungsspannung) miteinander korreliert C: Kapazität der Schaltung; 0 a 1: Aktivitätsfaktor Es war nie die Frage ob, sondern wann und warum: Wann würden die Hersteller von Mikroprozessoren gezwungen sein, einen kleineren Gang einzulegen, warum würde die scheinbar so eiserne Regel alle zwei Jahren ein schnellerer Chip nicht mehr durchzuhalten sein? Mehr Leistung erzielbar nur noch durch echte Parallelität , Folie 42
43 4.5 Multi-Core-Architekturen (4) Technologische Vorteile durch Multi-Core geringere Frequenz einzelner Kerne gleichmäßigere Verteilung der Wärme einzelne Kerne bei (Nicht-)Bedarf abschaltbar Wirtschaftliche Vorteile durch Multi-Core mehr als ein Kern auf einem DIE (Chipkern) spart Produktionskosten zusätzlicher Prozessorkern lässt den Aufwand für die Kühlung nur linear steigen Rechnerarchitektonische Gründe für Multi-Core bisherige Architekturmaßnahmen nahezu ausgereizt Justin R. Rattner, Leiter der Entwicklungsabteilung Systemtechnologie bei Intel»Wir haben das Gesetz des Quadrats gegen uns. Man benötigt exponentiellen Zuwachs der Transistorenzahl, damit steigt aber Chipfläche und Stromverbrauch, um auch nur geringe weitere Verbesserungen bei der parallelen Befehlsverarbeitung zu erreichen « , Folie 43
44 4.5 Multi-Core-Architekturen (5) Vergleich Architekturschema von Multi-Kern-Prozessor vs. Superskalar, Simultanes Multithreading 1 Programmzähler und 1 Registersatz n komplette CPUs n Programmzähler und n Registersätze n logische CPUs mehrere Ausführungseinheiten Ausführungseinheiten (ALUs) genutzt von allen n logischen CPUs , Folie 44
45 4.5 Multi-Core-Architekturen (6) Beispiel: Intel Core i7 - Architektur verwendet simultanes Multi-Threading (SMT) Skaliert bis zur Anzahl unterstützter Threads 4 SMT Kerne, jeder unterstützt 2 Threads somit 8 logische Kerne Grundlage hier: Nehalem-Mikroarchitektur , Folie 45
46 4.5 Multi-Core-Architekturen (7) Übersicht Entwicklung Intel-Prozessoren Intels Tick-Tock-Prinzip Tick: Technologiesprung Tock: wesentliche Architekturerneuerungen Entwicklung Corei7/5/3-Familie (davor Core/Core2 und Pentium) corei7/5/3-4xxx (Haswell, 22 nm) corei7/5/3-3xxx (Ivy-Bridge, 22 nm, einzelne Sandy-Bridge) corei7/5/3-2xxx (SandyBridge 32 nm) corei7/5/3-xxx (Westmere 32 nm) corei7/5/3-xxx (Nehalem 45 nm) Schöne, kompakte Übersicht zeigt: , Folie 46
47 4.5 Multi-Core-Architekturen (8) Übersicht Entwicklung Intel-Prozessoren Corei7-Nehalem Corei5-Nehalem (600er Serie) Core ix- SandyBridge / IvyBridge- Mikroarchitektur Bilder entnommen von: , Folie 47
48 4.5 Multi-Core-Architekturen (9) Haswell-Mikroarchitektur Prozessor-/Peripherie-Architektur Chip die , Folie 48
49 4.5 Multi-Core-Architekturen (10) (Fast) Neueste Mikroarchitektur Haswell 2 parallele FMA-Pipelines Fused Multiply-Accumulate (typische DSP-Funktion) 16 FP-Operationen pro Takt AVX2: Vektoreinheiten 256 Bit breite Integer-Operationen vierte ALU mit 8 statt 6 Ports verbesserte Sprungvorhersage wichtigste Neuerung auf Architekturseite Einführung von Transactional Memory Bündelung von Speicherzugriffen Mehrprozessorsystem-/Server-Architekturen gedacht Integrierte Spannungswandler FIVR - Fully Integrated Voltage Regulator , Folie 49
50 4.5 Multi-Core-Architekturen (10) Wie nutzt man das Ganze nun? Wie SMT ausnutzen? Z.B. OpenMP (s. Demo Zählen Primzahlen) AVX2 bzw. Vorläufer SSE (Single SIMD Extension) Wie SIMD ausnutzen? s. OpenMP- SIMD-Demo A 1 A 2... A 1 op B 1 A n A 2 op B 2 B B 2... B n SIMD-Kerne A n op B n , Folie 50
51 4.5.1 Programmierung Multi-Core mit OpenMP OpenMP: Anwender-Programmierschnittstelle (API) für Speicher-gekoppelte Multiprozessoren Compiler-Direktiven Bibliothek unterstützender Funktionen OpenMP arbeitet in Verbindung mit Fortran, C, oder C++ Modell des gemeinsamen Speichers Synchronisation und Interaktion der Prozessoren untereinander durch gemeinsame Variablen Processor Processor Processor Processor Memory , Folie 51
52 4.5.1 Programmierung Multi-Core mit OpenMP Fork/Join-Parallelismus zu Beginn nur Master-Thread aktiv Master-Thread führt sequentiellen Kode aus Fork: Master-Thread erzeugt oder erweckt zusätzliche Threads um parallelen Kode auszuführen Join: am Ende des parallelen Kodes sterben Threads bzw. werden ausgesetzt Master Thread Other threads fork Time join fork join , Folie 52
53 4.5.2 Programmierung Multi-Core mit OpenMP - SMT /* Compile with gcc -o open_mp_intro -fopenmp open_mp_intro.c */ #include <omp.h> #include <stdio.h> #include <stdlib.h> int main(void) { int id=0, i, max_threads ; /* Number of possible threads corresponds to maximum number cores */ /* determine number by function from OpenMP run time library */ /* max_threads = omp_get_num_procs() ; */ /* Set number of threads explicitly by user */ omp_set_num_threads(8) ; max_threads = 8 ; , Folie 53
54 4.5.2 Programmierung Multi-Core mit OpenMP - SMT printf("\n") ; #pragma omp parallel for firstprivate(id) for (i = 0; i < max_threads; ++i) { /* Getting unique thread-id */ id = omp_get_thread_num(); printf("hello World from thread %d\n", id); if (id == 0) printf("there are %d threads says thread %d\n", omp_get_num_threads(), id); } ; #pragma omp barrier return EXIT_SUCCESS; } , Folie 54
55 4.5.2 Programmierung Multi-Core mit OpenMP - SMT gemeinsame und private Variablen int main (int argc, char *argv[]) { int b[3]; char *cptr; int i; cptr = malloc(1); #pragma omp parallel for for (i = 0; i < 3; i++) b[i] = i; Heap Stack i b Master Thread (Thread 0) cptr i i Thread , Folie 55
56 4.5.2 Programmierung Multi-Core mit OpenMP - SMT Demo Nutzen Parallelisierung durch SMT Parallele Berechnung durch Schleifen-Parallelisierung mittels pragma Direktive #pragma omp parallel for S. Beispiel-Programme prime_counting.c und prime_counting_ohne_openmp.c in StudOn Bestimme Anzahl aller Primzahlen bis zu einer Zahl j Naive Implementierung: versuche für j / (2 j-1) einen ganzzahligen Teiler zu finden Wenn kein Teiler gefunden wurde für Zahl 2 i j erhöhe Anzahl gefundener Primzahlen um , Folie 56
57 4.5.3 Programmierung Multi-Core mit OpenMP - SIMD Demo Nutzen Parallelisierung durch Vektoroperationen Parallele Berechnung durch Schleifen-Parallelisierung mittels Pragma-Direktive simd #pragma omp simd S. Beispiel-Programm vecadd.c Addition zweier Vektoren der Größe 1.000, , , , , , Folie 57
58 4.6 Heterogene Multi-/Vielkern Architekturen Homogene und heterogene Multikern-Prozessoren Homogene Multikern-Prozessoren Lauter gleiche Kerne Beispiele: Intel Nehalem (Core i7) QuadCore, AMD Istanbul SixCore Heterogene Multikern-Prozessoren Prozessoren in Handys TI OMAP Cell PowerPC-Prozessor plus Spezial-Prozessoren für Vektoroperationen , Folie 58
59 4.6 Heterogene Multi-/Vielkernarchitekturen Bsp. GPGPU Beispiel Vielkern-Architektur GPGPU (General Purpose Graphic Processing Unit) , Folie 59
60 4.6 Heterogene Multi-/Vielkernarchitekturen Bsp. GPGPU Eigenschaften von GPGPUs viele, aber einfache Cores (Shader-Prozessoren) keine Sprungvorhersage etc. gruppiert in Multi-Prozessoren (Vektorprozessoren) Probleme bei nicht einheitlichen Sprüngen viele Register großer globaler Speicher Bandbreite: >100 GB/s Latenz: ~400 Taktzyklen kleine, schnelle on-chip Shared-Memory-Blöcke , Folie 60
61 4.6 Heterogene Multi-/Vielkernarchitekturen Bsp. GPGPU Allgemeines Architekturschema einer Multithread-fähigen sog. Streaming Multiprozessoreinheit (SM) , Folie 61
62 4.6 Heterogene Multi-/Vielkernarchitekturen Bsp. GPGPU Speicherhierarchie: Register (am schnellsten) Shared Memory/L1 Cache entweder 16 KB Cache und 48 KB Shared Memory oder 48 KB Cache und 16 KB Shared Memory L2 Cache 768 KB ca. 260 GB/s Bandbreite DRAM 1-6 GB ca. 130 GB/s Bandbreite Latenz ca. 400 Takte , Folie 62
63 4.6 Heterogene Multi-/Vielkernarchitekturen Bsp. GPGPU Speicherhierarchie (Speicherräume) einer GPU: Globaler Speicher Untergebracht im externen DRAM (GDDR5-Speicher) Gleich aufgeteilt in SMs zugewiesenen Adressräumen Zu einem Zeitpunkt nur ein Thread zugreifbar Gemeinsamer Speicher Untergebracht in SM-spezifischen SRAM-Bänken SM-spezifisch Gekoppelt an Thread-Block Block von Threads gebündelt in sog. Warp , Folie 63
64 4.6 Heterogene Multi-/Vielkernarchitekturen Bsp. GPGPU Lokaler Speicher Thread-spezifisch im SM-externen DRAM untergebracht Ausgleich Performanz-Verlust: Caching im gemeinsamen SM-Speicher dieser konfigurierbar Spezielle Speicher Texturen Konstanten Beides sind Konstantenspeicher, die zu Beginn einer Berechnung auf der Grafikkarte von der CPU beschreibar sind , Folie 64
65 4.6 Heterogene Multi-/Vielkernarchitekturen Bsp. GPGPU Blockdiagramm Layout der Fermi-Architektur Entnommen aus Nvidia_Fermi_Computer_Architecture_WhitePaper.pdf Ablaufplanung / Verteilung (Scheduler / Dispatcher) Registerspeicher SM-Prozessor SP-Prozessor Load/Store-Units SFU-Prozessor L1 Cache / Shared Memory , Folie 65
66 4.6 Heterogene Multi-/Vielkernarchitekturen Bsp. GPGPU GPGPU (General Purpose Graphics Processing Unit) Graphikkarten-Prozessoren Bsp. GPGPU: Nvidia GTX-680, (GK-104 Grafik-Prozessor; Keppler) 1536 spezialisierte Kerne + weitere Spezialkerne , Folie 66
67 4.6 Heterogene Multi-/Vielkernarchitekturen Bsp. GPGPU CUDA unterstützt ein Thread-paralleles und Daten-paralleles Programmierparadigma Jedoch Unterschied zu anderen Thread-parallelen Zerlegungen Alle Threads müssen die gleichen Operationen ausführen In diesem Sinne: Datenparallelität Nvidia bezeichnet dies als: SIMT (Single Instruction Multiple Threading) Möglich ist jedoch Wechsel von Threads, genauer ganzen Thread-Feldern, während einer Applikation , Folie 67
68 4.6 Heterogene Multi-/Vielkernarchitekturen Bsp. GPGPU CUDA: Vektor-Addition-Beispiel Kode für GPU // Device code global void VecAdd(float* A, float* B, float* C) { int i = blockdim.x * blockidx.x + threadidx.x; } if (i < N) C[i] = A[i] + B[i]; , Folie 68
69 4.6 Heterogene Multi-/Vielkernarchitekturen Bsp. GPGPU CUDA: Vektor-Addition-Beispiel Kode für CPU // Host code int main() { int N =...; size_t size = N * sizeof(float); // Allocate input vectors h_a and h_b in host memory float* h_a = (float *) malloc(size); float* h_b = (float *) malloc(size); float* h_c = (float *) malloc(size); // Enter values in h_a and h_b... // Allocate vectors in device memory float* d_a, d_b, d_c; cudamalloc((float**)&d_a, size); cudamalloc((float**)&d_b, size); cudamalloc((float**)&d_c, size); // Copy vectors from host memory to device memory cudamemcpy(d_a, h_a, size, cudamemcpyhosttodevice); cudamemcpy(d_b, h_b, size, cudamemcpyhosttodevice); , Folie 69
70 4.6 Heterogene Multi-/Vielkernarchitekturen Bsp. GPGPU CUDA: Vektor-Addition-Beispiel Kode für CPU // Invoke kernel int threadsperblock = 256; int blockspergrid = (N + threadsperblock 1) / threadsperblock; VecAdd<<<blocksPerGrid, threadsperblock>>>(d_a, d_b, d_c); // Copy result from device memory to host memory // h_c contains the result in host memory cudamemcpy(h_c, d_c, size, cudamemcpydevicetohost); // Output h_c... // Free device memory cudafree(d_a); cudafree(d_b); cudafree(d_c); } , Folie 70
71 Lehrveranstaltungen Prozessor-Architekturen Bachelor-Seminar: Architektur von Multikern- und Vielkern- Prozessoren 2 SWS, 5 ECTS, jeweils SS Vorträge: Vorstellen von neuen Architekturen Praktische Erprobung: Berechnen von Anamorphosen auf verschiedenen Multikern-Architekturen , Folie 71
72 Lehrveranstaltungen Prozessor-Architekturen Praktikum: Parallele Rechnerarchitekturen 8 SWS, 10 ECTS, jeweils SS Programmierung verschiedener Prozessor-Architekturen (OpenCL, C, OpenMP) Multi-Core CPUs, GPUs, Xeon Phi Coprocessor ARM FPGA Optimierung und Bewertung Cache-Verhalten, Vektoreinheiten , Folie 72
73 4.7 RISC-Soft-IP Prozessoren Soft-IP-(Intellectual Property)-Prozessor Prozessor vorhanden in Hardware-Beschreibungssprache (VHDL, Verilog, SystemC) Wird realisiert z.b. in FPGA Funktionsweise FPGA s. Tafel , Folie 73
74 4.7 RISC-Soft-IP Prozessoren Beispiel: MIPSfpga Wird realisiert z.b. in FPGA 5-stufige Pipeline, I-/D-Cache, GPR (General Purpose Register), MMU / TLB (Memory Management Unit / Translation Lookaside Buffer, s.kap. 5) , Folie 74
75 4.7 RISC-Soft-IP Prozessoren Demo Vom C-Programm in die HW Cross-Compilieren Synthetisieren Demonstrieren #include "fpga.h" #define inline_assembly() asm("ori $0, $0, 0x1234") void delay(); // // main() // int main() { volatile unsigned int pushbutton, count = 0; while (1) { pushbutton = *READ_IO(IO_PUSHBUTTONS); switch (pushbutton) { case 0x8: count++; break; case 0x4: count--; break; case 0x2: if (count==0) count = ~count; else count = 0; break; default: if (count==0) count = 0xf; else count = count << 1; } // end switch case // write to red LEDs *WRITE_IO(IO_LEDR) = count; delay(); inline_assembly(); } // end while loop return 0; } // end main void delay() { volatile unsigned int j; for (j = 0; j < ( ); j++) ; // delay } , Folie 75
76 Lehrveranstaltungen Prozessor-Architekturen FPGA-Online 4+2 SWS, 5 ECTS, jeweils SS und WS E-Learning-Kurs der Virtuellen Hochschule Bayern (VHB) Zugriff auf Remote-Labor vom heimischen PC Inhalt Einführung in die FPGA-Technologie Einführung in den Hardware-Designflow Schaltungs-Spezifikation mit FSMs , Folie 76
77 Praktikum Smart Kameras Hardware-Bachelor-Praktikum bzw. Masterprojekt 8 SWS, 10 ECTS, jeweils WS, Masterprojekt kontinuierlich Inhalte Anwendung Paralleler Eingebetteter Systeme Mitarbeit in laufendem Forschungsprojekt Architektur und Programmierung eingebetteter Multicore- Prozessoren (ARM) Entwurf eigener Hardware-Beschleuniger-Kerne für die Bildverarbeitung , Folie 77
Eine kurze Geschichte der Grafikkarten
3.1 Einführung Eine kurze Geschichte der Grafikkarten ursprünglich: Graphics Card steuert Monitor an Mitte 80er: Grafikkarten mit 2D-Beschleunigung angelehnt an Arcade- und Home-Computer frühe 90er: erste
Die Sandy-Bridge Architektur
Fakultät Informatik - Institut für Technische Informatik - Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Die Sandy-Bridge Architektur René Arnold Dresden, 12. Juli 2011 0. Gliederung 1.
Die Mikroprogrammebene eines Rechners
Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.
TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl
GPGPU-Architekturen CUDA Programmiermodell Beispielprogramm. Einführung CUDA. Ralf Seidler. Friedrich-Alexander-Universität Erlangen-Nürnberg
Einführung CUDA Friedrich-Alexander-Universität Erlangen-Nürnberg PrakParRA, 18.11.2010 Outline 1 GPGPU-Architekturen 2 CUDA Programmiermodell 3 Beispielprogramm Outlook 1 GPGPU-Architekturen 2 CUDA Programmiermodell
Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern
Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern Institut für Betriebssysteme und Rechnerverbund TU Braunschweig 25.10., 26.10.
Vorlesung Rechnerarchitektur. Einführung
Vorlesung Rechnerarchitektur Einführung Themen der Vorlesung Die Vorlesung entwickelt an Hand von zwei Beispielen wichtige Prinzipien der Prozessorarchitektur und der Speicherarchitektur: MU0 Arm Speicher
Instruktionssatz-Architektur
Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2005/2006 Übersicht 1 Einleitung 2 Bestandteile der ISA 3 CISC / RISC Übersicht 1 Einleitung 2 Bestandteile
Games with Cellular Automata auf Parallelen Rechnerarchitekturen
Bachelor Games with Cellular Automata auf Parallelen en ( ) Dipl.-Inf. Marc Reichenbach Prof. Dietmar Fey Ziel des s Paralleles Rechnen Keine akademische Nische mehr Vielmehr Allgemeingut für den Beruf
Kap 4. 4 Die Mikroprogrammebene eines Rechners
4 Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten (Befehl holen, Befehl dekodieren, Operanden holen etc.).
Masterpraktikum Scientific Computing
Masterpraktikum Scientific Computing High-Performance Computing Thomas Auckenthaler Wolfgang Eckhardt Prof. Dr. Michael Bader Technische Universität München, Germany Outline Organisatorisches Entwicklung
Multicore-Architekturen
Universität Erlangen- Nürnberg Technische Universität München Universität Stuttgart Multicore-Architekturen Vortrag im Rahmen der Ferienakademie 2009 Kurs 1: Programmierkonzepte für Multi-Core Rechner
Technische Informatik 1 - HS 2016
Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik 1 - HS 2016 Lösungsvorschläge für Übung 8 Datum: 8. 9. 12. 2016 1 Instruktionsparallelität VLIW Gegeben
Grafikkarten-Architektur
> Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: s.albers@wwu.de 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur
Das Prinzip an einem alltäglichen Beispiel
3.2 Pipelining Ziel: Performanzsteigerung é Prinzip der Fließbandverarbeitung é Probleme bei Fließbandverarbeitung BB TI I 3.2/1 Das Prinzip an einem alltäglichen Beispiel é Sie kommen aus dem Urlaub und
Johann Wolfgang Goethe-Universität
Flynn sche Klassifikation SISD (single instruction, single data stream): IS IS CU PU DS MM Mono (Mikro-)prozessoren CU: Control Unit SM: Shared Memory PU: Processor Unit IS: Instruction Stream MM: Memory
Name: Vorname: Matr.-Nr.: 4. a) RISC-Architekturen müssen zur Decodierung von Maschinenbefehlen stets ein mikroprogrammierbares Steuerwerk verwenden.
Name: Vorname: Matr.-Nr.: 4 Aufgabe 1 (8 Punkte) Entscheiden Sie, welche der folgenden Aussagen zum Thema CISC/RISC-Prinzipien korrekt sind. a) RISC-Architekturen müssen zur Decodierung von Maschinenbefehlen
Arbeitsfolien - Teil 4 CISC und RISC
Vorlesung Informationstechnische Systeme zur Signal- und Wissensverarbeitung PD Dr.-Ing. Gerhard Staude Arbeitsfolien - Teil 4 CISC und RISC Institut für Informationstechnik Fakultät für Elektrotechnik
CPU. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011
CPU Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 CPU 1/62 2012-02-29 CPU Übersicht: Pipeline-Aufbau Pipeline- Hazards CPU
OpenMP. Viktor Styrbul
OpenMP Viktor Styrbul Inhaltsverzeichnis Was ist OpenMP Warum Parallelisierung Geschichte Merkmale von OpenMP OpenMP-fähige Compiler OpenMP Ausführungsmodell Kernelemente von OpenMP Zusammenfassung Was
OpenMP - Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009
- Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009 Grundlagen der Parallelen Programmierung Hardware Threads vs. Prozesse Kritische Abschnitte Lange
Einige Grundlagen zu OpenMP
Einige Grundlagen zu OpenMP Stephanie Friedhoff, Martin Lanser Mathematisches Institut Universität zu Köln 22. Juni 2016 Überblick Was ist OpenMP? Basics Das OpenMP fork-join-modell Kompilieren und Ausführen
Neue Prozessor-Architekturen für Desktop-PC
Neue Prozessor-Architekturen für Desktop-PC Bernd Däne Technische Universität Ilmenau Fakultät I/A - Institut TTI Postfach 100565, D-98684 Ilmenau Tel. 0-3677-69-1433 bdaene@theoinf.tu-ilmenau.de http://www.theoinf.tu-ilmenau.de/ra1/
11.0 Rechnerarchitekturen
11.0 Rechnerarchitekturen Die Ziele dieses Kapitels sind: Kennen lernen der Rechnerklassifikation nach Flynn Betrachtung von Prozessorarchitekturen auf verschiedenen Abstraktionsebenen - Befehlsarchitektur
CUDA. Axel Jena, Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Axel Jena, Jürgen Pröll 1
CUDA Axel Jena, Jürgen Pröll Multi-Core Architectures and Programming Axel Jena, Jürgen Pröll 1 Warum Tesla? Traditionelle Graphikkarten Getrennte Prozessoren für Vertex- / Pixelberechnungen - Nachteil:
Programmierbeispiele und Implementierung. Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de
> Programmierbeispiele und Implementierung Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de 2 > Übersicht > Matrix Vektor Multiplikation > Mandelbrotmenge / Apfelmännchen berechnen > Kantendetektion
L3. Datenmanipulation
L Datenmanipulation Aufbau eines Computers Prozessor, Arbeitsspeicher und system Maschinensprachen und Maschinenbefehle Beispiel einer vereinfachten Maschinensprache Ausführung des Programms und Befehlszyklus
HYPER - THREADING HYPER-THREADING TECHNOLOGY SERGE FOPOUSSI. Serge Fopoussi UNIVERSITÄT BREMEN SEMINAR RECHNERARCHITEKTUR. Prof. Dr.
SEMINAR RECHNERARCHITEKTUR HYPER-THREADING TECHNOLOGY SERGE FOPOUSSI SEMINAR RECHNERARCHITEKTUR GLIEDERUNG 1. BACKGROUND : Arbeitsweise eines von Neumann-Rechners 2. ENTWICKLUNG VON PROZESSOREN 3. HYPER-THREADING
1. Einführung in OpenMP
1. Einführung in OpenMP Übersicht Einführung Homogene und inhomogene Arbeitsverteilung Rekursive Parallelität Beispiele Parallele Programmierung 1 Nicolas Maillard, Marcus Ritt 1 Überblick OpenMP: Vereinfachte
Philipp Grasl PROZESSOREN
1 PROZESSOREN INHALTSVERZEICHNIS Definition/Verwendung Prozessor Historische Entwicklung Prozessor Aufbau Prozessor Funktionsweise Prozessor Steuerung/Maschinenbefehle Prozessorkern Prozessortakt 2 DEFINITION
Rechner Architektur. Martin Gülck
Rechner Architektur Martin Gülck Grundlage Jeder Rechner wird aus einzelnen Komponenten zusammengesetzt Sie werden auf dem Mainboard zusammengefügt (dt.: Hauptplatine) Mainboard wird auch als Motherboard
Grundlagen der Rechnerarchitektur
Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler
Teil 1: Prozessorstrukturen
Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium
2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 14. Okt. 2015 Computeraufbau: nur ein Überblick Genauer: Modul Digitale Systeme (2. Semester) Jetzt: Grundverständnis
Datenpfad einer einfachen MIPS CPU
Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:
Wie groß ist die Page Table?
Wie groß ist die Page Table? Im vorigen (typischen) Beispiel verwenden wir 20 Bits zum indizieren der Page Table. Typischerweise spendiert man 32 Bits pro Tabellen Zeile (im Vorigen Beispiel brauchten
Teil Rechnerarchitekturen M07. Multiprogramming und Tasking, Flynn-Klassifikation, Parallelismus. Corinna Schmitt
Teil Rechnerarchitekturen M07 Multiprogramming und Tasking, Flynn-Klassifikation, Parallelismus Corinna Schmitt corinna.schmitt@unibas.ch Multiprogrammierung und -Tasking 2015 Corinna Schmitt Teil Rechnerarchitekturen
Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010
Multicore Herausforderungen an das Software-Engineering Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010 Inhalt _ Motivation _ Herausforderung 1: Hardware _ Herausforderung 2: Software-Partitionierung
Vorlesung Rechnerarchitektur. Mehrkernarchitekturen
Mehrkernarchitekturen Einführung Die Entwicklung von Mikroprozessoren war viele Jahre vom Prinzip des minimalen Hardwareaufwandes geprägt. (Intel 4004 mit 1000 Transistoren...) Die Entwicklung der Halbleitertechnik
Tutorium Rechnerorganisation
Woche 3 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
CISC-RISC-EPIC. eine Zwangs-Evolution?! Jörg Spilling - DECUS Frankfurter Treffen Seite: 1
CISC-RISC-EPIC eine Zwangs-Evolution?! Jörg Spilling - DECUS Frankfurter Treffen 2008 www.equicon.de Seite: 1 Heutiges Programm: CISC-RISC-EPIC - Begriffserklärung von Neumann Rechnerarchitektur Evolution
2.2 Rechnerorganisation: Aufbau und Funktionsweise
2.2 Rechnerorganisation: Aufbau und Funktionsweise é Hardware, Software und Firmware é grober Aufbau eines von-neumann-rechners é Arbeitsspeicher, Speicherzelle, Bit, Byte é Prozessor é grobe Arbeitsweise
IT-Infrastruktur, WS 2014/15, Hans-Georg Eßer
ITIS-D'' IT-Infrastruktur WS 2014/15 Hans-Georg Eßer Dipl.-Math., Dipl.-Inform. Foliensatz D'': Rechnerstrukturen, Teil 3 v1.0, 2014/11/27 Folie D''-1 Dieser Foliensatz Vorlesungsübersicht Seminar Wiss.
Untersuchung und Vorstellung moderner Grafikchiparchitekturen
Fakultät Informatik, Institut für Technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Untersuchung und Vorstellung moderner Grafikchiparchitekturen Hauptseminar Technische
Umsetzung in aktuellen Prozessoren
Kapitel 8: Umsetzung in aktuellen Prozessoren 4 Realisierung elementarer Funktionen Reihenentwicklung Konvergenzverfahren 5 Unkonventionelle Zahlensysteme redundante Zahlensysteme Restklassen-Zahlensysteme
Tutorium Rechnerorganisation
Woche 7 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
Rechnergrundlagen SS 2007. 11. Vorlesung
Rechnergrundlagen SS 2007 11. Vorlesung Inhalt Evaluation der Lehre (Auswertung) Synchroner/asynchroner Systembus Kontrollfluss/Datenfluss RISC vs. CISC Speicherhierarchie Cache Lesen Schreiben Überschreiben
GPGPU-Architekturen CUDA Programmiermodell Beispielprogramm Organiosatorisches. Tutorial CUDA. Ralf Seidler
Friedrich-Alexander-Universität Erlangen-Nürnberg 05.10.2010 Outline 1 GPGPU-Architekturen 2 CUDA Programmiermodell 3 Beispielprogramm 4 Organiosatorisches Outlook 1 GPGPU-Architekturen 2 CUDA Programmiermodell
Grundlagen der Rechnerarchitektur
Grundlagen der Rechnerarchitektur Speicher Übersicht Speicherhierarchie Cache Grundlagen Verbessern der Cache Performance Virtueller Speicher SS 2012 Grundlagen der Rechnerarchitektur Speicher 2 Speicherhierarchie
Rechnerarchitektur und Betriebssysteme (CS201): Multiprogramming und -Tasking Flynn-Klassifikation, ILP, VLIW
Rechnerarchitektur und Betriebssysteme (CS201): Multiprogramming und -Tasking Flynn-Klassifikation, ILP, VLIW 26. Oktober 2012 Prof. Dr. Christian Tschudin Departement Informatik, Universität Basel Uebersicht
Praktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Ulrich Körner, Nathanael Hübbe hermann.lenhart@zmaw.de OpenMP Einführung I: Allgemeine Einführung Prozesse
Multicore Architektur vs. Amdahl`s Gesetz
Fakultätsname Informatik, Professur Technische Informatik Multicore Architektur vs. Amdahl`s Gesetz Dresden, 21.Juli.2010 Motivation Veröffentlichung von IEEE Computer 2008 von Mark D. Hill (University
OpenCL. OpenCL. Boris Totev, Cornelius Knap
OpenCL OpenCL 1 OpenCL Gliederung Entstehungsgeschichte von OpenCL Was, warum und überhaupt wieso OpenCL CUDA, OpenGL und OpenCL GPUs OpenCL Objekte Work-Units OpenCL Adressbereiche OpenCL API Codebeispiel
Prozessorarchitektur. Kapitel 1 - Wiederholung. M. Schölzel
Prozessorarchitektur Kapitel - Wiederholung M. Schölzel Wiederholung Kombinatorische Logik: Ausgaben hängen funktional von den Eingaben ab. x x 2 x 3 z z = f (x,,x n ) z 2 z m = f m (x,,x n ) Sequentielle
Teil VIII Von Neumann Rechner 1
Teil VIII Von Neumann Rechner 1 Grundlegende Architektur Zentraleinheit: Central Processing Unit (CPU) Ausführen von Befehlen und Ablaufsteuerung Speicher: Memory Ablage von Daten und Programmen Read Only
Was ist die Performance Ratio?
Was ist die Performance Ratio? Wie eben gezeigt wäre für k Pipeline Stufen und eine große Zahl an ausgeführten Instruktionen die Performance Ratio gleich k, wenn jede Pipeline Stufe dieselbe Zeit beanspruchen
Inhalt. Prozessoren. Curriculum Manfred Wilfling. 28. November HTBLA Kaindorf. M. Wilfling (HTBLA Kaindorf) CPUs 28. November / 9
Inhalt Curriculum 1.4.2 Manfred Wilfling HTBLA Kaindorf 28. November 2011 M. Wilfling (HTBLA Kaindorf) CPUs 28. November 2011 1 / 9 Begriffe CPU Zentraleinheit (Central Processing Unit) bestehend aus Rechenwerk,
MULTICORE- UND GPGPU- ARCHITEKTUREN
MULTICORE- UND GPGPU- ARCHITEKTUREN Korbinian Pauli - 17. November 2011 Seminar Multicore Programmierung, WS11, Universität Passau 2 Einleitung Klassisches Problem der Informatik: riesige Datenmenge! Volkszählung
IT für Führungskräfte. Zentraleinheiten. 11.04.2002 Gruppe 2 - CPU 1
IT für Führungskräfte Zentraleinheiten 11.04.2002 Gruppe 2 - CPU 1 CPU DAS TEAM CPU heißt Central Processing Unit! Björn Heppner (Folien 1-4, 15-20, Rollenspielpräsentation 1-4) Harald Grabner (Folien
Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011
Technische Universität Graz Institut tfür Angewandte Informationsverarbeitung und Kommunikationstechnologie Rechnerorganisation 2 TOY Karl C. Posch Karl.Posch@iaik.tugraz.at co1.ro_2003. 1 Ausblick. Erste
Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.
Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.
Grundlagen der Rechnerarchitektur
Grundlagen der Rechnerarchitektur ARM, x86 und ISA Prinzipien Übersicht Rudimente des ARM Assemblers Rudimente des Intel Assemblers ISA Prinzipien Grundlagen der Rechnerarchitektur Assembler 2 Rudimente
Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn 07.12.2010 1
Ein kleiner Einblick in die Welt der Supercomputer Christian Krohn 07.12.2010 1 Vorschub: FLOPS Entwicklung der Supercomputer Funktionsweisen von Supercomputern Zukunftsvisionen 2 Ein Top10 Supercomputer
Teil 1: Prozessorstrukturen
Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium
Programmierung von Graphikkarten
Programmierung von Graphikkarten Stefan Lang Interdisziplinäres Zentrum für Wissenschaftliches Rechnen Universität Heidelberg INF 368, Raum 532 D-69120 Heidelberg phone: 06221/54-8264 email: Stefan.Lang@iwr.uni-heidelberg.de
Mikroprozessor als universeller digitaler Baustein
2. Mikroprozessor 2.1 Allgemeines Mikroprozessor als universeller digitaler Baustein Die zunehmende Integrationsdichte von elektronischen Schaltkreisen führt zwangsläufige zur Entwicklung eines universellen
GPGPU-Programming. Constantin Timm Informatik 12 TU Dortmund 2012/04/09. technische universität dortmund. fakultät für informatik informatik 12
12 GPGPU-Programming Constantin Timm Informatik 12 TU Dortmund 2012/04/09 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken ist im Allgemeinen nicht erlaubt. Motivation
OpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.
OpenCL Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.de Abstract: In diesem Dokument wird ein grundlegender Einblick in das relativ
RO-Tutorien 3 / 6 / 12
RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 4 AM 21.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
Grundlagen Rechnerarchitektur und Betriebssysteme
Grundlagen Rechnerarchitektur und Betriebssysteme Johannes Formann Definition Computer: Eine Funktionseinheit zur Verarbeitung von Daten, wobei als Verarbeitung die Durchführung mathematischer, umformender,
Einführung (1) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München
Einführung (1) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München Einführung (2) Architektur des Haswell- Prozessors (aus c t) Einführung
TecNews: Sandy Bridge
TecNews: Sandy Bridge Werner Fischer, Technology Specialist Thomas-Krenn.AG Thomas Krenn Herbstworkshop & Roadshow 2011 23.09. in Freyung 06.10. in Wien (A) 10.10. in Frankfurt 11.10. in Düsseldorf 12.10.
Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit)
Der Demo-Computer besitzt einen 4Bit-Mikroprozessor. Er kann entsprechend Wörter mit einer Breite von 4 Bits in einem Schritt verarbeiten. Die einzelnen Schritte der Abarbeitung werden durch Lampen visualisiert.
Architektur paralleler Plattformen
Architektur paralleler Plattformen Freie Universität Berlin Fachbereich Informatik Wintersemester 2012/2013 Proseminar Parallele Programmierung Mirco Semper, Marco Gester Datum: 31.10.12 Inhalt I. Überblick
Instruktionen pro Takt
(c) Peter Sturm, Universität Trier (u.a.) 1 Instruktionen pro Takt 500 MIPS (Dhrystone) Taktfrequenz 450 400 350 300 250 200 150 100 50 0 8086 80286 80386 80486 Pentium Pentium Pro Die-Größen: Intel Vorlesung
Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44
Virtueller Speicher SS 2012 Grundlagen der Rechnerarchitektur Speicher 44 Die Idee Virtuelle Adressen Prozess 1 Speicherblock 0 Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock
Steuerwerk einer CPU. Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck
Steuerwerk einer CPU Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck Übersicht Implementierung des Datenpfads Direkte Implementierung Mikroprogrammierung
J. Reinier van Kampenhout Robert Hilbrich Hans-Joachim Goltz. Workshop Echtzeit Fraunhofer FIRST
Modellbasierte Generierung von statischen Schedules für sicherheitskritische, eingebettete Systeme mit Multicore Prozessoren und harten Echtzeitanforderungen J. Reinier van Kampenhout Robert Hilbrich Hans-Joachim
Multicore Parallelismus! in modernen CPUs
Multicore Parallelismus! in modernen CPUs Johannes Hofmann, 21.5.2014 Seminar Architekturen von Multi- und Vielkern-Prozessoren Universität Erlangen-Nürnberg Lehrstuhl für Rechnerarchitektur Informatik
Rechneraufbau und Rechnerstrukturen
Rechneraufbau und Rechnerstrukturen von Walter Oberschelp RWTH Aachen und Gottfried Vossen Universität Münster 10. Auflage c 2006 R. Oldenbourg Verlag GmbH, München Inhaltsverzeichnis Auszug... x... aus
früher: CISC ( Complex Instruction Set Computer )
Hochleistungs-CPUs früher: CISC ( Complex Instruction Set Computer ) mächtige Instruktionssätze zur Unterstützung von Hochsprachenkonstrukten durch Hardware (Idee: don t do in software what you can do
Arithmetische und Logische Einheit (ALU)
Arithmetische und Logische Einheit (ALU) Enthält Blöcke für logische und arithmetische Operationen. n Bit Worte werden mit n hintereinander geschalteten 1 Bit ALUs bearbeitet. Steuerleitungen bestimmen
CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1
CUDA Jürgen Pröll Multi-Core Architectures and Programming Jürgen Pröll 1 Image-Resize: sequentiell resize() mit bilinearer Interpolation leicht zu parallelisieren, da einzelne Punkte voneinander unabhängig
Echtzeit Videoverarbeitung
Hardwareplattformen für Echtzeit Videoverarbeitung Herbert Thoma Seite 1 Gliederung Echtzeitanforderungen Prozessorarchitekturen Grundlagen Pipelining Parallele Befehlsausführung Systemkomponenten Speicher
1 Einleitung zum RISC Prozessor
1 Einleitung zum RISC Prozessor Wesentliche Entwicklungsschritte der Computer-Architekturen [2, 3]: Familienkonzept von IBM mit System/360 (1964) und DEC mit PDP-8 (1965) eingeführt: Gleiche Hardware-Architekturen
GPGPU mit NVIDIA CUDA
01.07.12 GPGPU mit NVIDIA CUDA General-Purpose on Formatvorlagecomputing des Graphics Processing durch Units Untertitelmasters mit KlickenCompute bearbeiten NVIDIA Unified Device Architecture Gliederung
I Grundlagen der parallelen Programmierung 1
vii I Grundlagen der parallelen Programmierung 1 1 Einführung...... 3 1.1 Paradigmenwechsel in der Softwareentwicklung..... 4 1.2 Anwendungsbereiche...... 5 1.3 Parallelität in der Hardware..... 5 1.3.1
Intel 80x86 symmetrische Multiprozessorsysteme. Eine Präsentation im Rahmen des Seminars Parallele Rechnerarchitekturen von Bernhard Witte
Intel 80x86 symmetrische Multiprozessorsysteme Eine Präsentation im Rahmen des Seminars Parallele Rechnerarchitekturen von Bernhard Witte Gliederung I. Parallel Computing Einführung II.SMP Grundlagen III.Speicherzugriff
CPU Speicher I/O. Abbildung 11.1: Kommunikation über Busse
Kapitel 11 Rechnerarchitektur 11.1 Der von-neumann-rechner Wir haben uns bisher mehr auf die logischen Bausteine konzentriert. Wir geben jetzt ein Rechnermodell an, das der physikalischen Wirklichkeit
EHP Einführung Projekt A
Volker Dörsing EHP Einführung Projekt A email: doersing@uni-jena.de praktische Übung www: http://users.minet.uni-jena.de/~ehp-head Vorbereitung, Durchführung, Kolloquium Infos zur Veranstaltung, Versuchsanleitung
Implementierung: Direkt abgebildeter Cache
Implementierung: Direkt abgebildeter Cache Direkt-abgebildeter Cache von 64 KB mit 16-Byte-Linien (Adress- und Wortlänge 32 Bit, Byteadressierung) Address (showing bit positions) 31 30 29 28..... 19 18
Auch hier wieder. Control. RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite. Instruction[31 26] (also: das Opcode Field der Instruktion)
Auch hier wieder Aus voriger Wahrheitstabelle lässt sich mechanisch eine kombinatorische Schaltung generieren, die wir im Folgenden mit dem Control Symbol abstrakt darstellen. Instruction[31 26] (also:
Einführung in die Programmierung mit C++
Seite 1 Einführung in die Programmierung mit C Teil IV - Weiterführende Themen 16. SIMD Programmierung Was bedeutet SIMD Seite SIMD Single-Instruction, Multiple-Data, also eine Instruktion, mehrere Daten
Eine Einführung in die Architektur moderner Graphikprozessoren
Eine Einführung in die Architektur moderner Graphikprozessoren Seminarvortrag von Sven Schenk WS 2005/2006 Universität Mannheim, Lehrstuhl für Rechnerarchitektur Inhalt Historische Eckpunkte Einführung
Grundlagen der Parallelisierung
Grundlagen der Parallelisierung Philipp Kegel, Sergei Gorlatch AG Parallele und Verteilte Systeme Institut für Informatik Westfälische Wilhelms-Universität Münster 3. Juli 2009 Inhaltsverzeichnis 1 Einführung
Assembler - Einleitung
Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache
Current and Emerging Architectures Multi-core Architectures and Programming
Current and Emerging Architectures Multi-core Architectures and Programming Adel El-Rayyes Hardware-Software-Co-Design, Friedrich-Alexander-Universität Erlangen-Nürnberg 9. Mai 2012 Inhalt Überblick über
Computergrundlagen Geschichte des Computers
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
Shangrila. One Instruction Set Computer
Shangrila One Instruction Set Computer Outline One Instruction Set Computer Die Idee Funktion Die Machine Shangrila VM Interfaces Tools Implementation Status & Zukunft OISC >> Die Idee CPU mit nur einer
das Grundprinzip findet sich auch heute noch, trotz aller gewaltigen technologischen Veränderungen, in modernen Mikroprozessoren D.
1.1 von Neumann sche Universalrechenautomat (1) Urvater der meisten Rechner ist der klassische Universalrechenautomat (URA) geht zurück auf John von Neumann, Goldstine, Barks (Princeton, 1946) das Grundprinzip