SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
ALF
Optimisations
Bibliographie pour aujourd'hui
Keith Cooper, Linda Torczon, Engineering a Compiler
– Chapitre 8, 9, 10
• 8.4
• 9.3
• 8.6
• 9.2
• 10.2
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman,
Compilers: Principles, Techniques, and Tools (2nd Edition)
– Chapitre 8
• 8.5
• 8.6
Contenu
• Pliage de constants
• Variables inutilisées
– fonctions inutilisées
• Static Single Assigment
(SSA)
• Operations Identités
• Value Numbering
• Tree Height Balancing
Andrei Alexandrescu
• Roumain
• Universitatea
Politehnica din
București
• University of
Washington
• Modern C++ Design
• Architect de Langage D
Langages
Pièces de compilation
Frontent Optimiseur Backend
Source
AST
Source
d’assemblage
Backend
AST
Générateur de
code
Allocateur de
mémoire
Allocateur de
registres
Source
d’assemblage
PLIAGE DE CONSTANTS
Left Value (lvalue)
• la partie gauche d’un attribution
n = s + t;
Right Value (lvalue)
• la partie droite d’un attribution
• paramètre de fonction
• index d’un array
n = s + t;
f(t)
v[p]
Pliage de constants
• Calculez les constantes et remplacez-les par la
valeur du résultat
– Les calculs doivent être effectués de la même
manière que la CPU les ferait
• Compilez et exécuter
• Interprétation
Pliage de constants
n = 2*7
s = “hello” + ” world”
v = 5 * n + 5
n = 14
s = “hello world”
v = 75
Algorithme
• Toutes les variables sont constantes
• Prend toute les instructions de contexte de
variable
– Si une variable este lvalue la variable n’est pas
constante
– Si une adresse de variable (&v) este un paramètre
de un fonction la variable n’est pas constante
DIAGRAMME DE FLUX DE
CONTRÔLE
Diagramme de flux de contrôle
• Organisation de Three Address Code a
diagramme
• Start
• Stop
• Basic Block
– le flux d'instructions n'est pas interrompu par un saut
– il n'y a pas d'instruction d'étiquette (sauf la première
instruction)
– leader
Selection de leader
• premier instruction
• étiquette
• instruction après un saute (if, ifFalse, goto)
Exemple
var n = 0;
for (var i = 0; i < sqrt(n); i++)
{
if (n % i == 0) n = n + 1;
}
print (n);
Exemple
var n = 0;
for (var i = 0; i < sqrt(n); i++)
{
if (n % i == 0) n = n + 1;
}
print (n);
n = 0
i = 0
label for
param n
n1 = call sqrt, 1
n2 = i < n1
ifFalse e2 goto endfor
n4 = n % i
n5 = n4 == 0
ifFalse n5 goto endif
n = n + 1
label endif
i = i + 1
goto for
label endfor
param n
call print, 1
Exemple
n = 0
i = 0
label for
param n
n1 = call sqrt, 1
n2 = i < n1
ifFalse e2 goto endfor
n4 = n % i
n5 = n4 == 0
ifFalse n5 goto endif
n = n + 1
label endif
i = i + 1
goto for
label endfor
param n
call print, 1
Start
Stop
LIVENESS
Liveness
• Liveness
– Apres chaque instruction
– Une variable est considérée live si elle est utilisée dans
une autre instruction ci-dessous
– Une variable est considérée non live si la valeur
qu'elle stocke est remplacée sans être utilisée
• Usage prochaine
– Chaque instruction
– L’instruction dessous ou une variable est utilise
Tableau de symboles
• Variable
– liveness: not-live / live
– used next: instruction ou la variables est utilisé la
prochain fois
Algorythme
• Toutes les variables sont considérées comme
étant live
• À partir de la fin du bloc
– Pour une instruction s = x + y
– Définissez les informations de live et d'utilisation
suivantes de l'instruction dans le tableau des
symboles pour s, x et y
– Dans le tableau des symboles, définissez s sur "not
live" et "not used next"
– Dans la table des symboles, définissez x et y à "live" et
"used next" au instruction curent
Example
(1) x=a+b
(2) s=x+y
(3) x=x+y+10*2
Variable Liveness Used Next
x not live not used next
y not live not used next
a not live not used next
b not live not used next
s not live not used next
Example
(1) x=a+b
(2) s=x+y
(3) x=x+y+10*2
Variable Liveness Used Next
x live 3
y live 3
a not live not used next
b not live not used next
s not live not used next
Example
(1) x=a+b
(2) s=x+y
(3) x=x+y+10*2
Variable Liveness Used Next
x live 2
y live 2
a not live not used next
b not live not used next
s not live not used next
Example
(1) x=a+b
(2) s=x+y
(3) x=x+y+10*2
Variable Liveness Used Next
x not live 2
y live 2
a live 1
b live 1
s not live not used next
Example
(1) x=a+b
(2) s=x+y
(3) x=x+y+10*2
Variable Liveness Used Next
x not live 2
y live 2
a live 1
b live 1
s not live not used next
Example
(1) x=a+y
(2) s=x+y
(3) x=x+y+12
(1) x=a+b
(2) s=x+y
(3) x=x+y+10*2
Variable Liveness Used Next
x not live 2
y live 2
a live 1
b live 1
s not live not used next
STATIC SINGLE ASSIGNMENT
Static Single Assignment
• Three Address Code avec plus de regles
• chaque variable n'est assigne qu'une seule fois
• fonction phi
– avant chaque basic block
Example
a = a + b;
s = 2 + a;
a = a + 1;
print (a);
a1 = a0 + b0
s1 = 2 + a1
a2 = a1 + 1
param a2
call print, 1
Example
if (a > 0) {
a = a + 1;
}
else
{
a = 12;
}
print (a);
t1 = a > 0
ifFalse t1 goto else
a = a + 1
goto endif
label else
a = 12
label endif
param a
call print, 1
Example
if (a > 0) {
a = a + 1;
}
else
{
a = 12;
}
print (a);
t1 = a0 > 0
ifFalse t1 goto else
a1 = a0 + 1
goto endif
label else
a2 = 12
a3 = phi (a1, a2)
label endif
param
call print, 1
1
2
3
4
a3a?
Boucle
n = 1;
for (int p = 0; p < 120; p++)
{
n = n * a
}
print (n)
n0 = 1
p0 = 0
label for
t = p0 < 120
ifFalse goto endfor
n1 = n0 * a0
p1 = p0 + 1
goto for
label endfor
param n1
call print, 1
Boucle
n = 1;
for (int p = 0; p < 120; p++)
{
n = n * a
}
print (n)
n0 = 1
p0 = 0
p2 = phi (p0, p1)
n2 = phi (n0, n1)
label for
t = p2 < 120
ifFalse goto endfor
n1 = n2 * a0
p1 = p2 + 1
goto for
label endfor
param n2
call print, 1
1
2
3
4
Example
n = 0;
while (n < 300)
{
if (n%3 == 0) {
n = n + 1;
}
else
{
n = n + 5;
}
}
print (n)
OPERATIONS IDENTITÉS
Operations Identités
n = a * 1
n = a * 0
n = a + 0
n = a and a
n = a or a
n = a - a
n = a / a
n = a / 1
n = a2
n = a * 2pow
n = a / 2pow
n = a
n = 0
n = a
n = a
n = a
n = 0
n = 1 (if a != 0)
n = a
n = a * a
n = a << pow
n = a >> pow
VALUE NUMBERING
Value Numbering
• Optimisation locale (dans le bloc)
• Prend les calcules redondantes
• Prend les les instructions inutiles
Value Numbering
s = x + y
t = x + y
x = u - 2
s = x + 2
t = x + y + 2
s0 = x0 + y0
t0 = x0 + y0
x1 = u0 - 2
s1 = x1 + 2
t1 = x1 + y0 + 2
Value Numbering
s = x + y
t = x + y
x = u + 2
s = x + 2
t = x + y + 2
s02 = x00 + y01
t02 = x00 + y01
x15 = u03 + 24
s19 = x15 + 24
t110 = x15 + y01 + 24
Value Numbering
s = x + y
t = x + y
x = u + 2
s = x + 2
t = x + y + 2
s02 = x00 + y01
t02 = s02
x15 = u03 + 24
s19 = x15 + 24
t110 = s19 + y01
Value Numbering
s = x + y
t = x + y
x = u + 2
s = x + 2
t = x + y + 2
s0 = x0 + y
t0 = s0
x = u + 2
s = x + 2
t = s + y
Instructions inutilisées
s = x + y
t = x + y
x = u + 2
s = x + 2
t = x + y + 2
s0 = x0 + y
t0 = s0
x = u + 2
s = x + 2
t = s + y
TREE HEIGHT BALANCING
Tree Height Balancing
s = 2+3+4+7+9+3; +
+
+
+
+
2
3
4
7
9
3
Tree Height Balancing
s = 2+3+4+7+9+3;
plusieurs de unités de
processeur
out of order execution
+
+
+
2
3
+
4
7
+
9
3
Questions

