"4 F/S" - Complang

Werbung
...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
Herunterladen