Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009.

Ähnliche Präsentationen


Präsentation zum Thema: "Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009."—  Präsentation transkript:

1 Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009

2 Folie 2 Agenda - Einleitung - Einführung in die Sprache WHILE - Die Intraprozedurale Analyse - Available Expressions Analysis - Reaching Definitions Analysis - Very Busy Expressions Analysis - Live Variables Analysis - Live Variables Analysis - Richtigkeit

3 Folie 3 Einleitung Was bedeutet “Datenflussanalyse”? Ermittlung der Zusammenhänge zwischen einzelnen Stellen im Programm und den darin berechneten Werten. Typische Fragen sind: o Was genau wird in dem Programmabschnitt berechnet? o Wie und wo wird eine bestimmte Variable berechnet? o Welche Werte kann sie annehmen? o Welche Befehle beinflussen welche Variable zu welchem Zeitpunkt?

4 Folie 4 Einleitung Datenflussanalyse – wie und wozu? Wozu? - Primär zur Codeoptimierung - Gegebenenfalls zur Lösung von entstandenen Problemen Wie? - Programmcode analysieren und verstehen (Hilfsmittel: Flussgraph) - Datenflussprobleme erkennen und Gleichung aufstellen - Code optimieren bzw. Probleme lösen

5 Folie 5 Einführung in WHILE Die Sprache: WHILE - Imperative Sprache - Programmcode glieder sich in Blöcke - Jeder Block besitzt ein eindeutiges Etikett (Label) - Bezeichnen Zuweisungen und boolsche Bedingungen - Haben intern keinen Datenfluss Folgende Elemente werden definiert: o Zuweisung [x := a] o Skip [skip] o Bedingung if [b] then S 1 else S 2 o SequenzS 1 ; S 2 o While-Schleifewhile [b] do S

6 Folie 6 Intraprozedurale Analyse - Beschäftigt sich mit Elementaraussagen - Gliedert sich in mehrere Datenflussanalysen (spätere Folien) - Unterscheidet Vorwärts- und Rückwärtsanalysen Flussfunktionen (Um Flussgraph aufzustellen) Fluss-Funktion: flow: Stmt P(Lab x Lab) Rückflussfunktion: flow : Stmt P(Lab x Lab) Beschreiben den Fluss zwischen den Lables der Aussagen

7 Folie 7 Intraprozedurale Analyse - Flussfunktion Wie sieht der Flussgraph von folgendem Code aus ? Die Flussfunktion liefert folgende Menge an Werten: {(1,2),(2,3),(3,4),(4,2)}  Damit können wir den nachfolgenden Graphen zeichnen…

8 Folie 8 Intraprozedurale Analyse - Flussgraph [z:=1] [x>0] [z:=z*y] [x:=x-1] no yes

9 Folie 9 Available Expressions Analysis o Analyse Algorithmus (Vorwärtsanalyse) o Beschreibt die Verfügbarkeit einzelner Ausdrücke an bestimmten Programmstellen o Frage: Welche Ausdrücke / Werte sind an einer bestimmten Programmstelle gültig? o Ziel: Codeoptimierung o Beispiel:

10 Folie 10 Available Expressions Analysis Definition von kill- und gen-Funktionen Kill-Funktion: Ausdruck ist killed, wenn eine der Variablen verändert wird (Innerhalb des Blocks). kill AE : Blocks P(AExp) Gen-Funktion:Ausdruck wird im Programmbereich generiert und keine Variable davon innerhalb des Blocks verändert. gen AE : Blocks P(AExp)

11 Folie 11 Available Expressions Analysis kill- und gen-Funktionen bei AEA

12 Folie 12 Available Expressions Analysis Entry- & Exit-Funktionen Durch diese beiden Funktionen wird die Analyse bestimmt: Falls:

13 Folie 13 Available Expressions Analysis – Beispiel1 Beispiel 1: o Nur Block 1 generiert den Ausdruck: {x+y} o Andere generieren / killen keine Ausdrücke o Der Flussgraph sieht wie folgt aus: […] no yes

14 Folie 14 Available Expressions Analysis – Beispiel1 Gesucht wird: größte Lösung der Gleichung für AE entry Bestimmen der AE-Gleichungen:

15 Folie 15 Available Expressions Analysis – Beispiel1 Wir erhalten: Deutung: o Es gibt 2 Lösungen für die Gleichung: - {x+y} - die leere Menge o Informativ aber nur {x+y} o {x+y} stellt die größte Lösung der Gleichung dar. => Der Ausdruck {x+y} ist jedesmal verfügbar, wenn l’ betreten wird (hier: Schleifeneintritt)

16 Folie 16 Available Expressions Analysis – Beispiel2 Beispiel 2: Aufstellen der kill & gen Funktionen: ----------------------------------------------------

17 Folie 17 Available Expressions Analysis – Beispiel2 Aufstellen der AE-Funktionen:

