Θέματα Μεταγλωττιστών

Σχετικά έγγραφα
Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 12 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2)

Μεταγλωττιστές Βελτιστοποίηση

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 5: Κανονικές Εκφράσεις

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Αλγόριθμοι και Πολυπλοκότητα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Ανάπτυξη και Σχεδίαση Λογισμικού

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Θέματα Μεταγλωττιστών

Σημειωματάριο Τετάρτης 29 Νοε. 2017

ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

Μεταγλωττιστές Βελτιστοποίηση

1 Διάσχιση κατευθυνόμενων γραφημάτων

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 10: Αυτόματα Στοίβας II

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1)

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

Συνδετικότητα γραφήματος (graph connectivity)

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

ΣΥΝΕΚΤΙΚΟΤΗΤΑ ΓΡΑΦΗΜΑΤΩΝ

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

3η Σειρά Γραπτών Ασκήσεων

Πολλοί τρόποι περιγραφής αλγορίθμων. Όλοι είναι μηχανιστικά ισοδύναμοι και ειδικά ισοδύναμοι με μερικές αναδρομικές συναρτήσεις.

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 8 ο Μερική Επικάλυψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Δομές Δεδομένων & Αλγόριθμοι

Ουρά Προτεραιότητας (priority queue)

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1)

Κεφάλαιο 10 Ψηφιακά Λεξικά

Σειρά Προβλημάτων 5 Λύσεις

Σειρά Προβλημάτων 5 Λύσεις

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την

Επίπεδα Γραφήματα : Προβλήματα και Υπολογιστική Πολυπλοκότητα

Διαχρονικές δομές δεδομένων

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Ουρά Προτεραιότητας (priority queue)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων

Σειρά Προβλημάτων 3 Λύσεις

Θέματα Μεταγλωττιστών

9. Συστολικές Συστοιχίες Επεξεργαστών

Περιεχόμενα. Περιεχόμενα

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π.

Δομές Δεδομένων και Αλγόριθμοι

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου

Δομές Δεδομένων και Αλγόριθμοι

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Κατανεμημένα Συστήματα Ι

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Προβλήματα Ελάχιστου Κόστους Ροής σε Δίκτυο. Δίκτυα Ροής Ελάχιστου Κόστους (Minimum Cost Flow Networks)

ΘΕΜΑ Α. 1. Η δυαδική αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένες συλλογές δεδομένων.

Σειρά Προβλημάτων 3 Λύσεις

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Επαγωγή και αναδρομή για άκυκλα συνεκτικά γραφήματα

Η NTM αποδέχεται αν µονοπάτι στο δέντρο που οδηγεί σε αποδοχή.

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 6: Προβλήματα ικανοποίησης περιορισμών. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 4: Μη Ντετερμινιστικά (Αντιαιτιοκρατικά) Πεπερασμένα Αυτόματα (ΝFA)

Ανάπτυξη και Σχεδίαση Λογισμικού

Ενδεικτικές Ερωτήσεις Θεωρίας

