Υ- 01 Αρχιτεκτονική Υπολογιστών Back- end: χρονοπρογραμματισμός, εντολές προσπέλασης μνήμης

Σχετικά έγγραφα
Αρχιτεκτονική Υπολογιστών

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

ΠΛΕ- 027 Μικροεπεξεργαστές 6ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση με διοχέτευση

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπερβαθμωτοι επεξεργαστές

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Υ- 01 Αρχιτεκτονική Υπολογιστών Front- end: Προσκόμιση, αποκωδικοποίηση, μετονομασία καταχωρητών

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing)

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΠΛΕ- 027 Μικροεπεξεργαστές 7ο μάθημα: Αρχιτεκτονική πυρήνα: Πρόβλεψη διακλάδωσης, Εξαιρέσεις

Υ- 01 Αρχιτεκτονική Υπολογιστών Πρόβλεψη διακλάδωσης

Διάλεξη 12 Καθυστερήσεις (Stalls)

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

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

Υ- 07 Παράλληλα Συστήματα Αρχιτεκτονική σύγχρονων πυρήνων επεξεργαστών

Διάλεξη 11 Προώθηση (Forwarding)

Κεντρική Μονάδα Επεξεργασίας

ΠΛΕ- 027 Μικροεπεξεργαστές 8ο μάθημα: Παραλληλία επιπέδου εντολής

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

Chapter 6 Αύξηση της απόδοσης με διοχέτευση (pipeline)

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

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)

Δυναμική Θεώρηση και Συγχρονισμός των εξαρτήσεων των δεδομένων. Αλεξάνδρα Παπανδρεάδη (ΑΜ 362)

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική υπολογιστών

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

Οργάνωση Υπολογιστών

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 9: Εισαγωγή στην Ομοχειρία (Pipelining - Διοχέτευση) Μανόλης Γ.Η.

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών

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

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

ΠΛΕ- 027 Μικροεπεξεργαστές

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

Αρχιτεκτονική Υπολογιστών

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Διοχέτευση

Θέµατα Φεβρουαρίου

Αρχιτεκτονική Υπολογιστών II Ενδεικτικές απαντήσεις στα θέματα των εξετάσεων

Υ- 07 Παράλληλα Συστήματα Transac9onal memory

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 9 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

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

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Προηγμένα Συστήματα Πληροφορικής»

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw.

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

Παραλληλισμός σε επίπεδο εντολών

Single Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Κεφάλαιο 4. Ο επεξεργαστής. Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

Αρχιτεκτονική Υπολογιστών

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

Αρχιτεκτονική Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)

Συστήματα σε Ολοκληρωμένα Κυκλώματα

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

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

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

2 η Ενδιάμεση Εξέταση Λύσεις/Απαντήσεις

2η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος , 5ο Εξάμηνο Σχολή ΗΜ&ΜΥ

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

Αρχιτεκτονική Υπολογιστών

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Αρχιτεκτονική Υπολογιστών

ΥΠΕΡΒΑΘΜΩΤΟΙ ΕΠΕΞΕΡΓΑΣΤΕΣ

Υπερβαθµωτή Οργάνωση Υπολογιστών

Φύλλο εργασίας 3 - Χριστουγεννιάτικα φωτάκια (σταδιακή αύξηση και μείωση φωτεινότητας ενός LED) Το κύκλωμα σε breadboard

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

Κάθε functional unit χρησιμοποιείται μια φορά σε κάθε κύκλο: ανάγκη για πολλαπλό hardware = κόστος υλοποίησης!

(Branch Prediction Mechanisms)

Pipeline: Ένα παράδειγμα από.τη καθημερινή ζωή. 30 min κάθε «φάση»

Άσκηση IF ID EX MEM WB α. 300ps 400ps 350ps 500ps 100ps β. 200ps 150ps 120ps 190ps 140ps

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

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

Transcript:

Υ- 01 Αρχιτεκτονική Υπολογιστών Back- end: χρονοπρογραμματισμός, εντολές προσπέλασης μνήμης Αρης Ευθυμίου

