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

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

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

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

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

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

Δυναμική Δρομολόγηση Εντολών (Dynamic Scheduling)

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

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

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

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

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

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

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

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

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

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

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

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

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

Instruction-Level Parallelism and its Dynamic Exploitation. Μάθηµα 3ο Computer Architecture-A Quantitative Approach

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

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

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

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

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

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

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

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

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

ΗΥ425 Αρχιτεκτονική Υπολογιστών. Static Scheduling. Ιάκωβος Μαυροειδής

Τέτοιες λειτουργίες γίνονται διαμέσου του

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

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

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

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

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

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

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

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

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

Υποθετική Εκτέλεση Εντολών

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

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

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

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

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

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

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

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

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

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου

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

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

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

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

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

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

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

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

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

Περιορισμοί των βαθμωτών αρχιτεκτονικών

Διοχέτευση (Pipeline)

Πανεπιστήµιο Θεσσαλίας

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

CS425 Computer Systems Architecture

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

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

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

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

Δομή Ηλεκτρονικού υπολογιστή

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

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

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

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

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

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

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

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

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

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

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

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

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

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

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

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

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης

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

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

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

Pipelined Datapath, Hazards and Forwarding

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)

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

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

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

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

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

Transcript:

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 6ο μάθημα: χρονοπρογραμματισμός, αλγόριθμος Tomasulo, εικασία Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου

InstrucDon- Level Parallelism! Θέλουμε να εκμεταλευτούμε τον παραλληλισμό μεταξύ εντολών ενός προγράμματος όσο περισσότερο μπορούμε με επικάλυψη εκτέλεσης (διοχέτευση) και, καλύτερα, με παράλληλη εκτέλεση! Δύο εντολές είναι παράλληλες όταν μπορούν να εκτελεστούν ταυτόχρονα σε διοχέτευση οποιουδήποτε βάθους, χωρίς να προκαλέσουν stalls ούτε, φυσικά, λάθος αποτελέσματα!! Αν δεν είναι παράλληλες, μπορούν ακόμα να εκτελεστούν με επικάλυψη Σημαντικό να διαπιστωθεί αν μία εντολή εξαρτάται από μια άλλη! Εξαρτήσεις: δεδομένων, ονομάτων, ελέγχου 2

Εξαρτήσεις δεδομένων! Μια εντολή j εξαρτάται από μια άλλη i αν Η i παράγει ένα αποτέλεσμα που χρειάζεται η j Η j έχει εξάρτηση δεδομένων από την k και η k από την i! Μια εντολή παράγει ένα αποτέλεσμα που μία άλλη χρησιμοποιεί (καταναλώνει). ή υπαρχει μία ενδιάμεση εντολή... Μια εντολή του τύπου ADD R1, R1, R1 δεν θεωρείται ότι έχει εξάρτηση 3

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

Εξαρτήσεις ονομάτων! Δύο εντολές χρησιμοποιούν τον ίδιο καταχωρητή ή θέση μνήμης (όνομα) αλλά δεν γίνεται μεταφορά δεδομένων μέσω του καταχωτητή/μνήμης! Αντι- εξάρτηση (anddependence) μια νέα εντολή γράφει στον καταχωρητή που μια παλιότερη διαβάζει η παλιότερη εντολή πρέπει να μή διαβάσει τα καινούρια δεδομένα!! Εξάρτηση εξόδου (output dependence) δύο εντολές γράφουν στον ίδιο καταχωρητή ο καταχωρητής πρέπει να κρατήσει τα δεδομένα που γράφει η τελευταία εντολή! Μπορούν πάντα να αποφευχθούν αλλάζοντας τα ονόματα! 5

Κίνδυνοι δεδομένων! Κίνδυνοι (hazards) εμφανίζονται όταν υπάρχει εξάρτηση μεταξύ 2 εντολών και βρίσκονται αρκετά κοντά μεταξύ τους ώστε η επικάλυψη εκτέλεσης να μπορεί να δημιουργήσει πρόβλημα δηλαδή λάθος αποτέλεσμα! Οπως είδαμε υπάρχουν 3 είδη RAW αληθινή εξάρτηση δεδομένων WAR αντιεξάρτηση WAW εξάρτηση εξόδου 6