for for for for( . */

Θεωρία Γραφημάτων και Εφαρμογές - Διακριτά Μαθηματικά ΙΙ Σεπτέμβριος 2017

Βασικές Έννοιες Θεωρίας Γραφημάτων

Κεφ. 7: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

Επίλυση 1 ης Εργασίας. Παραδόθηκαν: 11/12 15%

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Διερεύνηση γραφήματος

Διδάσκων: Παναγιώτης Ανδρέου

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Κεφάλαιο 4ο: Δικτυωτή Ανάλυση

Transcript:

Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 3 η : Ενδιάμεση Αναπαράσταση/ SSA Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Ενδιάμεση Αναπαράσταση (IR) Η ενδιάμεση αναπαράσταση αποθηκεύει τη συγκεντρωμένη πληροφορία από την ανάλυση ενός προγράμματος Από την ενδιάμεση αναπαράσταση ξεκινάει η παραγωγή τελικού κώδικα Σημαντικός στόχος του σχεδιαστή ενός μεταγλωττιστή αποτελεί η ανεξαρτητοποίηση του εμπρόσθιου από το οπίσθιο τμήμα με τη βοήθεια μιας ισχυρής αλλά ευέλικτης ενδιάμεσης αναπαράστασης

Μορφές IR Γραμμικές αναπαραστάσεις Πλησιέστερα στον τελικό κώδικα Δύσκολες για βελτιστοποίηση Αναπαραστάσεις γραφημάτων Πλησιέστερα στον αρχικό κώδικα Πιο ευέλικτες για βελτιστοποίηση SSA Ουσιαστικά γραμμική αναπαράσταση Καλή για βελτιστοποίηση

Παράδειγμα Αρχικός κώδικας: if (x>y) a=a+3; else a=a-2; b=a; Τετράδες: 1: <=,x,y,5 2: +,a,3,$1 3: :=,$1,-,a 4: jump,-,-,7 5: -,a,2,$2 6: :=,$2,-,a 7: :=,a,-,b x > AST: y a if = a stmt + 3 a = a b - = 2 a SSA: if (x>y) a1:=a+3 else a2:=a-2 a3:=φ(a1,a2) b:=a3

Εισαγωγή στημορφή SSA Ένα πρόγραμμα βρίσκεται σε μορφή SSA (Static Single-Assignment), εάν και μόνο εάν: Κάθε μεταβλητή ορίζεται στατικά ακριβώς μία φορά, και Κάθε χρήση μεταβλητής ακολουθεί πάντα τον ορισμό της

Γιατί SSA; Αποτελεί μια κοινή βάση για την επίλυση πολλών κλασικών προβλημάτων ανάλυσης ροής δεδομένων Ενσωματώνει ροή ελέγχου και ροή δεδομένων στην ίδια δομή Η μορφή SSA κατασκευάζεται και συντηρείται εύκολα Πολλοί αλγόριθμοι ανάλυσης ροής δεδομένων έχουν χαμηλότερη πολυπλοκότητα μεssaαπόό,τιμεast

Στατικός Ορισμός Μεταβλητών Κάθε μεταβλητή έχει μόνο έναν ορισμό (δηλαδή ανάθεση τιμής) στον κώδικα Οορισμόςαυτόςμπορείναβρίσκεταισε βρόχο, κι έτσι να εκτελείται πολλές φορές Άρα στην ουσία μια μεταβλητή ορίζεται δυναμικά πολλές φορές

Ορισμοί και Μονοπάτια Ελέγχου Κάθεμεταβλητήπρέπειναέχειέναμοναδικό ορισμό σε κάθε σημείο χρήσης της(reaching definition) Όταν δύο μονοπάτια συναντώνται, εισάγεται μια ειδική συνάρτηση φ(), η οποία συνδέει τους διαφορετικούς ορισμούς μιας μεταβλητής στον ένα μοναδικόορισμόπουαπαιτείημορφήssa

Παράδειγμα: CFG a = a = = a+5 = a+5 a = Πολλαπλοί Ορισµοί Χρήσης = a+5 Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Παράδειγμα: Μορφή SSA a 1 = a 3 = = a 1 +5 a 4 = φ(a 1,a 3 ) a 2 = = a 2 +5 = a 4 +5 Μοναδικός Ορισµός Χρήσης Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Συναρτήσεις φ() Ένα όρισμα μιας συνάρτησης φ() αποτελεί τον ορισμό χρήσης από το αντίστοιχο μονοπάτι Η σειρά των ορισμάτων μιας συνάρτησης φ() είναι σημαντική για να ξέρουμε από ποιο μονοπάτι προέρχεται ο ορισμός Στην ουσία μια συνάρτηση φ() επιλέγει ένα από τα ορίσματά της, ανάλογα με το μονοπάτι που οδήγησε σε αυτήν

Αποδοτικότητα της Μορφής SSA Use-Def chains: Πολλές χρήσεις (uses) προς πολλούς ορισμούς (defs) Κόστος αναπαράστασης Δυσκολία διαχείρισης a = a a a = a a = Peking University

Αποδοτικότητα της Μορφής SSA Το πλήθος των ακμών μειώθηκεαπό9σε6 Η συνάρτηση φ() απότελεί ορισμό (def) και τα ορίσματά της απότελούν χρήσεις(uses) Πολλές χρήσεις προς έναν ορισμό Κάθε ορισμός είναι α- ποκλειστικός για όλες τις χρήσεις του a = a a = a = φ(a,a,a) a a a = Peking University

Μετονομασία Τιμών Η αναπαράσταση των ακμών usedef δεν είναι πια απαραίτητη a 1 = a 2 = a 3 = a 4 = φ(a 1,a 2,a 3 ) a 4 a 4 a 4 Peking University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μορφή SSA και Σημεία Σύγκλισης Ροής Ελέγχου ΕίναιαυτόςοκώδικαςσεμορφήSSA; Όχι, υπάρχουν δύο ορισμοί για τη χρήση του a στο μπλοκ B4 (στα μπλοκb1καιb3) Πώς μετατρέπεται ο κώδικας σε μορφή SSA; Δημιουργούμε δύο εκδοχές για το a, μίαστοb1καιμίαστοb3 B3 B1 B2 b M[x] a 0 a b B4 if b<4 c a + b Peking University

Μορφή SSA και Σημεία Σύγκλισης Ροής Ελέγχου Ποια εκδοχή του a χρησιμοποιούμε τώραστομπλοκb4; Εισάγουμε τη συνάρτηση φ() η οποία κατά κάποιον τρόπο ξέρει από ποιο μονοπάτι φτάσαμε στο μπλοκ B4: a2,αν φτάσαμε από το Β3 φ a2,a1 a1,αν φτάσαμε από το Β2 B3 B1 B2 a2 b B4 b M[x] a1 0 if b<4 c a? + b Peking University

Μορφή SSA και Σημεία Σύγκλισης Ροής Ελέγχου Ποια εκδοχή του a χρησιμοποιούμε τώραστομπλοκb4; Εισάγουμε τη συνάρτηση φ() η οποία κατά κάποιον τρόπο ξέρει από ποιο μονοπάτι φτάσαμε στο μπλοκ B4: a2,αν φτάσαμε από το Β3 φ a2,a1 a1,αν φτάσαμε από το Β2 B3 B1 a2 b B4 B2 b M[x] a1 0 if b<4 a3 φ(a2,a1) c a3 + b Peking University

Παράδειγμα Βρόχου a 0 b a+1 c c+b a b*2 if a < N return Σημείωση: Μόνο τα a και c έχουν χρήση στο σώμα του βρόχου πριν το νέο ορισμό τους. Το b ορίζεται εκ νέου στην αρχή του σώματος του βρόχου! a1 0 a3 φ(a1,a2) b1 φ(b0,b2) c2 φ(c0,c1) b2 a3+1 c1 c2+b2 a2 b2*2 if a2 < N return Peking University Η φ(b0,b2) δε χρειάζεται, αφού δεν υπάρχει χρήση του b0. Όμως η φάση εισαγωγής των συναρτήσεων φ() αυτό δεν το γνωρίζει. Άχρηστες συναρτήσεις αφαιρούνται από τη φάση απαλοιφής άχρηστου κώδικα.

Υλοποίηση Συναρτήσεων φ() Πώς υλοποιούμε μια συνάρτηση φ() που γνωρίζει ποιο μονοπάτι ελέγχου ακολουθείται; Απάντηση 1: Δεν την υλοποιούμε!! Η συνάρτηση φ() χρησιμοποιείται μόνο για να συνδέσει χρήσεις με ορισμούς κατά τη φάση της βελτιστοποίησης, αλλά δεν υλοποιείται. Απάντηση 2: Αν πρέπει να εκτελέσουμε μια συνάρτηση φ(), μπορούμε να την υλοποιήσουμε με εισαγωγή εντολώνmoveσεόλαταμονοπάτια.

Εισαγωγή Συναρτήσεων φ() Μπορούμε να εισάγουμε μια συνάρτηση φ() για κάθε μεταβλητή σε κάθε σημείο σύγκλισης του γράφου ροής ελέγχου (CFG). Αλλά αυτό δεν είναι και η καλύτερη ιδέα. Ποια θα πρέπει να είναι τα κριτήριά μας για να εισάγουμε μια συνάρτηση φ() για κάποια μεταβλητή a σε κάποιονκόμβοzτουcfg; Διαισθητικά, θα πρέπει να εισάγουμε μια συνάρτηση φ() εάν υπάρχουν δύο ορισμοί της μεταβλητής a που φτάνουν στον κόμβο z μέσα από διαφορετικά μονοπάτια.

Η Απλοϊκή Μέθοδος Απλή εισαγωγή μιας συνάρτησης φ() σε κάθε σημείο σύγκλισης του CFG Αλλά αυτό δεν είναι αποδοτικό εισάγουμε υπερβολικά πολλές άχρηστες συναρτήσειςφ()! Ποιος είναι καλός αλγόριθμος εισαγωγής μόνο των χρήσιμων συναρτήσεων φ();

Κριτήριο Σύγκλισης Μονοπατιών Εισαγωγή μιας συνάρτησης φ() για μια μεταβλητή a σε κάποιον κόμβο z, εάν είναι αληθείς όλες οι παρακάτω συνθήκες: 1. Υπάρχει μπλοκ x όπου ορίζεται η μεταβλητή a 2. Υπάρχεικαιάλλομπλοκy xπουορίζειτηνa 3. ΥπάρχειμηκενόμονοπάτιPxzαπότοxστοz 4. ΥπάρχειμηκενόμονοπάτιPyzαπότοyστοz 5. ΤαμονοπάτιαPxzκαιPyzδενέχουνκοινούςκόμβουςπέρα απότονz 6. ΟκόμβοςzδενεμφανίζεταικαισταδύομονοπάτιαPxzκαι Pyzπριντοτέλοςτους,αλλάμπορείναεμφανίζεταισεένα απόταδύο. Ο κόμβος έναρξης θεωρείται ότι περιέχει ορισμό για κάθε μεταβλητή.

Επαναληπτικό Κριτήριο Σύγκλισης Μονοπατιών Εφόσον μια συνάρτηση φ() αποτελεί και αυτή ορισμό της μεταβλητής a, το κριτήριο σύγκλισης θα πρέπει να εφαρμόζεται επαναληπτικά: όσο υπάρχουν κόμβοι x, y, z που ικανοποιούν τις συνθήκες 1-6 και ο z δεν περιέχει συνάρτηση φ()γιατημεταβλητήa επανάλαβεεισαγωγήa φ(a,a,,a)στονκόμβοz Ο αλγόριθμος είναι υπερβολικά ακριβός, εφόσον απαιτεί την εξέταση κάθε τριάδας κόμβων x, y, z και κάθε μονοπατιούαπότονxστονy. Μπορούμε καλύτερα;

Η Ιδέα των Συνόρων Κυριαρχίας ιαισθητικά: bbn a bb1 a Μπλοκ κυριαρχούµενα από το bb1 Σύνορο µεταξύ κυριαρχίας και µη-κυριαρχίας (Σύνορο Κυριαρχίας) Peking University

Σύνορα Κυριαρχίας (Dominance Frontiers) Το σύνορο κυριαρχίας DF(x) ενός κόμβου x είναι το σύνολο όλων των κόμβων z τέτοιων ώστε το x κυριαρχεί κάποιον πρόγονο του z, χωρίς αυστηρή κυριαρχίατουz. Εάν το x κυριαρχεί το y και x y, τότε λέμε ότιτοx κυριαρχείαυστηρά τοy

Υπολογισμός του Συνόρου Κυριαρχίας ιαισθητικά: Ποιο είναι το σύνορο κυριαρχίας του κόµβου 5; 1. Εύρεση περιοχής κυριαρχίαςτουκόµβου 5: {5, 6, 7, 8} 2. Εύρεση προορισµών των ακµών που φεύγουν από την περιοχή κυριαρχίας τουκόµβου 5 Προορισµοί που αποτελούν το σύνορο κυριαρχίας του κόµβου 5: DF(5) = { 4, 5, 12, 13} Γιατί ο κόµβος 5 βρίσκεται στο DF(5); 1 2 9 5 3 4 6 7 10 11 8 13 12 Peking University

Αλγόριθμος Μετατροπής σε SSA Σε γενικές γραμμές, η μετατροπή ενός κώδικασεμορφήssaγίνεταισετρίαβήματα: Βήμα 1. Ξεκινώντας από το CFG, βρίσκουμε τα σύνορα κυριαρχίας όλων των κόμβων. Βήμα 2. Χρησιμοποιώντας τα σύνορα κυριαρχίας, καθορίζουμε τις θέσεις όπου θα εισαχθούν συναρτήσεις φ() για κάθε μεταβλητή του προγράμματος. Βήμα 3. Μετονομάζουμε τις μεταβλητές, αντικαθιστώντας κάθε αναφορά μιας μεταβλητής V με την κατάλληλη δεικτοδοτούμενη αναφορά μιας νέαςμεταβλητήςv i

Γράφος Ροής Ελέγχου (Control Flow Graph) CFG = (V, E), όπου V οι κόμβοι και Ε οι ακμές Το σύνολο V περιέχει και τους ειδικούς κόμβους START και END: Κάθε κόμβος είναι προσβάσιμος από τον κόμβο START Ο κόμβος END είναι προσβάσιμος από κάθε κόμβο του CFG. ΟκόμβοςSTARTδενέχειπρογόνους ΟκόμβοςENDδενέχειαπογόνους

Δέντρο Κυριαρχίας (Dominator Tree) Αν ο κόμβος X υπάρχει σε κάθε μονοπάτι μεταξύ START και Y, τότε ο X κυριαρχεί τονy. Η σχέση κυριαρχίας είναι ανακλαστική και μεταβατική. idom(y): άμεσος κυρίαρχος τουy Δέντρο Κυριαρχίας ΟκόμβοςSTARTαποτελείτηρίζα Κάθε κόμβος Υ εκτός του START έχει γονέα τον κόμβο idom(y)

Παράδειγμα Δέντρου Κυριαρχίας START START a b c d CFG END DT Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Παράδειγμα Δέντρου Κυριαρχίας START START a a b c d CFG END DT Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Παράδειγμα Δέντρου Κυριαρχίας START START a a b c b c d CFG END DT Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Παράδειγμα Δέντρου Κυριαρχίας START START a a b c b c d d CFG END DT Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Παράδειγμα Δέντρου Κυριαρχίας START START a a END b c b c d d CFG END DT Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Παράδειγμα Συνόρων Κυριαρχίας START START a a END b c b c d DT d CFG END DF(c) =? DF(a) =? Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Παράδειγμα Συνόρων Κυριαρχίας START START a a END b c b c d DT d CFG END DF(c) = {d} DF(a) =? Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Παράδειγμα Συνόρων Κυριαρχίας START START a a END b c b c d DT d CFG END DF(c) = {d} DF(a) = {END} Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Υπολογισμός Συνόρων Κυριαρχίας Σύνορο κυριαρχίας DF(X) του κόμβου X Σχέση 1: DF(X) ={Y P Pred(Y): X domp and X!sdomY } Σχέση 2: DF(X) = DF local (X) Z Παιδιά(X) DF up (Z) DF local (X) = {Y Παιδιά(X) X!sdomY} = {Y Παιδιά(X) idom(y) X} DF up (Z) = {Y DF(Z) idom(z)!sdomy}

Υπολογισμός Συνόρων Κυριαρχίας Γιατί οι προηγούμενες σχέσεις 1 και 2 είναι ισοδύναμες; Είναιεύκολοναπάμεαπότησχέση1στησχέση2. Άρα πρέπει να δείξουμε ότι η σχέση 2 βρίσκει κάθε κόμβο του DF(X). Έστω Y DF(X) και U->Y ακμή τέτοια, ώστεοχκυριαρχεί τον U αλλά δεν κυριαρχεί αυστηρά τονy. ΑνU=X,τότεY DF local (X) ΑνU X,τότευπάρχειμονοπάτιμεταξύΧκαιUστοΔέντρο Κυριαρχίας κάτι που σημαίνει ότι υπάρχει παιδί Ζ του Χ το οποίονακυριαρχείτονu. ΟZ δενκυριαρχείαυστηράτονυ, επειδήοχδενκυριαρχείαυστηράτονy.άραy DF up (Z).

Συναρτήσεις φ() και Σύνορο Κυριαρχίας Διαισθητικά καταλαβαίνουμε ότι η σχέση Y DF(X) σημαίνει: ΟY έχει πολλαπλούς προγόνους Ο X κυριαρχεί κάποιον από αυτούς, έστω τον U, οπότε ο U κληρονομεί όλες τις σχέσεις του κόμβου X ΟιορισμοίχρήσηςτουΥπροέρχονταιαπότον U και άλλους προγόνους Άρα ο Y είναι ακριβώς μια θέση όπου πρέπει να μπει συνάρτηση φ()

Εισαγωγή Συναρτήσεων φ() Αλγόριθμος: Για κάθε μεταβλητή V Βάλε σε μια λίστα εργασίας W όλους τους κόμβουςμεανάθεσηστηv ΌσουπάρχειXστηλίσταWεπανάλαβε ΓιακάθεκόμβοYστοDF(X)κάνε Εάνδενυπάρχειφ()στονYτότε Πρόσθεσε(V=φ(V,,V))στονY ΕάνοYδενέχειξανασυναντηθεί,βάλτονστηλίσταW.

Μετονομασία Μεταβλητών Αναδρομικά για κάθε μεταβλητή, ξεκινώντας με τον κόμβο START, χρησιμοποιώντας στοίβα ΓιατονκόμβοX Γιακάθεανάθεση(V= )τουx Μετονόμασε τις χρήσεις της μεταβλητής V με το όνομα στην κορυφή της στοίβας ΒάλετονέοόνομαV i στηστοίβα i=i+1 Μετονόμασε τα ορίσματα της συνάρτησης φ() μέσω τωνακμώντουcfg Εφάρμοσε αναδρομικά για όλα τα παιδιά του Χ στο δέντρο κυριαρχίας Γιακάθεανάθεση(V= )τουx ΒγάλετοV i απότηστοίβα

Παράδειγμα Μετονομασίας a 1 = TOS a= a 1 +5 Rename a = a= φ(a 1,a) a+5 a+5 Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Παραγωγή Κώδικα από SSA Απλοϊκή λύση: Μια συνάρτηση φ() με k ορίσματα, που βρίσκεται στην αρχή ενός κόμβου Χ, μπορεί να αντικατασταθεί α- πό k απλές αναθέσεις, στο τέλος κάθε πατρικούκόμβουτουχστοcfg. Πρόβλημα αποδοτικότητας κώδικα;

Παραγωγή Κώδικα από SSA Επιλογή 1: χρωματισμός Υπολόγισε τις διάρκειες ζωής των μεταβλητών και δώσε ένα μοναδικό όνομα μεταβλητής για κάθε διάρκεια ζωής Όπως κάνουμε στη δέσμευση καταχωρητών! Επιλογή 2: απλή διαγραφή όλων των συναρτήσεων φ() Οι βελτιστοποιήσεις με βάση τη μορφή SSA πρέπει να μη δημιουργούν επικαλυπτόμενες διάρκειες ζωής

Απαλοιφή Άχρηστου Κώδικα Για ποιο λόγο ένας κώδικας είναι άχρηστος; Ανάθεση χωρίς επόμενη χρήση Μέθοδος απαλοιφής άχρηστου κώδικα Σημείωσε όλες τις εντολές ως άχρηστες Σημείωσε κάποιες εντολές ως χρήσιμες (ζωντανές) με βάση κάποια κριτήρια Έτσι όμως δημιουργείς και άλλες χρήσιμες εντολές Πραγματικά άχρηστος κώδικας είναι εκείνος που έμεινε σημειωμένος ως άχρηστος Peking University

Παράδειγμα Χρήσης SSA Διαισθητική απαλοιφή άχρηστου κώδικα (dead code elimination) Εφόσον για κάθε μεταβλητή υπάρχει μόνο ένας ορισμός, αν η λίστα χρήσεων της μεταβλητής είναι κενή, τότε ο ορισμός είναι άχρηστος Ότανμιαεντολήv xopyαπαλείφεταιεπειδή δεν υπάρχει χρήση της v, τότε η εντολή πρέπει να απαλειφτεί και από τις χρήσεις των x και y, κάτι που μπορεί να αχρηστεύσει και τους ορισμούς αυτών των μεταβλητών, κοκ

Παράδειγμα Χρήσης SSA Διαισθητική διάδοση σταθερής τιμής (constant propagation) Αν υπάρχει εντολή v c, όπου c είναι σταθερά, τότε όλες οι χρήσεις της v μπορούν να αντικατασταθούν με c Μιαεντολήτηςμορφήςv φ(c1,c2,,cn) όπου όλα τα ci είναι ταυτόσημα μπορεί να απλοποιηθείσεv c. Χρησιμοποιώντας αλγόριθμο με λίστα εργασίας σε ένα πρόγραμμα που βρίσκεται σε μορφή SSA, υλοποιούμε διάδοση σταθεράς σε γραμμικό χρόνο

Παράδειγμα i=1; j=1; k=0; while(k<100) { if(j<20) { j=i; k=k+1; } else { j=k; k=k+2; } } return j; } B5 B3 j i k k+1 B7 B2 B1 if j<20 i 1 j 1 k 0 if k<100 j k k k+2 return j B6 B4 Peking University

