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
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
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
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
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
Hauptseminar: VLIW und EPIC6 VLIW-Compiler-Ablauf
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
Hauptseminar: VLIW und EPIC8 Aufbau der Multiflow VLIWs
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
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
Hauptseminar: VLIW und EPIC11 Infos von INTEL über IA-64
Hauptseminar: VLIW und EPIC12 Infos von INTEL über IA-64
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
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
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
Hauptseminar: VLIW und EPIC16 Superblock Diagramm
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.
Hauptseminar: VLIW und EPIC18 Superblock Beispiel
Hauptseminar: VLIW und EPIC19 CFG des Beispiels
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
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
Hauptseminar: VLIW und EPIC 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.
Hauptseminar: VLIW und EPIC23 Beispiel
Hauptseminar: VLIW und EPIC24 Funktionsschema:
Hauptseminar: VLIW und EPIC25 Weitere Beispiele
Hauptseminar: VLIW und EPIC26 Weitere Beispiele
Hauptseminar: VLIW und EPIC 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
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
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
Hauptseminar: VLIW und EPIC30 Techniken für full->partial pred.
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
Hauptseminar: VLIW und EPIC32 Techniken für full->partial pred.
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)
Hauptseminar: VLIW und EPIC34 Abschließendes Beispiel
Hauptseminar: VLIW und EPIC35 Predication-Info von HP
Hauptseminar: VLIW und EPIC36 Predication-Info von HP
Hauptseminar: VLIW und EPIC37 Predication-Info von HP
Hauptseminar: VLIW und EPIC38 Predication-Info von HP
Hauptseminar: VLIW und EPIC39 Predication Leistungsanalyse
Hauptseminar: VLIW und EPIC40 Predication Hitanalyse number of branches(MR), mispred.(MP), rate of mispred.(MPR)
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
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
Hauptseminar: VLIW und EPIC Data speculation
Hauptseminar: VLIW und EPIC44 Beispiel
Hauptseminar: VLIW und EPIC45 Speculation-Info von HP
Hauptseminar: VLIW und EPIC46 Speculation-Info von HP
Hauptseminar: VLIW und EPIC47 Speculation-Info von HP
Hauptseminar: VLIW und EPIC48 Speculation-Info von HP
Hauptseminar: VLIW und EPIC49 Speculation-Info von HP
Hauptseminar: VLIW und EPIC50 Speculation-Info von HP
Hauptseminar: VLIW und EPIC51 Speculation-Info von HP
Hauptseminar: VLIW und EPIC 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
Hauptseminar: VLIW und EPIC53 Beispiel
Hauptseminar: VLIW und EPIC54 Beispiel
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
Hauptseminar: VLIW und EPIC56 Beispiel
Hauptseminar: VLIW und EPIC57 Beispiel
Hauptseminar: VLIW und EPIC58 Performance
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
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.
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
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
Hauptseminar: VLIW und EPIC63 Beispiele
Hauptseminar: VLIW und EPIC64 Beispiele
Hauptseminar: VLIW und EPIC65 Beispiel für recovery
Hauptseminar: VLIW und EPIC66 Performance
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
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......)
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, V. Kathail, M. S. Schlansker, and B. R. Rau. HPL Play Doh architecture specification: Version 1.0. Technical Report HPL9380, HewlettPackard Laboratories, Palo Alto, CA, February 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 compilercontrolled speculative execution. ACM Transactions on Computer Systems, 11(4), November 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 , December 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 , June 1995.
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 , December 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 Intel IA-64 intern. Quellen im.ps Format bei: