Μεταγλωττιστές ΙΙ. nkavv@uop.gr. Χρονοπρογραμματισμός κώδικα και βελτιστοποιήσεις εξαρτημένες από την αρχιτεκτονική



Σχετικά έγγραφα
Βελτιστοποιήσεις εξαρτημένες από την αρχιτεκτονική. Προηγμένα Θέματα Θεωρητικής Πληροφορικής

Μεταγλωττιστές ΙΙ. Καταμερισμός καταχωρητών. Νικόλαος Καββαδίας Μεταγλωττιστές ΙΙ

Μεταγλωττιστές ΙΙ. Γέννηση ενδιάμεσης αναπαράστασης. 10 Νοεμβρίου Νικόλαος Καββαδίας Μεταγλωττιστές ΙΙ

Μεταγλωττιστές ΙΙ. Επιλογή κώδικα. 24 Νοεμβρίου Νικόλαος Καββαδίας Μεταγλωττιστές ΙΙ

Προηγμένα Θέματα Θεωρητικής Πληροφορικής

Αποδεικτικές Διαδικασίες και Μαθηματική Επαγωγή.

21/11/2005 Διακριτά Μαθηματικά. Γραφήματα ΒΑΣΙΚΗ ΟΡΟΛΟΓΙΑ : ΜΟΝΟΠΑΤΙΑ ΚΑΙ ΚΥΚΛΟΙ Δ Ι. Γεώργιος Βούρος Πανεπιστήμιο Αιγαίου

ΣΤΟ ΦΑΡΜΑΚΕΙΟ. Με την πιστοποίηση του έχει πρόσβαση στο περιβάλλον του φαρμακείου που παρέχει η εφαρμογή.

