Datenflussanalyse Klassisch Seminar Progammanalyse SS 2009 Referent Lorenz

  • Slides: 40
Download presentation
Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24. 06. 2009

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

Agenda - Einleitung - Einführung in die Sprache WHILE - Die Intraprozedurale Analyse -

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

Einleitung Was bedeutet “Datenflussanalyse”? Ermittlung der Zusammenhänge zwischen einzelnen Stellen im Programm und den

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? 3

Einleitung Datenflussanalyse – wie und wozu? Wozu? - Primär zur Codeoptimierung - Gegebenenfalls zur

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 4

Einführung in WHILE Die Sprache: WHILE - Imperative Sprache - Programmcode glieder sich in

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

Intraprozedurale Analyse - Beschäftigt sich mit Elementaraussagen - Gliedert sich in mehrere Datenflussanalysen (spätere

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 6

Intraprozedurale Analyse - Flussfunktion Wie sieht der Flussgraph von folgendem Code aus ? Die

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… 7

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

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

Available Expressions Analysis o Analyse Algorithmus (Vorwärtsanalyse) o Beschreibt die Verfügbarkeit einzelner Ausdrücke an

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: 9

Available Expressions Analysis Definition von kill- und gen-Funktionen Kill-Funktion: Ausdruck ist killed, wenn eine

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) 10

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

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

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

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

Available Expressions Analysis – Beispiel 1: o Nur Block 1 generiert den Ausdruck: {x+y}

Available Expressions Analysis – 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 […] 13

Available Expressions Analysis – Beispiel 1 Gesucht wird: größte Lösung der Gleichung für AEentry

Available Expressions Analysis – Beispiel 1 Gesucht wird: größte Lösung der Gleichung für AEentry Bestimmen der AE-Gleichungen: 14

Available Expressions Analysis – Beispiel 1 Wir erhalten: Deutung: o Es gibt 2 Lösungen

Available Expressions Analysis – Beispiel 1 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) 15

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

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

Available Expressions Analysis – Beispiel 2 Aufstellen der AE-Funktionen: 17

Available Expressions Analysis – Beispiel 2 Aufstellen der AE-Funktionen: 17

Available Expressions Analysis – Beispiel 2 Als Ergebnis erhält man folgende Tabelle: ----------------------- [x:

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

Available Expressions Analysis – Beispiel 2 Deutung: o Der Ausdruck a wird innerhalb der

Available Expressions Analysis – Beispiel 2 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 19

Reaching Definition Analysis o sehr ähnlich zur AE-Analyse (Vorwärtsanalyse) o Frage: Welche Definition/Zuweisung ist

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) 20

Reaching Definition Analysis - Vorgehensweise o Definieren der kill. RD, gen. RD, RDentry und

Reaching Definition Analysis - Vorgehensweise o Definieren der kill. RD, gen. RD, RDentry und RDexit funktionen: 21

Reaching Definition Analysis - Vorgehensweise 22

Reaching Definition Analysis - Vorgehensweise 22

Reaching Definition Analysis - Beispiel o Funktionen am Programmteil anwenden: Beispiel: Es entsteht folgende

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

Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (1): ____________________________

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

Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (2): ____________________________

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

Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (3): ____________________________

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

Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (4): ____________________________

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

Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (5): ____________________________

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! 28

Very Busy Expressions Analysis o Ein Ausdruck wird als „very busy“ bezeichnet, wenn: -

Very Busy Expressions Analysis o Ein Ausdruck wird als „very busy“ bezeichnet, wenn: - am Ende eines Labels sichergestellt ist, dass er im weiteren Verlauf 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 29

Very Busy Expressions Analysis Veranschaulichung und Analyse am Beispiel: o Die Ausrücke {a-b} und

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! 30

Very Busy Expressions Analysis o Hier gleich angewendet (allgemeine Formeln nachlesen!) o kill &

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

Very Busy Expressions Analysis Nach Vereinfachung erhält man: o Deutung: Aus dieser Tabelle lässt

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. 32

Live Variables Analysis o Eine Variable wird als „live“ bezeichnet, wenn: - sie am

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 33

Live Variables Analysis Beispiel: Frage: Welche variablen sind zu welchem Zeitpunkt „live“? Antwort: x

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. 34

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

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

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

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

Live Variables Analysis Durch einsetzten und vereinfachen erhält man wieder die Ergebnistabelle: Deutung: -

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“ 37

Live Variables Analysis - Richtigkeit Die Richtigkeit der Live Variables Analysis o Um Richtigkeit

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

Live Variables Analysis - Richtigkeit Veranschaulichung am Beispiel: , V 1 = {y, z}

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

Servus Vielen Dank für die Aufmerksamkeit! 40

Servus Vielen Dank für die Aufmerksamkeit! 40