...z.B. Platz! a:= ... 11111111111111 00000000000000 h := a+b 00000000000000 11111111111111 00000000000000 11111111111111 00000000000000 11111111111111 00000000000000 11111111111111 00000000000000 11111111111111 00000000000000 11111111111111 00000000000000 11111111111111 00000000000000 11111111111111 z := h 00000000000000 11111111111111 00000000000000 11111111111111 There is more than speed! Moderate Register Pressure! Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 1 Der Weltmarkt für Mikroprozessoren 1999 Chip-Kategorie Eingebettet 4-bit Eingebettet 8-bit Eingebettet 16-bit Eingebettet 32-bit DSP Desktop 32/64-bit Verkaufte Anzahl 2000 Millionen 4700 Millionen 700 Millionen 400 Millionen 600 Millionen 150 Millionen Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 2 Der Weltmarkt für Mikroprozessoren 1999 Chip-Kategorie Eingebettet 4-bit Eingebettet 8-bit Eingebettet 16-bit Eingebettet 32-bit DSP Desktop 32/64-bit Verkaufte Anzahl 2000 Millionen 4700 Millionen 700 Millionen 400 Millionen 600 Millionen 150 Millionen ∼ 2% ... David Tennenhouse (Intel Director of Research). Hauptvortrag auf dem ... David Tennenhouse (Intel Director of Research). Hauptvortrag auf dem 20th IEEE Real-Time Systems Symposium (RTSS’99), Phoenix, Arizona, 20th IEEE Real-Time Systems Symposium (RTSS’99), Phoenix, Arizona, Dezember 1999. Dezember 1999. Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 3 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 4 Man denke an... ... domänenspezifische Prozessoren eingesetzt in eingebetteten Systemen • Telekommunikation Code für eingebettete Systeme Anforderungen... • Performanz (oft Echtzeitanforderungen) – Mobiltelefone, Pager, ... • Codegröße (system-on-chip, on-chip RAM/ROM) • Heimelektronik • ... – MP3-Spieler, Kameras, Spielekonsolen, ... • Automobilbereich Für eingebettete Systeme... – GPS-Navigation, Airbags, ... ...Codegröße ist oft eine kritischere Größe als Geschwindigkeit! • ... Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 5 Code für eingebettete Systeme (Fortsetzung) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 6 Angesichts dieses Trends... ...wie unterstützen traditionelle Übersetzer- und Optimierertechnologien das spezielle Anforderungsprofil von Code für eingebettete Systeme? Anforderungen (und wie sie häufig adressiert werden...): • Assemblerprogrammierung Code Size • Händische Postoptimierung Schwächen... • Fehlerträchtig • Verzögerte Marktreife/-eintritt Run-Time Performance ...die Probleme werden zunehmend größer mit wachsender Komplexität. Generell beobachtet man... ...einen Trend hin zu Hochsprachenprogrammierung (C/C++) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 7 Leider nur wenig. Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 8 In besonderer Weise... Unbestritten... ...gilt dies für Optimierungen, die auf Codeverschiebung beruhen Traditionelle Optimierungen... Dazu gehören insbesondere • ...sind nahezu ausschließlich auf Performanzoptimierung getrimmt • ...sind nicht codegrößensensitiv und bieten i.a. keinerlei Kontrolle über ihren Einfluss auf die Codegröße • Partial redundancy elimination • Partial dead-code elimination • Partial redundant-assignment elimination • Strength reduction • ... Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 9 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 10 Erinnerung am Beispiel von PRE Erinnerung am Beispiel von LCM PRE kann konzeptuell als zweistufiger Prozess gesehen werden... LCM kann konzeptuell als Ergebnis eines zweistufigen Prozesses gesehen werden... 1. Ausdrucksvorziehen ...vorziehen von Ausdrücken an “frühere” sichere Berechnungspunkte 2. Totale Redundanzelimination ...eliminieren von Berechnungen, die durch das Vorziehen total redundant geworden sind Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 11 1. Ausdrucksvorziehen (hoisting expressions) ...zu ihren “frühesten” sicheren Berechnungspunkten 2. Ausdrucksverzögern (sinking expressions) ...zu ihren “spätesten” sicheren und berechnungsoptimalen Berechnungspunkten Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 12 Auf dem Weg zu codegrößensensitiver PRE... Laufendes Beispiel • Hintergrund: Klassische PRE 1 ; Busy CM (BCM) / Lazy CM (LCM) (Knoop et al., PLDI’92) 2 – Ausgezeichnet mit dem ACM SIGPLAN Most Influential PLDI Paper Award 2002 (for 1992) 7 8 10 9 • Codegrößensensitive PRE (Knoop et al., POPL’00) a+b ; ...modulare Erweiterung von BCM/LCM a := ... 6 5 – Ausgewählt für “20 Years of the ACM SIGPLAN PLDI: A Selection” (60 Artikel aus ca. 600 Artikeln) 15 4 3 11 a+b 12 a+b ∗ Problemmodellierung und -lösung ...basiert auf graphtheoretischen Hilfsmitteln 13 14 ∗ Hauptergebnisse ...Korrektheit, Optimalität Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) Laufendes Beispiel (Fortsetzung) a) Laufendes Beispiel (Fortsetzung) a) b) 2 4 3 h:= a+b 15 a := ... 6 5 h:= a+b 9 11 h 12 14 h 13 a := ... 2 10 h 11 h 12 6 7 8 9 8 10 9 h 13 11 12 13 14 14 Two Code−size Optimal Programs Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 4 3 5 h:= a+b 7 10 11111111111 00000000000 00000000000 11111111111 h:= a+b 00000000000 11111111111 00000000000 11111111111 00000000000 11111111111 00000000000 11111111111 h:= a+b 00000000000 11111111111 00000000000 11111111111 00000000000 11111111111 00000000000 11111111111 00000000000 11111111111 h h h 00000000000 11111111111 00000000000 11111111111 00000000000 11111111111 6 5 8 15 4 3 h:= a+b 7 h 2 b) 1 1 1 14 13 SQ > CQ > LQ 15 1 15 a := ... 2 11111111111 00000000000 00000000000 11111111111 h:= a+b h:= a+b 00000000000 11111111111 00000000000 11111111111 00000000000 11111111111 00000000000 11111111111 00000000000 11111111111 00000000000 11111111111 h h h 00000000000 11111111111 00000000000 11111111111 a := ... 6 5 7 8 9 11 15 4 3 12 10 13 14 SQ > LQ > CQ Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 16 Laufendes Beispiel (Fortsetzung) Codegrößensensitive PRE Beachte: Folgende Transformation ist unerwünscht! ; Das Problem ...wir erhalten wir eine codegrößenminimale Platzierung der Berechnungen, d.h. eine Platzierung, die 1 – zulässig (semantik- & performanzerhaltend) 2 15 4 3 a := ... – codegrößenminimal ist? ; Lösung: Eine neue Sicht auf PRE 6 5 h:= a+b 7 ...betrachte PRE als ein Austauschproblem: Austauschen der ursprünglichen Berechnungen gegen neu eingesetzte! Impairing! 8 10 9 h 11 h 12 ; Der Clou: Benutze Graphtheorie! h 13 ...führe das Austauschproblem auf die Berechnung sog. tight sets in bipartiten Graphen zurück basierend auf maximalen matchings! 14 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 18 17 Wir verschieben, aber behalten im Gedächtnis Bipartite Graphen T Wir müssen beantworten... • Wo sind Initialisierungen vorzunehmen und wo sind ursprüngliche Berechnungen zu ersetzen? ...und beweisen S Tight Set ...eines bipartiten Graphen (S ∪ T, E): Teilmenge Sts ⊆ S mit ∀ S ′ ⊆ S. |Sts| − |Γ(Sts)| ≥ |S ′| − |Γ(S ′)| • Warum dies korrekt (semantikerhaltend) ist • Warum dies “optimal” bezüglich einer vorgegebenen Priorisierung von Zielen ist? S { • Wie sich dies auf die Codegröße auswirkt { Γ ( Sts ) T Sts Für jede dieser Fragen werden wir ein spezielles Theorem angeben, das uns die entsprechende Antwort liefert! Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 19 Zwei Varianten: (1) Größte Tight Sets Sets (2) Kleinste Tight Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 20 Bipartite Graphen Offensichtlich T ...können wir auf vorgefertigte Standardalgorithmen aus der Graphtheorie zurückgreifen, um S Tight Set ...eines bipartiten Graphen (S ∪ T, E): Teilmenge Sts ⊆ S mit ∀ S ′ ⊆ S. |Sts| − |Γ(Sts)| ≥ |S ′| − |Γ(S ′)| • Tight sets Γ ( Sts ) zu berechnen. { T • Maximale Matchings und { Damit reduziert sich unser PRE-Problem auf... S Sts Zwei Varianten: (1) Größte Tight Sets Sets (2) Kleinste Tight ...die Konstruktion des bipartiten Graphen, der das Problem modelliert! Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) Zur Berechnung Tight Sets größter/kleinster Algorithmus LTS (Largest Tight Sets) ˙ T, E), maximales Matching M. Eingabe: Bipartiter Graph (S ∪ ...auf Grundlage maximaler Matchings T 22 21 Ausgabe: Größte tight set TLaT S(S) ⊆ S. D T S SM := S; D := {t ∈ T | t is unmatched}; WHILE D 6= ∅ DO choose some x ∈ D; D := D \ {x}; IF x ∈ S THEN SM := SM \ {x}; D := D ∪ {y | {x, y} ∈ M} ELSE D := D ∪ (Γ(x) ∩ SM) FI OD; TLaT S(S) := SM S T T S S T L (S ) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 23 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 24 Algorithmus STS (Smallest Tight Sets) ˙ T, E), maximales Matching M. Eingabe: Bipartiter Graph (S ∪ Ausgabe: Kleinste tight set TSmT S(S) ⊆ S. Die Menge der Knoten 25 h:= a+b 2 3 h:= a+b a+b 11 a+b 12 a+b 13 { Comp/UpSafe 26 7 8 11 12 13 { 6 5 4 Insert BCM h:= a+b 15 a := ... Comp/UpSafe DownSafe / (Comp U UpSafe) TDS 8 2 3 4 5 6 7 8 5 6 7 8 10 9 h 11 h 12 h 13 SDS 14 13 Der bipartite Graph 7 10 9 12 6 5 8 4 3 2 { TDS U SDS 6 7 11 Die Menge der Knoten { a := ... 8 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 1 15 7 Modellierung des Austauschproblems 1 4 6 5 4 Die Menge der Kanten... b) 3 3 2 DownSafe / (Comp U UpSafe) Die Menge der Knoten 5 SDS Insert BCM Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 2 U { TDS { SM := ∅; A := {s ∈ S | s is unmatched}; WHILE A 6= ∅ DO choose some x ∈ A; A := A \ {x}; IF x ∈ S THEN SM := SM ∪ {x}; A := A ∪ (Γ(x) \ SM) ELSE A := A ∪ {y | {x, y} ∈ M} FI OD; TSmT S(S) := SM a) Modellierung des Austauschproblems 11 12 13 14 Die Menge der Kanten ... ∀ n ∈ SDS ∀ m ∈ TDS . {n, m} ∈ EDS ⇐⇒df m ∈ Closure(pred(n)) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 27 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 28 DownSafety-Hüllen – Die zentrale Idee 1(4) DownSafety-Hüllen 1 DownSafety-Hüllen Für n ∈ DownSafe/Upsafe ist die DownSafety-Hülle Closure(n) die kleinste Menge von Knoten, so dass 2 2. ∀ m ∈ Closure(n) \ Comp. succ(m) ⊆ Closure(n) h:= a+b 3. ∀ m ∈ Closure(n). pred(m) ∩ Closure(n) 6= ∅ ⇒ pred(m) \ UpSafe ⊆ Closure(n) a := ... 6 5 1. n ∈ Closure(n) 15 4 3 7 8 10 9 h h 11 h 12 13 14 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 29 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) DownSafety-Hüllen – Die zentrale Idee 2(4) DownSafety-Hüllen – Die zentrale Idee 3(4) 1 2 h:= a+b 1 15 4 3 a := ... 2 6 5 7 h:= a+b 10 11 h 12 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 8 10 h 14 a := ... 6 5 9 h 13 15 4 3 7 8 9 h 30 11 h 12 h 13 No Initialization! 14 31 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 32 DownSafety-Hüllen – Die zentrale Idee 4(4) DownSafety-Hüllen 1 2 h:= a+b DownSafety-Hüllen 6 5 7 15 4 3 Für n ∈ DownSafe/Upsafe ist die DownSafety-Hülle Closure(n) die kleinste Menge von Knoten, so dass a := ... 1. n ∈ Closure(n) h:= a+b 2. ∀ m ∈ Closure(n) \ Comp. succ(m) ⊆ Closure(n) 8 10 9 h 11 h 12 3. ∀ m ∈ Closure(n). pred(m) ∩ Closure(n) 6= ∅ ⇒ pred(m) \ UpSafe ⊆ Closure(n) h 13 14 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 34 33 Fundamental... Initialisierungstheorem Initialisierungen zulässiger PRE-Transformationen erfolgen stets am “frühesten Rand” von DownSafety-Regionen. DownSafety-Regionen Einige Teilmengen von Knoten sind in besonderer Weise ausgezeichnet. Wir nennen diese Mengen DownSafety-Regionen... Transp UpSafe EarliestFrontier • Eine Menge R⊆ N von Knoten heißt DownSafety-Region gdw R R } DownSafe/UpSafe 1. Comp\UpSafe ⊆ R ⊆ DownSafe\UpSafe Comp 2. Closure(R) = R ...charakterisiert tionen. Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 35 erstmals alle semantikerhaltenden PRE-Transforma- Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 36 Hauptergebnisse / Erste Frage Die Schlüsselfragen 1. Wo Initialisierungen vornehmen, warum ist es korrekt? ...bezüglich Korrektheit und Optimalität: Intuitiv: am frühesten Rand der von der tight set induzierten DS-region... 1. Wo Initialisierungen vornehmen, warum ist es korrekt? 2. Wie ist der Effekt auf die Codegröße? 3. Warum ist das Resultat optimal, d.h., codegrößenminimal? ...drei Theoreme werden jeweils eine dieser Fragen beantworten. Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 37 Theorem 1 [Tight Sets: Initialisierungspunkte] Sei T S ⊆ SDS eine tight set. Dann ist RT S =df Γ(T S) ∪ (Comp\UpSafe) eine DownSafety-Region mit BodyRT S = T S Korrektheit ...unmittelbares Korollar aus Theorem 1 und dem Initialisierungstheorem Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 38 Hauptergebnisse / Zweite Frage Hauptergebnisse / Dritte Frage 2. Wie ist der Effekt auf die Codegröße? 3. Warum ist das Resultat optimal, d.h., codegrößenminimal? Intuitiv: Die Differenz aus eingesetzten und ersetzten Berechnungen... Aufgrund einer inhärenten Eigenschaft von tight sets (nonnegative deficiency!)... Theorem 2 [DownSafety-Regionen: Platzgewinn] Sei R eine DownSafety-Region mit Body R=df R\EarliestFrontierR Dann • Platzgewinn aufgrund Einsetzens EarliestFrontierR: |Comp\UpSafe| − |EarliestFrontierR| = |BodyR| − |Γ(BodyR)| df = defic(BodyR) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) Optimalitätstheorem [Die Transformation] Sei T S ⊆ SDS eine tight set. an • Initialisierungspunkte: InsertSpCM =df EarliestFrontierRTS =RTS \T S • Platzgewinn: defic(T S)=df |T S| − |Γ(T S)| ≥ 0 max. 39 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 40 Größte vs. kleinste Tight Sets: Der Einfluss Effekt illustriert am laufenden Beispiel a) b) 1 EarliestFrontierR 1 LaTS 2 h := a+b 4 3 15 a := ... 2 Largest tight sets favor 15 4 3 a := ... h := a+b Computational Quality h := a+b 6 5 h := a+b 6 5 Earliestness Principle RLaTS 7 7 8 10 9 h EarliestFrontierR 11 h 12 10 h 13 h 11 h 12 h 13 SmTS 14 RSmTS 8 9 14 Smallest tight sets favor Lifetime Quality Largest Tight Set Latestness Principle Smallest Tight Set ( SQ > CQ ) ( SQ > LQ ) Latestness Principle Earliestness Principle Comp Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) Codegrößensensitive Blick 1(2) PRE auf einen ...auf einen Blick 2(2) Choice of Priority Preprocess Optional: Perform LCM (3 GEN/KILL-DFAs) Compute Predicates of BCM for G resp. LCM (G) (2 GEN/KILL-DFAs) 42 41 Apply To Using Yields Auxiliary Information Required LQ Not meaningful: The identity, i.e., G itself is optimal ! SQ Subsumed by SQ > CQ and SQ > LQ ! CQ BCM G CQ > LQ LCM G SQ > CQ SpCM G Largest tight set SQ > LQ SpCM G Smallest tight set UpSafe(G), DownSafe(G) CQ > SQ SpCM LCM(G) Largest tight set UpSafe(G), DownSafe(G), Delay(G) UpSafe(LCM(G)), DownSafe(LCM(G)) CQ > SQ > LQ SpCM LCM(G) Smallest tight set UpSafe(G), DownSafe(G), Delay(G) UpSafe(LCM(G)), DownSafe(LCM(G)) SQ > CQ > LQ SpCM DL(SpCMLT S (G)) Smallest tight set UpSafe(G), DownSafe(G), Delay(SpCMLT S (G)), UpSafe(DL(SpCMLT S (G))), DownSafe(DL(SpCMLT S (G))) UpSafe(G), DownSafe(G) LCM(G) UpSafe(G), DownSafe(G), Delay(G) SpCMLT S (G) UpSafe(G), DownSafe(G) Main Process Reduction Phase Construct Bipartite Graph Compute Maximum Matching Optimization Phase Compute Largest/Smallest Tight Set Determine Insertion Points Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 43 Flexibilität (1) Flexibilität (2) Das Ausgangsprogramm ... BCM ... Ein berechnungsoptimales Programm (CQ) 1 1 3 2 4 h := a+b a := ... 5 h := a+b 3 2 4 20 20 9 9 6 8 7 8 7 11 10 11 10 12 12 13 13 17 a+b 15 a+b 18 17 18 a+b 14 a := ... 5 Large Program Fragment Large Program Fragment 6 h := a+b h h 14 h 16 15 16 19 19 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 45 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 46 Flexibilität (3) Flexibilität (4) LCM ... A Computationally & Lifetime Opt. Program (CQ > LQ) SpCM ... A Code-Size & Lifetime Optimal Program (SQ > LQ) 1 1 3 2 4 a := ... 5 3 2 Large Program Fragment 4 Large Program Fragment 20 h := a+b h := a+b 6 7 h := a+b 8 20 9 h := a+b 9 6 8 7 11 10 11 10 h := a+b 12 13 12 h := a+b 13 18 17 18 17 h 14 h 15 a := ... 5 h 16 h 19 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 14 h 15 h 16 19 47 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 48 Flexibilität (5) Flexibilität (6) SpCM ... A Computationally and Lifetime Best CodeSize Optimal Program (SQ > CQ > LQ) SpCM ... A Code-Size and Lifetime Best Computationally Optimal Program (CQ > SQ > LQ) 1 1 3 2 4 3 2 a := ... 5 4 a := ... 5 Large Program Fragment Large Program Fragment h := a+b 20 9 20 9 6 7 h := a+b h := a+b 8 6 11 10 11 10 h := a+b 12 12 13 13 18 17 18 17 h 14 h := a+b 8 7 h 15 h 14 h 15 h 16 h 16 19 19 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 50 49 Ein Rückblick Ein Rückblick (fortgesetzt) ...auf die Entwicklung von PRE: • 2000: ...origin of code-size sensitive PRE [Knoop et al., POPL 2000] • 1958: ...first glimpse of PRE ; ...first to allow prioritization of goals ; Ershov’s work on On Programming of Arithmetic Operations. ; ...rigorously be proven correct and optimal • < 1979 ... Special Techniques ; ...first to bridge the gap between traditional compilation and compilation for embedded systems ; Total Redundancy Elimination, Loop Invariant Code Motion • 1979: ...origin of contemporary PRE • ca. since 1997: ...a new strand of research on PRE ; Morel/Renvoise’s seminal work on PRE ; Speculative PRE: Gupta, Horspool, Soffa, Xue, Scholz, Knoop,... • 1992: ...LCM [Knoop et al., PLDI’92] ; ...first to achieve comp. optimality with minimum register pressure ; Unifying PRE and Speculative PRE [Jingling Xue and J. Knoop] ; ...first to rigorously be proven correct and optimal Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) • 2005: ...another fresh look at PRE (as maximum flow problem) 51 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 52 Namen sind Nachrichten Warum lohnt es sich, PRE zu betrachten? (1) Ein anderer Rückblick... • < 1979 ... Special Techniques Es ist... ; Total Redundancy Elimination, Loop Invariant Code Motion • Relevant ...weit verbreitet in der Praxis • 1979 ... Partial Redundancy Elimination ; Pioneering ... Morel/Renvoise’s bidirectional algorithm [1979] ; Heuristic improvements ... Dhamdhere [1988, 1991], Drechsler/Stadel [1988], Sorkin [1989], Dhamdhere/Rosen/Zadeck [1992], ... • 1992 ... BCM & LCM [Knoop et al., PLDI’92] ; BCM ... first to achieve Computational Optimality: Earliestness Principle • Generell ...eine Familie von Optimierungen denn eine einzelne Optimierung • Wohlverstanden ...bewiesen korrekt und optimal • Herausfordernd ...konzeptuell einfach, aber weist eine Reihe kopfnussaufgebender Phänomene auf ; LCM ... first to achieve Comp. & Lifetime Optimality: Latestness Principle ... first to be purely unidirectional, however, not yet code-size sensitive. Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 54 • 2000/2004: Code-Size Sensitive PRE [Knoop et al., POPL 2000, LCTES 2004] Warum lohnt es sich, PRE zu betrachten? (2) Zu guter letzt, PRE ist... • Wahrlich klassisch ...blickt auf eine lange Geschichte zurück – Morel, E. and Renvoise, C. Global Optimization by Suppression of Partial Redundancies. CACM 22 (2), 96 - 103, 1979. – Ershov, A. P. On Programming of Arithmetic Operations. CACM 1 (8), 3 - 6, 1958. Exkurs: Die PRE-Formulierung Morel/Renvoise von PRE ist untrennbar mit den Namen von E. Morel und C. Renvoise verknüpft. Ihr 1979 vorgestelltes Verfahren kann als “Urvater” aller CM-Verfahren angesehen werden und war bis in die 90er-Jahre hinein das “state of the art”-Verfahren für PRE. Kennzeichnend für dieses Verfahren sind: • 3 unidirektionale Bitvektoranalysen (AV, ANT, PAV) • 1 bidirektionales Bitvektoranalyse (PP) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 55 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 56 Die bahnbrechende PRE-Formulierung von Morel/Renvoise (1) • Vorziehbarkeit (Anticipability): • Verfügbarkeit (Availability): AVIN(n) = falseQ Die bahnbrechende PRE-Formulierung von Morel/Renvoise (2) ANTIN(n) = COMP(n) + TRANSP(n) ∗ ANTOUT(n) falls n = s AVOUT(m) sonst m ∈ pred(n) AVOUT(n) = TRANSP(n) ∗ (COMP(n) + AVIN(n)) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 57 Die bahnbrechende PRE-Formulierung von Morel/Renvoise (3) ANTOUT(n) = PAVIN(n) = falseP falls n = s PAVOUT(m) sonst falls n = e ANTIN(m) sonst m ∈ succ(n) 58 Die bahnbrechende PRE-Formulierung von Morel/Renvoise (4) • Platzierung möglich (Placement Possible): PPIN(n) = PPOUT(n) = m ∈ pred(n) PAVOUT(n) = TRANSP(n) ∗ (COMP(n) + PAVIN(n)) falseQ Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) • Partielle Verfügbarkeit (Partial Availability): false falls n = s CONST(n)∗ Q ( (PPOUT(m) + AVOUT(m))∗ m ∈ pred(n) (COMP(n) + TRANSP(n) ∗ PPOUT(n)) sonst ( falseQ falls n = e PPIN(m) sonst m ∈ succ(n) wobei CONST(n)=df ANTIN(n) ∗ (PAVIN(n) + ¬COMP(n) ∗ TRANSP(n)) Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 59 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 60 Schwächen der PRE-Formulierung Die bahnbrechende PRE-Formulierung von Morel/Renvoise (5) ...von Morel/Renvoise: • Konzeptuell • Initialisierung: INSIN(n) =df INSOUT(n) =df – Fehlende Berechnungsoptimalität ; nur aufgrund nicht gespaltener kritischer Kanten false – Fehlende Lebenszeitoptimalität ; Heuristische Behandlung PPOUT(n) ∗ ¬AVOUT(n) ∗ • Technisch (¬PPIN(n) + ¬TRANSP(n)) • Ersetzung: REPLACE(n) =df – Bidirektionalität ; konzeptuell und berechnungsmäßig komplexer COMP(n) ∗ PPIN(n) ...das Transformationsergebnis liegt (nicht vorhersagbar) zwischen denen von BCM- und LCM-Transformation. Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 61 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 62 Lehrreich ...folgende zwei Beispiele mithilfe des PRE-Verfahrens von Morel/Renvoise zu optimieren: G2 G1 1 1 2 7 12 3 8 13 4 9 14 5 10 x := a+b 15 6 Vorschau auf die weiteren Vorlesungstermine... • Mo, 17.12./24.12./31.12.2007: (Ferialzeit) 3 2 4 x := a+b 5 Keine Vorlesung(en)! • Mo, 14.01.2008: Vorlesung von 16:15 Uhr bis 17:45 Uhr im Hörsaal 14, TU-Hauptgebäude 6 • Mo, 21.01.2008: Vorlesung von 16:15 Uhr bis 17:45 Uhr im Hörsaal 14, TU-Hauptgebäude x := a+b 11 y := a+b 16 z := a+b 17 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 63 Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 64 Einladung zum Kolloquiumsvortrag Die Complang-Gruppe lädt ein zu folgendem Vortrag... Automatic Verification of Combined Specifications Prof. Dr. Ernst-Rüdiger Olderog Carl v. Ossietzky Universität Oldenburg, Deutschland ZEIT: Freitag, 13. Dezember 2007, 14:00 Uhr c.t. ORT: TU Wien, Elektrotechnik, EI 5 Hochenegg-Hörsaal, Gußhausstr. 2529 (Altbau), 2. Stock MEHR INFO: http://www.complang.tuwien.ac.at/talks/Olderog2007-12-13 Alle Interessenten sind herzlich willkommen! Analyse und Verifikation (WS 2007/2008) / 9. Teil (10.12.2007) 65