Speculative Memory Cloaking And Speculative Memory Bypassing Κωνσταντίνα Δεληγιώργη Α.Μ. 378 ΑΘΗΝΑ, Ιανουάριος 2002
2 Εισαγωγή Τα προγράμματα εκτελούν εντολές που παράγουν τιμές για άλλες λειτουργίες Αυτές οι τιμές πρέπει να αποθηκευτούν ενώ περιμένουν να χρησιμοποιηθούν από επόμενες λειτουργίες Αυτή η εσωτερική λειτουργία (interoperation) επικοινωνίας υλοποιείται χρησιμοποιώντας καταχωρητές και χώρους θέσεων μνήμης Εσωτερικές Λειτουργίες Σκοπός της Παρουσίασης Θα μελετήσουμε την επικοινωνία εσωτερικών λειτουργιών, η οποία πραγματοποιείται με απλή επικοινωνία της μνήμης
3 Ποιές είναι οι μέθοδοι για την επικοινωνία μνήμης Οι σαφείς φόρμες στις οποίες οι καταχωρήσεις (stores) και οι φορτώσεις (loads) συνδέονται μεταξύ τους δεν είναι μόνο δυνατές, αλλά οδηγούν σε νέες φόρμες θεώρησης, σε νέες ιεραρχικές συνιστώσες μνήμης και σε νέους τρόπους σκέψης για τέτοιες ιεραρχίες Θα εξετάσουμε δυο τέτοιες μεθόδους: Θεώρηση Απόκρυψης Μνήμης (Speculative Memory Cloaking) Θεώρηση Παράκαμψης μνήμης (Speculative Memory Bypassing)
4 Θεώρηση Απόκρυψης Μνήμης (speculative memory cloaking) Στην θεώρηση απόκρυψης μνήμης μπορούμε δυναμικά να μετατρέπουμε ασαφώς ορισμένες θέσεις μνήμης χωρίς να προκαλείται πρόβλημα στον υπολογισμό της μνήμης, και στην κρυφή πρόσβαση σε δεδομένα. Για να το επιτύχουμε χρησιμοποιούμε την πρόβλεψη με μνήμη (memory dependence prediction) ώστε σαφώς να συνδέσουμε τις εντολές φόρτωσης (load) και αποθήκευσης (stores). Αυτές οι εντολές μπορούν τότε να επικοινωνούν με ένα δυναμικώς δημιουργούμενο χώρο ονομάτων (name space) Θεώρηση Παράκαμψης Μνήμης (speculative memory bypassing) Η θεώρηση παράκαμψης μνήμης επιπλέον μειώνει την ασάφεια όταν οι εξαρτώμενες φορτώσεις και καταχωρήσεις συνυπάρχουν στο παράθυρο εντολών. Αυτή η τεχνική μετατρέπει την DEF-store- load-USE αλυσίδα εξαρτήσεων σε DEF-USE μόνο (Βλέπε παραπάνω σχήμα). Σαν αποτέλεσμα, οι τιμές μπορούν απευθείας να περάσουν από τον αποστολέα στο (producer) (DEF) στο δέκτη (consumer) (USE).
5 Η Μνήμη ως Πράκτορας Επικοινωνίας Eσωτερικών Λειτουργιών (Μemory as an Inter-operation Communication Agent) Οι εντολές φόρτωσης (load) και καταχώρησης (store) ή η διεύθυνση που χρησιμοποιείται, δεν δίνουν καμία a priori ένδειξη της επικοινωνίας που θα συμβεί. Επομένως για να ανιχνευθεί η επικοινωνία και να εγκατασταθούν οι συνδέσεις επικοινωνίας, οι εντολές load και store πρέπει να υπολογίσουν μια διεύθυνση (address) και να περάσουν έτσι στην σαφήνεια. Τόσο ο υπολογισμός διευθύνσεων όσο και η σαφήνεια που επιτυγχάνεται εισάγουν μία επιβάρυνση, μιας και οι τιμές μπορεί να είναι διαθέσιμες αρκετά πρίν κάποια ενέργεια ολοκληρωθεί. Ένα παράδειγμα φαίνεται στο παρακάτω σχήμα όπου η επικοινωνία θα λάβει μέρος ανάμεσας στις εντολές STORE και LOAD (Part A)
6 Πρόβλεψη Εξάρτησης Μνήμης (Μemory dependence prediction) Η εσωτερική λειτουργία (inter-operation) επικοινωνίας οδηγεί σε αληθινές (RAW) εξαρτήσεις. Μια σαφής αναπαράσταση της επικοινωνίας μνήμης απαιτεί αναπαράσταση των αντίστοιχων εξαρτήσεων. Στην προσέγγιση αυτή χρησιμοποιήσαμε πρόβλεψη εξάρτησης μνήμης (memory dependence prediction) για να εκφράσουμε τις εξαρτήσεις δυναμικά. Δηλαδή : α) Χρησιμοποιήσαμε δυναμικά επιλεγμένη ιστορική πληροφορία για να προβλέψουμε τις μελλοντικές εξαρτήσεις β) Μετά χρησιμοποιήσαμε αυτές τις θεωρητικές εξαρτήσεις για να δημιουργήσουμε ένα δυναμικό χώρο ονομάτων (name space) όπου οι εξαρτώμενες εντολές load και store μπορούν να επικοινωνούν χωρίς να υφίσταται τις επιβαρύνσεις (overhead) της βασισμένης σε διεύθυνση (address-based) επικοινωνίας
7 Ανάλυση της Κίνησης Μνήμης (Memory Traffic Analysis) Παρουσιάζεται μια εμπειρική μελέτη της κίνησης της επικοινωνίας μνήμης χρησιμοποιώντας το SPEC95 benchmark πάνω στο MIPS-I. Για να έχουμε μια εκτίμηση α) του ποσοστού των λειτουργιών της μνήμης,που μπορούμε να εξυπηρετήσουμε με ένα μηχανισμό βασισμένο στην εξάρτηση και β) του πόση αποθήκευση μπορεί να απαιτήσουμε για αυτήν την θεωρητική σαφή επικοινωνία, μετράμε το ποσοστό των εντολών load που διάβασαν μια τιμή που δημιουργήθηκε από μια προηγούμενη εντολή store (αληθινές εξαρτήσεις). Μετράμε αυτό το χαρακτηριστικό σαν μια συνάρτηση της απόστασης αποθήκευσης (store distance). Αυτό ορίζεται σαν ο αριθμός των μοναδικών διευθύνσεων που αποθηκεύτηκαν μεταξύ των εξαρτώμενων εντολών σε ένα δυναμικό ρεύμα εντολών.
8 Θεώρηση Απόκρυψης Μνήμης (1) (Speculative Memory Cloaking) Η απόκρυψη αποσκοπεί στην επικοινωνία μνήμης με το να μετατρέπει δυναμικά τον ασαφή λεπτομερή όρο της επικοινωνίας σε μια σαφή φόρμα. Σε αυτή την μέθοδο χρησιμοποιείται η πρόβλεψη εξάρτησης για να πιστοποιήσει εξαρτώμενες εντολές loads και stores με μεγάλη πιθανότητα. Μόλις μια εξάρτηση θεωρηθεί προβλέψιμη τότε οι εξαρτώμενες εντολές loads και stores με σαφήνεια συνδέονται με ένα καινούργιο όνομα, a synonym, το οποίο μοναδικά πιστοποιεί την εξάρτηση Κάποιος μπορεί να αναρωτηθεί πως χρησιμοποιώντας ένα διαφορετικό όνομα μπορεί να βοηθήσει στην επικοινωνία; Η απάντηση βρίσκεται: 1)στη φύση του συσχετισμού μεταξύ των ονομάτων και των εντολών που τα χρησιμοποιούν και 2)στην πληροφορία που σχετίζεται με την ύπαρξη των ονομάτων αυτών.
9 Θεώρηση Απόκρυψης Μνήμης (2) (Speculative Memory Cloaking) Σε αντίθεση με μια διεύθυνση, το συνώνυμο πιστοποιεί μοναδικά το εξαρτώμενο ζεύγος εντολών. Αυτό επιτρεπει στις εντολές load και store να εξάγουν το συνώνυμο βασισμένο μόνο στην ταυτότητά τους. Το συνώνυμο με τη σειρά του επιτρέπει σ’ αυτά να εντοπίσουν την κατάλληλη τιμή, χωρίς πρώτα να εκτελέσουν τον υπολογισμό της διεύθυνσης. Επιπλέον ο μοναδικός συνδυασμός ενός συνώνυμου με τις εντολές load και store δείχνει ότι η εντολή εμπλέκεται σε μικρής απόστασης επικοινωνία ενδολειτουργίας. Στην μελέτη αυτή υποθέτουμε ότι η τιμή που διαβάζεται από μία load παράγεται πάντα από μία μοναδική store.
10 Detection and Prediction of Dependences (Ανίχνευση και πρόβλεψη εξαρτήσεων) Για το σκοπό αυτό χρησιμοποιούμε μια πρόβλεψη εξάρτησης βασισμένη στην ιστορική μνήμη. Αυτή η πρόβλεψη δουλεύει με το να ανακαλύπτει εξαρτήσεις μνήμης δια μέσου του χώρου διεύθυνσεων της μνήμης (memory address space) και χρησιμοποιώντας αυτή την πληροφορία για να προβλέπει την μελλοντική συμπεριφορά εξαρτήσεων. Αναφορικά με την ανίχνευση της εξάρτησης μνήμης υπάρχουν δυο προβληματισμοί: α) Πώς οι εξαρτήσεις μπορούν να αναφερθούν και β) Ποια είναι η επιθυμητή σκοπιά αυτού του μηχανισμού, δηλαδή για πόσες load και store εντολές θα ανακαλύψει εξαρτήσεις Αφού θέλουμε να αρχίσουν οι προβλέψεις νωρίς στη σωλήνωση (pipeline) απαιτούμε ο μηχανισμός ανίχνευσης εξαρτήσεων (dependence detection) να τις αναφέρει σαν ζευγάρια (store PC, loadPC) Συνεπώς θα κρατηθούν πολλές εξαρτήσεις ώστε να μπορούμε να ανακαλύψουμε εξαρτήσεις πάνω σε αρκετές διευθύνσεις. Αυτό είναι δυνατόν εάν διατηρήσουμε μια εγγραφή από πρόσφατες store (δηλαδή τα PC τους) μαζί με την διεύθυνση μνήμης σε ένα πίνακα ανίχνευσης εξαρτήσεων (Dependence Detection Table (DDT)).
11 Detection and Prediction of Dependences (2) (Ανίχνευση και πρόβλεψη εξαρτήσεων) Mε ένα τέτοιο μηχανισμό το επόμενο βήμα είναι να σχεδιάσουμε ένα σχήμα πρόβλεψης βασισμένο στην ιστορικότητα της εξάρτησης. Έτσι το πιο ευθύ σχήμα πρόβλεψης είναι να καταγράψουμε και να προβλέψουμε εξαρτήσεις σαν ζευγάρια (load PC,store PC). Δυστυχώς σε ένα τέτοιο σχήμα θα πρέπει να: α) προβλέπουμε μεταξύ πολλών δυνατών εξαρτήσεων (π.χ. ένα load έχει πολλά παραγόμενα stores που εναλλάσονται στο ρεύμα εκτέλεσης) και β) προβλέπουμε πολλές εξαρτήσεις την ίδια στιγμή (π.χ. ένα store έχει πολλά loads). Για τους παραπάνω λόγους χειριζόμαστε την πρόβλεψη εξάρτησης σαν διαδικασία δυο βημάτων. Στο πρώτο βήμα γίνεται μία πρόβλεψη για το άν το δοσμένο load ή store έχει μια εξάρτηση και στο δεύτερο βήμα η πρόβλεψη υλοποιείται για να αποφασίσει με ποιο load ή store η εξάρτηση αντιστοιχίζεται.
12 Δημιουργία Συνωνύμων και Επικοινωνία (Synonym Generation and Communication) Στην απόκρυψη οι εντολές store ξεκινούν την επικοινωνία, δημιουργώντας μια νέα έκδοση για το συνώνυμο όταν μία εξάρτηση έχει προβλεφθεί. Είναι επιθυμητό να δώσουμε διαφορετικές εκδόσεις του ίδιου συνωνύμου για ασυσχέτιστη επικοινωνία σε οποιοδήποτε δοσμένο σημείο του χρόνου. Αυτό μπορεί να απαιτήσει να παράγουμε διαφορετικές εκδόσεις για διαφορετικά στιγμιότυπα της ίδιας στατικής εξάρτησης π.χ. όταν αυτά τα στιγμιότυπα είναι ταυτόχρονα ενεργά. Το πρόβλημα αυτό είναι περίπου όμοιο με το πρόβλημα της μετονομασίας καταχωρητών, αλλά σε αντίθεση με τις εξαρτήσεις των καταχωρητών, τα στιγμιότυπα μιας στατικής εξάρτησης μνήμης μπορεί να επικαλύπτονται. Εάν το αντίστοιχο store δεν έχει ακόμη αντιστοιχιθεί, χρησιμοποιούμε μια μικρή δομή, τον πίνακα μετονομασίας συνωνύμων (synonym rename table) για να συσχετίσουμε το συνώνυμό του με το σταθμό κράτησης (reservation station) που η store βρίσκεται. Βέβαια αυτή είναι μια αισιόδοξη εκτέλεση και όχι μια ακριβής έκδοση.
13 Επιβεβαίωση (Verification) Επειδή η επικοινωνία που λαμβάνει μέρος στη απόκρυψη είναι βασισμένη στην πρόβλεψη εξάρτησης οποιεσδήποτε τιμές παρέχονται είναι θεωρητικές και πρέπει να επιβεβαιωθούν. Αυτό μπορεί να γίνει με το να αφήσουμε τις εξαρτώμενες εντολές να επικοινωνήσουν επίσης δια μέσου της μνήμης. Ζητήματα Υλοποίησης (Ιmplementation Aspects ) Οι βοηθητικές δομές που χρησιμοποιούνται είναι οι ακόλουθες: Πίνακας ανίχνευσης εξαρτήσεων (dependence detection table (DDT)) Πίνακας ανίχνευσης και ονομασίας εξαρτήσεων (dependence prediction and naming table (DPNT)) Αρχείο Συνονύμων (synonym file (SF)) Πίνακας Μετονομασίας Συνονύμων (synonym rename table (SRT))
14 Ζητήματα Υλοποίησης (Ιmplementation Aspects ) Καθώς εξηγήσαμε πριν το DDT χρησιμοποιείται για να ανακαλύπτουμε τις εξαρτήσεις. Αυτός ο πίνακας περιέχει τα ακόλουθα πεδία: Διεύθυνση Δεδομένων (Data Address(ADDR)), Store PC (STPC) και ένα valid bit (επικύρωσης) Ο DPΝΤ χρησιμοποιείται για να επιβεβαιώσει δια μέσου της πρόβλεψης, εκείνες τις εντολές store και load που έχουν εξαρτήσεις. Ακόμη δίνει τα tags που χρησιμοποιούνται για να δημιουργηθούν τα συνώνυμα για τις εξαρτήσεις. Περιέχει τα ακόλουθα πεδία: Διεύθυνση Εντολής (instruction address (PC)), Ανιχνευτής Εξαρτήσεων (dependence predictor (PRED)), dependence tag (DTAG) και ένα valid bit To SF χρησιμοποιείται για να αποθηκεύει τα συνώνυμα και έχει τα ακόλουθα πεδία: όνομα (name), τιμή (value), full/empty bit και valid bit Ο SRT έχει τα ακόλουθα πεδία : Συνώνυμου (synonym), (reservation station) tag σταθμού κράτησης και ένα valid bit. Αν το bit επικύρωσης είναι 1 (valid flag), η καταχώρηση απεικονίζει το δοσμένο συνώνυμο στο σταθμό κράτησης (reservation station) όπου βρίσκεται η παραγόμενη εντολή store.
15 Ζητήματα Υλοποίησης (Ιmplementation Aspects ) Στο παρακάτω σχήμα βλέπουμε ότι οι εντολές load και store δια μέσου του DPNT παρέχουν μια πρόβλεψη και ένα συνώνυμο. Εάν δεν υπάρχει εξάρτηση δεν γίνεται καμιά ενέργεια. Οι srore δημιουργούν μια SRT καταχώρηση για το δοσμένο συνώνυμο και όταν μία store την δεσμεύσει τότε ενημερώνεται το DDT, ελευθερώνεται η SRT καταχώρηση και γράφεται η τιμή στο SF
16 Θεώρηση Παράκαμψης Μνήμης (1) Speculative Memory Bypassing Σε τυπικές αρχιτεκτονικές load/store, οι εντολές load και store δεν υπολογίζουν τιμές. Oι εντολές load και store απλά χρησιμοποιούνται για να περάσουν τις τιμές που κάποιες εντολές παρήγαγαν, σε κάποιες άλλες που θα τις χρησιμοποιήσουν. Εάν γνωρίζαμε ότι οι load και store χρησιμοποιούνται για επικοινωνία ενδο-λειτουργίας θα μπορούσαμε να τις εξαλείψουμε όλες μαζί. Αυτό ακριβώς είναι ο τελικός σκοπός της τεχνικής παράκαμψης μνήμης. Αυτή η τεχνική μετατρέπει μια DEF-store-load-USE αλυσίδα σε DEF-USE αλυσίδα όποτε οι load και store εξάρτησεις προβλέπονται και οι DEF και USE εντολές συνυπάρχουν στο παράθυρο εντολών.
17 Θεώρηση Παράκαμψης Μνήμης (2) Speculative Memory Bypassing Αν και η τεχνική απόκρυψης μπορεί να επιτρέπει επικοινωνία μεταξύ των store και load, η τιμή πρέπει να περάσει από αυτές τις δυο εντολές πρίν φθάσει στο USE. Βέβαια εδώ σημειώνουμε ότι η παράκαμψη είναι διαφορετική από την απόκρυψη όταν οι εξαρτώμενες load και store συνυπάρχουν στο ίδιο παράθυρο εντολών. Ωστόσο η τεχνική παράκαμψης μπορεί να εκτελεστεί σαν μια απευθείας επέκταση της απόκρυψης. Αυτό φαίνεται στο παρακάτω διάγραμμα (c).
18 Θεώρηση Παράκαμψης Μνήμης (3) Speculative Memory Bypassing Στο 1ο βήμα η εντολή DEF αποκωδικοποιείται και η μετονομασία καταχωρητή (register renaming) δημιουργεί ένα καινούργιο όνομα, TAG1 για τον καταχωρητή R1. Στο 2ο βήμα η store εντολή αποκωδικοποιείται και τελικά δημιουργείται ένα συνώνυμο. Στο 3ο βήμα η εντολή load αποκωδικοποιείται και η μετοομασία καταχωρητή δημιουργρί ένα καινούργιο όνομα TAG2 για τον καταχωρητή προορισμού (destination register) R2. Στο τελευταίο βήμα όταν η USE αποκωδικοποιείται μπορεί να αποφασίσει ότι ο register R2 έχει δυο ονόματα ένα πραγματικό TAG2 και ένα θεωρητικό (speculative) TAG1. Χρησιμοποιώντας το TAG1, η DEF μπορεί να τεθεί απευθείας σε χρήση και να εκτελέστει αμέσως μόλις η DEF παράγει την τιμή.
19 Θεώρηση Παράκαμψης Μνήμης (4) Speculative Memory Bypassing Παρατηρούμε ότι η παράκαμψη (bypassing) εκτείνεται φυσικά για αλυσίδες που περιέχουν πολλές εξαρτήσεις μνήμης. Επιπλέον η παράκαμψη (bypassing) γίνεται πιο ελκυστική όταν μια εντολή store έχει πολλές εξαρτήσεις καθώς αυτό βοηθά σε περισσότερη μείωση της ασάφειας συγκρινόμενη με την απόκρυψη (cloaking) όπου το register write-back bandwidth είναι περιορισμένο. Σε αυτήν την περίπτωση η θεωρητική τιμή (speculative value) θα πρέπει να διαδοθεί σε όλες τις εξαρτώμενες εντολές load, γιατί αν δεν χρησιμοποιηθεί παράκαμψη (bypassing) τότε κάθε μια από τις εξαρτώμενες load θα πρέπει να διαδόσει την θεωρητική τιμή (speculative value) σε όλους τούς ενδιαφερόμενους ατομικά.
20 Πειραματική Αξιολόγηση (Εxperimental Evaluation) Αναλύοντας την αποτελεσματικότητα των τεχνικών απόκρυψης και παράκαμψης(cloaking και bypassing) μπορούμε να κάνουμε παρατηρήσεις στην προβλεψιμότητα της μνήμης και προσομοιώνοντας έναν δυναμικά σχεδιασμένο επεξεργαστή να δείξουμε ότι οι τεχνικές μας μπορούν να βελτιώσουν την απόδοση Μεθοδολογία (1) Χρησιμοποιήθηκαν τα SPEC’95 προγράμματα τα οποία μεταγλωττίστηκαν για την MIPS-I αρχιτεκτονική και υλοποιήθηκε προσομοίωση με καθοδηγούμενο χρονισμό ίχνους και εκτέλεσης (trace και execution- driven timing). Μέχρι 128 εντολές καταχώρησης και φόρτωσης (load/store queue), γίνεται προγραμματισμός για πάνω από 4 load και store ανά κύκλο και χρειάζεται τουλάχιστον ένας κύκλος αφότου η load έχει υπολογίσει την διεύθυνσή της να περάσει στον load/store scheduler.
21 Μεθοδολογία (2) Μια σημαντική παράμετρος είναι η χρησιμοποίηση της θεώρησης αφελών εξαρτήσεων μνήμης (naïve memory dependence speculation) δηλαδή α) η load θα προσπελάσει στη μνήμη ακόμα και αν οι διευθύνσεις των προηγούμενων store είναι άγνωστες, β) η load θα περιμένει για τις προηγούμενες store στις ίδιες διευθύνσεις και γ) οι store προωθούν την διεύθυνσή τους στις load ακόμα και αν τα δεδομένα τους δεν είναι διαθέσιμα Τελικά η θεώρηση των εξαρτήσεων μνήμης (memory dependence speculation) έχει μια σημαντική επίδραση στην βασική απόδοση (base performance) με ελάχιστη υποστήριξη σε hardware.
22 Ακρίβεια της Τεχνικής Απόκρυψης Cloaking accuracy Θεωρούμε δυο μετρικές: coverage και ρυθμός mispeculation. Oρίζουμε σαν coverage το κλάσμα των δυναμικών load που παίρνουν μια σωστή τιμή δια μέσου της απόκρυψης. Ορίζουμε σαν mispeculation rate το κλάσμα των δυναμικών load που παίρνουν μια λανθασμένη τιμή δια μέσου της απόκρυψης. Τέσσερις μετρήσεις πάρθηκαν για τα ακόλουθα DDT μεγέθη: 32, 128, 512, και 2K από αριστερά προς τα δεξιά. Παρατηρούμε ότι η πλειοψηφία των load με εξαρτήσεις παίρνουν μια σωστή τιμή (correct value) από την απόκρυψη, αλλά όχι όλες. Ακόμη όταν αυξάνεται το μέγεθος του DDT, γενικά αυξάνει και το cloaking coverage, σε μερικές περιπτώσεις μειώνεται.
23 Τοπικότητα Διευθύνσεων (Αddress Locality) H ασάφεια της μνήμης μπορεί να ελαττωθεί αν μπορούσαμε να προβλέψουμε την διεύθυνση που μία εντολή load θα προσπελάσει. Μετράμε την τοπικότητα διευθύνσεων (address locality) μετρώντας το κλάσμα των δυναμικών εντολών load που προσπελαύνουν την ίδια διεύθυνση όπως το τελευταίο στιγμιότυπο της ίδιας στατικής load. Στο παρακάτω σχήμα βλέπουμε το breakdown των load που εκθέτουν την τοπικότητα διευθύνσεων (address locality), υπό τον όρο αυτές να έχουν μια ανιχνευμένη εξάρτηση. Oι μαύρες στήλες load με ανιχνευμένες εξαρτήσεις, οι πράσινες στήλες load με μη ανιχνευμένες εξαρτήσεις και τα διαμάντια που παίρνουν σωστή τιμή από απόκρυψη.
24 Τοπικότητα Τιμής Value Locality H ασάφεια της μνήμης μπορεί επίσης να ελαττωθεί με το να προβλέψουμε τις τιμές των εντολών load απευθείας. Έτσι θα συγκρίνουμε έναν προγνώστη των τιμών της εντολής load (load last-value predictor) με έναν μηχανισμό απόκρυψης (cloaking). Το παρακάτω σχήμα δείχνει τις μετρικές coverage (a) και mispeculation rates (b). Τα αποτελέσματα των τιμών φαίνονται από την κίτρινη αριστερή στήλη ενώ τα αποτελέσματα πρόβλεψης απόκρυψης από την δεξιά μαύρη. Καμία από τις δυο τεχνικές δεν φαίνεται να είναι καλύτερη, απλά στο ρυθμό mispeculation η τεχνική απόκρυψης είναι καλύτερη γιατί η συμπεριφορά των εξαρτήσεων είναι πιο σταθερή από την συμπεριφορά των τιμών.
25 Επίδραση στην Απόδοση (1) Performance Impact Η τεχνική απόκρυψης προβλέπει ένα μεγάλο κλάσμα όλων των εντολών load. θα μετρήσουμε την επίδραση στην απόδοση. Συγκρινόμενο με την ακρίβεια της απόκρυψης βλέπουμε ότι η μετρική πρόβλεψης coverage παρέμεινε ίδια ενώ οι ρυθμοί mispeculation αυξάνονται. Έτσι για τον χειρισμό του mispeculation μελετήσαμε 3 μοντέλα το squash invalidation (κατασταλτική ακύρωση), selective invalidation (επιλεκτική ακύρωση) και oracle. Εδώ δεν έχουμε αποτελέσματα για το μοντέλο oracle.
26 Επίδραση στην Απόδοση (2) Performance Impact Έτσι στο παραπάνω σχήμα (a) έχουμε τις πράσινες στήλες που αναφέρουν επιταχύνσεις (speedups) με επιλεκτική ακύρωση (selective invalidation). Οι άσπρες και μαύρες αναφέρουν επιβραδύνσεις (slowdowns) και επιταχύνσεις (speedups) με κατασταλτική ακύρωση (squash invalidation). Αξίζει να σημειωθεί ότι ο μηχανισμός κατασταλτικής ακύρωσης οδηγεί σε επιβραδύνσεις 5.63 % (integer), 1.59% (floating point) και 3.43% (όλα τα προγράμματα). Η απόκρυψη με επιλεκτική ακύρωση αντίθετα είναι πολύ ευεργετική γιατί ποτέ δεν μειώνει την απόδοση και προσφέρει επιταχύνσεις 4.28% (integer), 3.20% (floating- point) και 3.68 % (όλα τα προγράμματα). Στο σχήμα (b) φαίνεται ένα breakdown των predicted load με την πράσινη στήλη εκείνα που παίρνουν τιμή δια μέσου της απόκρυψης και με μαύρη εκείνα που παίρνουν τιμή με την παράκαμψη. Τα αποτελέσματα δείχνουν ότι η απόκρυψη μπορεί να προσφέρει πολύ καλές βελτιώσεις στην απόδοση.
27 Σχετικές εργασίες Πολλές τεχνικές έχουν προταθεί για να προβλέψουν τις διευθύνσεις των load και store τόσο στο software όσο και στο hardware. Ταυτόχρονα οι Tyson και Austin πρότειναν την memory renaming, μια τεχνική όμοια με την αποόκρυψη. Αυτοί συνδύασαν την πρόβλεψη εξάρτησης μνήμης (memory dependence prediction) με την πρόβλεψη της value και μελέτησαν το αποτέλεσμα. Μια περιορισμένη φόρμα της απόκρυψης είναι η alias prediction, στην οποία οι load προβλέπουν μια καταχώρηση write στον buffer όπου το παραγόμενο store βρίσκεται. Ένας μηχανισμός όμοιος με της παράκαμψης προτάθηκε από τον Jourdan, Ronen, Bekerman, Shomar και Yoaz κατά τον οποίο τα load δεν χρειάζεται να προσπελαύνουν στην μνήμη αναγκαστικά και σαν αποτέλεσμα οι απαιτήσεις στο εύρος της μνήμης μειώθηκαν.
28 Συμπεράσματα Με αυτή την ανάλυση μελετώντας τον σχεδιασμό της μνήμης παρατηρήσαμε ότι η μνήμη συχνά χρησιμοποιείται σαν μηχανισμός επικοινωνίας. Διαπιστώσαμε έναν μεγάλο αριθμό από επιβαρύνσεις της παραδοσιακής επικονωνίας μνήμης βασισμένη στην διεύθυνση και προτείναμε τεχνικές που ελαφρύνουν αυτές της επιβαρύνσεις. Οι τεχνικές μας έδειξαν: α) Μεγίστης ακρίβειας πρόβλεψη εξάρτησης βασισμένη στην ιστορικότητα της μνήμης είναι δυνατή β) Ο ασαφής παραδοσιακός ορισμός της επικονωνίας μνήμης μπορεί δυναμικά να μετατραπεί σε σαφή και γ) Οι δύο θεωρήσεις απόκρυψης μνήμης (speculative memory cloaking) και η επέκτασή της παράκαμψης μνήμης (speculative memory bypassing) μπορούν να δημιουργήσουν σαφή ορισμό επικοινωνίας μνήμης και να μειώσουν την ασάφειά της.