Το σημερινό μάθημα Execu9on scheduling wake- up and select specula9ve wake- up Εκτέλεση εντολών προπέλασης μνήμης load- store buffers load specula9on 2

Reserva9on Sta9ons Μετά τη μετονομασία καταχωρητων οι εντολές στέλνονται (dispatch) σε reserva9on sta9ons μέχρι να είναι έτοιμες για εκτέλεση Συγκεντρωμένα όλα μαζί: instruc9on window καλύτερος διαμοιρασμός χώρου πολλές θύρες ανάγνωσης- εγγραφής Κατανεμημένα: reserva9on sta9ons Υβριδικές λύσεις: clusters ομάδα reserva9on sta9ons αντιστοιχούν σε ομάδα func9onal units 3

Wakeup & Select Το στάδιο issue (εκκίνησης εκτέλεσης), αποτελείται από 2 βήματα: Η ανίχνευση της «ετοιμότητας» μιας εντολής ονομάζεται αφύπνηση (wakeup) Πρέπει να γίνει επιλογή των εντολών που θα εκτελεστούν (select) Γενικά πολλές εντολές είναι έτοιμες κάθε στιγμή 4

Αφύπνιση Κάθε reserva9on sta9on παρακολουθεί τα αποτελέσματα που παράγονται για να δεί πότε οι τελεσταίοι εισόδου του είναι έτοιμοι αποτελέσμα: τιμή και αριθμός καταχωρητή προορισμού (tag) Με f func9onal units, μέχρι f αποτελέσματα θα είναι έτοιμα ανά κύκλο Αν ο αριθμός των reserva9on sta9ons είναι w και κάθε εντολή έχει μέχρι 2 τελεσταίους εισόδου χρειάζονται 2fw συγκριτές μεγάλο κόστος για busses και συγκριτές συχνά func9onal units μοιράζονται busses 5

Select Περισ. από 1 εντολές μπορεί να είναι έτοιμες και να χρειάζονται την ίδια func9onal unit πρέπει να υπάρχει μηχανισμός επιλογής 6

Επιλογή: προβλήματα Πολλαπλές func. units πολλαπλές εντολές πώς εξασφαλίζουμε ότι όλες οι f.u. δε θα διαλέξουν την ίδια εντολή; Επιλογή διευκολύνεται αν οι παλιότερες εντολές έχουν (κάπως) μεγαλύτερη προτεραιότητα δεν πρέπει να έχουμε starva9on Ποιές είναι οι παλιότερες; από τη θέση τους για να δουλέψει αυτό χρειάζεται compac9on (συμπαγοποίηση?) δεν είναι καθόλου εύκολο σε hardware 7

Υλοποίηση Οταν επιλεγεί, η εντολή εκπέμπει το tag της Τα ορίσματα διαβάζονται από τη RF ή προωθούνται x8 x8 8

Υλοποίηση αφύπνισης Ο χρόνος από την εκπομπή του tag μέχρι την ολοκλήρωση της εκτέλεσης του «παραγωγού» της τιμής δεν είναι σταθερός το πεδίο delay κρατά το χρόνο εκτέλεσης 9

Εκτέλεση back- to- back Εστω εντολές Α, Β: A εκτελείται σε ένα κύκλο Β εξαρτάται από την Α Θέλουμε η Β να εκτελεστεί στον αμέσως επόμενο κύκλο από αυτόν που εκτελείται η Α όπως στην απλή διοχέτευση 5 σταδίων με προώθηση δεδομένων 10

Διαχωρισμός select- wakeup Πιο ρεαλιστική υλοποίηση π.χ. Pen9um 6: 1 wake up, 3 scheduling stages Μεγάλη αύξηση του CPI καθυστέρηση μεταξύ εξαρτημένων εντολών ποινή διακλάδωσης 11

Ξύπνημα με εικασία Specula9ve wakeup H (εξαρτημένη) εντολή ξυπνάει νωρίτερα π.χ. όταν οι «παπούδες» της επιλεγούν για εκτέλεση επιλέγεται νωρίτερα, εκτελείται νωρίτερα Αν η εικασία ήταν λάθος ακύρωση της εντολής σβήσιμο του ready bit Συμπέρασμα: η θέση της εντολής στο reserva9on sta9on παραμένει μέχρι η εκτέλεσή της να έχει σίγουρα τελειώσει 12

