Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Hauptseminar: VLIW und EPIC1 VLIW und EPIC Hauptseminar “Techniken der Code-Optimierung für moderne Rechnerarchitekturen” SS/98 an der TU München von Christian.

Ähnliche Präsentationen


Präsentation zum Thema: "Hauptseminar: VLIW und EPIC1 VLIW und EPIC Hauptseminar “Techniken der Code-Optimierung für moderne Rechnerarchitekturen” SS/98 an der TU München von Christian."—  Präsentation transkript:

1 Hauptseminar: VLIW und EPIC1 VLIW und EPIC Hauptseminar “Techniken der Code-Optimierung für moderne Rechnerarchitekturen” SS/98 an der TU München von Christian Mailer (Betreuer Michael Eberl) gehalten am Donnerstag den 09.07.1998

2 Hauptseminar: VLIW und EPIC2 Gliederung 1. Allgemeines zu VLIW 2. Allgemeines zu EPIC 3. Kurzinfo über Superblocks 4. Predication –4.1. Full predication –4.2. Partial predication 5. Speculation –5.1. Control speculation –5.2 Data speculation

3 Hauptseminar: VLIW und EPIC3 Gliederung 6. Predication und speculation vereint (basiert auf IMPACT EPIC) 7. Modelle für das exception-handling bei diesen Techniken 8. Ausblick 9. Quellenangaben

4 Hauptseminar: VLIW und EPIC4 1. Allgemeines zu VLIW VLIW = Very Long Instruction Word Codegenerierung ergänzt um abschließendes Scheduling zur Befehlszusammenfassung Compiler untersucht Unabhängigkeiten der Befehle anstatt CPU Unabhängige Instruktionen werden dann in VLIWs gepackt CPU kann sicher sein, daß Befehle in einem VLIW parallel ausgeführt werden können

5 Hauptseminar: VLIW und EPIC5 Allgemeines zu VLIW Vorteile: –Vereinfachung der Hardware –Compiler kann Parallelität durch Übersicht über ganzen Code besser extrahieren –durch den Aufbau der VLIWs können auch unterschiedliche Funktionseinheiten optimal ausgenutzt werden Nachteile: –sind nicht genug unabhängige Befehle vorhanden müssen i.a. die freien Slots durch NOPs verschwendet werden –höhere Ansprüche an Compiler –Problem der Abwärtskompatibilität

6 Hauptseminar: VLIW und EPIC6 VLIW-Compiler-Ablauf

7 Hauptseminar: VLIW und EPIC7 Aufbau der Multiflow VLIWs 1024 Bit lang, aufgeteilt in vier 256-Bitblöcke, die jeweils sieben Instruktionen enthalten, insgesamt also 28 Instruktionen pro VLIW schon 1985 von Multiflow definiert Um den Codeverschnitt zu minimieren werden NOPs komprimiert

8 Hauptseminar: VLIW und EPIC8 Aufbau der Multiflow VLIWs

9 Hauptseminar: VLIW und EPIC9 Aufbau der IA-64 VLIWs 128 Bit lang, enthält 3 Instruktionen und Template-Feld 1994 wurde mit der Entwicklung begonnen Template-Feld zur Vermeidung von NOPs genauere Bitaufteilung noch nicht bekannt

10 Hauptseminar: VLIW und EPIC10 Infos von INTEL über IA-64 komplette 64-Bit-Architektur 128 Elemente großes Registerfile full predication data speculation vollständige Abwärtskompatibilität (angeblich sogar in Hardware) Merced soll nun wohl gegen Ende 1999 erscheinen

11 Hauptseminar: VLIW und EPIC11 Infos von INTEL über IA-64

12 Hauptseminar: VLIW und EPIC12 Infos von INTEL über IA-64