Παράδειγμα i=1; j=1; k=0; while(k<100) { if(j<20) { j=i; k=k+1; } else { j=k; k=k+2; } } return j; } B5 B3 j i k3 k+1 B7 B1 B2 if j<20 i 1 j 1 k1 0 if k<100 return j j k k5 k+2 B6 B4

Παράδειγμα i=1; j=1; k=0; while(k<100) { if(j<20) { j=i; k=k+1; } else { j=k; k=k+2; } } return j; } B5 j i k3 k+1 B7 B3 B1 B2 if j<20 i 1 j 1 k1 0 if k<100 return j j k k5 k+2 k4 φ(k3,k5) B6 B4

Παράδειγμα i=1; j=1; k=0; while(k<100) { if(j<20) { j=i; k=k+1; } else { j=k; k=k+2; } } return j; } B5 j i k3 k+1 B7 B3 B2 B1 if j<20 i 1 j 1 k1 0 k2 φ(k4,k1) if k<100 return j j k k5 k+2 k4 φ(k3,k5) B6 B4

Παράδειγμα i=1; j=1; k=0; while(k<100) { if(j<20) { j=i; k=k+1; } else { j=k; k=k+2; } } return j; } B5 j i k3 k2+1 B7 B3 B2 B1 if j<20 i 1 j 1 k1 0 k2 φ(k4,k1) if k2<100 return j j k2 k5 k2+2 k4 φ(k3,k5) B6 B4

