13
Autor Conducători științifici Universit atea Politehni ca București Facultatea de Automatică și Calculatoa re Catedra de Calculato are Adăugarea suportului pentru forma SSA în Jato Ana-Maria Farcași as. drd. ing. Răzvan Deaconescu drd. ing. Octavian Purdilă

Adăugarea suportului pentru forma SSA în Jato

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

Page 1: Adăugarea suportului pentru forma SSA în Jato

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ă

Page 2: Adăugarea suportului pentru forma SSA în Jato

Jato

Ce este Jato?

2Licență - Iulie 2011

Page 3: Adăugarea suportului pentru forma SSA în Jato

Noțiuni preliminare

• Bloc de control

• Graf de control

• Dominanță

• Arbore de dominanță

• Set de frontieră de dominanță

3Licență - Iulie 2011

Page 4: Adăugarea suportului pentru forma SSA în Jato

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

Page 5: Adăugarea suportului pentru forma SSA în Jato

Arhitectura aplicației

5Licență - Iulie 2011

Legendă

SSA – Static Single Assignment

LIR – Low Intermediate Representation

DCE – Dead Code Elimination

Page 6: Adăugarea suportului pentru forma SSA în Jato

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

Page 7: Adăugarea suportului pentru forma SSA în Jato

LIR-SSA Inserare funcții phi

7Licență - Iulie 2011

Page 8: Adăugarea suportului pentru forma SSA în Jato

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

Page 9: Adăugarea suportului pentru forma SSA în Jato

Optimizări

• eliminarea codului inutil (“dead code”)

• propagarea constantelor

• propagarea copierilor

• eliminarea calculelor redundante

• eliminarea subexpresiilor comune

9Licență - Iulie 2011

Page 10: Adăugarea suportului pentru forma SSA în Jato

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

Page 11: Adăugarea suportului pentru forma SSA în Jato

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

Page 12: Adăugarea suportului pentru forma SSA în Jato

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

Page 13: Adăugarea suportului pentru forma SSA în Jato

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