Χρονοπρογραμματισμός! Για να διατηρηθεί η διοχέτευση πλήρης και να εκμεταλευτούμε το παραλληλισμό εντολών, ο compiler πρέπει να βρίσκει ακολουθίες ανεξάρτητων εντολών που η εκτέλεσή τους να επικαλύπτεται πλήρως 7

Παράδειγμα! Βρόγχος με ανεξάρτητες επαναλήψεις! Loop- level parallelism 8

Παράδειγμα, scheduled code! Μετέφερα μια ανεξάρτητη εντολή πίσω από τη L.D για να αποφύγω το load- use latency! Ταυτόχρονα απέφυγα τη καθυστέρηση μεταξύ αριθμητικής πράξης και διακλάδωσης! Δεν μπορώ να κάνω κάτι καλύτερο γιατί έχω λίγες εντολές διαθέσιμες 9

Παράδειγμα: loop unrolling! Ξετυλίξαμε το βρόγχο 4 φορές αφαιρέσαμε εντολές ελέγχου βρόγχου αυξήσαμε τον αριθμό διαθέσιμων εντολών για χρονοπρογραμματισμό 10

Κόστος ξετυλίγματος! Αύξηση μεγέθους κώδικα μπορεί να αυξήσει cache misses! Αύξηση αριθμού καταχωρητών register pressure αν χρειάζονται περισσότεροι από τους διαθέσιμους, θα χρειαστούν εντολές μεταφοράς δεδομένων προς/από τη μνήμη 11

Dynamic Scheduling! Στατικός χρονοπρογραμματισμός: σημαντικό κέρδος επίδοσης, αλλάζοντας σειρά εντολών και με τεχνικές όπως ξετύλιγμα/ξεδίπλωμα βρόγχου! Ο δυναμικός χρονοπρογραμματισμός, επιτρέπει σε μετέπειτα εντολές να εκκινηθούν, αν είναι ανεξάρτητες! Μια εντολή μπορεί να εκτελεστεί αν οι τελεσταίοι (εισόδου) είναι έτοιμοι υπάρχει κατάλληλη μονάδα για να εκτελέσει την πράξη ο καταχωρητής αποτελέσματος είναι έτοιμος (για εγγραφή)! Το πρόγραμμα μετατρέπεται σε ένα διάγραμμα ροής δεδομένων 12

Data Flow Graph (DFG) i1: r2 = 4(r22) i2: r10 = 4(r25) i3: r10 = r2 + r10 i4: 4(r26) = r10 i5: r14 = 8(r27) i6: r6 = (r22) i7: r5 = (r23) i8: r5 = r6 r5 i9: r4 = r14 * r5 i10: r15 = 12(r27) i11: r7 = 4(r22) i12: r8 = 4(r23) i13: r8 = r7 r8 i14: r8 = r15* r8 i15: r8 = r4 r8 i16: (r28) = r8 i1 i3 i4 i2 i5 i6 i9 i8 i7 i15 i10 i11 i14 i13 i12 i16 Data Flow Graph (or Data Dependency Graph) 13

Εκτέλεση εκτός σειράς i1: r2 = 4(r22) i2: r10 = 4(r25) i3: r10 = r2 + r10 i4: 4(r26) = r10 i5: r14 = 8(r27) i6: r6 = (r22) i7: r5 = (r23) i8: r5 = r6 r5 i9: r4 = r14 * r5 i10: r15 = 12(r27) i11: r7 = 4(r22) i12: r8 = 4(r23) i13: r8 = r7 r8 i14: r8 = r15* r8 i15: r8 = r4 r8 i16: (r28) = r8 i1 i3 i4 i2 i5 i6 i9 i8 i7 i15 i10 i11 i14 i13 i12 i16 14

Dynamic Scheduling! Το στάδιο ID χωρίζεται σε δύο Εκκίνηση (Issue) αποκωδικοποίηση, έλεγχος δομικών κινδύνων Ανάγνωση τελεστέων (read operands) περιμένε μέχρι να μην υπάρχουν κίνδυνοι δεδομένων, διάβασε τελεστέους! Αποτέλεσμα: εκτέλεση εκτός σειράς προκαλούνται προβλήματα λόγω μη- πραγματικών εξαρτήσεων! Εξετάζουμε ξανά τις μη- πραγματικές εξαρτήσεις... 15