Παράδειγμα i=1; j=1; k=0; while(k<100) { if(j<20) { j=i; k=k+1; } else { j=k; k=k+2; } } return j; } B5 j3 i1 k3 k2+1 B7 B3 B2 if j2<20 B1 j4 φ(j3,j5) k4 φ(k3,k5) i1 1 j1 1 k1 0 j2 φ(j4,j1) k2 φ(k4,k1) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4

B5 j3 i1 k3 k2+1 B7 B3 Διάδοση Σταθεράς B2 if j2<20 B1 j4 φ(j3,j5) k4 φ(k3,k5) i1 1 j1 1 k1 0 j2 φ(j4,j1) k2 φ(k4,k1) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4 B5 j3 1 k3 k2+1 B7 B3 B2 if j2<20 B1 j4 φ(j3,j5) k4 φ(k3,k5) i1 1 j1 1 k1 0 j2 φ(j4, 1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4

B5 j3 1 k3 k2+1 B7 B3 Απαλοιφή Άχρηστου Κώδικα B2 if j2<20 B1 j4 φ(j3,j5) k4 φ(k3,k5) i1 1 j1 1 k1 0 j2 φ(j4, 1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4 B5 B3 j3 1 k3 k2+1 B7 B2 if j2<20 j4 φ(j3,j5) k4 φ(k3,k5) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4

B5 j3 1 k3 k2+1 B7 B3 Συνέχεια B2 if j2<20 j4 φ(j3,j5) k4 φ(k3,k5) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4 B5 B3 j3 1 k3 k2+1 B7 B2 if j2<20 j4 φ(1,j5) k4 φ(k3,k5) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4

B5 Κι Άλλη Βελτιστοποίηση k3 k2+1 B7 B3 B2 if j2<20 j4 φ(1,j5) k4 φ(k3,k5) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4 Μπορούµε να δούµε ότι το µπλοκ Β6 δεν εκτελείται ποτέ! Πώς µπορούµε να το καταλάβουµε αυτό και να απλοποιήσουµε τον κώδικα; Χρησιµοποιώντας τη διάδοση σταθεράς υπό συνθήκη, η οποία βρίσκει ότι το j2 δεν αλλάζει τιµή και έτσι επιτρέπει περαιτέρω απαλοιφή άχρηστου κώδικα

k3 k2+1 B7 Περαιτέρω Απαλοιφή Άχρηστου Κώδικα B3 B2 if j2<20 j4 φ(1,j5) k4 φ(k3,k5) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4 B5 k3 k2+1 B7 B2 j4 φ(1) k4 φ(k3) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 B4

B5 k3 k2+1 B7 Απαλοιφή Συναρτήσεων φ B2 j4 φ(1) k4 φ(k3) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return B4 j2 B4 B5 k3 k2+1 B7 B2 j4 1 k4 k3 j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 B4

B5 k3 k2+1 B7 Διάδοση Σταθεράς και Αντιγράφου B2 j4 1 k4 k3 j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 B4 B5 k3 k2+1 B7 B2 j4 1 k4 k3 j2 φ(1,1) k2 φ(k3,0) if k2<100 return j2 B4

B5 k3 k2+1 B7 Κι Άλλος Άχρηστος Κώδικας B2 j4 1 k4 k3 j2 φ(1,1) k2 φ(k3,0) if k2<100 return j2 B4 B5 k3 k2+1 B2 j2 φ(1,1) k2 φ(k3,0) if k2<100 return j2 B4

B5 k3 k2+1 Κι Άλλη Απλοποίηση Συνάρτησης φ B2 j2 φ(1,1) k2 φ(k3,0) if k2<100 return j2 B4 B5 k3 k2+1 B2 j2 1 k2 φ(k3,0) if k2<100 return j2 B4

B5 Κι Άλλη Διάδοση Σταθεράς B2 j2 1 k2 φ(k3,0) if k2<100 B2 j2 1 k2 φ(k3,0) if k2<100 return j2 B4 return 1 k3 k2+1 B5 k3 k2+1 B4 Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

B5 Τελικός Κώδικας! B2 j2 1 k2 φ(k3,0) if k2<100 return 1 B4 return 1 B4 k3 k2+1 Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών