Upload
chadwick-rowe
View
31
Download
1
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
Autor Conducători științifici
Universitatea Politehnica București
Facultatea de Automatică și Calculatoare
Catedra de Calculatoare
Adăugarea suportului pentru forma SSA în Jato
Ana-Maria Farcași as. drd. ing. Răzvan Deaconescudrd. ing. Octavian Purdilă
Jato
Ce este Jato?
2Licență - Iulie 2011
Noțiuni preliminare
• Bloc de control
• Graf de control
• Dominanță
• Arbore de dominanță
• Set de frontieră de dominanță
3Licență - Iulie 2011
SSAForma SSA (Static Single Assignment)• Ce reprezintă?• Avantaje?• Dezavantaje?
a = 1a = a + 2b = aa = a * bx
Forma non-SSA
a1 = 1a2 = a1 + 2b1 = a2a3 = a2 * b1
Forma SSA
4Licență - Iulie 2011
Arhitectura aplicației
5Licență - Iulie 2011
Legendă
SSA – Static Single Assignment
LIR – Low Intermediate Representation
DCE – Dead Code Elimination
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ă?
6Licență - Iulie 2011
LIR-SSA Inserare funcții phi
7Licență - 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
8Licență - Iulie 2011
Optimizări
• eliminarea codului inutil (“dead code”)
• propagarea constantelor
• propagarea copierilor
• eliminarea calculelor redundante
• eliminarea subexpresiilor comune
9Licență - 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
10Licență - 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
11Licență - Iulie 2011
Rezultate și concluzii
• Implementatconversia LIR->SSAoptimizarea de eliminare a codului inutilconversia 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
12Licență - 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
13Licență - Iulie 2011
Întrebări ??