21
Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

Embed Size (px)

Citation preview

Page 1: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

Efficient Alias Set Analysis Using SSA Form

Proseminar ProgrammanalyseWS 11/12

André Hunke

Page 2: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

2Efficient Alias Set Analysis Using SSA Form

• Ziele• Alias Sets• SSA Form• Verwendete Datenstruktur• Benchmark-Ergebnisse

16.12.2011

Übersicht

Page 3: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

3Efficient Alias Set Analysis Using SSA Form

• Alias Sets werden vom Compiler genutzt• Effiziente Alias Set Analyse– nur intra-prozedual– hierfür: Nutzung der SSA-Form

• Nutzung einer geeigneten Datenstruktur

16.12.2011

Ziele

Page 4: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

4Efficient Alias Set Analysis Using SSA Form

• Menge der lokalen Pointer-Variablen, die auf ein gemeinsames Objekt zeigen

• Zu einem gegebenen konkreten Objekt o: o# = { p | p zeigt auf o}

• Jedes alias set repräsentiert höchstens ein Objekt• ρ#: Menge aller alias sets• falls für Variablen x, y: {x,y} o⊆ #, so ist x ein Alias von y• Sichere Entscheidung, falls x und y immer gemeinsam

in einem o#, oder nie gemeinsam in einem o#

16.12.2011

Alias Sets

Page 5: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

5Efficient Alias Set Analysis Using SSA Form

• betrachten Zuweisungen s der Forms ::= v1 ← v2 | v ← e | e ← v | v ← null | v ← new

wobeiv, v1, v2 lokale Variablen sind und e eine Position auf

dem Heap repräsentiert• Heap wird als Black-Box behandelt

16.12.2011

Alias Sets

Page 6: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

6Efficient Alias Set Analysis Using SSA Form

• Bei Unsicherheit, ob ein alias set eine Variable enthält, wird es aufgeteilt

16.12.2011

Alias Sets - Übergangsfunktion

Page 7: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

7Efficient Alias Set Analysis Using SSA Form

class Node {int value;Node next;

Node (int v, Node n) {value = v;next = n;

}

}16.12.2011

Alias Sets - Beispiel

Page 8: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

8Efficient Alias Set Analysis Using SSA Form

…void foo(int i) {

Node a, b, c;a = new Node(i, null);c = a;if (i < 42)

b = new Node(42+i, a);else

b = a;c = b;b = b.next;

}…

16.12.2011

Alias Sets - Beispiel

a = new Node(i, null);

b = new Node(42+i,a);

c = b;

b = a;

b = b.next;

Kontrollflussgraph

c = a;

Page 9: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

9Efficient Alias Set Analysis Using SSA Form16.12.2011

Alias Sets – Beispiel

ρ# = {{a}}

ρ# = {{a,c},{b}} ρ# = {{a,b,c}}

ρ# = {{a}, {a,b}, {c}, {b,c}, {a,c}, {a,b,c}}

a = new Node(i, null);

b = new Node(42+i,a);

c = b;

b = a;

b = b.next;

c = a;

ρ# = {{a,c}}

ρ# = {{a}, {b,c}, {a,b,c}}

Page 10: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

10Efficient Alias Set Analysis Using SSA Form

• SSA = Single Static Assignment• pro Variable höchstens eine Zuweisung– Jede Zuweisung erzeugt eine neue Variable

• Transformation in SSA form

16.12.2011

SSA Form

Page 11: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

11Efficient Alias Set Analysis Using SSA Form16.12.2011

SSA Form - Beispiel

Lösung?

a = new Node(i, null);

b = new Node(42+i,a);

c = b;

b = a;

b = b.next;

c = a;

a1 = new Node(i, null);

b1 = new Node(42+i,a1);

c2 = b?;

b2 = a1;

b? = b?.next;

c1 = a1;

Page 12: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

12Efficient Alias Set Analysis Using SSA Form

• Problem: Zuweisungen mit mehr als einer reaching definition