13 Hauptseminar: VLIW und EPIC13 2. Allgemeines zu EPIC EPIC = Explicitly Parallel Intruction Computing EPIC beschreibt eine Sammlung von Techniken um ILP (Instruction Level Parallelism) auszubeuten. Kombinierte Soft- oder Hardwaretechniken zur Leistungssteigerung Synthese erzeugt oft deutlich bessere Resultate Verlagerung von Codeoptimierung von CPU zum Compiler Compiler erhält neue hardware-realisierte Werkzeuge zur Seite für weitere Optimierung

14 Hauptseminar: VLIW und EPIC14 Allgemeines zu EPIC Vorteile: –direkte Anpassung von Compiler und Hardware –statt Anpassung Neudesign –dadurch werden neue Technologien ermöglicht Nachteile: –noch höhere Ansprüche an Compiler –Verzicht auf etablierte Standards –Abwärtskompatibilität und Leistung alter Programme

15 Hauptseminar: VLIW und EPIC15 3. Kurzinfo Superblocks Superblocks sind keine eigentliche VLIW-Optimierung Ein Superblock hat nur einen Eingang, kann aber mehrere Ausgänge besitzen Durch diese Einschränkung kann man mehrere basic blocks zu einem größeren Superblock zusammenfassen. Ziel dieser Zusammenfassung ist Verzweigungen zu eliminieren. Teile des Codes werden vervielfacht und dadurch Sprünge unnötig gemacht. der Codeumfang steigt aber dabei an

16 Hauptseminar: VLIW und EPIC16 Superblock Diagramm

17 Hauptseminar: VLIW und EPIC17 Superblock Beispiel Wc ist das Linux-Programm Word Count. Auf den folgenden Folien stelle ich zuerst den Sourcecode der meist genutzten Schleife (main loop) dar. Danach den control flow graph (CFG) dieser Schleife und daneben der daraus entstandene Superblock.

18 Hauptseminar: VLIW und EPIC18 Superblock Beispiel

19 Hauptseminar: VLIW und EPIC19 CFG des Beispiels

20 Hauptseminar: VLIW und EPIC20 Predication ist eine Technik um Verzweigungen aufzulösen dadurch auch Auflösung von Abhängigkeiten (Aufbrechen der basic blocks) Compiler hat mehr Möglichkeiten für weitere Optimierungen anstatt von Sprüngen werden 1-Bit-Register (die predicates) beachtet Befehle werden dabei immer ausgeführt 4. Predication

21 Hauptseminar: VLIW und EPIC21 Predication aber Resultate werden nur noch bei gesetzten predicates (TRUE) gespeichert Pipelines müssen nicht mehr gefüllt werden v.a. keine mispredictions bei diesen ehemaligen Sprüngen mehr möglich zwei verschiedene Arten von Predication die ich weiter erläutern werde

22 Hauptseminar: VLIW und EPIC22 4.1. Full predication Voraussetzungen: –Das predicate-Register ist ein Set aus 1-Bit-Registern, die den Flags ähnlich sind. –Befehle um diese Register zu setzen oder zu löschen. –Jeder Befehl muß um die Möglichkeit ein predicate als Quelloperand angeben zu können erweitert werden.

23 Hauptseminar: VLIW und EPIC23 Beispiel

24 Hauptseminar: VLIW und EPIC24 Funktionsschema:

25 Hauptseminar: VLIW und EPIC25 Weitere Beispiele

26 Hauptseminar: VLIW und EPIC26 Weitere Beispiele

27 Hauptseminar: VLIW und EPIC27 4.2. Partial predication Voraussetzungen: –nur ein Teil der Befehle wird erweitert (v.a. für Erweiterung von vorhandenen Architekturen gedacht) –im Extremfall ein einziger Befehl, der conditional move. Syntax: CMOV SRC, DEST, COND Beschreibung: if (COND == TRUE) DEST = SRC; –Oft noch ein SELECT-Befehl Syntax: SELECT SRC1, SRC2, DEST, COND Beschreibung: if (COND == TRUE) DEST = SRC1 else DEST = SRC2; ideal für if-conversion, verringert Codeexpansion