Εξαρτήσεις ονομάτων! Εξάρτηση εξόδου (F6)! Αντιεξάρτηση (F8)! Αλλάζοντας μερικά «ονόματα» καταχωτητων: (παλιό) F6 γίνεται S (νέο) F8 γίνεται T 16

Μετονομασία καταχωρητών! Αγγλικός όρος: Register renaming! Σχετικά λίγοι «αρχιτεκτονικοί καταχωρητές» απαιτούν χώρο στη κωδικοποίηση εντολών: 32 καταχωρητές - 5 bit, x3 (2 πηγές, 1 προορισμός) Ο μεταγλωτιστής προσπαθεί να τους χρησιμοποιήσει όσο περισσότερο γίνεται για να αποφύγει προσπελάσεις μνήμης Επαναχρησιμοποίηση καταχωρητών (ονομάτων) για δεδομένα που δεν έχουν σχέση μεταξύ τους 17

Υλοποίηση μετονομασίας! Μεγάλο αρχείο φυσικών (physical) καταχωρητών κατά την αποκωδικοποίηση, ο καταχωρητής προορισμού μετονομάζεται σε έναν από τους διαθέσιμους φυσικούς καταχωρητές οι καταχωρητές πηγής επίσης αλλάζουν ώστε να αντιστοιχούν στους σωστούς φυσικούς καταχωρητές Χρειάζεται πίνακας απεικόνισης...! Χρησιμοποιούνται επιπλέον καταχωρητές διάσπαρτοι σε άλλες δομές περισσότερα σε λίγο... 18

Αλγόριθμος μετονομασίας! Rename: πίνακας αντιστοίχισης λογικών σε φυσικούς καταχωρητές! Freelist: λίστα διαθέσιμων φυσικών καταχωρητών Μετονομασία R i <- R j op R k σε R a <- R b op R c! R a = Freelist()! R b = Rename[R j ]! R c = Rename[R k ]! Rename[R i ] = R a Η μετονομασία γίνεται κατά την αποκωδικοποίηση συχνά ως χωριστό στάδιο διοχέτευσης 19

Tomasulo dynamic scheduling! Η μετονομασία γίνεται μέσω των reservadon stadons (σταθμοί κράτησης?) Χώροι αποθήκευσης συνδεδεμένοι με μια funcdonal unit! Κατά την εκκίνηση μιας εντολής, δεσμεύεται ένα reservadon stadon Διαβάζει και αποθηκεύει τελεστέους αν είναι έτοιμοι Κρατάει τα «ονόματα» (tags) των reservadon stadons των εντολών που θα παράξουν τα αποτελέσματα που χρειάζεται Τα αποτελέσματα συνοδεύονται από το όνομα του reservadon stadon Ολοι οι reservadon stadons προσέχουν τα αποτελέσματα για να βρούν τα ονόματα και τα δεδομένα που περιμένουν 20

Δομή Tomasulo From instruction unit Instruction queue FP registers Load/store operations Store buffers Address unit Load buffers Floating-point operations Operand buses Operation bus 3 2 1 Reservation stations 2 1 Data Memory unit Address FP adders FP multipliers Common data bus (CDB) 21

Εντολές προσπέλασης μνήμης! Οι εντολές προσπέλασης μνήμης χρειάζονται 2 βήματα εκτέλεσης Υπολογισμός διεύθυνσης (όταν η τιμή καταχωρητή είναι γνωστή) Προσπέλαση μνήμης! Η διεύθυνση (effecdve address) εγγράφεται σε μία θέση στο load, store buffer! Οι load εκτελούνται όταν το σύστημα μνήμης είναι διαθέσιμο! Οι εγγραφές πρέπει να περιμένουν να υπολογιστεί η τιμή του καταχωρητή εγγραφής ολοκληρώνονται στο στάδιο Write Result! Η εκτέλεση των εντολών προσπέλασης μνήμης γίνεται με τη σειρά προγράμματος 22

Παράδειγμα εκτ. Tomasulo These are RS, we have only one FU for each type (MUL, ADD, LD). LD 1 cycle, ADD/SUB 2c, MULT 10c, DIV 50c 23

Tomasulo Example Cycle 1 24

Tomasulo Example Cycle 2 25

Tomasulo Example Cycle 3 26

Tomasulo Example Cycle 4 27

Tomasulo Example Cycle 5 28

Tomasulo Example Cycle 6 29