• Lösung: „φ-Funktion“ einfügen– wählt den Wert des tatsächlich genommenen

Kontrollflusses– Zuweisung dann an eine neue Variable

• Hier: φ-Funktion an jedem Merge-Knoten 16.12.2011

SSA Form

Page 13: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

13Efficient Alias Set Analysis Using SSA Form16.12.2011

SSA Form - Beispiel

a = new Node(i, null);

b = new Node(42+i,a);

c = b;

b = a;

b = b.next;

c = a;

a1 = new Node(i, null);

b1 = new Node(42+i,a1);

b3 = φ(b1,b2)c2 = b3;

b2 = a1;

b4 = b3.next;

c1 = a1;

Page 14: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

14Efficient Alias Set Analysis Using SSA Form

• Erweiterung der Übergangsfunktion für Knoten mit φ-Funktion nötig

• Strategie:– für jede Eingehende Kante p:– aktualisiere die Alias-Sets entsprechend der

Auswahl der φ-Funktion für p

16.12.2011

Alias Sets & SSA Form

Page 15: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

15Efficient Alias Set Analysis Using SSA Form16.12.2011

Alias Sets & SSA Form

a1 = new Node(i, null);

b1 = new Node(42+i,a1);

b3 = φ(b1,b2)c2 = b3;

b2 = a1;

b4 = b3.next;

c1 = a1;

ρ# = {{a1}}

ρ# ={{a1,c1}}

ρ# = {{a1,c1},{b1}} ρ# = {{a1,c1,b2}}

ρ# = {{a1,c1}, {b1,b3,c2}} {{a1,c1,b2,b3,c2}}∪

ρ# = {{a1,c1}, {a1,c1,b4}, {b1,b3,c2}, {b1,b3,c2,b4},{a1,c1,b2,b3,c2}, {a1,c1,b2,b3,c2,b4}}

Page 16: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

16Efficient Alias Set Analysis Using SSA Form

• Beobachtung: Für nicht φ-Knoten ist die Mengendifferenz in der Übergangsfunktion überflüssig

• Weitere Analyse für φ-Knoten nötig

16.12.2011

Alias Sets & SSA Form

Page 17: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

17Efficient Alias Set Analysis Using SSA Form

• es können lineare Listen verwendet werden• eine Liste repräsentiert ein alias set• neues Element hinzufügen: neuer Listenkopf

– Restliste bleibt unverändert• Element entfernen: nicht nötig!Þ gemeinsame Nutzung von Restlisten möglich

16.12.2011

Datenstruktur

ec dba

gf

drei alias sets: {d,e}, {a,b,c,d,e},{d,e,f,g}

Beachte: Für φ-Knoten gibt es eine andere Übergangsfunktion, d.h. es ist eine andere Listenoperation nötig

Page 18: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

18Efficient Alias Set Analysis Using SSA Form16.12.2011

Alias Set-Analyse mit Listen

a1 = new Node(i, null);

b1 = new Node(42+i,a1);

b3 = φ(b1,b2)c2 = b3;

b2 = a1;

b4 = b3.next;

c1 = a1;a1

a1

a1b2

c1

c1

a1c1

b1

a1b2 c1b3c2

b1b3c2

a1b2 c1b3c2

b1b3c2b4

b4

b4

Page 19: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

19Efficient Alias Set Analysis Using SSA Form

Laufzeit:

• Im Schnitt etwa doppelt so schnell

16.12.2011

Benchmark-Ergebnisse

Page 20: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

20Efficient Alias Set Analysis Using SSA Form

Speicherverbrauch (nur Alias-Analyse):

• Im Schnitt etwa 45% weniger Speicher• etwa 7% zusätzlicher Speicherverbrauch für SSA-Form16.12.2011

Benchmark-Ergebnisse

Page 21: Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke

21Efficient Alias Set Analysis Using SSA Form16.12.2011

Vielen Dank für die Aufmerksamkeit

Noch Fragen?