Δυναμική Θεώρηση και Συγχρονισμός των εξαρτήσεων των δεδομένων Αλεξάνδρα Παπανδρεάδη (ΑΜ 362)
Το πρόβλημα Ιδανικά:! Θεώρηση εξαρτήσεων με εικασία! Κερδίζουμε όταν είμαστε σωστοί! Έχουμε ποινή όταν έχουμε λάθος το load περιμένει το store μόνο όταν υπάρχει εξάρτηση! Χρειαζόμαστε έξυπνη θεώρηση εξαρτήσεων 2
Το πρόβλημα και η λύση του! Έξυπνη Θεώρηση εξαρτήσεων! Ε1. Ποια loads έχουν εξαρτήσεις;! Ε2. Πόσο πρέπει να περιμένουμε για να:! α) ικανοποιηθεί η εξάρτηση! β) συντηρήσουμε υψηλό κέρδος! Θεώρηση εξαρτήσεων/συγχρονισμός! Α1. Πρόβλεψη εξαρτήσεων με βοήθεια ιστορικού! Α2. Συγχρονισμός με δυναμική ανάθεση full/empty bits 3
Θεώρηση εξαρτήσεων και απόδοση! Η θεώρηση μπορεί να επηρεάσει την απόδοση είτε θετικά, είτε αρνητικά! Αρνητικά:! α) πετάμε δουλειά! β) ευκαιριακό κόστος 4
Τακτική θεώρησης εξαρτήσεων! Ε1. Ποια load πρέπει να περιμένουν! Ε2. Για πόσο πρέπει να περιμένουν! Χωρίς Θεώρηση! Α1. Όλα Α2. Για όλα τα προηγούμενα store! Με αφέλεια! A1. Κανένα Α2. -! Επιλεκτικά! Α1. Μερικά Α2. Για όλα τα προηγούμενα store! Με συγχρονισμό! Α1. Μερικά Α2. Για το συγκεκριμένο store 5
Παράδειγμα τακτικής θεώρησης! Ε1. Ποια load πρέπει να περιμένουν! Ε2. Για πόσο πρέπει να περιμένουν 6
Η προσέγγιση! Για θεώρηση/συγχρονισμό χρειάζεται η αναγνώριση:! 1) load με τις εξαρτήσεις τους! 2) Τα σχετικά store! 3) Επιβολή του συγχρονισμού! Πώς γίνεται;! Τα 1) και 2) με πρόβλεψη βασισμένη στο ιστορικό των λανθασμένων θεωρήσεων! Το 3) με δυναμικά ανατιθέμενες μεταβλητές συγχρονισμού 7
Πρόβλεψη / συγχρονισμός εξαρτήσεων! Για τις εξαρτήσεις χρειάζεται μικρό Working Set και να κρατηθούν τοπικά τα προσωρινά! Με μικρό πίνακα μπορούμε να:! 1) κρατάμε τις πρόσφατες λάθος θεωρήσεις! 2) προβλέπουμε μελλοντικές εξαρτήσεις! 3) συγχρονίζουμε! Εξαλείφουμε τις περισσότερες λάθος θεωρήσεις! Κάνουμε επιθετική θεώρηση 8
Πρόβλεψη/συγχρονισμός εξαρτήσεων DPT = πίνακας πρόβλεψης εξαρτήσεων DST = πίνακας συγχρονισμού εξαρτήσεων 9
Άλλα θέματα! Η σειρά εκτέλεσης ποικίλει! Η ίδια εξάρτηση υπάρχει πολλές φορές! Διαχωρισμός! Σύνδεση load με το αντίστοιχο store! Bits συγχρονισμού! Πολλαπλές εξαρτήσεις για load ή για store! Πρόβλεψη! Υποστήριξη του ελέγχου της θεώρησης! Κατανεμημένη ή κεντρική 10
Μεθοδολογία εκτίμησης! Μοντέλο μηχανής! Multiscalar 2-way OoO μονάδες, 8 ΠΘ! Καθοδηγούμενη από εντολές χρονική προσομοίωση! Προσομοίωση όσο πιο ρεαλιστικά γίνεται! Benchmarks! SPEC 95 (σχεδόν όλα)! SPEC 92 (μερικά)! Gcc 2.7.2 11
Εκτίμηση! 1. Τακτική Θεώρησης! Υπόθεση: Τέλεια πρόβλεψη! Στόχος: Χρειάζεται συγχρονισμός; Είναι η επιλεκτική αρκετή;! 2. Ακρίβεια πρόβλεψης εξαρτήσεων! Υπόθεση: Πραγματική πρόβλεψη! Στόχος: Μπορούμε να προβλέψουμε εξαρτήσεις;! 3. Επιτάχυνση! Υπόθεση: Πραγματική πρόβλεψη/συγχρονισμός! Στόχος: Ποια είναι η επίδραση στην απόδοση; 12
Σύγκριση των τακτικών θεώρησης Αν είχαμε τέλεια πρόβλεψη εξαρτήσεων! σε σύγκριση με την απουσία θεώρησης:! Με την πρόβλεψη έχουμε όφελος 25% έως και 140%! σε σύγκριση με την αφελή θεώρηση:! Η επιλεκτική μπορεί να είναι χειρότερη! Ο συγχρονισμός πάντα βελτιώνεται Χρειαζόμαστε: Τι να θεωρήσουμε + Πόσο να περιμένουμε. 13
Σύγκριση τακτικών θεώρησης! Η θεώρηση κερδίζει.! Η επιλεκτική μπορεί να είναι χειρότερη από την αφελή.! Ο συγχρονισμός είναι ισχυρός Υπάρχει επιτάχυνση σχετικά με την ανυπαρξία θεώρησης. 14
Παράμετροι εκτίμησης! 64 είσοδοι! Πλήρη συσχέτιση! Ένα bit συγχρονισμού ανά βήμα! Πρόβλεψη:! Βασισμένο σε μετρητή 3 bit! Πληροφορία ελάχιστου ελέγχου 15
Ακρίβεια πρόβλεψης εξαρτήσεων 16
Επιτάχυνση SPECint 95 Συχνά κοντά στο τέλειο 17
Επιτάχυνση SPECfp95 Συχνά κοντά στο τέλειο 18
Σύνοψη! Οι μη επιλυμένες εξαρτήσεις δεδομένων αφανίζουν τον παραλληλισμό! Λύση: Θεώρηση εξαρτήσεων! Τέχνη: Αφελή θεώρηση! Μεγαλύτερα παράθυρα! Μεγαλύτερη ευκαιρία για θεώρηση! Αφελή θεώρηση " σημαντική ποινή! Ιδανικά! Τα load περιμένουν τα store μόνο όταν υπάρχει εξάρτηση 19
Σύνοψη! Πρόβλεψη εξαρτήσεων και συγχρονισμός! Οι εξαρτήσεις είναι προβλέψιμες! Συνολικά! Ρυθμός λάθος θεώρησης: μείωση μίας τάξης μεγέθους! Επίδοση κοντά στον τέλειο μηχανισμό! Βελτιώσεις μέχρι και 55%! Γιατί όχι θεώρηση εξαρτήσεων μνήμης;! Μπορεί να εφαρμοστεί ακόμα και σε καταχωρητές 20
Μπορεί να το κάνει ο Μεταγλωττιστής;! Ναι όμως:! 1) Αναγνώριση εξαρτήσεων! Δεν πρέπει όλες οι εξαρτήσεις να συγχρονιστούν! Η συμπεριφορά των εξαρτήσεων μπορεί να αλλάζει:! Με τον χρόνο! Με τα δεδομένα! 2) Πώς να γίνει ο συγχρονισμός! Χρειάζεται ένας μηχανισμός! Δέσμευση;! Αφήνουμε τον μεταγλωττιστή να κάνει ότι καλύτερο μπορεί, και χρησιμοποιούμε τον μηχανισμό μας σε όλες τις άλλες περιπτώσεις 21
Περιβάλλον SuperScalar;! Load χωρίς εξαρτήσεις! Σε 64 εντολές: 1 από τις 3! Σε 256 εντολές: 1 από τις 2! Πολλές θεωρήσεις load:! Χρειάζεται η σωστή στο σωστό χρόνο! Επιλεκτική ακύρωση:! Ευκαιριακό κόστος! Υλοποίηση; Παράθυρο; Multiscalar, Hydra. 22
Δεν είναι αυτό I-δομές! Ι-δομές! Χρειάζεται υποστήριξη προγράμματος και γλώσσας! Ύπαρξη μίας εγγραφής! Θεώρηση/Συγχρονισμός εξαρτήσεων! Δεν χρειάζεται υποστήριξη από το πρόγραμμα! Φτιάχνεται αυτόματα! Θεώρηση! Δεν υπάρχουν θέματα ορθότητας! Μόνο για κάποιες από τις εξαρτήσεις! Δεν χρειάζεται ύπαρξη μίας εγγραφής 23
Εξαρτήσεις σε σχέση με το μέγεθος του παραθύρου Πιθανότητα εξάρτησης Απόσταση στις δυναμικές εντολές Συχνότητα των load σε σχέση με τις εξαρτήσεις μέσα στο παράθυρο 24
Είναι οι εξαρτήσεις προβλέψιμες;! DDC (cache δεδομένων εξαρτήσεων) για επίδειξη:! Εγγραφές με τις ν πιο πρόσφατες εξαρτήσεις 25
Επίδραση του μεγέθους του παραθύρου Παράθυρο Εξαρτήσεις Παραλληλισμός Ποινή Μικρό Αραιά Όχι πολύς Ασήμαντη Μεγαλύτερο Πιο συχνά Περισσότερος Σημαντική! Μπορεί να γίνει καλύτερο από την αφελή θεώρηση! Αποφασίζεις τι να θεωρήσεις και πότε 26
Πολλά στιγμιότυπα της ίδιας εξάρτησης! 1. Αναγνώριση: (load PC, store PC) δεν είναι αρκετά, προσθέτουμε:! Διεύθυνση δεδομένων! Απόσταση εξάρτησης! 2. Μπορεί να χρειαστεί πολλαπλός συγχρονισμός των εισόδων ανά εξάρτηση 27
Ρυθμός εσφαλμένης θεώρησης Καλύτερα 28