Tomasulo Example Cycle 7 30

Tomasulo Example Cycle 8 31

Tomasulo Example Cycle 9 32

Tomasulo Example Cycle 10 33

Tomasulo Example Cycle 11 34

Tomasulo Example Cycle 12 35

Tomasulo Example Cycle 13 36

Tomasulo Example Cycle 14 37

Tomasulo Example Cycle 15 38

Tomasulo Example Cycle 16 39

Tomasulo Example Cycle 55 40

Tomasulo Example Cycle 56 41

Tomasulo Example Cycle 57 42

Αλγόριθμος Tomasulo 43

Σύγκριση με scoreboarding! Κατανεμημένη λογική ανίχνευσης κινδύνων (hazards)! Εξάλειψη κινδύνων WAR, WAW 44

Διακλαδώσεις! Καμία εντολή δεν ξεκινάει την εκτέλεσή της πριν να έχουν ολοκληρωθεί οι προηγούμενες διακλαδώσεις! Αυτό είναι σημαντικό πρόβλημα κάθε ~6 εντολές εκτελείται μια διακλάδωση! Παρακάτω θα δούμε εκτέλεση με εικασία (speculadon) που λύνει το πρόβλημα 45

SpeculaDon! Το κύριο πρόβλημα που παραμένει είναι οι διακλαδώσεις! Η πρόβλεψη διακλάδωσης βοήθησε ώστε να προσκομίζουμε εντολές μετά από τη διακλάδωση πρίν εκτελέσουμε την διακλάδωση! Αλλά για να εκτελέσουμε εντολές μετά τη διακλάδωση πρέπει να περιμένουμε το αποτέλεσμά της! Με εκτέλεση εικασίας θα εκτελούμε εντολές μετά από τη διακλάδωση σαν να είχαμε προβλέψει σωστά πρέπει να μπορούμε να αναιρούμε εντολές που δεν έπρεπε να εκτελεστούν 46

Βασικές ιδέες! Ξεχωρίζουμε τις πράξεις: προώθησης αποτελέσματος σε άλλες εντολές που το περιμένουν ολοκλήρωσης της εντολής! Μπορούμε να επιτρέψουμε την προώθηση αποτελεσμάτων εντολών που εκτελούνται με «εικασία»!... αλλά όχι την αλλαγή καταχωρητών/μνήμης που δεν μπορούν να αναιρεθούν! Συγκεκριμένα επιτρέπουμε αλλαγές στους αρχιτεκτονικούς καταχωρητές και στη μνήμη, μόνο από εντολές που (σίγουρα) ολοκληρώνονται! Νέο στάδιο commit (υποβολή, δέσμευση)! Οι εντολές εκτελούνται εκτός σειράς, αλλά κάνουν commit στη σειρά προγράμματος 47

Reorder buffer! Χρειάζεται ένα είδος ουράς που κρατά τα αποτελέσματα από τη στιγμή που υπολογίζονται μέχρι η εντολή να κάνει commit! Χρησιμοποιείται και για μετονομασία καταχωρητών παρόμοια με τον αλγόριθμο Tomasulo! Ονομάζεται reorder buffer (ROB)! Κύρια πεδία είδος εντολής (αρχιτεκτονικός) καταχωρητής προορισμού τιμή αποτελέσματος έτοιμο αποτέλεσμα 48

Αναίρεση εντολών! Οταν μια διακλάδωση κάνει commit Αν η πρόβλεψη ήταν σωστή, τέλος! Αλλιώς ακύρωση όλων των εντολών που βρίσκονται μέσα στο ROB και προσκόμιση από τη σωστή διεύθυνση! Αν μια εντολή προκάλεσε διακοπή ακύρωσε όλες τις επόμενες εντολές εκτέλεσε τη ρουτίνα εξυπηρέτησης διακοπών! Αφού δεν έχει αλλάξει η κατάσταση των αρχιτεκτονικών καταχωρητών και της μνήμης, η ακύρωση είναι εύκολη 49

Tomasulo με reorder buffer From instruction unit Reorder buffer Instruction queue Reg # FP registers Data Address unit Load/store operations Load buffers Floating-point operations Operand buses Operation bus Store data Store address Memory unit 3 2 1 Address FP adders Reservation stations FP multipliers 2 1 Load data Common data bus (CDB) 50