28 Hauptseminar: VLIW und EPIC28 Partial predication Vorgehensweise: –erst full predicated code –dann erst Umwandlung in partial predicated code –Algorithmen für full predicated code erbringen bessere Resultate –daher Beschreibung der Techniken für Rückwandlung

29 Hauptseminar: VLIW und EPIC29 Techniken für full->partial pred. prinzipiell läßt sich jeder full predicated Befehl in zwei partial predicated aufspalten if (p1) R5 = R2 + R1 –ADD R1, R2, R5 (p1) –ADD R1, R2, RX CMOV RX, R5, p1 Problem: Codeverdoppelung Problem: Umwandlung der speziellen full predicated Instruktionen Technik: Predicate promotion – unnötige predicates wieder aufgelösen

30 Hauptseminar: VLIW und EPIC30 Techniken für full->partial pred.

31 Hauptseminar: VLIW und EPIC31 Techniken für full->partial pred. Technik: Basic Conversions –alle übrigen full predicated Konstrukte umgewandeln –Codeexpansion nicht vermeidbart –Beispiel: load Konstrukt: if (p1) R4 = MEM[ADDR] full: R4 = MEM[ADDR] (p1) partial: RX = MEM[ADDR] CMOV RX, R4, p1 –Beispiel: store Konstrukt: if (p3) MEM[ADDR] = R4 full: MEM[ADDR] = R4 (p3) partial: SELECT ADDR, SAFE, RX, p3 MOV MEM[RX],R4

32 Hauptseminar: VLIW und EPIC32 Techniken für full->partial pred.

33 Hauptseminar: VLIW und EPIC33 Techniken für full->partial pred. Technik: Peephole optimizations –Code nach basic conversions oft noch verbesserbar –Umwandlungen betrachten ja nur einzelne Instruktionen –bekannte Techniken: common subexpression elimination copy propagation dead code removal –dazu spezielle Fälle suchen und ausbessern, die standardmäßig häufig vorkommen (peepholes)

34 Hauptseminar: VLIW und EPIC34 Abschließendes Beispiel

35 Hauptseminar: VLIW und EPIC35 Predication-Info von HP

36 Hauptseminar: VLIW und EPIC36 Predication-Info von HP

37 Hauptseminar: VLIW und EPIC37 Predication-Info von HP

38 Hauptseminar: VLIW und EPIC38 Predication-Info von HP

39 Hauptseminar: VLIW und EPIC39 Predication Leistungsanalyse

40 Hauptseminar: VLIW und EPIC40 Predication Hitanalyse number of branches(MR), mispred.(MP), rate of mispred.(MPR)

41 Hauptseminar: VLIW und EPIC41 5. Speculation Befehle werden eine oder mehrere Ebenen im Code hinaufgestuft dadurch frühere Ausführung als eigentlich vorgesehen eigentlich Erweiterung der out-of-order-Technologie kann basic block übergreifendend Abhängigkeiten ändern data speculation bezieht sich auf load- oder store-Befehle –Sinn: Probleme durch Latenzzeiten zu vermeiden –durch Aufwertung werden ein paar Zyklen Reserve geschaffen –Problematik der load/store-Abhängigkeiten –Druck auf das Registerfile erhöht sich –spezielles exception-handling nötig

42 Hauptseminar: VLIW und EPIC42 Speculation Control speculation bezieht sich auf die Aufwertung der sonstigen Befehle –Sinn: Auflösung von Abhängigkeiten –Compiler kann dadurch wiederum besser schedulen –ebenfalls neues exception-handling nötig

43 Hauptseminar: VLIW und EPIC43 5.1. Data speculation

44 Hauptseminar: VLIW und EPIC44 Beispiel

45 Hauptseminar: VLIW und EPIC45 Speculation-Info von HP

46 Hauptseminar: VLIW und EPIC46 Speculation-Info von HP

