130 likes | 233 Vues
Universitatea Politehnica București. Facultatea de Automatică și Calculatoare. Catedra de Calculatoare. Adăugarea suportului pentru forma SSA în Jato. Autor. Conducători științifici. Ana-Maria Farca și. as. drd . ing . Răzvan Deaconescu drd . ing . Octavian Purdilă. Jato.
E N D
Universitatea Politehnica București Facultatea de Automatică și Calculatoare Catedra de Calculatoare Adăugarea suportului pentru forma SSA în Jato Autor Conducători științifici Ana-Maria Farcași as. drd. ing. Răzvan Deaconescu drd. ing. Octavian Purdilă
Jato Ce este Jato? Licență - Iulie 2011
Noțiuni preliminare • Bloc de control • Graf de control • Dominanță • Arbore de dominanță • Set de frontieră de dominanță Licență - Iulie 2011
SSA Forma SSA (Static Single Assignment) • Ce reprezintă? • Avantaje? • Dezavantaje? a = 1 a = a + 2 b = a a = a *bx Forma non-SSA a1 = 1 a2 = a1 + 2 b1 = a2 a3 = a2 *b1 Forma SSA Licență - Iulie 2011
Arhitectura aplicației Legendă SSA – Static Single Assignment LIR – Low Intermediate Representation DCE – Dead Code Elimination Licență - Iulie 2011
Conversie LIR-SSA • Inserare funcții phi • Redenumire variabile Pentru cod liniar, precum cel din cadrul unui bloc, conversia este simplă. Ce ne facem însă atunci când două căi din graful de control al programului se intersectează? Licență - Iulie 2011
LIR-SSA Inserare funcții phi Licență - Iulie 2011
LIR-SSA Redenumire variabile • Se pornește cu blocul de intrare • Stivă pentru fiecare variabilă • Redenumire de-a lungul arborelui de dominanță • Parametrii funcției phi Licență - Iulie 2011
Optimizări • eliminarea codului inutil (“dead code”) • propagarea constantelor • propagarea copierilor • eliminarea calculelor redundante • eliminarea subexpresiilor comune Licență - Iulie 2011
DCE • Implementare variantă simplă a DCE • Elimină cod care nu afectează rezultatul programului • Reduce dimensiunea programului • Reduce timpul de execuție prin eliminarea operațiunilor irelevante Licență - Iulie 2011
Conversie SSA-LIR • Predecesori cu mai mulți succesori • Predecesori ce se termină într-o instrucțiune de salt condiționat • Instrucțiuni cu 2 adrese Licență - Iulie 2011
Rezultate și concluzii • Implementat • conversia LIR->SSA • optimizarea de eliminare a codului inutil • conversia SSA->LIR • Rulare cu SSA => timp de rulare cu câteva zecimi de secundă mai mare • Îmbunătățiri: • Euristică • Variantă agresivă de DCE • Noi optimizări Licență - Iulie 2011
Mulțumesc pentru atenție! • SSA • LIR • bloc de control • graf de control • set de frontieră de dominanță • arbore de dominanță • funcții phi • redenumire variabile • registru virtual • registru fizic Întrebări ?? Licență - Iulie 2011