Technische Informatik 1

Ähnliche Dokumente
Das Prinzip an einem alltäglichen Beispiel

Technische Informatik 1

Leistung und Pipelining. Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck

Johann Wolfgang Goethe-Universität

Technische Informatik 1

Programmierung Paralleler Prozesse

Einführung in die Systemprogrammierung

Die Mikroprogrammebene eines Rechners

Rechner Architektur. Martin Gülck

2.2 Rechnerorganisation: Aufbau und Funktionsweise

Lösungsvorschlag zur 4. Übung

Einführung in die Systemprogrammierung 02

Hardware/Software-Codesign

Instruktionssatz-Architektur

L3. Datenmanipulation

Computer-Architektur Ein Überblick

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Vorlesung: Technische Informatik 3

11.0 Rechnerarchitekturen

Aufgabe 1) Die folgenden Umwandlungen/Berechnungen beziehen sich auf das 32-Bit Single-Precision Format nach IEEE-754.

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Teil VIII Von Neumann Rechner 1

HW/SW Codesign 5 - Performance

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Technische Informatik 1

Mikroprozessor als universeller digitaler Baustein

Umsetzung in aktuellen Prozessoren

Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit)

Asynchrone Schaltungen

Mikrocomputertechnik. Einadressmaschine

Rechnerarchitektur und Betriebssysteme (CS201): Multiprogramming und -Tasking Flynn-Klassifikation, ILP, VLIW

Mikroprozessortechnik. 03. April 2012

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Grundlagen der Parallelisierung

Grundlagen der Rechnerarchitektur

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Grundlagen der Rechnerarchitektur

Einführung in die Systemprogrammierung 02

Implementierung: Direkt abgebildeter Cache

a. Flipflop (taktflankengesteuert) Wdh. Signalverläufe beim D-FF

B1 Stapelspeicher (stack)

5.BMaschinensprache und Assembler

Java-Prozessoren. Die Java Virtual Machine spezifiziert... Java Instruktions-Satz. Datentypen. Operanden-Stack. Konstanten-Pool.

1 Einleitung zum RISC Prozessor

Komplexpraktikum Prozessorentwurf SoSe 2015

Grundlagen der Rechnerarchitektur

Übungscomputer mit Prozessor Bedienungsanleitung

Assembler und Hochsprachen

3 Rechnen und Schaltnetze

C. BABBAGE ( ): Programmgesteuerter (mechanischer) Rechner

1. Übung - Einführung/Rechnerarchitektur

Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Ripple-Carry- und Carry-Skip-Addierer

IT-Infrastruktur, WS 2014/15, Hans-Georg Eßer

Brückenkurs / Computer

Rechnerarchitektur Atmega Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7

Rechnerarchitektur. M. Jakob. 1. Februar Gymnasium Pegnitz

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Einführung in die technische Informatik

Projekt-Planung Delphi Tage 2012

1. Übung aus Digitaltechnik Aufgabe. Die folgende CMOS-Anordnung weist einen Fehler auf:

Klausur zur Mikroprozessortechnik

Assembler-Programmierung

DLX Befehlsübersicht

Binärcodierung elementarer Datentypen: Darstellung negativer Zahlen

Grundlagen der Programmierung 2. Parallele Verarbeitung

Static-Single-Assignment-Form

Parallelrechner (1) Anwendungen: Simulation von komplexen physikalischen oder biochemischen Vorgängen Entwurfsunterstützung virtuelle Realität

Das Rechnermodell von John von Neumann

Ergänzungen zum Manual OS V 2.05/2.06

Theorie und Einsatz von Verbindungseinrichtungen in parallelen Rechnersystemen

Algorithmen zur Integer-Multiplikation

Ein Scan basierter Seitenangriff auf DES

Synchronisierung von Transaktionen ohne Sperren. Annahme: Es gibt eine Methode, zu erkennen, wann eine Transaktion die serielle Ordnung verletzt.

IT für Führungskräfte. Zentraleinheiten Gruppe 2 - CPU 1

Benchmarking Intel Pentium III-S vs. Intel Pentium 4

Stephan Brumme, SST, 2.FS, Matrikelnr

Datensicherung. Beschreibung der Datensicherung

Convey, Hybrid-Core Computing

Klausur zur Vorlesung