47 Hauptseminar: VLIW und EPIC47 Speculation-Info von HP

48 Hauptseminar: VLIW und EPIC48 Speculation-Info von HP

49 Hauptseminar: VLIW und EPIC49 Speculation-Info von HP

50 Hauptseminar: VLIW und EPIC50 Speculation-Info von HP

51 Hauptseminar: VLIW und EPIC51 Speculation-Info von HP

52 Hauptseminar: VLIW und EPIC52 5.2. Control speculation normale Befehle wie ADD oder MUL werden vorgezogen bestimmte Hardwaresysteme können die Resultate temporär behandeln bis die entsprechende Bedingung ausgewertet ist ist dies nicht der Fall muß CPU in der Lage sein die Auswirkung des Befehls total zu tilgen: –z.B. durch shadow-Registerfile –hohe Hardware kosten ein Compiler kann freie slots durch spekulative Befehle füllen Druck auf Registerfile steigt

53 Hauptseminar: VLIW und EPIC53 Beispiel

54 Hauptseminar: VLIW und EPIC54 Beispiel

55 Hauptseminar: VLIW und EPIC55 6. Predication und speculation Die IMPACT EPIC-Studie verspricht noch bessere Resultate wenn beide Techniken kombiniert werden. Ergebnisse basieren auf IMPACT-Testcompiler, keine realen Ergebnisse vorhanden

56 Hauptseminar: VLIW und EPIC56 Beispiel

57 Hauptseminar: VLIW und EPIC57 Beispiel

58 Hauptseminar: VLIW und EPIC58 Performance

59 Hauptseminar: VLIW und EPIC59 7. exception handling normalerweise bei Fehlern sofort exception bei spekulativen Befehlen so nicht möglich Anforderungen: –keine exceptions dürfen verloren gehen –keine exceptions bei fehlspekulierten Befehlen –präzise Auftrittsangabe soll möglich sein –auch Möglichkeit load/store-Abhängigkeiten zu entschärfen Restriktionen: –Ziel der spekulierten Instruktion darf bis deren eigentlichen Position nicht benutzt werden –keine exception die Resultat verändert darf ausgelöst werden

60 Hauptseminar: VLIW und EPIC60 exception handling Verschiedene Modelle: –Restricted Percolation: hält beide Restriktionen ein, kann aber keine exception-auslösenden Instruktionen spekulieren, daher normales handling –General Percolation: Löst Restriktion 2 durch Umwandlung aller möglichen Auslöser in spezielle nicht auslösende oder ignorierende Befehle. Bei ignorierenden und exception Zielregister nicht definiert. Daraus resultiert eventuell nächste exception. Aber Ort nicht mehr feststellbar.

61 Hauptseminar: VLIW und EPIC61 exception handling Weitere Modelle: –Sentinel scheduling: nötige Erweiterungen: –jeder Befehl muß als spekulativ gekennzeichnet werden können (S-Bit) –jedes Register muß als exception behaftet gesetzt werden können (E-Bit) –eigene load-/store-Befehle (E-Bit) jede spekulierte Intruktion erhält Sentinel kann unspekulierter Befehl oder spezieller Sentinel sein => spekulierte Befehle in zwei Teile spalten: –spekulierter nicht auslösender Teil –nicht spekulativer aber falls nötig auslösender Teil tritt bei spekuliertem Teil Fehler auf wird E-Bit des Ziels gesetzt und Ziel enthält Adresse von Auslöser hat spekulierter Teil Quelle mit gesetztem E-Bit wird E-Bit des Ziels gesetzt und Adresse des Auslösers übernommen

62 Hauptseminar: VLIW und EPIC62 exception handling Fortsetzung sentinel scheduling: –tritt bei unspekuliertem Befehl kein Fehler auf wird E-Bit des Ziels gelöscht –ist bei unspekuliertem Befehl bei einer Quelle ein E-Bit gesetzt wird jetzt die exception gestartet und die in dieser Quelle enthaltene Adresse als Ort verwendet –sind bei einem unspekuliertem Befehl die E-Bits mehrerer Quellen gesetzt wird die erste verwendet –Probleme: von undefiniert genutzten Registern können exceptions ausgehen, wenn das E-Bit gesetzt ist bei multiplen exceptions in einem home block wird nicht unbedingt die richtige exception signalisiert