Εντολές load/store Χρήση: οι καταχωρητές δεν επαρκούν για να αποθηκεύσουν όλα τα δεδομένα χρειάζεται μεταφορά τιμών καταχωρητή από/προς κύρια μνήμη Βήματα εντολών προσπέλασης μνήμης 1. υπολογισμός διεύθυνσης συνήθως reg+displacement 2. μετάφραση διεύθυνσης παράλληλα με προσπέλαση κρυφής μνήμης 3. εγγραφή/ανάγνωση μνήμης 13

Εντολές store Η πραγματική* εγγραφή γίνεται στο στάδιο commit μέχρι τότε δεν είναι σίγουρο ότι η store θα πρέπει να εκτελεστεί δεν είναι εύκολο να αναιρεθούν εγγραφές στη μνήμη * όσο αφορά τον επεξεργαστή. Η μνήμη μπορεί να αργήσει ακόμη περισσότερο μέχρι να κάνει την εγγραφή Αυτό είναι πολύ αργά OoO, superpipelined, superscalar: εκατοντάδες εντολές μετά τη store βρίσκονται σε διάφορα στάδια εκτέλεσης Γιατί μας νοιάζει; μια load ίσως να εξαρτάται από τη store πόσο θα πρέπει να περιμένει για να εκτελεστεί σίγουρα σωστά; 14

Εξαρτήσεις μέσω μνήμης Μία load(a) επιστρέφει τη τιμή που έγραψε μια προηγούμενη store(a,v) Εξαρτήσεις μέσω μνήμης: RAW store (a,v), load(a) WAR load(a) store(a,v ) WAW store(a,v) store(a,v ) 15

Ανίχνευση εξάρτησης Δυσκολότερη ανίχνευση εξάρτησης γιατί η διεύθυνση πρέπει να υπολογιστεί (κατά την εκτέλεση της εντολής) και η τιμή του καταχωρητή διεύθυνσης μπορεί να υπολογίζεται από προηγούμενη εντολή Η ίδια εντολή load/store συχνά υπολογίζει διαφορετική διεύθυνση π.χ. βρόγχος που χειρίζεται πίνακες δεδομένων Οι διευθύνσεις είναι μεγάλες (π.χ. 64bit) μεγαλύτερη καθυστέρηση για σύγκριση Ορολογία: memory aliasing: δύο αναφορές (references) αντιστοιχούν στην ίδια διεύθυνση memory disambigua9on: εξέταση αν υπάρχει aliasing 16

Απλοϊκή λύση Μια load περιμένει όλες τις προηγούμενες store να κάνουν commit, πριν προσπελάσει τη μνήμη Αν δεν υπάρχουν όμως store, η σειρά εκτέλεσης μεταξύ load μπορεί να αλλάξει Υλοποίηση: ουρά FIFO (εισαγωγή στο dispatch) store: όταν η τιμη του καταχωρητή διεύθυνσης είναι έτοιμη, υπολόγισε διεύθυνση εγγραφή στο στάδιο commit load: εκτέλεση όταν η ο καταχωρητής διεύθυνσης είναι έτοιμος και δεν υπάρχουν παλιότερες store 17

Επίδοση απλοϊκής λύσης 18

Load scheduling Μερικές φορές μπορούμε να επιτρέψουμε load να εκτελεστούν νωρίτερα, χωρίς να κινδυνέψουμε load bypassing, load forwarding 19

Αλγόριθμος load scheduling Κάθε load και store τοποθετούνται με τη σειρά προγράμματος σε μια ουρά μερικές φορές σε ξεχωριστές ουρές Οταν μία load έχει υπολογίσει τη διεύθυνσή της εξετάζει τις προηγούμενες store με τη σειρά (νεώτερες προς παλιότερες) αν υπάρχει store με την ίδια διεύθυνση και με δεδομένα, forwarding αν υπάρχει store με άγνωστη διεύθυνση, η load δεν μπορεί να συνεχίσει αν υπάρχει store με την ίδια διεύθυνση αλλά χωρίς δεδομένα, δεν μπορεί να συνεχίσει αν η αναζήτηση φτάσει στο τέλος της ουράς, bypassing 20

