General Framework. Tino CortesiTecniche di Analisi di Programmi 2 Framework Nonostante le differenze tra le analisi viste finora (Reaching Definitions,

Slides:



Advertisements
Presentazioni simili
Strutture dati per insiemi disgiunti
Advertisements

Punti Fissi.
Informatica Generale Marzia Buscemi
COORDINATE POLARI Sia P ha coordinate cartesiane
Introduzione Cosa sono le reti di Petri?
Algoritmi e Strutture Dati
Cammini minimi con una sorgente
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Alberi binari di ricerca
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Cammini minimi con sorgente singola
Ordini Parziali - Reticoli
Dataflow Analysis. Tino CortesiTecniche di Analisi di Programmi 2 Dataflow Analysis Il punto di partenza per una dataflow analysis è una rappresentazione.
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Interpretazione Astratta
Analisi e Verifica di Programmi Laboratorio di AVP Corso di Laurea in Informatica AA Tino Cortesi.
Semantica Denotazionale
Tino CortesiTecniche di Analisi di Programmi 1 Ricorsione Aggiungiamo funzioni ricorsive (in una sola variabile, per semplicità). La funzione semantica.
Semantiche dei linguaggi di programmazione
Tino CortesiTecniche di Analisi di Programmi 1 Astrazione e Concretizzazione In una Interpretazione Astratta ci aspettiamo che il seguente diagramma commuti:
Ordini Parziali - Reticoli
Esercitazioni su circuiti combinatori
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 05/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algebra di Boole ed elementi di logica
1 Esempi di consistenza sui limiti Non consistente sui limiti, considera Z=2, poi X-3Y=10 Ma il dominio qui sotto e consistente sui limiti: Confrontare.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
eliana minicozzi linguaggi1a.a lezione2
Algoritmi e Strutture Dati (Mod. B)
1 2. Analisi degli Algoritmi. 2 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo:
Algoritmi e Strutture Dati III. Algoritmi di Ordinamento
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Heap binomiali Gli heap binomiali sono strutture dati su cui si possono eseguire efficientemente le operazioni: Make(H) : crea uno heap vuoto Insert(H,
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Strutture di controllo in C -- Flow Chart --
Lezione 4 Probabilità.
Anche la RB-Delete ha due fasi: Nella prima viene tolto un nodo y avente uno dei sottoalberi vuoto sostituendolo con la radice dellaltro sottoalbero. Per.
Elementi di Informatica di base
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Radix-Sort(A,d) // A[i] = cd...c2c1
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
RB-insert(T, z) // z.left = z.right = T.nil Insert(T, z) z.color = RED // z è rosso. Lunica violazione // possibile delle proprietà degli alberi // rosso-neri.
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Università degli studi di Parma Dipartimento di Ingegneria dell’Informazione Politecnico di Milano Reti Logiche A Macchine non completamente specificate.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
1 Interpretazione astratta: un approccio sistematico all’analisi statica.
Algoritmi e Strutture Dati
Transcript della presentazione:

General Framework

Tino CortesiTecniche di Analisi di Programmi 2 Framework Nonostante le differenze tra le analisi viste finora (Reaching Definitions, Available Expressions, Very Busy Expressions, Liveness), è facile osservarne le similarità Il vantaggio di un framework unificante sta soprattutto nella possibilità di progettare un algoritmo generico che possa essere istanziato per ottenere le diverse analisi.

Tino CortesiTecniche di Analisi di Programmi 3 Catalogare Dataflow analyses Possible Analysis Definite Analysis ForwardsReaching definitions Available expressions BackwardsLive variablesVery busy expressions

Tino CortesiTecniche di Analisi di Programmi 4 Reaching Definitions = {(x,?) | x è una variabile del programma} se p è il punto iniziale RD entry (p)= U { RD exit (q) | q precede p} RD exit (p)= (RD entry ( p ) \ kill RD (p) ) U gen RD (p)

Tino CortesiTecniche di Analisi di Programmi 5 Available Expressions se p è il punto iniziale AE entry (p)= { AE exit (q) | (q,p) è un arco del grafo} AE exit (p)= (AE entry ( p ) \ kill AE (p)) U gen AE (p)

Tino CortesiTecniche di Analisi di Programmi 6 Very Busy Expressions se p è un punto finale VB exit (p)= { VB entry (q) | (p,q) è un arco del grafo} VB entry (p)= (VB exit ( p ) \ kill VB (p)) U gen VB (p)

Tino CortesiTecniche di Analisi di Programmi 7 gen LV (p)= use[p] kill LV (p) = def[n] se p è un punto finale LV exit (p)= U { LV entry (q) | q segue p} LV entry (p)= (LV exit ( p ) \ kill LV (p) ) U gen LV (p) Liveness Analysis

Tino CortesiTecniche di Analisi di Programmi 8 Il pattern comune se p E GA (p)= { GA (q) | q F } altrimenti GA (p)= f ( GA ( p ) ) dove: E sono i punti iniziali o terminali del grafo specifica linformazione iniziale o finale F è linsieme di punti del grafo successivi o precedenti è unoperazione insiemistica di intersezione o unione f è la transfer function associata ai nodi del grafo

Tino CortesiTecniche di Analisi di Programmi 9 Forward vs Backwards se p E GA (p)= { GA (q) | q F } altrimenti GA (p)= f ( GA ( p ) ) Nelle forward analyses E è il punto iniziale, F è pred[p], GA è GA entry e GA è GA exit Nelle backward analyses E è il punto finale, F è succ[p], GA è GA exit e GA è GA entry

Tino CortesiTecniche di Analisi di Programmi 10 Possible vs Definite se p E GA (p)= { GA (q) | q F } altrimenti GA (p)= f ( GA ( p ) ) Quando è lintersezione, richiediamo linsieme più grande che soddisfa le equazioni su tutti i cammini di esecuzione: si tratta quindi di definite analysis Quando è lunione, richiediamo linsieme più piccolo che soddisfa le equazioni su almeno un cammino di esecuzione: si tratta quindi di possible analysis

Tino CortesiTecniche di Analisi di Programmi 11 Esercizio Utilizzare lanalizzatore statico disponibile nel sito per sperimentare le quattro tipologie di analisi viste a lezione su diversi programmi.

Tino CortesiTecniche di Analisi di Programmi 12 Esercizio La upwards exposed uses analysis è lanalisi duale della reaching definitions analysis: associa ad ogni punto p del grafo i punti del grafo nei quali la dichiarazione contenuta nel punto p potrebbe essere utilizzata. E unanalisi forward o backward? E unanalisi possible o definite? Formalizzare lanalisi utilizzando RD

General Framework Terminazione e Correttezza di un Algoritmo Generico

Tino CortesiTecniche di Analisi di Programmi 14 Spazio delle proprietà Qualè linsieme usato per descrivere linformazione che si vuole derivare? Si richiede che tale insieme di valori sia un reticolo completo Es.: Reaching Definition Analysis: L = (Var Lab ? ) = (inclusione tra insiemi) lub = Es.: Per la Available Expression Analysis: L = (AExp)(espressioni aritmetiche) = (inclusione tra insiemi) lub =

Tino CortesiTecniche di Analisi di Programmi 15 Funzioni di transfer E necessario un insieme di funzioni di transfer f l : L L l Lab Tali funzioni devono essere monotone l l f l (l) f l (l) se si aumenta la conoscenza sullinput, anche la conoscenza sulloutput deve aumentare Deve esistere un insieme F di funzioni monotone L L tale che F contiene tutte le funzioni di transfer f l F contiene la funzione identità F è chiuso rispetto alla composizione di funzioni

Tino CortesiTecniche di Analisi di Programmi 16 General Framework Riassumendo, un Framework Monotono per Analisi Dataflow costituito da: 1. un reticolo completo L che soddisfa la condizione sulle catene ascendenti 2. un insieme F di funzioni monotone da L a L che contiene lidentità ed è chiuso sotto composizione Nelle 4 analisi viste, linsieme F può essere in tutti e 4 i casi definito come F = { f: L L | l L l k,l g L: f(l)=(l - l k ) l g }

Tino CortesiTecniche di Analisi di Programmi 17 General Framework 3. Una relazione di flusso F (ad esempio succ[] o pred[],...) 4. Un insieme delle etichette iniziali E (ad esempio i punti iniziali del grafo di flusso o le sue foglie) 5. Un valore iniziale per le etichette iniziali in E 6. Una funzione f che mappa le etichette dei nodi in F o in E nelle corrispondenti funzioni di transfer in F

Tino CortesiTecniche di Analisi di Programmi 18 Equazioni dellAnalisi se l E GA ( l )= lub { GA ( l ) | ( l, l ) F } altrimenti GA ( l )= f l ( GA ( l ) ) dove: E sono i punti iniziali o terminali del grafo specifica linformazione iniziale o finale F è linsieme di archi del grafo successivi o precedenti f l è la transfer function di F associata al nodo l del grafo

Tino CortesiTecniche di Analisi di Programmi 19 Algoritmo Generico Lalgoritmo ha in input unistanza del General Framework. Utilizza un array (Analysis) indicizzato sulle etichette del grafo, che contiene linformazione in entrata (o uscita, nel caso di analisi backward) di ogni punto del programma. Tale informazione sarà un elemento del dominio L. Lalgoritmo fa uso di una lista ausiliaria W. W è una lista di coppie: ogni coppia è un elemento della relazione di flusso F. la presenza di una coppia ( l, l ) nella lista W indica che lanalisi ha modificato linformazione in uscita (o in entrata, nel caso si analisi backward) del punto l, e che quindi bisognerà ricalcolare lanalisi dellentrata del punto l (o delluscita, nel caso si analisi backward).

Tino CortesiTecniche di Analisi di Programmi 20 Algoritmo Generico input: unistanza del framework (L, F, F, E,, f) output: GA, GA metodo: passo 1 (inizializzazione) W:= nil for all ( l, l ) in F do W:= cons(( l, l ),W) for all l in F or E do if l E Analysis[ l ]:= else Analysis[ l ]:= L passo 2 (iterazione) while W nil do l := fst(head(W)) l := snd(head(W)) W:= tail(W) if not f l (Analysis[ l ]) Analysis[ l ] Analysis[ l ] = lub(Analysis[ l ], f l (Analysis[ l ])) for all l con ( l, l ) in F do W:= cons(( l, l ),W) passo 3 (risultato) per ogni l in F o E do GA ( l ) = Analysis[ l ] GA ( l ) = f l (Analysis[ l ])

Tino CortesiTecniche di Analisi di Programmi 21 Terminazione Cosa ci garantisce che lalgoritmo termini sempre? Due condizioni: 1. le operazioni (in particolare la funzione di transfer) devono essere monotone: x y f(x) f(y) 2. il dominio è un reticolo completo senza catene ascendenti infinite Teorema: una funzione monotona, su un reticolo completo senza catene ascendenti infinite, converge in un numero finito di passi.

Tino CortesiTecniche di Analisi di Programmi 22 Terminazione Per verificare che lalgoritmo termina Tutte le variabili sono inizializzate allinsieme vuoto Ad ogni iterazione, gli insiemi costruiti possono solo crescere Per induzione sul numero di iterazioni, usando la monotonia delle funzioni in F. Gli insiemi non possono crescere allinfinito (il numero di possibili elementi della catena è finito)

Tino CortesiTecniche di Analisi di Programmi 23 Correttezza Siano Analysis e Analysis le soluzioni minime dellistanza del General Framework in input La prova di correttezza dellalgoritmo segue 4 passi successivi: 1. ad ogni iterazione i valori nellarray Analysis sono contenuti nei valori corrispondenti in Analysis ovvero nel loop vale il seguente invariante: l : Analysis[ l ] Analysis ( l ) 2. quando il loop termina ( l, l ) F : f l (Analysis[ l ]) Analysis[ l ] 3. quando il passo 2 termina l : Analysis[ l ] l : Analysis[ l ] lub{ f l (Analysis[ l ]) | ( l, l ) F} 4. dalla definizione di Analysis e dal teorema di Tarski segue che Analysis ( l ) = lub (lub{ f l (Analysis[ l ]) | ( l, l ) F}, ) 5. dal punto 4 e dalla def. di GA ( l ): l : GA ( l ) Analysis [ l ] e quindi per 1: l : GA ( l ) Analysis [ l ]

CFA di problemi distributivi e di problemi non distributivi

Tino CortesiTecniche di Analisi di Programmi 25 Problemi Dataflow Distributivi La monotonicità di una funzione f su insiemi implica che f(x y) f(x) f(y) Un problema dataflow si dice distributivo se la funzione corrispondente soddisfa una condizione più forte: f(x y) f(x) f(y) In generale, un problema dataflow si dice distributivo se f(lub(x,y)) = lub(f(x), f(y))

Tino CortesiTecniche di Analisi di Programmi 26 Esempio di f distributiva {3}{2}{1} {2,3}{1,3}{1,2} {1,2,3} {3}{2}{1} {2,3}{1,3}{1,2} {1,2,3}

Tino CortesiTecniche di Analisi di Programmi 27 Esempio di f non distributiva {3}{2}{1} {2,3}{1,3}{1,2} {1,2,3} {3}{2}{1} {2,3}{1,3}{1,2} {1,2,3}

Tino CortesiTecniche di Analisi di Programmi 28 Esempio h gf k k(h(f(0) U g(0))) = k(h(f(0)) U h(g(0))) = k(h(f(0))) U k(h(g(0))) Lanalisi del grafo è equivalente alla combinazione del risultato dellanalisi di tutti i cammini.

Tino CortesiTecniche di Analisi di Programmi 29 DFA di un problema distributivo Se un problema è distributivo, allora la (minima) soluzione al sistema di equazioni che lo definisce è equivalente alla combinazione dei risultati dellanalisi di tutti i cammini (includendo quelli infiniti). In questo caso lunione non causa nessuna perdita di informazione

Tino CortesiTecniche di Analisi di Programmi 30 Quali problemi sono distributivi? I problemi distributivi sono quelli facili... Molte analisi che riguardano la struttura del programma sono distributive Ad es., live variables, available expressions, reaching definitions, very busy expressions Sono tutte proprietà che riguardano COME il programma esegue la computazione.

Tino CortesiTecniche di Analisi di Programmi 31 Problemi non distributivi Sono tipicamente problemi non distributivi quelli legati allanalisi di COSA il programma calcola. Es.: loutput è una costante, un valore positivo, ecc. Esempio: Constant Propagation Analysis Per ogni punto del programma determinare se una variabile ha esattamente lo stesso valore costante ogniqualvolta lesecuzione raggiunge quel punto Si tratta di una analisi forward e definite.

Tino CortesiTecniche di Analisi di Programmi 32 Constant Propagation Analysis Lo spazio della proprietà oggetto dellanalisi è : (Var Z T ) dove: Var è linsieme delle variabili che occorrono nel programma Z T = Z { T } è parzialmente ordinato da: n Z : z CP T n 1, n 2 Z : (n 1 CP n 2 ) (n 1 n 2 )

Tino CortesiTecniche di Analisi di Programmi 33 ZTZT T L= Z { T } n Z : n T

Tino CortesiTecniche di Analisi di Programmi 34 Il reticolo (Var Z T ) In Z T, lelemento massimo T serve a indicare che una variabile non ha un valore costante Un elemento : Var Z T è una funzione (parziale): data una variabile x, x dice se x è o meno una costante, e in caso positivo (se x è diverso da T) qualè tale valore. Il reticolo è completato con laggiunta di un elemento minimo

Tino CortesiTecniche di Analisi di Programmi 35 Lordine nel reticolo (Var Z T ) Lordine parziale nel reticolo (Var Z T ) è definito da: (Var Z T ) : 1, 2 (Var Z T ) : ( 1 2 ) ( x dom( 1 ) : 1 (x) CP 2 (x) ) Il least upper bound è definito da: (Var Z T ) : lub(, ) = lub(, ) = 1, 2 (Var Z T ) x Var : lub( 1, 2 )(x) = lub( 1 (x), 2 (x)) è luguaglianza se i (x) sono numeri!

Tino CortesiTecniche di Analisi di Programmi 36 ({x,y} Z T ) T {(x,1)} {(x,1), (y,2)} {(y,7)} {(x,1), (y,4)} {(y,4)}

Tino CortesiTecniche di Analisi di Programmi 37 Analizzare le espressioni Per specificare le funzioni di transfer è necessaria la seguente funzione per analizzare le espressioni algebriche presenti nel programma a partire da uno stato in (Var Z T ) A : ( AExp (Var Z T ) ) Z T A (x, ) = se = (x) altrimenti A (n, ) = se = n altrimenti A (a 1 op a 2, ) = A (a 1, ) op A (a 2, ) ( dove op è linterpretazione di op su Z T : es. 4 op 2 = 8 )

Tino CortesiTecniche di Analisi di Programmi 38 Le funzioni di transfer Linsieme di funzioni monotone, nel caso della Constant Propagation Analysis è F = { f : (Var Z T ) (Var Z T ) | f è monotona} Le funzioni di transfer f l sono definite da: se l è letichetta di un assegnamento [x:= a] l f l ( ) = se = [x A (a, )] altrimenti se l è letichetta di un altro comando: f l ( ) =

Tino CortesiTecniche di Analisi di Programmi 39 Esempio Il programma [x:=10] 1 ; [y:=x+10] 2 ; ([while x<y] 3 [y:=y-1] 4 ); [z:=x-1] 5 La minima soluzione della Constant Propagation Analysis di questo programma è: CP entry (1) = CP exit (1) = {(x 10)} CP entry (2) = {(x 10)} CP exit (2) = {(x 10), (y 20)} CP entry (3) = CP exit (3) = CP entry (4) = CP exit (4) = {(x 10), (y T )} CP entry (5) = {(x 10), (y T )} CP exit (5) = {(x 10), (y T ), (z 9)}

Tino CortesiTecniche di Analisi di Programmi 40 Non distributività Per dimostrare che la Constant Propagation Analysis è non distributiva, è sufficiente considerare il comportamento delle funzioni di transfer f l sul comando [y:= x * x] l si considerino due stati 1 (x) = 1 e 2 (x) = -1 in questo caso: lub( 1, 2 )(x) = T e quindi f l (lub( 1, 2 ))(y) = T mentre f l ( 1 )(y) = 1 = f l ( 2 )(y) ovvero lub( f l ( 1 ), f l ( 2 )) # f l (lub( 1, 2 ))