Contenu connexe

Tendances

ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et LexerALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et LexerAlexandru Radovici
 
SdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de executionSdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de executionAlexandru Radovici
 
Alg ebre de boole ionction-logique-p2-1
Alg ebre de boole ionction-logique-p2-1Alg ebre de boole ionction-logique-p2-1
Alg ebre de boole ionction-logique-p2-1linuxscout
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)DriNox NordisTe
 
Algèbre de boole ionction-logique-p2-1
Algèbre de boole ionction-logique-p2-1Algèbre de boole ionction-logique-p2-1
Algèbre de boole ionction-logique-p2-1linuxscout
 
ALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraiteALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraiteAlexandru Radovici
 
Alg ebre de boole ionction-logique-p1
Alg ebre de boole ionction-logique-p1Alg ebre de boole ionction-logique-p1
Alg ebre de boole ionction-logique-p1linuxscout
 
Fonction-exponentielle-2eme-BAC-PC --www.etude-generale.com.pdf
Fonction-exponentielle-2eme-BAC-PC --www.etude-generale.com.pdfFonction-exponentielle-2eme-BAC-PC --www.etude-generale.com.pdf
Fonction-exponentielle-2eme-BAC-PC --www.etude-generale.com.pdfetude-generale
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelleGeeks Anonymes
 