Load specula9on Υποθέτουμε ότι δεν υπάρχουν RAW κίνδυνοι μεταξύ μιας load και προηγούμενων store το θέμα είναι με stores που δεν έχουν υπολογίσει ακόμη τις διευθύνσεις τους memory dependence predic9on Εκτελούμε τη load και όλες τις επόμενες εξαρτημένες απο αυτή εντολές αν η εικασία αποδειχθεί λάθος, ακύρωση της load και των επόμενων εξαρτημένων εντολών μεγάλο κόστος 21

Load specula9on Τρείς παραλλαγές: Pessimis9c παρόμοιο με load forwarding και bypassing Naïve/Op9mis9c υποθέτουμε πάντα ότι δεν υπάρχει εξάρτηση Selec9ve, dependence predic9on επιλογή load από τις οποίες έχουμε μεγάλο όφελος επίδοσης Ελεγχος λάθος πρόβλεψης: Οταν μια store κάνει commit ή, καλύτερα, όταν υπολογίζεται η διεύθυνσή της, ελέγχει αν υπάρχουν μετέπειτα load με την ίδια διεύθυνση που έχουν ήδη εκτελεστεί 22

Naïve specula9on Εξαρτήσεις load- store δεν είναι συχνές Αλλά λόγω μεγάλου κόστους λάθος πρόβλεψης, η μέθοδος δεν είναι αποδοτική σε μεγάλα instruc9on windows 23

Dependence pred. take 1 Υποθέτουμε αρχικά ότι κάθε load είναι ανεξάρτητη Αν η υπόθεση αποδειχθεί λανθασμένη, η load σημειώνεται ως εξαρτημένη και κάθε φορά που εκτελείται, δεν προσπερνά προηγούμενες store που δεν έχουν υπολογίσει τη διεύθυνσή τους Πώς γίνεται η σημείωση; 1 bit στη κρυφή μνήμη εντολών Χρησιμοποιήθηκε στον DEC Alpha 21264 24

Ιδανικός predictor Kρατά όλα τα ζεύγη load- store που «συγκρούονται» όταν ανακαλύπτεται σύγκρουση το ζεύγος αποθηκεύεται σε μία συσχετιστική μνήμη (δλδ. με δυνατότητα αναζήτησης) Κάθε load αναζητά στο πίνακα τη διεύθυνσή της και βρίσκει τις αντίστοιχες store Αν υπάρχει μία από τις store στο store buffer, περιμένει αλλιώς ξεκινά εκτέλεση με εικασία 25

Store set Store set: το σύνολο των store που συγκρούονται με μια load επειδή οι store εκτελούνται με τη σειρά, αντί για σύνολο χρησιμοποιείται η τελευταία store Πίνακας SSIT κρατάει δείκτες στον πίνακα LFST (περιέχει τη διεύθυνση της τελευταίας store του συνόλου) ο SSIT καταχωρεί και load και store εντολές 26

Αναζήτηση Store: στάδιο decode: Αν υπάρχει καταχώρηση στο SSIT, γράφει τη διεύθυνσή της στην θέση του LFST στάδιο commit: ακύρωση της θέσης στο LFST αν ακόμη περιλαμβάνει τη δική της διεύθυνση Load: στάδιο decode: Αν υπάρχει καταχώρηση στο SSIT και η αντίστοιχη καταχώρηση στο LFST είναι έγκυρη, η load περιμένει αλλιώς η load εκτελείται με εικασία 27

Ενημέρωση 1/3 2 load εξαρτώνται από το ίδιο store 28

Ενημέρωση 2/3 Μία load εξαρτάται από 2 stores π.χ. υπάρχει if- then- else που επιλέγει τη store 29

Ενημέρωση 3/3 30