Überblick über COPYDISCOUNT.CH

1 Vom Problem zum Programm

Im Original veränderbare Word-Dateien

Technischer Aufbau und allgemeine Funktionsweise eines Computers

bereits in A,3 und A.4: Betrachtung von Addierschaltungen als Beispiele für Schaltnetze und Schaltwerke

Grundlagen der Rechnerarchitektur. Einführung

Datenübernahme easyjob 3.0 zu easyjob 4.0

Assembler-Programme. Systemprogrammierung (37-023) Elementare Komponenten eines Assembler-Programmes

Lektion 3: Was ist und was kann ein Computer?

Modul Computersysteme Prüfungsklausur SS Prof. Dr. J. Keller LG Parallelität und VLSI Prof. Dr.-Ing. W. Schiffmann LG Rechnerarchitektur

Proseminar Rechnerarchitekturen. Parallelcomputer: Multiprozessorsysteme

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

ARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH

Vorlesung Programmieren

Prozessor HC680 fiktiv

Samsungs Exynos 5 Dual

Technische Informatik. Der VON NEUMANN Computer

Transkript:

Technische Informatik 1 5 Prozessor Pipelineimplementierung Lothar Thiele Computer Engineering and Networks Laboratory

Pipelining Definition 5 2

Definition Pipelining (Fliessbandverarbeitung) ist eine Architekturtechnik, bei der mehrere Instruktionen überlappend ausgeführt werden. Zerlegung der Abarbeitung einer Instruktion in 5 Phasen: IF (Instruction Fetch): Lesen der Instruktion. ID (Instruction Decode) oder RF (Register Fetch): Dekodieren der Instruktion und Lesen von Registerinhalten. EX (Execute): Ausführen der Instruktion oder Berechnung einer Adresse. MEM (Memory): Zugriff auf den Datenspeicher. WB (Write Back): Speichern der Resultate im Registerfeld. 5 3

Prinzpieller Ablauf Änderung des Programmzählers IF: Instruction Fetch RF: Register Fetch EX: Execute MEM: Memory Access WB: Write Back Register 5 4

Ablauf einer Instruktionsausführung 5 5

Vergleich verschiedener Architekturen T1 T2 Einzyklenverarb. LW SW T1 T2 T3 T4 T5 T6 T7 T8 T9 LW SW Mehrzyklenverarb. IF RF EX MEM WB IF RF EX MEM Pipelineverarb. IF RF EX MEM WB LW IF RF EX MEM WB SW 5 6

Berechnung der Effizienz Homogene Rechenzeiten pro Stufe: k Pipelinestufen IF RF EX MEM WB IF RF EX MEM WB IF RF EX MEM WB IF RF EX MEM WB IF RF EX MEM WB n Instruktionen n k Speedup k n 1 Speedup Effizienz k k n n 1 n 1 5 7