Algèbre de boole ionction-logique-p2
Algèbre de boole ionction-logique-p2Algèbre de boole ionction-logique-p2
Algèbre de boole ionction-logique-p2linuxscout
 

Tendances (20)

ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 9 - Generation de code
ALF 9 - Generation de codeALF 9 - Generation de code
ALF 9 - Generation de code
 
ALF 6 - Parser
ALF 6 - ParserALF 6 - Parser
ALF 6 - Parser
 
ALF 5 - Parser
ALF 5 - ParserALF 5 - Parser
ALF 5 - Parser
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 1 - Automates finis
ALF 1 - Automates finis ALF 1 - Automates finis
ALF 1 - Automates finis
 
ALF 4 - Grammaires
ALF 4 - GrammairesALF 4 - Grammaires
ALF 4 - Grammaires
 
ALF 2 - Automates Fini (2018)
ALF 2 - Automates Fini (2018)ALF 2 - Automates Fini (2018)
ALF 2 - Automates Fini (2018)
 
ALF 4 - Grammaires
ALF 4 - GrammairesALF 4 - Grammaires
ALF 4 - Grammaires
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et LexerALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 
SdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de executionSdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de execution
 
Alg ebre de boole ionction-logique-p2-1
Alg ebre de boole ionction-logique-p2-1Alg ebre de boole ionction-logique-p2-1
Alg ebre de boole ionction-logique-p2-1
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)
 
Algèbre de boole ionction-logique-p2-1
Algèbre de boole ionction-logique-p2-1Algèbre de boole ionction-logique-p2-1
Algèbre de boole ionction-logique-p2-1
 
ALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraiteALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraite
 
Alg ebre de boole ionction-logique-p1
Alg ebre de boole ionction-logique-p1Alg ebre de boole ionction-logique-p1
Alg ebre de boole ionction-logique-p1
 
Fonction-exponentielle-2eme-BAC-PC --www.etude-generale.com.pdf
Fonction-exponentielle-2eme-BAC-PC --www.etude-generale.com.pdfFonction-exponentielle-2eme-BAC-PC --www.etude-generale.com.pdf
Fonction-exponentielle-2eme-BAC-PC --www.etude-generale.com.pdf
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelle
 
Algèbre de boole ionction-logique-p2
Algèbre de boole ionction-logique-p2Algèbre de boole ionction-logique-p2
Algèbre de boole ionction-logique-p2
 
Ch2
Ch2Ch2
Ch2
 

Similaire à ALF 12 - Optimisations