18 Folie 18 Available Expressions Analysis – Beispiel2 Als Ergebnis erhält man folgende Tabelle: ---------------------------------------------- [x:=a+b] [y:=a*b] [y>a+b] [a:=a+1] [x:=a+b]

19 Folie 19 Available Expressions Analysis – Beispiel2 Deutung: o Der Ausdruck a wird innerhalb der Schleife neu definiert o Der Ausdruck {a+b} ist immer am Schleifeneingang verfügbar o {a*b} nur beim ersten Schleifeneingang verfügbar wird vor dem nächsten Durchlauf gekilled

20 Folie 20 Reaching Definition Analysis o sehr ähnlich zur AE-Analyse (Vorwärtsanalyse) o Frage: Welche Definition/Zuweisung ist bei einer bestimmten Stelle im Programm gültig? o Ziele: Kenntnis über die jeweilige Gültigkeit einer Zuweisung o Beispiel: Nach Label 2: (x,1),(y,2) Nach Label 3: (x,1),(y,2),(a,4),(x,5)

21 Folie 21 Reaching Definition Analysis - Vorgehensweise Vorgehensweise o Definieren der kill RD, gen RD, RD entry und RD exit funktionen:

22 Folie 22 Reaching Definition Analysis - Vorgehensweise

23 Folie 23 Reaching Definition Analysis - Beispiel o Funktionen am Programmteil anwenden: Beispiel: Es entsteht folgende Tabelle der kill & gen Funktionen: ------------------------------------------------------------------------- 1 2 3 4 5

24 Folie 24 Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (1): _______________________________________________________ 1 2 3 4 5

25 Folie 25 Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (2): _______________________________________________________ 1 2 3 4 5

26 Folie 26 Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (3): _______________________________________________________ 1 2 3 4 5

27 Folie 27 Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (4): _______________________________________________________ 1 2 3 4 5

28 Folie 28 Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (5): _______________________________________________________ 1 2 3 4 5 Somit sind alle RD-Funktionen aufgelöst. Deutung: Man erkennt nun, welche Zuweisung an welcher Stelle existiert!

29 Folie 29 Very Busy Expressions Analysis o Ein Ausdruck wird als „very busy“ bezeichnet, wenn: - am Ende eines Labels sichergestellt ist, dass er im weiteren Verlauf auf jeden Fall gebraucht wird. => Wichtig: Der Ausdruck muss verwendet bzw. betrachtet werden bevor einer seiner Werte verändert wird! o Es handelt sich um eine Rückwärtsanalyse o Ziel: Codeoptimierung

30 Folie 30 Very Busy Expressions Analysis Veranschaulichung und Analyse am Beispiel: o Die Ausrücke {a-b} und {b-a} sind „very busy“ zum Zeitpunkt 1 o Um das Programm zu analysieren müssen wieder alle Funktionen aufgestellt werden!

31 Folie 31 Very Busy Expressions Analysis o Hier gleich angewendet (allgemeine Formeln nachlesen!) o kill & gen Funktionen: o VB Funktionen:

32 Folie 32 Very Busy Expressions Analysis Nach Vereinfachung erhält man: o Deutung: Aus dieser Tabelle lässt sich nun jeder Ausdruck, der zu einem bestimmten Zeitpunkt „very busy“ ist, ablesen.

33 Folie 33 Live Variables Analysis o Eine Variable wird als „live“ bezeichnet, wenn: - sie am Ende eines Labels einen Wert enthält, der später benötigt werden könnte. o Rückwärtsanalyse o Verwendung: - Dead code elimination (Variable nicht live – Zuweisungsblock löschen) - Registerzuweisung

34 Folie 34 Live Variables Analysis Beispiel: Frage: Welche variablen sind zu welchem Zeitpunkt „live“? Antwort: x nach Label 1 ist nicht live x nach Label 3 live y nach Label 2 live => Erste Zuweisung ist Redundant, kann also gelöscht werden.

35 Folie 35 Live Variables Analysis Definitionen der kill, gen und LV Funktionen:

36 Folie 36 Live Variables Analysis Analyse nach Aufstellen der gen, kill und LV Funktionen ergibt folgendes:

37 Folie 37 Live Variables Analysis Durch einsetzten und vereinfachen erhält man wieder die Ergebnistabelle: Deutung: - Alle „live“-Variablen bzgl ihrem Programmpunkt ablesbar - Am Programmende sind alle Variablen tot – nicht „live“

38 Folie 38 Live Variables Analysis - Richtigkeit Die Richtigkeit der Live Variables Analysis o Um Richtigkeit zu zeigen, benutzen wir folgendes Theorem: 1. 2.

39 Folie 39 Live Variables Analysis - Richtigkeit Veranschaulichung am Beispiel:, V1 = {y,z} und V2 = {x} o o Nach Theorem und folgt, dass wenn V2 nach dem Block live ist, muss V1 davor live sein.

40 Folie 40 Servus Vielen Dank für die Aufmerksamkeit!


Herunterladen ppt "Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009."

Ähnliche Präsentationen


Google-Anzeigen