5 8 Berechnung der Effizienz Inhomogene Rechenzeiten: 1 2 k 3 i k i k i i n k i i i k i i k i k i i k n k k n Effizienz n k n Speedup 1 1 1 1 1 1 max 1) ( max max 1) (

Beispiel Annahme über die Verzögerungszeiten im Datenpfad: 100ps für Register Schreiben oder Lesen 200ps für alle anderen Bausteine (ALU, Hauptspeicher) Instruktion Instr. Fetch Register Read ALU Op Memory Access Register Write Gesamt Zeit lw 200ps 100 ps 200ps 200ps 100 ps 800ps sw 200ps 100 ps 200ps 200ps 700ps R format 200ps 100 ps 200ps 100 ps 600ps beq 200ps 100 ps 200ps 500ps Effizienz = 800ps (5 200ps) = 80% Einzeltakt: 1 800ps = 1.25 10 9 Instruktionen/s Pipelining: 1 200ps = 5 10 9 Instruktionen/s 5 9

Pipelinearchitektur Einzyklenimplementierung 5 10

Entwurf einer Pipeline Architektur Strategie: Ausgangspunkt ist eine Architektur, bei der in jedem Takt eine neue Instruktion ausgeführt wird ( Single Cycle ). Der Kontrollpfad besitzt keinen internen Zustand und kann demzufolge durch eine kombinatorische Schaltung realisiert werden. Es sind folgende Instruktionen (beispielhaft) realisiert: lw, sw, beq, add, sub, and, or, slt (set on less than). Es gibt keinen Branch Delay und keine Latenz. Die Register Register Instruktionen add, sub, and, or und slt heissen auch R Instruktionen ( R type ). 5 11

Datenpfad und Kontrollpfad PCSrc ALUControl 5 12

Pipelinearchitektur Datenpfad 5 13

Anpassung des Einzeltakt Datenpfades Trennung aller Stufen (IF, ID, EX, MEM, WB) durch Register. Dadurch werden die Ergebnisse bei der Abarbeitung einer Instruktion nach jeder Phase gespeichert. Aufteilung der Komponenten des Datenpfades auf die einzelnen Phasen. Ausnahme: Das Registerfeld wird sowohl in der ID Phase als auch in der WB Phase genutzt. Innerhalb eines Taktes kann sowohl lesend als auch schreibend zugegriffen werden. Wird also ein neues Datum geschrieben, kann es gleichzeitig (also nicht erst nach dem nächsten Taktsignal) gelesen werden. Die Schreibadresse wird durch die Stufen ID, EX, MEM geführt. 5 14

Datenpfad einer Pipeline Architektur 5 15

Beispiel eines Verarbeitungsablaufs Pipeline Diagramm (Kurzform): Pipeline Diagramm (Architektur): 5 16

Detaillierter Ablauf 5 17

Detaillierter Ablauf 5 18

Detaillierter Ablauf 5 19

Detaillierter Ablauf 5 20

Detaillierter Ablauf 5 21

Detaillierter Ablauf 5 22

Pipelinearchitektur Steuerung 5 23

Entwurf des Kontrollpfades Ausgangspunkt ist die Steuerung des Einzyklen Datenpfades. Die Steuerungsinformationen müssen zusammen mit der jeweiligen Instruktion transportiert werden. Damit ergibt sich auch ein Pipelining des Kontrollpfades. 5 24

Logik des Kontrollpfades Komponente ALU Control Komponente Control 5 25

5 26

Hazards Klassifikation 5 27

Hazards Unter einem Hazard versteht man eine Situation in der Rechnerarchitektur, bei der eine Phase einer Instruktion nicht direkt im Anschluss an die vorherige Phase ausgeführt werden kann. Man unterscheidet drei Arten von Hazards: Struktureller Hazard, Ablauf Hazard und Daten Hazard. Struktureller Hazard Die Rechnerarchitektur kann die Kombination von Instruktionen, die derzeit ausgeführt werden soll, nicht unterstützen. Beispiel: Falls Daten und Instruktionsspeicher nicht getrennt wären, könnten zwei Instruktionen nicht gleichzeitig in der IF und MEM Phase sein, da beide lesend zugreifen. 5 28

Hazards Ablauf Hazard Das Ergebnis einer Instruktionsausführung wird benötigt, um zu entscheiden, welche Instruktionen anschliessend ausgeführt werden. Das Beispiel (siehe nächste Folie) zeigt eine Situation, bei der keine besonderen Massnahmen zur Vermeidung des Ablauf Hazard getroffen wurden. Die Instruktionen 44 52 werden fälschlicherweise ausgeführt. Falls wir einen Branch Delay Slot annehmen, werden immerhin noch die Instruktionen 48 und 52 fälschlicherweise ausgeführt. Daten Hazard Ein Operand einer Instruktion hängt vom Ergebnis einer vorherigen Instruktion ab. Das Beispiel (siehe übernächste Folie) zeigt eine Situation, bei der keine besonderen Massnahmen zur Vermeidung des Daten Hazard getroffen wurden. Die von der Instruktion sub erzeugten Daten liegen für die Instruktionen and und or noch nicht vor. 5 29

Beispiel Ablauf Hazards 5 30

Beispiel Daten Hazard 5 31

Hazards Vermeidung von Datenhazards 5 32

Vermeidung von Daten Hazards Vermeidung von Daten Hazards durch Compiler Der Compiler kann versuchen, die Instruktionen so zu ordnen, dass das Ergebnis der Programmausführung nicht verändert wird und Hazards vermieden werden. Beispiel: lw $2, 20($1) and $4, $2, $5 or $8, $2, $6 slt $1, $6, $7 lw $2, 20($1) slt $1, $6, $7 nop and $4, $2, $5 or $8, $2, $6 Falls der Compiler keine sinnvolle Instruktion einfügen kann, so verwendet er die Instruktion nop. Sie verändert Daten nicht und wandert wie jede andere Instruktion durch die Pipeline. 5 33

Vermeidung von Daten Hazards Vermeidung von Daten Hazards durch Forwarding Die fehlenden Daten werden vorzeitig, das heisst vor ihrer Speicherung im Registerfeld, von den Komponenten des Datenpfades zur anfordernden Instruktion geleitet. Prinzip: 5 34

Vermeidung von Daten Hazards Beschreibung der Forwarding Funktion Notation: MEM/WB.RegisterRd Pipeline Register MEM/WB Feld mit dem Namen RegisterRd Weiterleiten eines Datums aus dem EX/MEM Register, das heisst eines vorherigen ALU Operanden (Beispiel der Forwarding Funktion für R Instruktionen): if ( EX/MEM.RegWrite = 1 and EX/MEM.RegisterRd!= 0 and EX/MEM.RegisterRd = ID/EX.RegisterRs) {ForwardA = 10 ;} if ( EX/MEM.RegWrite = 1 and EX/MEM.RegisterRd!= 0 and EX/MEM.RegisterRd = ID/EX.RegisterRt) {ForwardB = 10 ;} 5 35

Vermeidung von Daten Hazards Beschreibung der Forwarding Funktion Weiterleiten eines Datums aus dem MEM/WB Register, das heisst eines vergangenen ALU Operanden (Beispiel der Forwarding Funktion für R Instruktionen): if ( MEM/WB.RegWrite = 1 and MEM/WB.RegisterRd!= 0 and EX/MEM.RegisterRd!= ID/EX.RegisterRs and MEM/WB.RegisterRd = ID/EX.RegisterRs) {ForwardA = 01 ;} if ( MEM/WB.RegWrite = 1 and MEM/WB.RegisterRd!= 0 and EX/MEM.RegisterRd!= ID/EX.RegisterRt and MEM/WB.RegisterRd = ID/EX.RegisterRt) {ForwardB = 01 ;} 5 36

Vermeidung von Daten Hazards 00 01 00 01 10 10 ForwardA ForwardB 5 37

Vermeidung von Daten Hazards 5 38

Vermeidung von Daten Hazards Vermeidung von Daten Hazards durch Stalls Forwarding kann nicht alle Hazards verhindern. Abhilfe durch das Einfügen einer Blase im Ablauf. Dies entspricht dem Einfügen einer nop Instruktion. Diese Blase wird aber nicht in der IF Phase sondern in einer späteren Phase eingefügt. Die Instruktionen in den nachfolgenden Stufen wandern wie üblich durch die Pipeline. Die Instruktionen in den Stufen vorher bleiben dort stehen. 5 39

Load Use Daten Hazard Instruktion muss für einen Zyklus anhalten (stall). Auch dann ist noch forwarding notwendig. 5 40

Load Use Hazard Erkennung Überprüfen, ob die benutzende Instruktion in der ID Phase ist (im Beispiel and $4, $2, $5). Die Registernummern der ALU Operanden der benutzenden Instruktion in der ID Phase: IF/ID.RegisterRs, IF/ID.RegisterRt Ein Load Use Hazard tritt auf, falls (ID/EX.MemRead = 1) and ((ID/EX.RegisterRt = IF/ID.RegisterRs) or (ID/EX.RegisterRt = IF/ID.RegisterRt)) Falls ein Hazard erkannt wurde, muss die Pipeline angehalten und eine Blase eingefügt werden. 5 41

Wie wird die Pipeline angehalten? Einfügen einer Blase zwischen der lw Instruktion (EX Phase) und der benutzenden Instruktion (ID Phase). Die Steuerungssignale am ID/EX Register werden auf 0 gesetzt: EX, MEM und WB führen in den folgenden Takten eine nop Instruktion aus (no operation). Verhindern, dass der Programmzähler (PC) und das IF/ID Register geschrieben werden: Die nachfolgende Instruktion wird nochmals gelesen (IF). Anhalten für einen Zyklus erlaubt MEM, die Daten für die lw Instruktionzu lesen. Sie können anschliessend zur EX Phase mittels forwarding weitergeleitet werden. 5 42

Stall/Blase in der Pipeline detection forwarding Stall (Anhalten) wird hier ausgeführt. 5 43

Stall/Blase in der Pipeline detection Etwas genauer... 5 44

Datenpfad mit Hazard Erkennung 5 45

Hazards Vermeidung von Ablaufhazards 5 46

Vermeidung von Ablauf Hazards Vermeidung von Ablauf Hazards durch Stalls : Einfügen von Blasen wie bei Daten Hazards. Beispiel: Verzweigungsentscheidung nach der MEM Phase bekannt. Jede Verzweigung führt zu 3 Stall Zyklen: Verzweigung IF ID EX MEM WB Instr. i+1/k IF 0 0 IF ID EX Instr. i+2/k+1 IF ID Instr. i+3/k+2 IF Berechnung der mittleren Zahl der Zyklen pro Instruktion: Annahmen: 5 stufiger Pipeline, 1 Taktperiode pro Stufe, nur Stalls durch Verzweigungen, das Programm weist 30% Verzweigungen auf. CPI = 0.3*4 + 0.7 = 1.9 (CPI = cycles per instruction) 5 47

Vermeidung von Ablauf Hazards Vermeidung von Ablauf Hazards durch statische Vorhersage: Der Prozessor nimmt an, dass der Programmfluss nicht verzweigt. Falls diese Vorhersage eintrifft, wird das Programm wie vorgesehen ausgeführt. Andernfalls werden die laufenden, fälschlicherweise begonnenen Instruktionen abgebrochen und die korrekte Instruktion geladen. Beispiel einer falschen Vorhersage, Verzweigungsentscheidung ist nach der MEM Phase bekannt: Verzweigung IF ID EX MEM WB Instr. i+1/k IF ID EX IF ID EX Instr. i+2/k+1 IF ID O IF ID Instr. k+2 IF O O IF 5 48

Vermeidung von Ablauf Hazards Berechung der mittleren Zahl der Zyklen pro Instruktion: Annahmen: 5 stufiger Pipeline, 1 Taktperiode pro Stufe, nur Stalls durch Verzweigungen, das Programm weist 30% Verzweigungen auf, in der Hälfte der Fälle wird die Verzweigung ausgeführt. CPI = 0.5*0.3*4 + 0.5*0.3 + 0.7 = 1.45 Vermeidung von Ablauf Hazards durch dynamische Vorhersage: Der Prozessor trifft die Vorhersage nicht statisch sondern auf der Grundlage der vergangenen Verzweigungsentscheidungen. Falls das letzte Mal an dieser Instruktion verzweigt wurde, dann auch dieses Mal. Je nach Vorhersage wird dann im Programmfluss verzweigt oder auch nicht. Dieses Schema kann erweitert werden, in dem auch Entscheidungen in der weiteren Vergangenheit berücksichtigt werden. 5 49

Vermeidung von Ablauf Hazards Problem bei dynamischer Vorhersage: Bei Programmschleifen gelten oft sehr ungleiche Verzweigungswahrscheinlichkeiten (z.b. 99% ja, 1% nein). Bei einer falschen Prädiktion wird dann auch der nächste Durchlauf falsch vorhergesagt: Aktion Prädiktion Keine Verzw. Verzweigung Keine Verzw. Verzweigung 2 Bit Prädiktion Keine Verzw. Verzweigung 5 50

Vermeidung von Ablauf Hazards Lösung des Problems bei der dynamischen Vorhersage durch eine 2 Bit Prädiktion: Die Vorhersage wird nur bei zwei aufeinanderfolgenden falschen Vorhersagen geändert. Modellierung durch einen endlichen Automaten: not taken not taken not taken strongly taken likely taken likely not taken strongly not taken taken taken taken taken not taken 5 51

Vermeidung von Ablauf Hazards Verminderung von Ablauf Hazards durch frühzeitige Entscheidung: Verminderung der Zahl der Wartezyklen durch Vorverlegen des Zeitpunktes, zu dem die Entscheidung bekannt wird. Es kann zum Beispiel in der ID Stufe eine zusätzliche Vergleichskomponente eingesetzt und die Berechnung der Verzweigungsadresse ebenfalls in dieser Stufe durchgeführt werden. Berechnung Verzweigungsadresse frühzeitiger Vergleich 5 52

Vermeidung von Ablauf Hazards Beispiel für Kombination aus frühzeitiger Entscheidung und Stall. Assemblerprogramm: 36 sub $10,$4,$8 40 beq $1,$3,7 44 and $12,$2,$5... 72 lw $4,50($7) Taktzyklus der Entscheidung: 5 53

Vermeidung von Ablauf Hazards Beispiel für Kombination aus frühzeitiger Entscheidung und Stall. Assemblerprogramm: 36 sub $10,$4,$8 40 beq $1,$3,7 44 and $12,$2,$5... 72 lw $4,50($7) Taktzyklus nach der Entscheidung: 5 54

Vermeidung von Ablauf Hazards Verminderung von Ablauf Hazards durch Branch Delay Slot: Die Semantik der Verzweigungsinstruktion wird verändert. Die Instruktion nach der Verzweigungsinstruktion wird in jedem Fall ausgeführt. Es ist die Aufgabe des Compilers oder Assemblers, den freien Platz mit einer sinnvollen Instruktion zu füllen und dafür zu sorgen, dass die Semantik des Programms nicht verändert wird. 5 55

Vermeidung von Ablauf Hazards Berechung der mittleren Zahl der Zyklen pro Instruktion: Annahmen: 5 stufiger Pipeline, 1 Taktperiode pro Stufe, ein Branch Delay Slot, keine weiteren Stalls aufgrund einer Verzweigungsinstruktion, das Programm weist 30% Verzweigungen auf (Branch Delay Slots sind nicht mitgezählt), der Compiler kann den Slot so füllen, dass sich die Ausführung im Mittel um 0.6 Instruktionen verkürzt. CPI = 0.3*2 0.3*0.6 + 0.7 = 1.12 5 56

Instruktions Parallelität 5 57

Instruktionsparallelität (instruction level parallelism ILP) Ziel: Erhöhter Durchsatz an ausgeführten Instruktionen Architekturprinzipien zur Vergrösserung der Instruktionsparallelität: Spekulation: Vorhersage über das Ergebnis zukünftiger Instruktionen Mehr Pipelinestufen, tiefere Pipeline: weniger Rechenzeit pro Stufe und daher kürzere Taktperiode Parallele Ausführungseinheiten: Mehrere Instruktionen können in der Ausführungsstufe (EX) gleichzeitig bearbeitet werden. Mehrere Instruktionen pro Takt laden (multiple issue): Vervielfältigung der Pipelinestufen Gleichzeitiger Start mehrerer Instruktionen in einem Takt Im Prinzip: CPI<1, aber Abhängigkeiten zwischen Instruktionen vergrössern den CPI Wert 5 58

Spekulation Schätzen, was mit einer Instruktion geschehen soll: Starte die zugehörige Operation so bald wie möglich, auch wenn nicht alle Informationen vorliegen. Prüfe, ob die Entscheidung ( Schätzung ) korrekt war: Falls ja, fahre mit der Programmabarbeitung fort. Falls nein, stelle den vorherigen Systemzustand wieder her. Wird sowohl bei statischer als auch bei dynamischer Parallelität benutzt. Beispiele: Spekuliere auf das Ergebnis einer bedingten Verzweigung. Damit kann die Verarbeitung vor dem Vorliegen des Ergebnisses der Verzweigung fortgesetzt werden. Spekuliere darauf, dass ein sw und ein darauf folgendes lw nicht die gleiche Adresse referenzieren. Damit können die beiden Instruktionen umgeordnet werden. 5 59

Spekulation Compiler kann Instruktionen umordnen (z.b. lw Instruktion vor eine bedingte Verzweigung bewegen): Eventuell müssen dann Instruktionen eingefügt werden, die bei einer falschen Vorhersage das Resultat wieder korrigieren. Hardware kann Instruktionen vorziehen: Resultate werden zwischengespeichert, bis sie tatsächlich benötigt werden und die richtige Schätzung bestätigt wurde. Erst dann werden sie in das Registerfeld eingespeichert ( Commit Unit ). Bei einer falschen Vorhersage werden die Zwischenergebnisse gelöscht. 5 60

Instruktions Parallelität Superpipelining 5 61

Superpipelining Verwendung paralleler Ausführungseinheiten in der EX Stufe. Einführung vieler Pipelinestufen, vor allem bei den arithmetischen Einheiten. 5 62

Superpipelining Konsequenzen: Höhere Taktfrequenz durch geringere Laufzeit zwischen Pipelinestufen. Die Zahl der Stufen ist je nach Instruktion unterschiedlich lang. Daher werden sie zu unterschiedlichen Zeiten beendet ( out of order completion ). Der Einfluss von Hazards auf die Ausführungszeit von Programmen wird grösser. Zusätzlich sind strukturelle Hazards möglich. Operanden für ADDD werden spätestens benötigt Daten stehen frühestens zur Verfügung «out of order completion» 5 63

Instruktions Parallelität Multiple Issue 5 64

Multiple Issue Statische Parallelität (Static Multiple Issue) Compiler gruppiert Instruktionen (kombiniert Instruktionen in einer einzigen langen Instruktion), die gleichzeitig geladen werden sollen (VLIW very long instruction word). Der Compiler detektiert und verhindert Hazards. Dynamische Parallelität (Dynamic Multiple Issue) CPU lädt aufeinanderfolgende Instruktionen und bestimmt, welche davon als nächstes ausgeführt werden sollen. Compiler kann hierbei Vorarbeit leisten, in dem er Instruktionen global umsortiert. CPU löst Hazards durch erweiterte Techniken zur Laufzeit auf. 5 65

Statische Parallelität In jedem Takt werden mehrere Instruktionen dekodiert. Interne Komponenten werden dupliziert. Es gibt üblicherweise mehrere Arten von arithmetischen Einheiten, zum Beispiel Festkomma, Gleitkomma Einheiten, Multiplizierer, Dividierer. 5 66

Statische Parallelität: VLIW MIPS VLIW: Very Long Instruction Word MIPS Architektur mit einem doppelten Instruktionswort: 64 Bits ALU Op (R Format) oder Verzweigung (I Format) Load oder Store (I Format) Instruktionen werden immer paarweise geladen, dekodiert und ausgeführt. Die Rechnerarchitektur benötigt jetzt ein Registerfeld mit 4 Lese und 2 Schreibzugriffen sowie einen separaten Addierer für Speicheradressen. 5 67

5 68

Statische Parallelität: Compiler Techniken Programmbeispiel: lp: lw $t0,0($s1) # $t0=array element addu $t0,$t0,$s2 # add scalar ($s2) to $t0 sw $t0,0($s1) # store result addi $s1,$s1,-4 # decrement pointer bne $s1,$0,lp # branch if $s1!= 0 Compiler muss Instruktionen umsortieren: Instruktionen in einem Paket müssen unabhängig sein. Compiler muss Details der Rechnerarchitektur kennen. Hier: Separieren von Lade Instruktionen und der Benutzung der Daten um einen Takt zur Vermeidung von Hazards; im Beispiel nehmen wir an, dass Verzweigungen perfekt vorhergesagt werden; kein Branch Delay Slot; forwarding wird unterstützt 5 69

Statische Parallelität: Compiler Techniken ALU oder Verzweigung Datentransfer CC lp: lw $t0,0($s1) 1 addi $s1,$s1,-4 2 addu $t0,$t0,$s2 3 bne $s1,$0,lp sw $t0,4($s1) 4 4 Taktyzklen für 5 Instruktionen CPI = 0.8 (im besten Fall wäre CPI =0.5) Verbesserung durch Schleifenentfaltung (loop unrolling) Replizieren des Schleifenkörpers so dass Instruktionen von unterschiedlichen Iterationen kombiniert werden können. 5 70

Statische Parallelität: Compiler Techniken Schleife 4 mal entfalten (in unserem Beispiel): Register umbenennen um möglichst viele Abhängigkeiten zwischen Instruktionen zu entfernen. Nur ein Schleifentest anstelle von 4 Tests. lp: lw $t0,0($s1) # $t0=array element lw $t1,-4($s1) # $t1=array element lw $t2,-8($s1) # $t2=array element lw $t3,-12($s1) # $t3=array element addu $t0,$t0,$s2 # add scalar in $s2 addu $t1,$t1,$s2 # add scalar in $s2 addu $t2,$t2,$s2 # add scalar in $s2 addu $t3,$t3,$s2 # add scalar in $s2 sw $t0,0($s1) # store result sw $t1,-4($s1) # store result sw $t2,-8($s1) # store result sw $t3,-12($s1) # store result addi $s1,$s1,-16 # decrement pointer bne $s1,$0,lp # branch if $s1!= 0 5 71

Statische Parallelität: Compiler Techniken ALU oder Verzweigung Datentransfer CC lp: addi $s1,$s1,-16 lw $t0,0($s1) 1 lw $t1,12($s1) 2 addu $t0,$t0,$s2 lw $t2,8($s1) 3 addu $t1,$t1,$s2 lw $t3,4($s1) 4 addu $t2,$t2,$s2 sw $t0,16($s1) 5 addu $t3,$t3,$s2 sw $t1,12($s1) 6 sw $t2,8($s1) 7 bne $s1,$0,lp sw $t3,4($s1) 8 8 Taktzyklen um 14 Instruktionen auszuführen: CPI = 0.57 (gegenüber dem besten Fall CPI = 0.5) 5 72

Multiple Issue (Wiederholung) Statische Parallelität (Static Multiple Issue) Compiler gruppiert Instruktionen (kombiniert Instruktionen in einer einzigen langen Instruktion), die gleichzeitig geladen werden sollen (VLIW very long instruction word). Compiler detektiert und verhindert Hazards. Dynamische Parallelität (Dynamic Multiple Issue) CPU lädt aufeinanderfolgende Instruktionen und bestimmt, welche davon als nächstes ausgeführt werden sollen. Compiler kann hierbei Vorarbeit leisten, in dem er Instruktionen global umsortiert. CPU löst Hazards durch erweiterte Techniken zur Laufzeit auf. 5 73

Dynamische Parallelität Dynamic Multiple Issue : CPU entscheidet, wie viele Instruktionen begonnen werden. Dynamic Pipeline Scheduling : Die CPU vermeidet zur Laufzeit (dynamisch) strukturelle Hazards und Datenhazards und optimiert die Parallelität: Instruktionen werden nicht in der gegebenen Reihenfolge ausgeführt, aber die Ergebnisse werden in der richtigen Reihenfolge geschrieben. Compiler kann hierbei Vorarbeit leisten, in dem er Instruktionen global umsortiert. Weitere Techniken zur Verbesserung der Ausführungszeit: Spekulation Register Umbenennung (wird in der Vorlesung nicht behandelt) 5 74

Dynamic Pipeline Scheduling Bestimmt Abhängigkeiten zwischen Instruktionen. Speichert die jeweils notwendigen Operanden. Schreibt Resultate in der richtigen Reihenfolge in die Prozessorregister (Registerfeld) Kann auch Operanden beisteuern Resultate werden auch zu allen darauf wartenden Reservation Stations gesendet. 5 75

Instruktions Parallelität Beispiele 5 76

Cortex A8 und Intel i7 5 77

ARM Cortex A8 Pipeline BP = branch predictor Adress Generation Unit 2 Instruktionen können gleichzeitig verarbeitet werden 5 78

ARM Cortex A8 Rechenleistung optimale Zyklen/Instruktion CPI=0.5 5 79

Grenzen der Parallelität 5 80

Prozessor (Wiederholung) Intel Xeon Phi (5 Milliarden Transistoren, 22nm Technologie, 350mm 2 Fläche) Oracle Sparc T5 5 81

Gesetz von Amdahl Frage: Wo liegen die Grenzen der Parallelisierung? Annahme: Auszuführende Aufgabe hat einen seriellen Teil und einen parallelisierbaren Anteil. Amdahls «Gesetz»: Faktor = 4 5 82

Beispiel Aufgabe: Bilde Summe von 10 Skalaren sowie die Summe zweier 10x10 Matrizen. Die Last kann zwischen den Prozessoren gleichmässig aufgeteilt werden. Die Summe der Skalare wird naiv implementiert (sequentiell). Frage: Was ist die Beschleunigung bei 10 und 100 Prozessoren? Lösung: Einzelner Prozessor: Zeit = (10 + 100) t add 10 Prozessoren: Zeit = 100/10 t add + 10 t add = 20 t add Beschleunigung = 110/20 = 5.5 100 Prozessoren: Zeit = 100/100 t add + 10 t add = 11 t add Beschleunigung = 110/11 = 10 5 83