202010514 es-maths-cned-sequence-02-derivation
202010514 es-maths-cned-sequence-02-derivation202010514 es-maths-cned-sequence-02-derivation
202010514 es-maths-cned-sequence-02-derivationEttaoufik Elayedi
 
Les Filtres Numeriques
Les Filtres NumeriquesLes Filtres Numeriques
Les Filtres NumeriquesSAHELAicha
 
Devoir de synthèse_n°_02--2008-2009(mr_otay)[lycée__el_aghaliba]
Devoir de synthèse_n°_02--2008-2009(mr_otay)[lycée__el_aghaliba]Devoir de synthèse_n°_02--2008-2009(mr_otay)[lycée__el_aghaliba]
Devoir de synthèse_n°_02--2008-2009(mr_otay)[lycée__el_aghaliba]Yessin Abdelhedi
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmationborhen boukthir
 
bac tun 1.pdf
bac tun 1.pdfbac tun 1.pdf
bac tun 1.pdflescours
 
Traitement des images avec matlab
Traitement des images avec matlabTraitement des images avec matlab
Traitement des images avec matlabomar bllaouhamou
 
3_Transformée_de_Laplace.pdf
3_Transformée_de_Laplace.pdf3_Transformée_de_Laplace.pdf
3_Transformée_de_Laplace.pdfzinaiabdel251179
 
traitement de signal cours
traitement de signal cours traitement de signal cours
traitement de signal cours sarah Benmerzouk
 
cours_statistiques_master.pdf
cours_statistiques_master.pdfcours_statistiques_master.pdf
cours_statistiques_master.pdfArkadaar
 
CM3 - Transformée de Fourier
CM3 - Transformée de FourierCM3 - Transformée de Fourier
CM3 - Transformée de FourierPierre Maréchal
 
092 cr vepzl
092 cr vepzl092 cr vepzl
092 cr vepzlbenyaya93
 
Cnc mp-2017-maths-2-corrige
Cnc mp-2017-maths-2-corrigeCnc mp-2017-maths-2-corrige
Cnc mp-2017-maths-2-corrigeOtman Aberkane
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage ccoursuniv
 
UML OCL : Cheat Sheet - 10
UML OCL : Cheat Sheet - 10UML OCL : Cheat Sheet - 10
UML OCL : Cheat Sheet - 10megaplanet20
 

Similaire à ALF 12 - Optimisations (20)

202010514 es-maths-cned-sequence-02-derivation
202010514 es-maths-cned-sequence-02-derivation202010514 es-maths-cned-sequence-02-derivation
202010514 es-maths-cned-sequence-02-derivation
 
Maths Annexes
Maths AnnexesMaths Annexes
Maths Annexes
 
Les Filtres Numeriques
Les Filtres NumeriquesLes Filtres Numeriques
Les Filtres Numeriques
 
Devoir de synthèse_n°_02--2008-2009(mr_otay)[lycée__el_aghaliba]
Devoir de synthèse_n°_02--2008-2009(mr_otay)[lycée__el_aghaliba]Devoir de synthèse_n°_02--2008-2009(mr_otay)[lycée__el_aghaliba]
Devoir de synthèse_n°_02--2008-2009(mr_otay)[lycée__el_aghaliba]
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
 
Resume algorithme
Resume algorithmeResume algorithme
Resume algorithme
 
bac tun 1.pdf
bac tun 1.pdfbac tun 1.pdf
bac tun 1.pdf
 
Traitement des images avec matlab
Traitement des images avec matlabTraitement des images avec matlab
Traitement des images avec matlab
 
3_Transformée_de_Laplace.pdf
3_Transformée_de_Laplace.pdf3_Transformée_de_Laplace.pdf
3_Transformée_de_Laplace.pdf
 
Thue morse sequence
Thue morse sequenceThue morse sequence
Thue morse sequence
 
v2-syst.pdf
v2-syst.pdfv2-syst.pdf
v2-syst.pdf
 
Series temporelles
Series temporellesSeries temporelles
Series temporelles
 
traitement de signal cours
traitement de signal cours traitement de signal cours
traitement de signal cours
 
cours_statistiques_master.pdf
cours_statistiques_master.pdfcours_statistiques_master.pdf
cours_statistiques_master.pdf
 
CM3 - Transformée de Fourier
CM3 - Transformée de FourierCM3 - Transformée de Fourier
CM3 - Transformée de Fourier
 
092 cr vepzl
092 cr vepzl092 cr vepzl
092 cr vepzl
 