63 Hauptseminar: VLIW und EPIC63 Beispiele

64 Hauptseminar: VLIW und EPIC64 Beispiele

65 Hauptseminar: VLIW und EPIC65 Beispiel für recovery

66 Hauptseminar: VLIW und EPIC66 Performance

67 Hauptseminar: VLIW und EPIC67 exception handling Fortsetzung sentinel scheduling: –wie im letzten Beispiel gesehen ist mit dem sentinel scheduling auch ein „retry“ möglich –dieser findet z.B. bei multiplen exceptions in einem home block auch die anderen exceptions, allerdings nicht in der richtigen Reihenfolge –durch die Verwendung von einem Puffer für stores und einem weiterem Befehl, dem confirm_store(index) kann auch eine Spekulation von Stores erreicht werden

68 Hauptseminar: VLIW und EPIC68 8. Ausblick bis jetzt nur theoretische Ergebnisse erst (Ende) 1999 wird man mit dem Merced in der Lage sein die reale Leistung zu ermitteln Noch Fragen ??? (P.S.: Bitte nicht alle auf einmal......)

69 Hauptseminar: VLIW und EPIC69 Quellenangaben D. I. August, K. M. Crozier, J. W. Sias, P. R. Eaton, Q. B. Olaniran, D. A. Connors, and W. W. Hwu. Integrated Predicated and Speculative Execution in the IMPACT EPIC Architecture. Technical Report, IMPACT, University of Illinois, Urbana, IL, 1998. V. Kathail, M. S. Schlansker, and B. R. Rau. HPL Play­ Doh architecture specification: Version 1.0. Technical Report HPL­93­80, Hewlett­Packard Laboratories, Palo Alto, CA, February 1994. S. A. Mahlke, W. Y. Chen, R. A. Bringmann, R. E. Hank, W. W. Hwu, B. R. Rau, and M. S. Schlansker. Sentinel scheduling: A model for compiler­controlled speculative execution. ACM Transactions on Computer Systems, 11(4), November 1993. S. A. Mahlke, R. E. Hank, R. A. Bringmann, J. C. Gyllenhaal, D. M. Gallagher, and W. W. Hwu. Characterizing the impact of predicated execution on branch prediction. In Proceedings of the 27th International Symposium on Microarchitecture, pages 217--227, December 1994. S. A. Mahlke, R. E. Hank, J. McCormick, D. I. August, and W. W. Hwu. A comparison of full and partial predicated execution support for ILP processors. In Proceedings of the 22th International Symposium on Computer Architecture, pages 138--150, June 1995.

70 Hauptseminar: VLIW und EPIC70 Quellenangaben G. S. Tyson. The effects of predicated execution on branch prediction. In Proceedings of the 27th International Symposium on Microarchitecture, pages 196--206, December 1994. Kemal Ebcioglu, Randy D. Groves, Ki-Chang Kim, Gabriel M. Silberman and Isaac Ziv. VLIW Compilation Techniques in a Superscalar Environment. Wen-mei Hwu. Introduction to Predicated Execution. University of Illinios, Urbana- Champaign. Zeitschrift BYTE. Ausgabe Juli 1998. Intel IA-64 intern. Quellen im.ps Format bei: http://www.crhc.uiuc.edu/IMPACT/papers/conference.html


Herunterladen ppt "Hauptseminar: VLIW und EPIC1 VLIW und EPIC Hauptseminar “Techniken der Code-Optimierung für moderne Rechnerarchitekturen” SS/98 an der TU München von Christian."

Ähnliche Präsentationen


Google-Anzeigen