Βήματα εκτέλεσης 1 Εκκίνηση:! Διάβασε εντολή από την ουρά εντολών! Αν υπάρχει ελεύθερη θέση στο ROB και θέση σε reservadon register, «στείλε» την εντολή στο reservadon register Εκτέλεση:! Παρακολούθησε το CDB για αποτελέσματα που περιμένεις! Οταν όλοι οι τελεστέοι είναι έτοιμοι ξεκίνα την εκτέλεση 51

Βήματα εκτέλεσης 2 Write result:! Γράψε το αποτέλεσμα στο CDB μαζί με το tag της θέσης του ROB και από το CDB στη θέση της εντολής στο ROB Commit:! Περίμενε μέχρι η εντολή να βρίσκεται στη κεφαλή της ουράς του ROB! Αν έγινε διακοπή ή λάθος πρόβλεψης διακλάδωσης, ακύρωσε τις υπόλοιπες εντολές! Γράψε το αποτέλεσμα στον αρχιτεκτονικό καταχωρητή ή στη μνήμη 52

Εξαρτήσεις μέσω μνήμης! Κίνδυνοι WAR, WAW εξαλείφονται:! Οι εγγραφές γίνονται με τη σειρά του προγράμματος προηγούμενες αναγνώσεις (και εγγραφές) έχουν ήδη γίνει! Οι κίνδυνοι RAW απαιτούν επιπλέον περιορισμούς: καμία LOAD δεν μπορεί να διαβάσει τη μνήμη αν υπάρχει στο ROB STORE με την ίδια διεύθυνση οι διευθύνσεις υπολογίζονται με τη σειρά προγράμματος 53

Υλοποίηση 1 54

Υλοποίηση 2 55

Υλοποίηση 3 56

Πολλαπλή εκκίνηση! Μέχρι τώρα προσκομίζαμε 1 εντολή και εκκινούσαμε 1 εντολή σε κάθε κύκλο! Μια λογική επέκταση είναι να προσκομίζουμε και να εκκινούμε περισσότερες εντολές ανά κύκλο οι επεξεργαστές αυτοί λέγονται υπερβαθμωτοί superscalar! Θα εξετάσουμε πρώτα υπερβαθμωτούς επεξεργαστές με στατικό χρονοπρογραμματισμό και τύπου VLIW (very- large instrucdon word) 57

Στατικοί υπερβαθμωτοί επεξεργαστές! Σχετικά απλή υλοποίηση: αύξηση του πλάτους (width) των καλωδίων επεξεργαστή- μνήμης ώστε να διαβάζονται πολλαπλές εντολές πολλαπλασιασμός του αποκωδικοποιητή εντολών, θυρών αρχείου καταχωρητών,...! Το κύριο πρόβλημα εδώ είναι εξαρτήσεις μεταξύ των εντολών που εκκινούν μαζί το υλικό ανιχνεύει εξαρτήσεις και καθυστερεί κάποιες εντολές ή υποθέτει ότι ο μεταγλωτιστής δεν τοποθετεί εξαρτημένες εντολές μαζί (στο ίδιο issue slot) 58

Επεξεργαστές VLIW! Γενικής χρήσης: IA- 64 ή Itanium! Αρκετά συνηθισμένο σε επεξεργαστές ψηφιακού σήματος (DSP)! Ο μεταγλωτιστής αναλαμβάνει το δύσκολο έργο εύρεσης αρκετής παραλληλίας από το πρόγραμμα και χρονοπρογραμματισμού των εντολών! Το υλικό είναι απλό και μπορεί να είναι έχει γρήγορο ρυθμό ρολογιού 59

Δυναμικοί superscalar! Οι περισσότεροι επεξεργαστές/πυρήνες γενικής χρήσης σήμερα ανήκουν σε αυτή τη κατηγορία! Συνδιάζουν: πολλαπλή εκκίνηση δυναμικό χρονοπρογραμματισμό εικασία! Το εμπρόσθιο τμήμα του επεξεργαστή (front- end) πρέπει να φέρνει πολλές εντολές σε κάθε κύκλο βήματα προσκόμισης, αποκωδικοποίησης, μετονομασίας, εκκίνησης! Το πίσω τμήμα (back- end) πρέπει να μπορεί να γράφει πολλαπλά αποτελέσματα και να κάνει commit πολλές εντολές ταυτόχρονα 60