Cnc mp-2017-maths-2-corrige
Cnc mp-2017-maths-2-corrigeCnc mp-2017-maths-2-corrige
Cnc mp-2017-maths-2-corrige
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage c
 
UML OCL : Cheat Sheet - 10
UML OCL : Cheat Sheet - 10UML OCL : Cheat Sheet - 10
UML OCL : Cheat Sheet - 10
 
Cours econometrie-uqam-st-3
Cours econometrie-uqam-st-3Cours econometrie-uqam-st-3
Cours econometrie-uqam-st-3
 

Plus de Alexandru Radovici (20)

SdE2 - Pilot Tock
SdE2 - Pilot TockSdE2 - Pilot Tock
SdE2 - Pilot Tock
 
SdE2 - Systèmes embarquées
SdE2 - Systèmes embarquéesSdE2 - Systèmes embarquées
SdE2 - Systèmes embarquées
 
SdE2 - Planification, IPC
SdE2 - Planification, IPCSdE2 - Planification, IPC
SdE2 - Planification, IPC
 
ALF1 - Introduction
ALF1 - IntroductionALF1 - Introduction
ALF1 - Introduction
 
SdE2 - Introduction
SdE2 - IntroductionSdE2 - Introduction
SdE2 - Introduction
 
MDAD 6 - AIDL and Services
MDAD 6 - AIDL and ServicesMDAD 6 - AIDL and Services
MDAD 6 - AIDL and Services
 
MDAD 5 - Threads
MDAD 5 - ThreadsMDAD 5 - Threads
MDAD 5 - Threads
 
MDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recyclingMDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recycling
 
MDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI ApplicationsMDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI Applications
 
MDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android FrameworkMDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android Framework
 
MDAD 1 - Hardware
MDAD 1 - HardwareMDAD 1 - Hardware
MDAD 1 - Hardware
 
MDAD 0 - Introduction
MDAD 0 - IntroductionMDAD 0 - Introduction
MDAD 0 - Introduction
 
SdE 11 - Reseau
SdE 11 - ReseauSdE 11 - Reseau
SdE 11 - Reseau
 
SdE 10 - Threads
SdE 10 - ThreadsSdE 10 - Threads
SdE 10 - Threads
 
SdE 8 - Memoire Virtuelle
SdE 8 - Memoire VirtuelleSdE 8 - Memoire Virtuelle
SdE 8 - Memoire Virtuelle
 
SdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la MémoireSdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la Mémoire
 
SdE 6 - Planification
SdE 6 - PlanificationSdE 6 - Planification
SdE 6 - Planification
 
SdE 5 - Planification
SdE 5 - PlanificationSdE 5 - Planification
SdE 5 - Planification
 
SdE2 4 - Processus
SdE2 4 - ProcessusSdE2 4 - Processus
SdE2 4 - Processus
 
SdE 3 - System de fichiers
SdE 3 - System de fichiersSdE 3 - System de fichiers
SdE 3 - System de fichiers
 

Dernier

0234567778999876554345678898765566.15.ppt
0234567778999876554345678898765566.15.ppt0234567778999876554345678898765566.15.ppt
0234567778999876554345678898765566.15.pptessiben
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfAtelier Canopé 37 - Tours
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneTxaruka
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfAtelier Canopé 37 - Tours
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24BenotGeorges3
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilfrizzole
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAmar LAKEL, PhD
 
M2i Webinar - CPF 2024 : une stratégie pour booster les performances RH
M2i Webinar - CPF 2024 : une stratégie pour booster les performances RHM2i Webinar - CPF 2024 : une stratégie pour booster les performances RH
M2i Webinar - CPF 2024 : une stratégie pour booster les performances RHM2i Formation
 
Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-Majida Antonios, M.Ed.
 
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...Unidad de Espiritualidad Eudista
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfbdp12
 

Dernier (12)

0234567778999876554345678898765566.15.ppt
0234567778999876554345678898765566.15.ppt0234567778999876554345678898765566.15.ppt
0234567778999876554345678898765566.15.ppt
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienne
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avril
 
Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècle
 
M2i Webinar - CPF 2024 : une stratégie pour booster les performances RH
M2i Webinar - CPF 2024 : une stratégie pour booster les performances RHM2i Webinar - CPF 2024 : une stratégie pour booster les performances RH
M2i Webinar - CPF 2024 : une stratégie pour booster les performances RH
 
Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-
 
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
 