{ i f i == 0 and p > 0

Οι γέφυρες του ποταμού... Pregel (Konigsberg)

Δ Ι Α Κ Ρ Ι Τ Α Μ Α Θ Η Μ Α Τ Ι Κ Α. 1η σειρά ασκήσεων

Αλγόριθμοι & Βελτιστοποίηση

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

Προηγμένα Θέματα Θεωρητικής Πληροφορικής

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ

Προηγμένα Θέματα Θεωρητικής Πληροφορικής

Ας υποθέσουμε ότι ο παίκτης Ι διαλέγει πρώτος την τυχαιοποιημένη στρατηγική (x 1, x 2 ), x 1, x2 0,

Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι. Γενικά χαρακτηριστικά του επεξεργαστή MU0. Προγραμματιζόμενοι επεξεργαστές

Pointers. Σημερινό Μάθημα! Χρήση pointer Τελεστής * Τελεστής & Γενικοί δείκτες Ανάκληση Δέσμευση μνήμης new / delete Pointer σε αντικείμενο 2

Μεταγλωττιστές ΙΙ. 26 Ιανουαρίου Νικόλαος Καββαδίας Μεταγλωττιστές ΙΙ

Μεταγλωττιστές ΙΙ. Βελτιστοποιήσεις για την εκμετάλλευση της παραλληλίας και ενίσχυση της τοπικότητας

Αναγνώριση Προτύπων. Σήμερα! Λόγος Πιθανοφάνειας Πιθανότητα Λάθους Κόστος Ρίσκο Bayes Ελάχιστη πιθανότητα λάθους για πολλές κλάσεις

Συναρτήσεις. Σημερινό μάθημα

Εξαναγκασμένες ταλαντώσεις, Ιδιοτιμές με πολλαπλότητα, Εκθετικά πινάκων. 9 Απριλίου 2013, Βόλος

Γέννηση ενδιάμεσης αναπαράστασης. Προηγμένα Θέματα Θεωρητικής Πληροφορικής. Τύποι IR. Άποψη του μεταγλωττιστή από την πλευρά της IR.

Τρίτη, 05 Ιουνίου 2001 ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

Αναγνώριση Προτύπων. Σημερινό Μάθημα

CSE.UOI : Μεταπτυχιακό Μάθημα

Έννοια. Η αποδοχή της κληρονομίας αποτελεί δικαίωμα του κληρονόμου, άρα δεν

Το κράτος είναι φτιαγμένο για τον άνθρωπο και όχι ο άνθρωπος για το κράτος. A. Einstein Πηγή:

ΣΤΟ ΙΑΤΡΕΙΟ. Με την πιστοποίηση του αποκτά πρόσβαση στο περιβάλλον του ιατρού που παρέχει η εφαρμογή.

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Πρώτη Γραπτή Εργασία. Εισαγωγή στους υπολογιστές Μαθηματικά

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ

Προηγμένα Θέματα Θεωρητικής Πληροφορικής

Γενικά για τον καταμερισμό καταχωρητών. Προηγμένα Θέματα Θεωρητικής Πληροφορικής. Εναλλακτικές προσεγγίσεις στο πρόβλημα του

Συναρτήσεις & Κλάσεις

Η ανισότητα α β α±β α + β με α, β C και η χρήση της στην εύρεση ακροτάτων.

Κληρονομικότητα. Σήμερα! Κλάση Βάσης Παράγωγη κλάση Απλή κληρονομικότητα Protected δεδομένα Constructors & Destructors overloading

Νικόλαος Καββαδίας Μεταγλωττιστές ΙΙ

ΣΥΝΟΛΑ (προσέξτε τα κοινά χαρακτηριστικά των παρακάτω προτάσεων) Οι άνθρωποι που σπουδάζουν ΤΠ&ΕΣ και βρίσκονται στην αίθουσα

ΜΙΚΡΟΟΙΚΟΝΟΜΙΚΗ Η ΚΑΤΑΝΑΛΩΤΙΚΗ ΑΠΟΦΑΣΗ. Άσκηση με θέμα τη μεγιστοποίηση της χρησιμότητας του καταναλωτή

Σκιαγράφηση της διάλεξης. Προηγμένα Θέματα Θεωρητικής Πληροφορικής.

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Φροντιστήριο 2: Ανάλυση Αλγόριθμου. Νικόλας Νικολάου ΕΠΛ432: Κατανεμημένοι Αλγόριθμοι 1 / 10

8 Βελτιστοποιήσεις για την ανάδειξη της παραλληλίας

17 Μαρτίου 2013, Βόλος

Συγκέντρωση Κίνησης Εισαγωγή Στατική Συγκέντρωση Κίνησης

«ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ»

Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι. Περισσότερα για τα αρθρώματα Αναθέσεις και τελεστές Συντρέχων κώδικας

Σχέσεις και ιδιότητές τους

ΗΛΕΚΤΡΙΚΗ ΕΝΕΡΓΕΙΑ ΣΤΗ ΚΡΗΤΗ

ΔΙΚΑΙΩΜΑΤΑ ΠΡΟΣΟΡΜΙΣΗΣ, ΠΑΡΑΒΟΛΗΣ, ΠΡΥΜΝΟΔΕΤΗΣΗΣ ΚΑΙ ΕΛΛΙΜΕΝΙΣΜΟΥ ΣΚΑΦΩΝ ΣΕ ΘΑΛΑΣΣΙΕΣ ΠΕΡΙΟΧΕΣ. (ΛΙΜΑΝΙΑ κ.λπ.) ΤΟΠΙΚΗΣ ΑΡΜΟΔΙΟΤΗΤΑΣ ΛΙΜΕΝΙΚΩΝ

Προηγμένα Θέματα Θεωρητικής Πληροφορικής

Εισαγωγικά. 1.1 Η σ-αλγεβρα ως πληροφορία

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΡΧΕΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑ ΕΠΙΛΟΓΗΣ Γ ΛΥΚΕΙΟΥ

Επίλυση ειδικών μορφών ΣΔΕ

Φόρμα Σχεδιασμού Διάλεξης (ημ/α: 17/03/08, έκδοση: 1.0)

Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι. Ανασκόπηση ϑεμάτων παλαιών εξετάσεων του μαθήματος. Περιεχόμενο εξετάσεων

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Ταξινόμηση των μοντέλων διασποράς ατμοσφαιρικών ρύπων βασισμένη σε μαθηματικά κριτήρια.

ΣΧΟΛΙΚΟ ΕΤΟΣ ΕΥΘΥΓΡΑΜΜΗ ΟΜΑΛΗ ΚΙΝΗΣΗ ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ A ΛΥΚΕΙΟΥ. Ονοματεπώνυμο Τμήμα

ΘΕΜΑ: Aποτελεσματικότητα της νομισματικής και δημοσιονομικής πολιτικής σε μια ανοικτή οικονομία

Εισαγωγή στη γλώσσα προγραμματισμού Fortran 95

Μονάδες α. Να γράψετε στο τετράδιό σας τον παρακάτω πίνακα σωστά συµπληρωµένο.

HY 280. θεμελιακές έννοιες της επιστήμης του υπολογισμού ΑΣΚΗΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ. Γεώργιος Φρ.

Παραβολή ψ=αχ 2 +βχ+γ, α 0. Η παραβολή ψ = αχ 2. Γενικά : Κάθε συνάρτηση της μορφής ψ=αχ 2 + βχ +γ, α 0 λέγεται τετραγωνική συνάρτηση.

5.1 Μετρήσιμες συναρτήσεις

Επίλυση δικτύων διανομής

Εφαρμογές στην κίνηση Brown

Μεταγλωττιστές ΙΙ. Βελτιστοποιήσεις ανεξάρτητες από την αρχιτεκτονική. Νικόλαος Καββαδίας Μεταγλωττιστές ΙΙ

ΤΑΞΙΝΟΜΗΣΗ ΟΡΓΑΝΙΣΜΩΝ


Μία χρονοσειρά (time serie) είναι μια ακολουθία

Επιχειρησιακή Ερευνα Ι

Ψηφιακή Εικόνα. Σημερινό μάθημα!

Μεταγλωττιστές ΙΙ. Γέννηση τελικού κώδικα για RISC επεξεργαστές. 12 Ιανουαρίου Νικόλαος Καββαδίας Μεταγλωττιστές ΙΙ

ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ Σχεδίαση Λογικών Κυκλωμάτων

Μητροπολιτικά Οπτικά Δίκτυα Εισαγωγή

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

Το υπόδειγμα IS-LM: Εισαγωγικά

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Τρίτη Γραπτή Εργασία στη Στατιστική

ΜΑΘΗΜΑ: ΓΕΝΙΚΟ ΔΙΟΙΚΗΤΙΚΟ ΔΙΚΑΙΟ ΔΙΚΑΣΤΩΝ

Δήμος Σωτήριος Υ.Δ. Εργαστήριο Λογικής & Επιστήμης Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Σ.Η.Μ.Μ.Υ. Ε.Μ.Π.

Ηλεκτρονικοί Υπολογιστές Ι: Εισαγωγή στη γλώσσα

Συναρτήσεις ΙΙ. Σημερινό μάθημα

Γενικό Λύκειο Μαραθοκάμπου Σάμου. Άλγεβρα Β λυκείου. 13 Οκτώβρη 2016

Ευρωπαϊκά παράγωγα Ευρωπαϊκά δικαιώματα

ΠΡΟΣΕΓΓΙΣΤΙΚΑ ΣΧΗΜΑΤΑ ΓΙΑ ΠΡΟΒΛΗΜΑΤΑ ΧΡΟΝΟΔΡΟΜΟΛΟΓΗΣΗΣ

G περιέχει τουλάχιστον μία ακμή στο S. spanning tree στο γράφημα G.

ΜΑΘΗΜΑ: ΒΙΟΛΟΓΙΑ ΟΜΑΔΑ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ Γ ΛΥΚΕΙΟΥ

Ring Routing and Wavelength Conversion. Γιώργος Ζώης

Προηγμένα Θέματα Θεωρητικής Πληροφορικής

Η έννοια της βελτιστοποίησης προγράμματος. Προηγμένα Θέματα Θεωρητικής Πληροφορικής

Αναγνώριση Προτύπων. Σημερινό Μάθημα

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Β ΤΑΞΗ. ΘΕΜΑ 1ο

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΕΡΩΤΗΣΕΙΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ

Transcript:

Μεταγλωττιστές ΙΙ Χρονοπρογραμματισμός κώδικα και βελτιστοποιήσεις εξαρτημένες από την αρχιτεκτονική Νικόλαος Καββαδίας nkavv@uop.gr 21 Δεκεμβρίου 2010

Βελτιστοποιήσεις εξαρτημένες από την αρχιτεκτονική Χρονοπρογραμματισμός κώδικα: δρομολόγηση των λειτουργιών (εντολών) του επεξεργαστή σε χρονοθυρίδες δεσμεύοντας αντίστοιχες λειτουργικές μονάδες με στόχο τη βελτίωση των επιδόσεων εκτέλεσης του προγράμματος Τεχνικές Χρονοπρογραμματισμός χωρίς περιορισμούς (ASAP, ALAP) Χρονοπρογραμματισμός με περιορισμούς (όπως χρονοπρογραμματισμός λίστας: list scheduling) Ευριστικές τεχνικές: με ακέραιο γραμμικό προγραμματισμό, προσομοιωμένη ανόπτηση, γενετικούς αλγορίθμους Βελτιστοποίηση κλειδαρότρυπας (peephole optimization): βελτιστοποίηση με αντικατάσταση ομάδας εντολών βάσει δοθέντος κανόνα εξετάζοντας μικρό τμήμα κώδικα Υπερβελτιστοποίηση (superoptimization): παραγωγή του βέλτιστου κώδικα χαμηλού επιπέδου με εξαντλητική εξέταση όλων των πιθανών περιπτώσεων

Χρονοπρογραμματισμός κώδικα (code scheduling) [Aho, 2008, (μετφρ. Ελληνικά)] Κατά το χρονοπρογραμματισμό, κάθε λειτουργία ανατίθεται σε ένα μοναδικό βήμα ελέγχου Κατηγοριοποίηση των αντίστοιχων τεχνικών χωρίς περιορισμό (UCS: unconstrained scheduling) δεν τίθενται εξωτερικοί περιορισμοί λύνεται με την τεχνική ASAP (As Soon As Possible) και ALAP (As Late As Possible) όπου κάθε λειτουργία αντιστοιχίζεται στο πρώτο ή στο τελευταίο βήμα ελέγχου που μπορεί να ανατεθεί, αντίστοιχα υπό περιορισμό πόρων (RCS: Resource-Constrained Scheduling) χρονοπρογραμματισμός λίστας υπό περιορισμό χρόνου (TCS: Time-Constrained Scheduling) αλγόριθμος χρονοπρογραμματισμού κατευθυνόμενου από δύναμη (force-directed scheduling) ο οποίος προσπαθεί να ισοσταθμίσει τις χρήσεις των υφιστάμενων πόρων υπό περιορισμό πόρων και χρόνου Ευριστικές (heuristic) τεχνικές

Παραλληλία επιπέδου εντολών (ILP: Instruction-Level Parallelism) Σήμερα, οι περισσότερες αρχιτεκτονικές επεξεργαστή είναι ικανές για την ταυτόχρονη εκτέλεση περισσότερων της μίας εντολών IPC 1 (IPC: Instructions per Clock Cycle) αρχιτεκτονικές πολλαπλής έκδοσης εντολών (multiple-issue architectures): εντολές ανακαλούνται από τη μνήμη, αποκωδικοποιούνται και γίνονται διαθέσιμες σε λειτουργικές μονάδες του επεξεργαστή, ταυτόχρονα νέες εντολές εκδίδονται καθόσον οι προηγηθείσες εντολές βρίσκονται ακόμη σε εξέλιξη (αρχιτεκτονικές με διοχέτευση) συνδυασμός των παραπάνω τεχνικών Παράλληλες αρχιτεκτονικές: διαφοροποίηση στον τρόπο έκδοσης εντολών στατικός καθορισμός από το μεταγλωττιστή: VLIW (Very-Long Instruction Word) αρχιτεκτονικές δυναμικός καθορισμός από το υλικό: υπερβαθμωτές (superscalar) αρχιτεκτονικές

Εξαρτήσεις εντολών (instruction dependencies) Εξάρτηση εντολής: μία εντολή i 2 εξαρτάται από την εντολή i 1 όταν δεν είναι εφικτό να εκτελεστεί η i 2 πριν την i 1 χωρίς τη μεταβολή της συμπεριφοράς του προγράμματος Εξάρτηση δεδομένων: η εντολή i 2 χρειάζεται τουλάχιστον μία τιμή που υπολογίζεται από την i 1 Είδη εξάρτησης δεδομένων πραγματική εξάρτηση τύπου RAW (Read After Write): η i 2 διαβάζει μία τιμή η οποία γράφεται από την i 1 αντι-εξάρτηση τύπου WAR (Write After Read): η i 2 γράφει μία τιμή η οποία διαβάζεται από την i 1 αντι-εξάρτηση τύπου WAW (Write After Write): η i 2 γράφει μία τιμή η οποία επίσης γράφεται από την i 1 Οι αντι-εξαρτήσεις εμφανίζονται λόγω της εγγραφής στην ίδια ϑέση αποθήκευσης (π.χ. στον ίδιο καταχωρητή). Μπορούν να απομακρυνθούν με επανονομασία των καταχωρητών

Η αρχή της διοχέτευσης εντολών Διαχωρισμός μιας λειτουργίας σε μία ακολουθία σταδίων, ιδανικά με τον ίδιο χρόνο καθυστέρησης Επιτρέπει την εκτέλεση λειτουργιών με επικάλυψη Τρόπος εκμετάλλευσης παραλληλίας στο χρόνο, ενώ η αρχή VLIW εκμεταλλεύεται την παραλληλία στο χώρο Διοχέτευση τόσο εντολών όσο και εντός της ίδιας λειτουργικής μονάδας (micro-pipelining)

Χαρακτηριστικά μιας αρχιτεκτονικής διοχέτευσης εντολών Περισσότερες της μιας εντολές βρίσκονται ταυτόχρονα σε διαφορετικά στάδια εκτέλεσης Πιθανή οργάνωση μιας αρχιτεκτονικής διοχέτευσης Ανάκληση εντολής Αποκωδικοποίηση εντολής Ανάκληση ορισμάτων Εκτέλεση εντολής με ενδεχόμενη προσπέλαση μνήμης Εγγραφή ορισμάτων στο αρχείο καταχωρητών Κίνδυνοι (hazards) σε μία αρχιτεκτονική διοχέτευσης Data hazards: λόγω πραγματικών εξαρτήσεων, π.χ. ορίσματα ανάγνωσης που δεν είναι διαθέσιμα Structural hazards: συγκρούσεις για τη δέσμευση λειτουργικών μονάδων (δύο ή περισσότερες εντολές χρειάζονται την ίδια μονάδα) Control hazards: άλματα υπό συνθήκη, των οποίων η τιμή της συνθήκης δεν έχει ακόμη υπολογιστεί

Επεξεργαστές RISC με αρχιτεκτονική διοχέτευσης Περιορισμένο ρεπερτόριο εντολών με λίγους τρόπους διευθυνσιοδότησης, σταθερό μήκος εντολής, ομογενής αρχιτεκτονική καταχωρητών Εντολές πάνω σε καταχωρητές, ξεχωριστές εντολές για φόρτωση και αποθήκευση από τη μνήμη

Η αρχιτεκτονική VLIW (1) Πολλαπλές λειτουργικές μονάδες (FU: Functional Unit), ιδανικά του ίδιου τύπου αν και αυτό δεν ισχύει στην πράξη (αριθμητική-λογική μονάδα, μονάδα φόρτωσης-αποθήκευσης, πολλαπλασιαστής, διαιρέτης, μονάδα διακλάδωσης) Κάθε εντολή απαρτίζεται από μία ομάδα λειτουργιών με κάθε μία από αυτές να εξυπηρετείται από αντίστοιχη λειτουργική μονάδα Οι FUs συνδέονται με συστοιχίες καταχωρητών. Η απαίτηση για πολλαπλές ϑύρες ανάγνωσης/εγγραφής επιβάλλει πολλές φορές το διαμερισμό του αρχείου καταχωρητών

Η αρχιτεκτονική VLIW (2)

Αρχιτεκτονικό περίγραμμα μιας απλής VLIW αρχιτεκτονικής

Παράδειγμα RISC/superscalar μικροαρχιτεκτονικής: Επεξεργαστής PowerPC

Αρχές στατικού και δυναμικού χρονοπρογραμματισμού Στατικός χρονοπρογραμματισμός Σε χρόνο μεταγλώττισης Εφικτή η καθολική εμβέλεια (σε όλο το πρόγραμμα) Σε κάθε βήμα: έλεγχος των εξαρτήσεων των υποψηφίων για δρομολόγηση εντολών με εντολές που έχουν δρομολογηθεί προηγουμένως. Δρομολόγηση των κατάλληλων εντολών με την πρέπουσα κα- ϑυστέρηση Η εμβέλεια συνήθως είναι: βασικό μπλοκ, ακολουθία βασικών μπλοκ (π.χ. από ίχνος εκτέλεσης προγράμματος), εσώτεροι βρόχοι Δυναμικός χρονοπρογραμματισμός Επίλυση στο υλικό Τοπική εμβέλεια Με ανάλυση των τοπικών εξαρτήσεων: έλεγχος των εξαρτήσεων των υποψηφίων για δρομολόγηση εντολών με εντολές που ήδη εκτελούνται ή υπόκεινται σε προγραμματισμένη καθυστέρηση. Αποδέσμευση για δρομολόγηση ή συγκράτηση των υποψηφίων εντολών Η εμβέλεια συνήθως είναι: μικρό παράθυρο μέχρι 10-12 εντολές, ώστε οι εξαρτήσεις να είναι επιλύσιμες δυναμικά στο υλικό

Δρομολόγηση εντολών με στατικό χρονοπρογραμματισμό σε επεξεργαστή VLIW

Αλγόριθμος ακολουθιακής δρομολόγησης με τοπολογική κατάταξη (topological sort) Τοπολογική κατάταξη (topological sorting): Οι κορυφές ενός κατευθυνόμενου ακυκλικού γράφου G(V, E) διατάσσονται έτσι ώστε αν ο G περιέχει ακμή (u, v) E τότε ο u να εμφανίζεται πριν τον v στην κατάταξη Γενικά υπάρχουν περισσότερες από μία έγκυρες τοπολογικές κατατάξεις ενός DAG Στο χρονοπρόγραμμα: μία λειτουργία σε κάθε βήμα ελέγχου SEQUENTIAL(G(V, E)) Topological sort on G; Schedule u 0 by setting t 0 (S) = 0; repeat { Schedule u i in increasing topological order; } until (u n is scheduled); return (t i (S) for all i);

Παράδειγμα 1 Η σύνθετη έκφραση G = A*B + C*D + E*F Ενδεικτικός κώδικας τριών διευθύνσεων t0 = A * B; t1 = C * D; t2 = E * F; t3 = t0 + t1; G = t2 + t3; a a mul b b c d c d mul t0 t1 add e e mul t2 f f t3 add g g

Παράδειγμα 1: Ακολουθιακή δρομολόγηση Τοπολογική κατάταξη e a a c d c d t0 mul t1 f add e f t3 mul t2 add g g b mul b Παραγόμενος κώδικας συμβολομεταφραστή (υποθέτουμε ότι οι μεταβλητές a, b, c, d, e, f βρίσκονται ήδη σε καταχωρητές) L1: mul Rt0, Ra, Rb mul Rt1, Rc, Rd add Rt3, Rt0, Rt1 mul Rt2, Re, Rf add Rg, Rt3, Rt2

Ο αλγόριθμος ASAP (As Soon As Possible) Επιλύει το πρόβλημα του χρονοπρογραμματισμού χωρίς περιορισμούς Υποτίθεται ότι το δοσμένο DAG είναι πολικός γράφος (polar graph) ASAP(G(V, E)) Schedule u 0 by setting t 0 (S) = 0; repeat { Select a vertex u i whose predecessors are all scheduled; Schedule u i setting t i (S) = max j:(uj,u i) E(t j (S) + d j ); } until (u n is scheduled); return (t i (S) for all i);

Παράδειγμα 1: Χρονοπρογραμματισμός ASAP Χρονοπρόγραμμα ASAP a b c d e f a b c d e f mul mul mul t0 t1 add t2 t3 add g g Παραγόμενος κώδικας συμβολομεταφραστή (οι διπλές κάθετες μπάρες υποδηλώνουν παράλληλη εκτέλεση) L1: mul Rt0, Ra, Rb mul Rt1, Rc, Rd mul Rt2, Re, Rf add Rt3, Rt0, Rt1 add Rg, Rt3, Rt2

Ο αλγόριθμος ALAP (As Late As Possible) Επιλύει το πρόβλημα του χρονοπρογραμματισμού χωρίς περιορισμούς και υπό περιορισμό χρόνου Χρησιμοποιεί την έννοια του ορίου καθυστέρησης (latency bound): λ = t n (s) t 0 (s) ALAP(G(V, E), λ) Schedule u n by setting t n (L) = λ + 1; repeat { Select a vertex u i whose successors are all scheduled; Schedule u i setting t i (L) = min j:(ui,u j ) E (t j (L) d i ); } until (u 0 is scheduled); return (t i (L) for all i);

Παράδειγμα 1: Χρονοπρογραμματισμός ALAP Χρονοπρόγραμμα ALAP Παραγόμενος κώδικας συμβολομεταφραστή a a b b mul c c mul d d e e f f L1: mul Rt0, Ra, Rb mul Rt1, Rc, Rd mul Rt2, Re, Rf add Rt3, Rt0, Rt1 add Rg, Rt3, Rt2 t0 t1 add mul t3 t2 add g g

Η έννοια της ευκινησίας λειτουργίας (operation mobility) Η ευκινησία μιας λειτουργίας ορίζεται ως η διαφορά μεταξύ των χρόνων έναρξης (start times) όπως αυτοί υπολογίζονται από το χρονοπρογραμματισμό με τους αλγορίθμους ASAP και ALAP Δίνεται από τη σχέση: µ i = t i (L) t i (S) για τη λειτουργία i Μηδενική ευκινησία υπονοεί ότι η συγκεκριμένη λειτουργία μπορεί να ξεκινήσει μόνο στο συγκεκριμένο χρονικό σημείο προκειμένου να ικανοποιούνται οι απαιτήσεις του περιορισμού χρόνου Μη μηδενική ευκινησία περιγράφει τα διαθέσιμα χρονικά σημεία (βήματα ελέγχου του χρονοπρογράμματος) στα οποία μπορεί να ξεκινήσει η αντίστοιχη λειτουργία

Ο αλγόριθμος χρονοπρογραμματισμού λίστας (1) Επαναληπτικός αλγόριθμος, σε κάθε επανάληψη του οποίου επιλέγεται η καταλληλότερη λειτουργία από μία δεξαμενή αδέσμευτων λειτουργιών ώστε αυτή να ανατεθεί στο πρώτο βήμα ελέγχου για το οποίο δεν παραβιάζονται οι περιορισμοί πόρων Οι λειτουργίες κρίνονται με βάση μία συνάρτηση προτεραιότητας, η οποία ανταποκρίνεται στις απαιτήσεις του προγραμματιστή Στον αλγόριθμο διατηρούνται δύο λίστες: Λίστα ready: διαθέσιμες εντολές που μπορούν να δρομολογηθούν κατά σειρά προτεραιότητας Λίστα active: εντολές που βρίσκονται σε εκτέλεση Σε κάθε βήμα, η εντολή υψηλότερης προτεραιότητας από τη λίστα ready δρομολογείται και μετακινείται στην active όπου μένει για χρόνο εκτέλεσης ίσο με τον απαιτούμενο αριθμό κύκλων μηχανής

Ο αλγόριθμος χρονοπρογραμματισμού λίστας (2) Συναρτήσεις προτεραιότητας Η πιο κοινή συνάρτηση προτεραιότητας είναι το μήκος του μακρύτερου μονοπατιού από τον τρέχοντα κόμβο-εντολή μέχρι τον εικονικό κόμβο-ρίζα του ακυκλικού γράφου εξαρτήσεων (data-dependence DAG) Άλλες συναρτήσεις προτεραιότητας είναι δυνατόν να χρησιμοποιηθούν όπως για παράδειγμα ο αριθμός των άμεσα διάδοχων κόμβων για την τρέχουσα εντολή (number of immediate successor nodes)

Ο αλγόριθμος χρονοπρογραμματισμού λίστας (3) cycle 1; ready { leaf nodes of DDG }; active ; while (ready active ) if (ready ) then remove an operation from ready; Schedule(operation) cycle; active active operation; endif cycle cycle + 1; update the ready queue; endwhile

Παράδειγμα 1: Χρονοπρογραμματισμός λίστας με περιορισμούς πόρων ZΘεωρούμε ότι υπάρχει διαθεσιμότητα ενός πολλαπλασιαστή και ενός αθροιστή Τελικό χρονοπρόγραμμα Παραγόμενος κώδικας λίστας συμβολομεταφραστή a a b mul b c c d d e e f f L1: mul Rt0, Ra, Rb mul Rt1, Rc, Rd mul Rt2, Re, Rf add Rt3, Rt0, Rt1 add Rg, Rt3, Rt2 t0 mul t1 add mul t3 t2 add g g

Βελτιστοποίηση κλειδαρότρυπας [McKeeman, 1965] Γίνεται μετά τη μεταγλώττιση, δηλαδή τη μετατροπή της ενδιάμεσης αναπαράστασης σε τελικό κώδικα Η βασική ιδέα Ανακάλυψη τοπικών βελτιστοποιήσεων εξετάζοντας κάθε φορά ένα παράθυρο κώδικα Αντικατάσταση του τρέχοντος μοτίβου εντολών (ακολουθία ή υπογράφος εντολών) εφόσον υπάρχει αντίστοιχος κανόνας αντικατάστασης Κανόνες αντικατάστασης Εκφραση Αντικατάσταση mov r1, r1 shr r1, r2, 0 mov r1, r2 add r1, r1, constant lw r2, constant(r1) lw r2, 0(r1) neg r1, r2 sub r1, $zero, r2 abs r10, r11 sra $at, r11, 31 xor r10, r11, $at subu r10, r10, $at

Το εργαλείο copt [copt] Απλό εργαλείο αντικατάστασης μοτίβων (patterns) από λεκτικές μονάδες σύμφωνα με κανόνα αντικατάστασης Οταν ένας κανόνας αναγνωριστεί, εφαρμόζεται πάντα Αντιμετωπίζει το πρόγραμμα χαμηλού επιπέδου ως κείμενο Μορφή κανόνων στο copt <pattern for input line 1>... <pattern for input line n> = <pattern for output line 1>... <pattern for output line m> <blank line> Παράδειγμα abs %0, %1 = sra $at, %1, 31 xor %0, %1, $at subu %0, %0, $at

Υπερβελτιστοποίηση [Massalin, 1987] Δοθέντος ενός τμήματος κώδικα και του συνόλου εντολών του στοχευόμενου επεξεργαστή, ο υπερβελτιστοποιητής παράγει το βέλτιστο δυνατό κώδικα Το πρόβλημα της γέννησης βέλτιστου κώδικα είναι δυσεπίλυτο και έτσι συνήθως η αναζήτηση γίνεται με εφαρμογή ωμής δύναμης (brute-force search) σε συνδυασμό με τεχνικές αποκοπής υποπεριπτώσεων που η περαιτέρω διερεύνησή τους δεν μπορεί να οδηγήσει σε βέλτιστο κώδικα Παραδείγματα εφαρμογής: συνάρτηση εξαγωγής προσήμου (signum function), απόλυτη τιμή ακεραίου, μέγιστο και ελάχιστο δύο ακεραίων, πολλαπλασιασμοί/διαιρέσεις με σταθερά Εργαλεία υπερβελτιστοποίησης GNU superopt [superopt] Aha superoptimizer [Aha!]

Το εργαλείο superopt (1) Χρησιμοποιεί πραγματικά σύνολα εντολών (PowerPC, SPARC) ή ένα γενικό σύνολο εντολών με εντολές όπως: adc, add, and, copy, exchange, ior Παράδειγμα: τμήμα κώδικα για την επιλογή υπό συνθήκη σε C r = (unsigned int) (v0!= 0? v1 : v2); Κανόνας στο superopt DEF_GOAL (SELECT, 3, "select", { r = (unsigned_word) v0!= 0? v1 : v2; }) Εάν ο χρήστης ζητήσει όλες τις ακολουθίες με 5 ή λιγότερες εντολές, το superopt ϑα επιστρέψει 276 ακολουθίες εντολών που υλοποιούν τον κώδικα select, όπως: 1: r3:=sub(r2,r1) r4:=add_co(r0,-1) r5:=adc_cio(r5,r5) r6:=and(r5,r3) r7:=add_co(r6,r1)

Το εργαλείο superopt (2) Πραγματοποιεί εξαντλητικό έλεγχο για την εύρεση της βραχύτερης ακολουθίας Δέχεται ως είσοδο την έκφραση προς βελτιστοποίηση, καθώς και το μέγιστο αριθμό επιτρεπόμενων εντολών στην παραγόμενη ακολουθία Δεν μπορεί να βελτιστοποιήσει κώδικα παράγοντας μεγάλες ακολουθίες καθώς η πολυπλοκότητα του χρησιμοποιούμενου αλγορίθμου είναι εκθετική: O(m n 2n ) όπου m είναι ο αριθμός των εντολών της στοχευόμενης αρχιτεκτονικής και n είναι η ακολουθία ελάχιστου μήκους για το τμήμα κώδικα υπό βελτιστοποίηση Το πρακτικό μέγεθος ακολουθίας εντολών κυμαίνεται μεταξύ 2 και 7 εντολών Η υπερβελτιστοποίηση είναι χρήσιμη μόνο για ορισμένα τμήματα κώδικα που εμφανίζονται σε εσώτερους βρόχους

Αναφορές του μαθήματος I A. V. Aho, R. Sethi, and J. D. Ullman, Μεταγλωττιστές: Αρχές, Τεχνικές και Εργαλεία, με την επιμέλεια των: Άγγελος Σπ. Βώρος και Νικόλαος Σπ. Βώρος και Κων/νος Γ. Μασσέλος, κεφάλαια 8.7, 10, 10.1 10.3, Εκδόσεις Νέων Τεχνολογιών, 2008. Website for the English version: http://dragonbook.stanford.edu W. M. McKeeman, Peephole optimization, Communications of the ACM, vol. 8, no. 7, pp. 443 444, July 1965. H. Massalin, Superoptimizer: A look at the smallest program, in Proceedings of the Second International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS II), January 1987, pp. 122 126. D. Spinellis, Declarative peephole optimization using string pattern matching, ACM SIGPLAN Notices, vol. 34, no. 2, pp. 47 51, February 1999. A simple retargetable peephole optimizer. [Online]. Available: ftp: //ftp.cs.princeton.edu/pub/packages/lcc/contrib/copt.shar

Αναφορές του μαθήματος II The GNU superoptimizer. [Online]. Available: ftp://ftp.gnu.org/pub/gnu/superopt/ The Aha! superoptimizer. [Online]. Available: http://www.hackersdelight.org Graphviz. [Online]. Available: http://www.research.att.com/sw/tools/graphviz/