Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph...

28
Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009

Transcript of Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph...

Page 1: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

Parallelität auf InstruktionsebeneÜbersetzung von künstlichen SprachenPräsentation: Christoph Heitmann03.06.2009

Page 2: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

2

MotivationModerne Rechnerarchitekturen nutzen die parallele Befehlsausführung für eine beschleunigte/effiziente Programmausführung

VLIW

• Very Long Instruction Word• Mehrere Befehle zu einem

VLIW-Befehl zusammengefasst

• Statische Planung

Super-skalar

• Mehrere parallelarbeitende Funktionseinheiten

• Dynamische Planung

Parallelität auf Instruktionsebene

Page 3: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

3

Agenda

Grundlagen

Lokale Codeplanung

Globale Codeplanung Softwarepipelining

Page 4: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

4

Agenda

Grundlagen

Lokale Codeplanung

Globale Codeplanung Softwarepipelining

Page 5: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

5

Phasenstruktur eines CompilersDie Optimierung für Befehlsparallelität erfolgt auf Basis eines Zwischencodes und für eine spezifische Architektur

Grundlagen

Frontend

Lexikalische Analyse

Syntaktische Analyse

Semantische Analyse

Zwischencode-Generierung

Optimierung

Optimierung für Parallelität auf

Instruktionsebeneu.a.

Backend

Zielcode-Generierung

Page 6: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

6

Darstellungsformen (1)Das Programmbeispiel berechnet den größten gemeinsamen Teiler zweier Zahlen nach Euklid

Grundlagen

// Gegeben: Zwei Ganzzahlen a > 0, b > 0, // Variable z für Zwischenberechnungen 1 while (b > 0) | Block A 2 { 3 if (a < b) | Block B 4 { 5 z = a; | Block C 6 a = b; | Block C 7 b = z; | Block C 8 } 9 z = a - b; | Block D 10 a = b; | Block D 11 b = z; | Block D 12 }

// Gegeben: Zwei Ganzzahlen a > 0, b > 0 // r0 = Speicherdresse von a, // r1 = Speicherdresse von b, r2 = 0 I1 S: LD r3, r0 I2 LD r4, r1 I3 CJMP r3 < r4, T

|--- Ende Grundblock A ---| I4 SUB r5, r3 – r4 I6 ST r0, r4 I7 ST r1, r5 I8 CJMP r4 > r2, S

|--- Ende Grundblock B ---| |--- Ende von Programmteil S ---| I9 T: LD r5, r0 I10 ST r0, r4 I11 ST r1, r5 I12 CJMP S |--- Ende Grundblock C ---| |--- Ende von Programmteil T ---|

Ursprungsprogramm (C#): Code für abstrakte Maschine:

Generiere Zwischencode

Abstrakte Maschine

RISC-ähnliche Architektur Lade- und Speicherbefehl (LD bzw. ST) Addition und Subtraktion (ADD bzw. SUB) Bedingter Sprungbefehl (CJMP) 1x Rechenwerk (ALU) 1x Speicherkommunikationseinheit (MEM)

Page 7: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

7

Darstellungsformen (2)Im Programm befindliche Steuerungs- und Datenabhängigkeiten lassen sich mit Hilfe von Graphen veranschaulichen

Grundlagen

Kontrollflussgraph (und Verfeinerung)

T B

A

B C

F

F

T T

F

F

Datenabhängigkeitsgraph

1

1

1

SUB r 5 , r 3 – r 4

ST r 0 , r 4

ST r 1 , r 5

CJMP S

1 1

1

B ALU MEM

SUB r5, r3 – r4

ST r0, r4

ST r1, r5

CJMP r4 > r2, S

echte Datenabängigkeiten Ressourcenreservierungstabelle Kantenbeschriftung mit Verzögerungszeiten

Steuerungsabhängigkeiten Beschreibt Programmfluss mit Bedingungsprüfungen Programmverzweigungen mit wahr (T) und unwahr (F)

Page 8: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

8

Agenda

Grundlagen

Lokale Codeplanung

Globale Codeplanung Softwarepipelining

Page 9: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

9

Agenda

Grundlagen

Lokale Codeplanung

Globale Codeplanung Softwarepipelining

Page 10: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

10

Planung eines Grundblockes (1)Die lokale Codeplanung ergibt einen Ablaufplan für einen Grundblock, und stellt somit den ersten Schritt einer Optimierung

dar

Takt Maschinencode ALU MEM 1 SUB r5, r3 – r4 ST r0, r4 2 - ST r1, r5 3 CJMP r4 > r2, S -

Datenabhängigkeitsgraph: Optimiertes Maschinenprogramm:

Listenplanung

Grundsatz der Listenplanung

„… berechnet der Algorithmus den frühesten Zeitpunkt, zu dem ein Knoten ausgeführt werden kann, gemäß seinen Datenabhängigkeiten zu den vorher verplanten Knoten.“Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman

1

1

1

SUB r 5 , r 3 – r 4

ST r 0 , r 4

ST r 1 , r 5

CJMP S

1 1

1

B ALU MEM

Page 11: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

11

Planung eines Grundblockes (2)Nicht alle Grundblöcke bieten die Möglichkeit einer parallelen Befehlsausführung

Ablaufpläne optimierter Grundblöcke Auswertung

Grundblock A: Keine parallele Ausführung Grundblock B: Benötigt 3 statt 4 Takte Grundblock C: Keine parallele Ausführung

FazitDie Listenplanung im Rahmen der lokalen Ablaufplanung erfasst nur ein geringes Parallelitätspotential.

Takt Maschinencode ALU MEM 1 - LD r3, r0 2 - LD r4, r1 3 - - 4 CJMP r3 < r4, T -

Takt Maschinencode ALU MEM

1 SUB r5, r3 – r4 ST r0, r4 2 - ST r1, r5 3 CJMP r4 > r2, S -

Takt Maschinencode ALU MEM

1 - LD r5, r0 2 - - 3 - ST r0, r4 4 - ST r1, r5 5 CJMP r3 < r4, T -

Page 12: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

12

Agenda

Grundlagen

Lokale Codeplanung

Globale Codeplanung Softwarepipelining

Page 13: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

13

Agenda

Grundlagen

Lokale Codeplanung

Globale Codeplanung Softwarepipelining

Page 14: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

14

Planung mehrerer Grundblöcke / Bereiche (1)Im Rahmen der Bereichsplanung erfolgt eine Herausarbeitung von Parallelität über Grundblockgrenzen hinaus

Dominanzbeziehungen und Parallelitätskonzepte Bereichsplanung

berücksichtigt Dominanzbeziehungen einfache Codeverschiebung (aufwärts) spekulative Ausführung erfolgt an Hand eines azyklischen Graphen

Ein Bereich ist eine Menge von Grundblöcken und im Programmablauf nur durch einen Eingangspunkt erreichbar. (Definition in Anlehnung an David Bernstein, Michael Rodeh)

Dominanzbeziehungen zwischen Grundblöcken

• Dominanz

• Postdominanz

Konzepte

• einfache Codeverschiebung• aufwärts• abwärts

• Spekulative Ausführung

• Duplikation

• Kontrolläquivalenz

Page 15: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

15

Planung mehrerer Grundblöcke / Bereiche (2)Die Bereichsplanung erfolgt von innen nach außen und ermöglicht die parallele Ausführung von Befehlen verschiedener

Grundblöcke

Global geplanter Ablaufplan

Zeile Block Maschinencode ALU MEM 1 A S: - LD r3, r0 2 A - LD r4, r1 3 A - - 4 A CJMP r3 < r4, T LD r5, r0 5 A - - 6 B SUB r5, r3 – r4 ST r0, r4 7 B CJMP r4 > r2, S ST r1, r5 8 C T: - ST r0, r4 9 C CJMP r3 < r4, T ST r1, r5

Auswertung

ursprünglich: 11 Zeilen / max. 17 Takte jetzt: 9 Zeilen / max. 9 Takte

Der Grad der parallelen Ausführung lässt sich mit Hilfe der Bereichsplanung steigern. Jedoch ist das Parallelitäts-potential auf Grund der azyklischen Optimierung von Schleifen begrenzt.

Page 16: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

16

Agenda

Grundlagen

Lokale Codeplanung

Globale Codeplanung Softwarepipelining

Page 17: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

17

Agenda

Grundlagen

Lokale Codeplanung

Globale Codeplanung Softwarepipelining

Page 18: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

18

SchleifentypenZu beachtende Abhängigkeiten zwischen einzelnen Iterationen einer Schleife existieren in sogenannten Do-Across-Schleifen

Do-Schleife

z.B. Operationen auf Vektoren einzelne Schleifendurchläufe unabhängig einfacher Fall

// Gegeben: Array a mit Ganzzahlen, // Indexvariable i mit 0 initialisiert // Anzahl Elemente n des Arrays a, Konstante c 1 while (i < n) 1 { 3 a[i] = a[i] + c; 4 i++; 5 }

Do-Across-Schleife

// Gegeben: Array a mit Ganzzahlen, // Indexvariable i mit 0 initialisiert // Anzahl Elemente n des Arrays a, // Variable prod mit 1 initialisiert 1 while (i < n) 2 { 3 prod = prod * a[i]; 4 i++; 5 }

z.B. Berechnungen mit Zwischenprodukten Abhängigkeiten zwischen den Iterationen komplex

Page 19: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

19

Abwickeln von SchleifenBestehen keine Datenabhängigkeiten zwischen den Durchläufen, kann die Schleife theoretisch vollständig abgewickelt

werden

Viermal abgewickelte Do-Schleife

sehr hohes Parallelitätspotential drastischer Codezuwachs Kompromiss notwendig

I1 LD++ // Iteration 1 I2 ADD , LD++ // Iterationen 1 + 2 I3 ST++ , ADD // Iterationen 1 + 2 I4 ST++ // Iteration 2 I5 LD++ // Iteration 3 I6 ADD , LD++ // Iterationen 3 + 4 I7 ST++ , ADD // Iterationen 3 + 4 I8 ST++ // Iteration 4 |----------- Ende der Abwicklung ------------| I9 S: LD++ // Iterationen 5 bis n I10 ADD I11 ST++ , CJMP-- S

LösungSoftwarepipeling: Ermöglicht die geforderte Ausführungs-beschleunigung mit einem geringen Zuwachs bzgl. des Codeumfangs.

Page 20: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

20

Umsetzung der Do-Schleife in einer SoftwarepipelineEine Pipeline bietet i.d.R. schon für wenige Iterationen einen hohen, mit der Durchlaufzahl wachsenden Geschwindigkeitsvorteil.

Bestandteile

Prolog

• „Füllen“ der Pipeline

• einmalig ausgeführt Stationärer Zustand („Kernel“)

• Mini-Schleife

• maximale Parallelität

• n-fach ausgeführt Epilog

• „Leeren“ der Pipeline

• einmalig ausgeführt

Softwarepipeline

Best. Maschinencode ALU MEM JMP 1 (P) LD++ 2 ADD LD++ 3 (SZ) S: - ADD LD++ 4 ST++ - ADD CJMP-- S 5 (E) ST++ - 6 ST++

SZ bearbeitet n – 2 Iterationen SZ benötigt 2 (statt 3) Takte je Iteration Schleife muss mindestens 3x durchlaufen werden Konfliktprüfung: Modulare Ressourcenreservierungstabelle

Page 21: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

21

Umsetzung der Do-Across-Schleife (1)Die Umsetzung einer Do-Across-Schleife findet auf Basis eines zyklischen Abhängigkeitsgraphen statt.

Graphenerweiterung Planungsverfahren

Planung eines zyklischen Graphen Minimierung des Einleitungsintervalls ist nur NP-lösbar Vereinfachung durch Anwendung einer Heuristik

• Ober- und Untergrenze des Einleitungsintervalls

• liefert Ergebnisse nahe am Optimum Sukzessive Planung von SCCs (Strong Connected Components) Berechnung der längsten einfachen Pfade

• Zyklen haben keine Auswirkung

• garantiert Einhaltung aller Abhängigkeiten Rückverfolgung (engl. „Backtracking“)

SCC 1

SCC 2

A

B

C

0 , 1

D

0 , 1 0 , 1

1 , 1

0 , 1

0 , 1

1

LD ++

LD

MULT

ST , CJMP -- S 0 , 1

ALU MEM JMP

0 , 1 0 , 1

0 , 1 0 , 1

1 , 1

Page 22: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

22

Umsetzung der Do-Across-Schleife (2)Im Beispiel ergibt sich ein Einleitungsintervall s von 3 Takten

Verfahrensanwendung Softwarepipeline

s N Intervall Start-

zeitpunkt

Modulare Ressourcen-reservierung 3 A ሾ0,∞ሿ 0 ALU MEM JMP ‼

3 B ሾ1,∞ሿ 1 3 C ሾ2,2ሿ 2

3 D ሾ3,3ሿ 3

s N Intervall Startzeit-

punkt

Modulare Ressourcen-reservierung 3 A ሾ0,∞ሿ 0 ALU MEM JMP

3 B ሾ1,∞ሿ 2 3 C ሾ3,3ሿ 3

3 D ሾ4,4ሿ 4

Rück-verfolgung

Zeile Pipeline Maschinencode ALU MEM JMP 1 Prolog LD++ 2 - 3 SZ S: LD 4 MULT LD++ 5 ST - CJMP-- S 6 Epilog LD 7 MULT 8 ST

Page 23: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

23

Umsetzung der Do-Across-Schleife (3)Eine geringe Codeverlängerung ist in Betracht des Geschwindigkeitszuwachses zu vernachlässigen

Auswertung

Codeverlängerung

• 8 Zeilen / Takte

• ursprünglich 5 Takte Gesamtausführungszeit

• Pipeline: 5 + 3n Takte

• ursprüngliche Schleife: 4 Takte

• Vorteil schon ab 6 Durchläufen Planung schon im 2. Versuch erfolgreich

FazitSoftwarepipeling: Ermöglicht die geforderte Ausführungs-beschleunigung mit einem geringen Zuwachs bzgl. des Codeumfangs.

Page 24: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

24

Hierarchische ReduktionDurch die hierarchische Reduktion wird das Konzept des Softwarepipelinings universeller anwendbar

Bisher

Schleifen mit nur einem Grundblock keine Verzweigungen innerhalb der Schleife umgebender Code nicht betrachtet

Konzept der hierarchischen Reduktion

ähnlich der Bereichsplanung (globale Codeplanung) Behandlung von Kontrollstrukturen

„if-then-else“-Konstrukte Zurückführen auf elementares Objekt Objekt wird wie Grundblock behandelt

reduzierte Objekte können überlappt werden Glassbox statt Blackbox (Bereichsplanung) Abhängigkeiten als Maximum beider Äste keine Ressourcenüberbeanspruchung

Überlappung: Prolog/Epilog und andere Instruktionen Objekte erhalten Ressourcenverbrauch des SZ SZ darf nicht überlappt werden

Page 25: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

25

Zusammenfassung

für ein (Grundblock-)Element geringes Parallelitätspotential einfach zu planen Grundlage für globale Planung

Page 26: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

26

Zusammenfassung

für ein (Grundblock-)Element geringes Parallelitätspotential einfach zu planen Grundlage für globale Planung

Bereichsplanung mittleres Parallelitätspotential Dominanzbeziehungen

Page 27: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

27

Zusammenfassung

für ein (Grundblock-)Element geringes Parallelitätspotential einfach zu planen Grundlage für globale Planung

Bereichsplanung mittleres Parallelitätspotential Dominanzbeziehungen

Schleifen Kompromiss

• Codelänge

• Geschwindigkeit hohes Parallelitätspotential

Page 28: Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

Vielen Dank für die Aufmerksamkeit!