ALF 12 - Optimisations

  • 2. Bibliographie pour aujourd'hui Keith Cooper, Linda Torczon, Engineering a Compiler – Chapitre 8, 9, 10 • 8.4 • 9.3 • 8.6 • 9.2 • 10.2 Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, Compilers: Principles, Techniques, and Tools (2nd Edition) – Chapitre 8 • 8.5 • 8.6
  • 3. Contenu • Pliage de constants • Variables inutilisées – fonctions inutilisées • Static Single Assigment (SSA) • Operations Identités • Value Numbering • Tree Height Balancing
  • 4. Andrei Alexandrescu • Roumain • Universitatea Politehnica din București • University of Washington • Modern C++ Design • Architect de Langage D
  • 6. Pièces de compilation Frontent Optimiseur Backend Source AST Source d’assemblage
  • 9. Left Value (lvalue) • la partie gauche d’un attribution n = s + t;
  • 10. Right Value (lvalue) • la partie droite d’un attribution • paramètre de fonction • index d’un array n = s + t; f(t) v[p]
  • 11. Pliage de constants • Calculez les constantes et remplacez-les par la valeur du résultat – Les calculs doivent être effectués de la même manière que la CPU les ferait • Compilez et exécuter • Interprétation
  • 12. Pliage de constants n = 2*7 s = “hello” + ” world” v = 5 * n + 5 n = 14 s = “hello world” v = 75
  • 13. Algorithme • Toutes les variables sont constantes • Prend toute les instructions de contexte de variable – Si une variable este lvalue la variable n’est pas constante – Si une adresse de variable (&v) este un paramètre de un fonction la variable n’est pas constante
  • 14. DIAGRAMME DE FLUX DE CONTRÔLE
  • 15. Diagramme de flux de contrôle • Organisation de Three Address Code a diagramme • Start • Stop • Basic Block – le flux d'instructions n'est pas interrompu par un saut – il n'y a pas d'instruction d'étiquette (sauf la première instruction) – leader
  • 16. Selection de leader • premier instruction • étiquette • instruction après un saute (if, ifFalse, goto)
  • 17. Exemple var n = 0; for (var i = 0; i < sqrt(n); i++) { if (n % i == 0) n = n + 1; } print (n);
  • 18. Exemple var n = 0; for (var i = 0; i < sqrt(n); i++) { if (n % i == 0) n = n + 1; } print (n); n = 0 i = 0 label for param n n1 = call sqrt, 1 n2 = i < n1 ifFalse e2 goto endfor n4 = n % i n5 = n4 == 0 ifFalse n5 goto endif n = n + 1 label endif i = i + 1 goto for label endfor param n call print, 1
  • 19. Exemple n = 0 i = 0 label for param n n1 = call sqrt, 1 n2 = i < n1 ifFalse e2 goto endfor n4 = n % i n5 = n4 == 0 ifFalse n5 goto endif n = n + 1 label endif i = i + 1 goto for label endfor param n call print, 1 Start Stop
  • 21. Liveness • Liveness – Apres chaque instruction – Une variable est considérée live si elle est utilisée dans une autre instruction ci-dessous – Une variable est considérée non live si la valeur qu'elle stocke est remplacée sans être utilisée • Usage prochaine – Chaque instruction – L’instruction dessous ou une variable est utilise
  • 22. Tableau de symboles • Variable – liveness: not-live / live – used next: instruction ou la variables est utilisé la prochain fois
  • 23. Algorythme • Toutes les variables sont considérées comme étant live • À partir de la fin du bloc – Pour une instruction s = x + y – Définissez les informations de live et d'utilisation suivantes de l'instruction dans le tableau des symboles pour s, x et y – Dans le tableau des symboles, définissez s sur "not live" et "not used next" – Dans la table des symboles, définissez x et y à "live" et "used next" au instruction curent
  • 24. Example (1) x=a+b (2) s=x+y (3) x=x+y+10*2 Variable Liveness Used Next x not live not used next y not live not used next a not live not used next b not live not used next s not live not used next
  • 25. Example (1) x=a+b (2) s=x+y (3) x=x+y+10*2 Variable Liveness Used Next x live 3 y live 3 a not live not used next b not live not used next s not live not used next
  • 26. Example (1) x=a+b (2) s=x+y (3) x=x+y+10*2 Variable Liveness Used Next x live 2 y live 2 a not live not used next b not live not used next s not live not used next
  • 27. Example (1) x=a+b (2) s=x+y (3) x=x+y+10*2 Variable Liveness Used Next x not live 2 y live 2 a live 1 b live 1 s not live not used next
  • 28. Example (1) x=a+b (2) s=x+y (3) x=x+y+10*2 Variable Liveness Used Next x not live 2 y live 2 a live 1 b live 1 s not live not used next
  • 29. Example (1) x=a+y (2) s=x+y (3) x=x+y+12 (1) x=a+b (2) s=x+y (3) x=x+y+10*2 Variable Liveness Used Next x not live 2 y live 2 a live 1 b live 1 s not live not used next
  • 31. Static Single Assignment • Three Address Code avec plus de regles • chaque variable n'est assigne qu'une seule fois • fonction phi – avant chaque basic block
  • 32. Example a = a + b; s = 2 + a; a = a + 1; print (a); a1 = a0 + b0 s1 = 2 + a1 a2 = a1 + 1 param a2 call print, 1
  • 33. Example if (a > 0) { a = a + 1; } else { a = 12; } print (a); t1 = a > 0 ifFalse t1 goto else a = a + 1 goto endif label else a = 12 label endif param a call print, 1
  • 34. Example if (a > 0) { a = a + 1; } else { a = 12; } print (a); t1 = a0 > 0 ifFalse t1 goto else a1 = a0 + 1 goto endif label else a2 = 12 a3 = phi (a1, a2) label endif param call print, 1 1 2 3 4 a3a?
  • 35. Boucle n = 1; for (int p = 0; p < 120; p++) { n = n * a } print (n) n0 = 1 p0 = 0 label for t = p0 < 120 ifFalse goto endfor n1 = n0 * a0 p1 = p0 + 1 goto for label endfor param n1 call print, 1
  • 36. Boucle n = 1; for (int p = 0; p < 120; p++) { n = n * a } print (n) n0 = 1 p0 = 0 p2 = phi (p0, p1) n2 = phi (n0, n1) label for t = p2 < 120 ifFalse goto endfor n1 = n2 * a0 p1 = p2 + 1 goto for label endfor param n2 call print, 1 1 2 3 4
  • 37. Example n = 0; while (n < 300) { if (n%3 == 0) { n = n + 1; } else { n = n + 5; } } print (n)
  • 39. Operations Identités n = a * 1 n = a * 0 n = a + 0 n = a and a n = a or a n = a - a n = a / a n = a / 1 n = a2 n = a * 2pow n = a / 2pow n = a n = 0 n = a n = a n = a n = 0 n = 1 (if a != 0) n = a n = a * a n = a << pow n = a >> pow
  • 41. Value Numbering • Optimisation locale (dans le bloc) • Prend les calcules redondantes • Prend les les instructions inutiles
  • 42. Value Numbering s = x + y t = x + y x = u - 2 s = x + 2 t = x + y + 2 s0 = x0 + y0 t0 = x0 + y0 x1 = u0 - 2 s1 = x1 + 2 t1 = x1 + y0 + 2
  • 43. Value Numbering s = x + y t = x + y x = u + 2 s = x + 2 t = x + y + 2 s02 = x00 + y01 t02 = x00 + y01 x15 = u03 + 24 s19 = x15 + 24 t110 = x15 + y01 + 24
  • 44. Value Numbering s = x + y t = x + y x = u + 2 s = x + 2 t = x + y + 2 s02 = x00 + y01 t02 = s02 x15 = u03 + 24 s19 = x15 + 24 t110 = s19 + y01
  • 45. Value Numbering s = x + y t = x + y x = u + 2 s = x + 2 t = x + y + 2 s0 = x0 + y t0 = s0 x = u + 2 s = x + 2 t = s + y
  • 46. Instructions inutilisées s = x + y t = x + y x = u + 2 s = x + 2 t = x + y + 2 s0 = x0 + y t0 = s0 x = u + 2 s = x + 2 t = s + y
  • 48. Tree Height Balancing s = 2+3+4+7+9+3; + + + + + 2 3 4 7 9 3
  • 49. Tree Height Balancing s = 2+3+4+7+9+3; plusieurs de unités de processeur out of order execution + + + 2 3 + 4 7 + 9 3