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



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

Κεφάλαιο 4. Ο επεξεργαστής

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

Σχεδίαση μονάδας ελέγχου επεξεργαστή

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

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

30 min κάθε «φάση» Pipeline: Ένα παράδειγµα από.τη καθηµερινή ζωή. 1. Πλυντήριο. 2. Στεγνωτήριο. 3. ίπλωµα. 4. αποθήκευση. προσέγγιση για 4.

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

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 13. Διακλαδώσεις. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 6 Βελτίωση Απόδοσης με Διασωλήνωση (Enhancing Performance with Pipelining)

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

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

Pipelined Datapath, Hazards and Forwarding

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

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

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

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

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

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

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

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Κεφ. 4: Ο επεξεργαστής 1. Διάδρομος δεδομένων και μονάδα ελέγχου 2.

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

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

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

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

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

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

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

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

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

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

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

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

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

Εντολές του MIPS (2)

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

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

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

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

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

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

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

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

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

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

Επανάληψη Σύστημα Διασωλήνωσης (Pipelining) Κεφάλαιο 4 - Σύστημα ιασωλήνωσης

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

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

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός Κεφ. 4: O επεξεργαστής Σύστημα Διασωλήνωσης (Pipelining)

AΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ (5 ο εξάμηνο) ΕΠΑΝΑΛΗΠΤΙΚΗ ΕΞΕΤΑΣΗ (ΦΘΙΝΟΠΩΡΟ 2007) ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ 30 ΛΕΠΤΑ

Τελική Εξέταση, Απαντήσεις/Λύσεις

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

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

Transcript:

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση Κεφάλαιο 4 Ο επεξεργαστής ιαφάνειες διδασκαλίας του πρωτότυπου βιβλίου µεταφρασµένες στα ελληνικά και εµπλουτισµένες (µετάφραση, επιµέλεια, προσθήκες: ηµήτρης Γκιζόπουλος, Πανεπιστήµιο Αθηνών)

Εισαγωγή Παράγοντες απόδοσης της CPU Πλήθος εντολών Καθορίζεται από την αρχιτεκτονική συνόλου εντολών και το µεταγλωττιστή CPI και Χρόνος κύκλου Καθορίζεται από το υλικό της CPU Θα εξετάσουµε δύο υλοποιήσεις του MIPS Μια απλουστευµένη έκδοση εκτέλεση όλων των εντολών σε ένα µεγάλο κύκλο ρολογιού Μια πιο ρεαλιστική έκδοση µε διοχέτευση (pipeline) Απλό υποσύνολο, δείχνει τις περισσότερες πτυχές Αναφορά µνήµης: lw, sw Αριθµητικές/λογικές: add, sub, and, or, slt Μεταφοράς ελέγχου: beq, j Κεφάλαιο 4 Ο επεξεργαστής 2 4.1 Εισαγωγή

Βήµατα εκτέλεσης εντολής PC µνήµη εντολών, προσκόµιση (fetch) εντολής Program Counter: διεύθυνση εντολής που θα εκτελεστεί Αριθµοί καταχωρητών αρχείο καταχωρητών (register file), ανάγνωση καταχωρητών Ανάλογα µε τη κατηγορία της εντολής Χρήση της ALU για τον υπολογισµό Αριθµητικού αποτελέσµατος ιεύθυνσης µνήµης για εντολές load/store ιεύθυνση προορισµού διακλάδωσης Προσπέλαση µνήµης δεδοµένων για load/store Ενηµέρωση PC διεύθυνση προορισµού ή PC + 4 Κεφάλαιο 4 Ο επεξεργαστής 3

Επισκόπηση της CPU ξεχωριστές µνήµες Κεφάλαιο 4 Ο επεξεργαστής 4

Πολυπλέκτες εν µπορούµε απλώς να ενώσουµε καλώδια µαζί Χρήση πολυπλεκτών Κεφάλαιο 4 Ο επεξεργαστής 5

Έλεγχος Κεφάλαιο 4 Ο επεξεργαστής 6

Βασικά λογικής σχεδίασης Η πληροφορία κωδικοποιείται δυαδικά Χαµηλή τάση = 0, Υψηλή τάση = 1 Ένα καλώδιο ανά bit εδοµένα πολλών bit κωδικοποιούνται µε διαύλους πολλών καλωδίων Συνδυαστικό στοιχείο Επενεργεί σε δεδοµένα Η έξοδος είναι συνάρτηση της εισόδου Στοιχεία κατάστασης (ακολουθιακά) Αποθηκεύουν πληροφορίες 4.2 Συµβάσεις λογικής σχεδίασης Κεφάλαιο 4 Ο επεξεργαστής 7

Συνδυαστικά στοιχεία Πύλη AND Y = A & B Αθροιστής Y = A + B A B + Y A B I0 I1 M u x S Y Πολυπλέκτης Y = S? I1 : I0 Y Αριθµητική/Λογική Μονάδα Y = F(A, B) A B ALU F Y Κεφάλαιο 4 Ο επεξεργαστής 8

Ακολουθιακά στοιχεία Καταχωρητής: αποθηκεύει δεδοµένα σε ένα κύκλωµα Χρησιµοποιεί σήµα ρολογιού για να καθορίσει πότε ενηµερώνεται η αποθηκευµένη τιµή Ακµοπυροδοτούµενη: ενηµέρωση όταν το Clk αλλάζει από 0 σε 1 D Clk Q Clk D Q Κεφάλαιο 4 Ο επεξεργαστής 9

Ακολουθιακά στοιχεία Καταχωρητής µε έλεγχο εγγραφής Ενηµερώνει στην ακµή του ρολογιού µόνο όταν η είσοδος ελέγχου εγγραφής είναι 1 Χρησιµοποιείται όταν η αποθηκευµένη τιµή απαιτείται αργότερα Clk D Write Clk Q Write D Q Κεφάλαιο 4 Ο επεξεργαστής 10

Μεθοδολογία χρονισµού Η συνδυαστική λογική µετασχηµατίζει τα δεδοµένα στη διάρκεια των κύκλων ρολογιού Μεταξύ ακµών ρολογιού Είσοδος από στοιχεία κατάστασης, έξοδος σε στοιχεία κατάστασης Η µεγαλύτερη καθυστέρηση καθορίζει την περίοδο του ρολογιού Κεφάλαιο 4 Ο επεξεργαστής 11

Κατασκευή διαδροµής δεδοµένων ιαδροµή δεδοµένων (datapath) Στοιχεία που επεξεργάζονται δεδοµένα και διευθύνσεις στη CPU Καταχωρητές, ALU, πολυπλέκτες, µνήµες, Θα κατασκευάσουµε µια διαδροµή δεδοµένων MIPS µε διαδοχικά βήµατα Θα κάνουµε πιο αναλυτικό το συνολικό σχέδιο 4.3 Κατασκευή διαδροµής δεδοµένων Κεφάλαιο 4 Ο επεξεργαστής 12

Προσκόµιση εντολής (Instruction Fetch) Ανάγνωση της εντολής από τη µνήµη εντολών καταχωρητής 32 bit Αύξηση κατά 4 για την επόµενη εντολή Κεφάλαιο 4 Ο επεξεργαστής 13

Εντολές µορφής R Ανάγνωση δύο τελεστέων καταχωρητών Εκτέλεση αριθµητικής/λογικής λειτουργίας Εγγραφή αποτελέσµατος σε καταχωρητή Κεφάλαιο 4 Ο επεξεργαστής 14

Εντολές Load/Store Ανάγνωση τελεστέων καταχωρητών Υπολογισµός διεύθυνσης µε χρήση της σχετικής απόστασης (offset) των 16 bit Χρήση της ALU, αλλά µε επέκταση προσήµου του offset Φόρτωση (Load): ανάγνωση µνήµης και ενηµέρωση καταχωρητή Αποθήκευση (Store): εγγραφής τιµής καταχωρητή στη µνήµη Κεφάλαιο 4 Ο επεξεργαστής 15

Εντολές διακλάδωσης (branch) Ανάγνωση τελεστέων καταχωρητών Σύγκριση τελεστέων Χρήση ALU, αφαίρεση και έλεγχος της εξόδου Zero Υπολογισµός διεύθυνσης προορισµού Επέκταση προσήµου της µετατόπισης (displacement) Αριστερή ολίσθηση κατά 2 θέσεις (µετατόπιση λέξης) Πρόσθεση στο PC + 4 Έχει ήδη υπολογιστεί από την προσκόµιση εντολής Κεφάλαιο 4 Ο επεξεργαστής 16

Εντολές διακλάδωσης Απλώς επαναδροµολογεί τις εγγραφές Επαναλαµβάνεται το καλώδιο του bit προσήµου Κεφάλαιο 4 Ο επεξεργαστής 17

ηµιουργία των στοιχείων Μια πρώτη διαδροµή δεδοµένων (data path) εκτελεί µία εντολή σε έναν κύκλο ρολογιού Κάθε στοιχείο της διαδροµής δεδοµένων κάνει µόνο µία συνάρτηση κάθε φορά Έτσι, χρειαζόµαστε ξεχωριστές µνήµες εντολών και δεδοµένων Χρήση πολυπλεκτών όταν χρησιµοποιούνται διαφορετικές προελεύσεις δεδοµένων σε διαφορετικές εντολές Κεφάλαιο 4 Ο επεξεργαστής 18

ιαδροµή δεδοµένων για Τύπο R/Load/Store Κεφάλαιο 4 Ο επεξεργαστής 19

Πλήρης διαδροµή δεδοµένων Κεφάλαιο 4 Ο επεξεργαστής 20

Έλεγχος ALU Η ALU χρησιµοποιείται για Load/Store: λειτουργία = add Branch: λειτουργία = subtract Τύπου R: λειτουργία εξαρτάται από το πεδίο funct Έλεγχος ALU Λειτουργία 0000 AND 0001 OR 0010 add 0110 subtract 0111 set-on-less-than 1100 NOR 4.4 Μια απλή µέθοδος υλοποίησης Κεφάλαιο 4 Ο επεξεργαστής 21

Έλεγχος ALU Υποθέτουµε ότι ένα πεδίο 2 bit ALUOp εξάγεται από το opcode Συνδυαστική λογική εξάγει τον έλεγχο της ALU opcode ALUOp Λειτουργία funct ALU function ALU control lw 00 load word XXXXXX add 0010 sw 00 store word XXXXXX add 0010 beq 01 branch equal XXXXXX subtract 0110 R-type 10 add 100000 add 0010 subtract 100010 subtract 0110 AND 100100 AND 0000 OR 100101 OR 0001 set-on-less-than 101010 set-on-less-than 0111 Κεφάλαιο 4 Ο επεξεργαστής 22

Η κύρια µονάδα ελέγχου Σήµατα ελέγχου που εξάγονται από εντολή Τύπου R Load/ Store Branch 0 rs rt rd shamt funct 31:26 25:21 20:16 15:11 10:6 5:0 35 or 43 rs rt address 31:26 25:21 20:16 15:0 4 rs rt address 31:26 25:21 20:16 15:0 opcode πάντα ανάγνωση ανάγνωση, εκτός από τη load εγγραφή για τύπου R και load επέκταση προσήµου και πρόσθεση Κεφάλαιο 4 Ο επεξεργαστής 23

ιαδροµή δεδοµένων και έλεγχος Κεφάλαιο 4 Ο επεξεργαστής 24

Εντολή τύπου R Κεφάλαιο 4 Ο επεξεργαστής 25

Εντολή Load Κεφάλαιο 4 Ο επεξεργαστής 26

Εντολή Branch-on-Equal Κεφάλαιο 4 Ο επεξεργαστής 27

Υλοποίηση αλµάτων Jump 2 address Η Jump χρησιµοποιεί διεύθυνση λέξης Ενηµέρωση του PC µε συνένωση των Υψηλότερων 4 bit του παλιού PC ιεύθυνσης άλµατος των 26 bit 00 31:26 25:0 Χρειάζεται ένα επιπλέον σήµα ελέγχου από την αποκωδικοποίηση του opcode Κεφάλαιο 4 Ο επεξεργαστής 28

ιαδροµή δεδ. µε προσθήκη αλµάτων Κεφάλαιο 4 Ο επεξεργαστής 29

Ζητήµατα απόδοσης Η µεγαλύτερη καθυστέρηση καθορίζει την περίοδο ρολογιού Κρίσιµη διαδροµή (critical path): εντολή load Μνήµη εντολών αρχείο καταχωρητών ALU µνήµη δεδοµένων αρχείο καταχωρητών εν είναι εφικτή διαφορετική περίοδος για διαφορετικές εντολές Παραβιάζει τη σχεδιαστική αρχή Κάνε τη συνηθισµένη περίπτωση γρήγορη Θα βελτιώσουµε την απόδοση µε τη διοχέτευση (pipelining) Κεφάλαιο 4 Ο επεξεργαστής 30

Αναλογία διοχέτευσης Μπουγάδα µε διοχέτευση: επικάλυψη εκτέλεσης Η παραλληλία βελτιώνει την απόδοση Τέσσερα φορτία: Επιτάχυνση = 8/3.5 = 2.3 Ασταµάτητα: Κεφάλαιο 4 Ο επεξεργαστής 31 4.5 Γενικά για τη διοχέτευση Επιτάχυνση = 2n/(0.5n + 1.5) 4 = αριθµός σταδίων

ιοχέτευση του MIPS Πέντε στάδια (stages), ένα βήµα σε κάθε στάδιο 1. IF: Instruction fetch from memory (προσκόµιση εντολής από τη µνήµη) 2. ID: Instruction decode & register read (αποκωδικοποίηση εντολής & ανάγνωση καταχωρητών) 3. EX: Execute operation or calculate address (εκτέλεση λειτουργίας ή υπολογισµός δ/νσης) 4. MEM: Access memory operand (προσπέλαση τελεστέου µνήµης) 5. WB: Write result back to register (επανεγγραφή αποτελέσµατος σε καταχωρητή) Κεφάλαιο 4 Ο επεξεργαστής 32

Απόδοση διοχέτευσης Υποθέστε ότι ο χρόνος των σταδίων είναι 100ps για ανάγνωση ή εγγραφή καταχωρητή 200ps για τα άλλα στάδια Σύγκριση της διαδροµής δεδοµένων µε διοχέτευση µε τη διαδροµή δεδοµένων ενός κύκλου Εντολή Instr fetch Register read ALU op Memory access Register write Συνολικός χρόνος lw 200ps 100 ps 200ps 200ps 100 ps 800ps sw 200ps 100 ps 200ps 200ps 700ps R-format 200ps 100 ps 200ps 100 ps 600ps beq 200ps 100 ps 200ps 500ps Κεφάλαιο 4 Ο επεξεργαστής 33

Απόδοση διοχέτευσης Ενός κύκλου (T c = 800ps) Με διοχέτευση (T c = 200ps) Κεφάλαιο 4 Ο επεξεργαστής 34

Επιτάχυνση λόγω διοχέτευσης Αν είναι ισορροπηµένα όλα τα στάδια ηλαδή, όλα διαρκούν τον ίδιο χρόνο Χρόνος µεταξύ εντολών µε διοχέτευση = Χρόνος µεταξύ εντολών χωρίς διοχέτευση Αριθµός σταδίων Αν δεν είναι ισορροπηµένα, η επιτάχυνση είναι µικρότερη Επιτάχυνση λόγω αυξηµένης διεκπεραιωτικής ικανότητας (throughput) Λανθάνων χρόνος latency (χρόνος για κάθε εντολή) δε µειώνεται Κεφάλαιο 4 Ο επεξεργαστής 35

Παράδειγµα Σύγκριση Πρόγραµµα µε 10% loads, 15% stores, 55% R-type, 20% διακλαδώσεις Πλήθος εντολών 10 9 Με δεδοµένους τους λανθάνοντες χρόνους που είδαµε Βρείτε το χρόνο εκτέλεσης για: ιαδροµή δεδοµένων 1 κύκλου ιαδροµή δεδοµένων πολλών κύκλων ιαδροµή δεδοµένων µε ιδανική διοχέτευση Χωρίς καθυστερήσεις Κεφάλαιο 4 Ο επεξεργαστής 36

Απάντηση ιαδροµή δεδοµένων 1 κύκλου Η περίοδος του ρολογιού είναι 800 ps Χρόνος εκτέλεσης = Ι x CPI x Χρόνος κύκλου = 10 9 x 1 x 800 x 10-12 = 0,80 sec ιαδροµή δεδοµένων πολλών κύκλων Περίοδος ρολογιού 200 ps CPI = 0,10 x 5 + 0,15 x 4 + 0,55 x 4 + 0,20 x 3 = 3,9 Χρόνος εκτέλεσης = Ι x CPI x Χρόνος κύκλου = 10 9 x 3,9 x 200 x 10-12 = 0,78 sec ιαδροµή δεδοµένων µε ιδανική διοχέτευση Χωρίς καθυστερήσεις Χρόνος εκτέλεσης = Ι x CPI x Χρόνος κύκλου = 10 9 x 1 x 200 x 10-12 = 0,20 sec Κεφάλαιο 4 Ο επεξεργαστής 37

ιοχέτευση και σχεδίαση συνόλου εντολών Το σύνολο εντολών του MIPS είναι σχεδιασµένο για διοχέτευση Όλες οι εντολές είναι των 32 bit Ευκολότερη προσκόµιση και αποκωδικοποίηση σε έναν κύκλο σύγκριση µε x86: εντολές 1 έως 17 byte Λίγες και κανονικές µορφές εντολών Μπορεί να αποκωδικοποιήσει και να διαβάσει καταχωρητές σε ένα βήµα ιευθυνσιοδότηση Load/store Μπορεί να υπολογίσει τη δ/νση στο τρίτο στάδιο, και να προσπελάσει τη µνήµη στο τέταρτο στάδιο Ευθυγράµµιση των τελεστέων µνήµης Προσπέλαση µνήµης διαρκεί µόνο έναν κύκλο Κεφάλαιο 4 Ο επεξεργαστής 38

Κίνδυνοι (hazards) Καταστάσεις που αποτρέπουν την εκκίνηση της επόµενης εντολής στον επόµενη κύκλο Κίνδυνος δοµής (structure hazards) Ένας απαιτούµενος πόρος είναι απασχοληµένος Κίνδυνος δεδοµένων (data hazard) Πρέπει να περιµένει την προηγούµενη εντολή να ολοκληρώσει την ανάγνωση/εγγραφή δεδοµένων της Κίνδυνος ελέγχου (control hazard) Η απόφαση σε µια ενέργεια ελέγχου εξαρτάται από προηγούµενη εντολή Κεφάλαιο 4 Ο επεξεργαστής 39

Κίνδυνοι δοµής ιένεξη στη χρήση ενός πόρου Στη διοχέτευση του MIPS µε µία µοναδική µνήµη Οι εντολές load/store απαιτούν προσπέλαση µνήµης Η προσκόµιση εντολής πρέπει να καθυστερήσει (stall) σε εκείνο το κύκλο Θα προκαλούσε «φυσαλίδα» της διοχέτευσης (pipeline bubble ) Έτσι, οι διαδροµές δεδοµένων µε διοχέτευση απαιτούν ξεχωριστές µνήµες εντολών/δεδοµένων Ή ξεχωριστές κρυφές µνήµες (cache memories) εντολών/δεδοµένων Κεφάλαιο 4 Ο επεξεργαστής 40

Κίνδυνοι δεδοµένων Μια εντολή εξαρτάται από την ολοκλήρωση µιας προσπέλασης δεδοµένων µιας προηγούµενης εντολής add $s0, $t0, $t1 sub $t2, $s0, $t3 Κεφάλαιο 4 Ο επεξεργαστής 41

Προώθηση (Forwarding) Λέγεται επίσης Παράκαµψη (Bypassing) Χρήση του αποτελέσµατός όταν δηµιουργηθεί Μην περιµένεις να αποθηκευτεί σε καταχωρητή Απαιτεί επιπλέον συνδέσεις στη διαδροµή δεδοµένων Κεφάλαιο 4 Ο επεξεργαστής 42

Κίνδυνος δεδοµένων Φόρτωσης/Χρήσης Φόρτωση/Χρήση (Load/Use) εν µπορούµε να αποφύγουµε πάντα τις καθυστερήσεις µε την προώθηση Αν η τιµή δεν έχει υπολογιστεί όταν χρειάζεται εν µπορεί να γίνει προώθηση προς τα πίσω στο χρόνο! Κεφάλαιο 4 Ο επεξεργαστής 43

Χρονοπρογρ/µός κώδικα για αποφυγή καθυστερήσεων Αναδιάταξη κώδικα για αποφυγή χρήσης του αποτελέσµατος της load στην επόµενη εντολή Κώδικας C για τοa = B + E; C = B + F; καθυστέρηση καθυστέρηση lw $t1, 0($t0) lw $t2, 4($t0) add $t3, $t1, $t2 sw $t3, 12($t0) lw $t4, 8($t0) add $t5, $t1, $t4 sw $t5, 16($t0) 13 κύκλοι lw $t1, 0($t0) lw $t2, 4($t0) lw $t4, 8($t0) add $t3, $t1, $t2 sw $t3, 12($t0) add $t5, $t1, $t4 sw $t5, 16($t0) 11 κύκλοι Κεφάλαιο 4 Ο επεξεργαστής 44

Κίνδυνοι ελέγχου Η διακλάδωση καθορίζει τη ροή του ελέγχου (flow of control) Η προσκόµιση της επόµενης εντολής εξαρτάται από το αποτέλεσµα της διακλάδωσης Η διοχέτευση δεν µπορεί να προσκοµίσει πάντα τη σωστή εντολή Ακόµη δουλεύει στο στάδιο ID της διακλάδωσης Στη διοχέτευση του MIPS Πρέπει να συγκρίνει καταχωρητές και να υπολογίσει τη δ/νση προορισµού νωρίς στη διοχέτευση Προσθήκη υλικού για να γίνουν στο στάδιο ID Κεφάλαιο 4 Ο επεξεργαστής 45

Καθυστέρηση σε διακλάδωση Stall on branch Περίµενε µέχρι να καθοριστεί το αποτέλεσµα της διακλάδωσης πριν προσκοµίσεις την επόµενη εντολή Κεφάλαιο 4 Ο επεξεργαστής 46

Πρόβλεψη διακλάδωσης Branch prediction Οι µεγαλύτερες διοχετεύσεις δεν µπορούν να καθορίσουν σύντοµα το αποτέλεσµα της διακλάδωσης Η ποινή καθυστέρησης (stall penalty) γίνεται υπερβολικά µεγάλη Πρόβλεψη (predict) του αποτελέσµατος της διακλάδωσης Καθυστέρηση µόνο αν η πρόβλεψη είναι λανθασµένη Στη διοχέτευση του MIPS Μπορεί να γίνει πρόβλεψη µη λήψης της διακλάδωσης (predict not taken) Προσκόµιση της εντολής µετά τη διακλάδωση, χωρίς καθόλου καθυστέρηση Κεφάλαιο 4 Ο επεξεργαστής 47

MIPS µε πρόβλεψη µη λήψης Σωστή πρόβλεψη Λανθασµένη πρόβλεψη Κεφάλαιο 4 Ο επεξεργαστής 48

Πιο ρεαλιστική πρόβλεψη διακλάδωσης Στατική πρόβλεψη διακλάδωσης Βασίζεται στην τυπική συµπεριφορά των διακλαδώσεων Παράδειγµα: διακλαδώσεις σε βρόχους και εντολές if Πρόβλεψη διακλαδώσεων προς τα πίσω (backward branches) ως λαµβανόµενες Πρόβλεψη διακλαδώσεων προς τα εµπρός (forward branches) ως µη λαµβανόµενες υναµική πρόβλεψη διακλάδωσης Το υλικό µετράει τη πραγµατική συµπεριφορά διακλαδώσεων π.χ., καταγράφει την πρόσφατη ιστορία κάθε διακλάδωσης Υποθέτει ότι η µελλοντική συµπεριφορά θα συνεχίσει την τάση Σε περίπτωση λάθους, γίνεται καθυστέρηση κατά την επαναπροσκόµιση, και ενηµέρωση του ιστορικού Κεφάλαιο 4 Ο επεξεργαστής 49

«Καθυστερηµένες» διακλαδώσεις Καθυστερηµένες διακλαδώσεις [delayed branches] Ιδέα: καθυστέρησε να πάρεις απόφαση για µια διακλάδωση Αυτό υλοποιεί ο MIPS Μια «καθυστερηµένη» διακλάδωση εκτελεί πάντα την επόµενη της εντολή εν ελέγχει την «ορθότητα» αυτής της επιλογής Πρέπει η επόµενη εντολή να κάνει «άσχετο» µε τη διακλάδωση έργο Στο προηγούµενο παράδειγµα, η add $4, $5, $6 µπορεί να µεταφερθεί µετά τη beq εν θα αλλάξει τίποτε και θα αποφευχθεί ο 1 κύκλος καθυστέρησης Αυτό το κάνουν οι µεταγλωττιστές Κεφάλαιο 4 Ο επεξεργαστής 50

Περίληψη διοχέτευσης ΓΕΝΙΚΗ εικόνα Η διοχέτευση βελτιώνει την απόδοση µε την αύξηση της διεκπεραιωτικής ικανότητας σε εντολές Εκτελεί πολλές εντολές παράλληλα Κάθε εντολή έχει τον ίδιο λανθάνοντα χρόνο Υπόκειται σε κινδύνους οµής, δεδοµένων, ελέγχου Η σχεδίαση του συνόλου εντολών επιδρά στην πολυπλοκότητα της υλοποίησης της διοχέτευσης Κεφάλαιο 4 Ο επεξεργαστής 51

Στάδια της διοχέτευσης 1. IF: Instruction fetch from memory (προσκόµιση εντολής από τη µνήµη) 2. ID: Instruction decode & register read (αποκωδικοποίηση εντολής & ανάγνωση καταχωρητών) 3. EX: Execute operation or calculate address (εκτέλεση λειτουργίας ή υπολογισµός δ/νσης) 4. MEM: Access memory operand (προσπέλαση τελεστέου µνήµης) 5. WB: Write result back to register (επανεγγραφή αποτελέσµατος σε καταχωρητή) Κεφάλαιο 4 Ο επεξεργαστής 52 4.6 ιαδροµή δεδοµένων και έλεγχος µε διοχέτευση

ιαδροµή δεδοµένων MIPS µε διοχέτευση IF ID EX MEM WB MEM Ροή από δεξιά προς αριστερά οδηγεί σε κινδύνους (hazards) WB Κεφάλαιο 4 Ο επεξεργαστής 53

Καταχωρητές διοχέτευσης Χρειάζονται καταχωρητές ανάµεσα στα στάδια Για να κρατήσουν πληροφορίες που παράγονται στον προηγούµενο κύκλο IF/ID ID/ΕΧ ΕΧ/ΜΕΜ ΜΕΜ/WB Κεφάλαιο 4 Ο επεξεργαστής 54

Λειτουργία διοχέτευσης Ανά κύκλο ροή των εντολών µέσα από τη διαδροµή δεδοµένων µε διοχέτευση ύο τρόποι αναπαράστασης: ιάγραµµα διοχέτευσης «ενός κύκλου ρολογιού» ( single-clock-cycle ) είχνει τη χρήση της διοχέτευσης σε ένα µόνο κύκλο Τονίζει τους πόρους που χρησιµοποιούνται Σύγκριση µε διάγραµµα «πολλών κύκλων ρολογιού» ( multi-clock-cycle ) Γράφηµα της λειτουργίας στο χρόνο Θα δούµε διαγράµµατα «ενός κύκλου ρολογιού» για εντολές load και store Κεφάλαιο 4 Ο επεξεργαστής 55

Στάδιο IF για Load, Store, Κεφάλαιο 4 Ο επεξεργαστής 56

Στάδιο ID για Load, Store, Κεφάλαιο 4 Ο επεξεργαστής 57

Στάδιο EX για Load Κεφάλαιο 4 Ο επεξεργαστής 58

Στάδιο MEM για Load Κεφάλαιο 4 Ο επεξεργαστής 59

Στάδιο WB για Load Λάθος αριθµός καταχωρητή Κεφάλαιο 4 Ο επεξεργαστής 60

ιορθωµένη διαδροµή Load Κεφάλαιο 4 Ο επεξεργαστής 61

Χρήση διαδροµής από τη Load Κεφάλαιο 4 Ο επεξεργαστής 62

Στάδιο EX για Store Κεφάλαιο 4 Ο επεξεργαστής 63

Στάδιο MEM για Store Κεφάλαιο 4 Ο επεξεργαστής 64

Στάδιο WB για Store Κεφάλαιο 4 Ο επεξεργαστής 65

ιάγραµµα πολλών κύκλων Μορφή που δείχνει τη χρήση των πόρων Κεφάλαιο 4 Ο επεξεργαστής 66

ιάγραµµα διοχέτευσης πολλών κύκλων Παραδοσιακή µορφή Κεφάλαιο 4 Ο επεξεργαστής 67

ιάγραµµα διοχέτευσης ενός κύκλου Κατάσταση της διοχέτευσης σε δεδοµένο κύκλο Κεφάλαιο 4 Ο επεξεργαστής 68

Έλεγχος διοχέτευσης (απλουσ.) Κεφάλαιο 4 Ο επεξεργαστής 69

Πίνακας αληθείας ελέγχου Κωδικός λειτουργίας εντολής (opcode) ALUOp Λειτουργία εντολής Πεδίο funct Επιθυµητή ενέργεια ALU Είσοδος ελέγχου ALU LW 00 load word XXXXXX add 0010 SW 00 store word XXXXXX add 0010 Branch equal 01 branch equal XXXXXX subtract 0110 Τύπου R 10 add 100000 add 0010 Τύπου R 10 subtract 100010 subtract 0110 Τύπου R 10 AND 100100 AND 0000 Τύπου R 10 OR 100101 OR 0001 Τύπου R 10 set on less than 101010 set on less than 0111 Κεφάλαιο 4 Ο επεξεργαστής 70

Ερµηνεία σηµάτων ελέγχου Όνοµα σήµατος RegDst Αποτέλεσµα όταν είναι απενεργοποιηµένο (0) Ο αριθµός καταχωρητή προορισµού για τον Καταχωρητή εγγραφής προέρχεται από το πεδίο rt (bit 20:16). Αποτέλεσµα όταν είναι ενεργοποιηµένο (1) Ο αριθµός καταχωρητή προορισµού για τον Καταχωρητή εγγραφής προέρχεται από το πεδίο rd (bit 15:11). RegWrite Κανένα. Στον καταχωρητή στην είσοδο Καταχωρητή εγγραφής γράφεται η τιµή που περιέχεται στην είσοδο εδοµένων εγγραφής. ALUSrc PCSrc Ο δεύτερος τελεστέος της ALU προέρχεται από τη δεύτερη έξοδο του αρχείου καταχωρητών ( εδοµένα ανάγνωσης 2). Ο PC αντικαθίσταται από την έξοδο του αθροιστή που υπολογίζει την τιµή PC + 4. Ο δεύτερος τελεστέος της ALU είναι τα κατώτερα 16 bit της εντολής αφού υποστούν επέκταση προσήµου. Ο PC αντικαθίσταται από την έξοδο του αθροιστή που υπολογίζει τον προορισµό τής διακλάδωσης. MemRead Κανένα. Τα περιεχόµενα της µνήµης δεδοµένων που καθορίζονται από την είσοδο ιεύθυνσης τοποθετούνται στην έξοδο εδοµένων ανάγνωσης. MemWrite Κανένα. Τα περιεχόµενα της µνήµης δεδοµένων που καθορίζονται από την είσοδο ιεύθυνσης αντικαθίστανται από την τιµή στην είσοδο εδοµένων εγγραφής. MemtoReg Η τιµή που παρέχεται στην είσοδο εδοµένων εγγραφής των καταχωρητών προέρχεται από την ALU. Η τιµή που παρέχεται στην είσοδο εδοµένων εγγραφής των καταχωρητών προέρχεται από τη µνήµη δεδοµένων. Κεφάλαιο 4 Ο επεξεργαστής 71

Σήµατα ανά στάδιο Γραµµές ελέγχου σταδίου Εκτέλεσης/υπολογισµού διεύθυνσης (EX) Γραµµές ελέγχου σταδίου Προσπέλασης µνήµης (MEM) Γραµµές ελέγχου σταδίου Επανεγγραφής (WB) Εντολή RegDst ALU Op1 ALU Op0 ALUSrc Branch Mem Read Mem Write RegWrite Memto Reg Μορφή R 1 1 0 0 0 0 0 1 0 lw 0 0 0 1 0 1 0 1 1 sw X 0 0 1 0 0 1 0 X beq X 0 1 0 1 0 0 0 X Κεφάλαιο 4 Ο επεξεργαστής 72

Έλεγχος διοχέτευσης Σήµατα ελέγχου εξάγονται από την εντολή Όπως και στην υλοποίηση ενός κύκλου Κεφάλαιο 4 Ο επεξεργαστής 73

Έλεγχος διοχέτευσης Κεφάλαιο 4 Ο επεξεργαστής 74

Κίνδυνοι δεδοµένων σε εντολές ALU Θεωρήστε την ακολουθία: sub $2, $1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) Μπορούµε να επιλύσουµε τους κινδύνους µε προώθηση (forwarding) Πώς ανιχνεύουµε πότε πρέπει να γίνει προώθηση; 4.7 Κίνδυνοι δεδοµένων: προώθηση και καθυστέρηση Κεφάλαιο 4 Ο επεξεργαστής 75

Εξαρτήσεις και προώθηση Κεφάλαιο 4 Ο επεξεργαστής 76

Ανίχνευση ανάγκης για προώθηση Μεταβίβαση αριθµών καταχωρητών µέσα στη διοχέτευση π.χ., ID/EX.RegisterRs = αριθµός καταχωρητή για το Rs που βρίσκεται στον καταχωρητή διοχέτευσης ID/EX Οι αριθµοί καταχωρητών των τελεστέων της ALU στο στάδιο EX δίνονται από τα ID/EX.RegisterRs, ID/EX.RegisterRt Κίνδυνοι δεδοµένων όταν 1α. EX/MEM.RegisterRd = ID/EX.RegisterRs 1β. EX/MEM.RegisterRd = ID/EX.RegisterRt 2α. MEM/WB.RegisterRd = ID/EX.RegisterRs 2β. MEM/WB.RegisterRd = ID/EX.RegisterRt Προωθ. από EX/MEM καταχ. διοχ. Προώθ. από MEM/WB καταχ. διοχ. Κεφάλαιο 4 Ο επεξεργαστής 77

Ανίχνευση ανάγκης για προώθηση Αλλά µόνο αν η εντολή που προωθεί πρόκειται να γράψει σε κάποιο καταχωρητή! EX/MEM.RegWrite, MEM/WB.RegWrite Και µόνο αν το Rd της εντολής δεν είναι ο καταχωρητής $zero! EX/MEM.RegisterRd 0, MEM/WB.RegisterRd 0 Κεφάλαιο 4 Ο επεξεργαστής 78

Χωρίς προώθηση Κεφάλαιο 4 Ο επεξεργαστής 79

ιαδροµές προώθησης 3 4 6 1 2 5 Κεφάλαιο 4 Ο επεξεργαστής 80

Συνθήκες προώθησης Κίνδυνος στο στάδιο EX if (EX/MEM.RegWrite and (EX/MEM.RegisterRd 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) ForwardA = 10 if (EX/MEM.RegWrite and (EX/MEM.RegisterRd 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) ForwardB = 10 Κίνδυνος στο στάδιο MEM if (MEM/WB.RegWrite and (MEM/WB.RegisterRd 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01 if (MEM/WB.RegWrite and (MEM/WB.RegisterRd 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = 01 Κεφάλαιο 4 Ο επεξεργαστής 81

Έλεγχος προώθησης Έλεγχος πολυπλέκτη Προέλευση Ερµηνεία ForwardA = 00 ID/EX Ο πρώτος τελεστέος της ALU προέρχεται από το αρχείο καταχωρητών. 1 ForwardA = 10 EX/MEM Ο πρώτος τελεστέος της ALU προωθείται από το προηγούµενο αποτέλεσµα της ALU. ForwardA = 01 MEM/WB Ο πρώτος τελεστέος της ALU προωθείται από τη µνήµη δεδοµένων ή από ένα προηγούµενο αποτέλεσµα της ALU. ForwardΒ = 00 ID/EX Ο δεύτερος τελεστέος της ALU προέρχεται από το αρχείο καταχωρητών. ForwardΒ = 10 EX/MEM Ο δεύτερος τελεστέος της ALU προωθείται από το προηγούµενο αποτέλεσµα της ALU. ForwardΒ = 01 MEM/WB Ο δεύτερος τελεστέος της ALU προωθείται από τη µνήµη δεδοµένων ή από ένα προηγούµενο αποτέλεσµα της ALU. 6 2 3 4 5 Κεφάλαιο 4 Ο επεξεργαστής 82

ιπλός κίνδυνος δεδοµένων Θεωρήστε την ακολουθία: add $1,$1,$2 add $1,$1,$3 add $1,$1,$4 Συµβαίνουν και οι δύο κίνδυνοι Θέλουµε να χρησιµοποιήσουµε τον πιο πρόσφατο Αναθεώρηση της συνθήκης προώθησης του MEM Προώθηση µόνο αν η συνθήκη κινδύνου του σταδίου EX δεν είναι αληθής Κεφάλαιο 4 Ο επεξεργαστής 83

Αναθεωρηµένη συνθήκη προώθησης Κίνδυνος στο στάδιο MEM if (MEM/WB.RegWrite and (MEM/WB.RegisterRd 0) and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01 if (MEM/WB.RegWrite and (MEM/WB.RegisterRd 0) and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = 01 Κεφάλαιο 4 Ο επεξεργαστής 84

ιαδροµή δεδοµένων µε προώθηση Κεφάλαιο 4 Ο επεξεργαστής 85

ιαδοχικές lw & sw lw $t7,0($sp) Πρέπει να προστεθεί προώθηση από το MEM στο MEM sw $t7,0($s6) Εδώ τι γίνεται; Κεφάλαιο 4 Ο επεξεργαστής 86

Προώθηση immediate πεδίου Άλλος ένας πολυπλέκτης Κεφάλαιο 4 Ο επεξεργαστής 87

Κίνδυνος δεδοµένων φόρτωσης-χρήσης Απαιτείται καθυστέρηση για έναν κύκλο Κεφάλαιο 4 Ο επεξεργαστής 88

Ανίχνευση κινδύνου φόρτωσης-χρήσης Έλεγχος όταν η εντολή που κάνει τη χρήση αποκωδικοποιείται στο στάδιο ID Οι αριθµοί των καταχωρητών τελεστέων της ALU στο στάδιο ID δίνονται από τα IF/ID.RegisterRs, IF/ID.RegisterRt Κίνδυνος φόρτωσης-χρήσης όταν ID/EX.MemRead and ((ID/EX.RegisterRt = IF/ID.RegisterRs) or (ID/EX.RegisterRt = IF/ID.RegisterRt)) Αν ανιχνευθεί, γίνεται καθυστέρηση της διοχέτευσης και εισάγεται φυσαλίδα Κεφάλαιο 4 Ο επεξεργαστής 89

Πώς καθυστερεί η διοχέτευση Οι τιµές ελέγχου στον καταχωρητή ID/EX γίνονται 0 Τα EX, MEM και WB εκτελούν nop (no-operation, απραξία) Αποτρέπεται η ενηµέρωση του PC και του καταχωρητή IF/ID Η εντολή που κάνει τη χρήση αποκωδικοποιείται και πάλι Η επόµενη εντολή προσκοµίζεται και πάλι Η καθυστέρηση 1 κύκλου επιτρέπει στο MEM να διαβάσει τα δεδοµένα για την εντολή lw Μπορεί στη συνέχεια να κάνει προώθηση στο στάδιο EX Κεφάλαιο 4 Ο επεξεργαστής 90

Καθυστέρηση/φυσαλίδα στη διοχέτευση Η καθυστέρηση εισάγεται εδώ Κεφάλαιο 4 Ο επεξεργαστής 91

Καθυστέρηση/φυσαλίδα στη διοχέτευση καθυστερεί στο ID καθυστερεί στο IF Ή, για την ακρίβεια Κεφάλαιο 4 Ο επεξεργαστής 92

ιαδροµή δεδοµένων µε ανίχνευση κινδύνων Κεφάλαιο 4 Ο επεξεργαστής 93

Μεγάλο παράδειγµα Θα δούµε την εκτέλεση του κώδικα: lw $2, 20($1) and $4, $2, $5 or $4, $4, $2 add $9, $4, $2 Σε διαδοχικά διαγράµµατα Κεφάλαιο 4 Ο επεξεργαστής 94

Κύκλος 2 Κεφάλαιο 4 Ο επεξεργαστής 95

Κύκλος 3 Κεφάλαιο 4 Ο επεξεργαστής 96

Κύκλος 4 Κεφάλαιο 4 Ο επεξεργαστής 97

Κύκλος 5 Κεφάλαιο 4 Ο επεξεργαστής 98

Κύκλος 6 Κεφάλαιο 4 Ο επεξεργαστής 99

Κύκλος 7 Κεφάλαιο 4 Ο επεξεργαστής 100

Καθυστερήσεις και απόδοση ΓΕΝΙΚΗ εικόνα Οι καθυστερήσεις µειώνουν την απόδοση Αλλά είναι απαραίτητες για να πάρουµε σωστά αποτελέσµατα Ο µεταγλωττιστής µπορεί να αναδιατάξει τον κώδικα για να αποφευχθούν οι κίνδυνοι και οι καθυστερήσεις Απαιτεί γνώση της δοµής της διοχέτευσης Κεφάλαιο 4 Ο επεξεργαστής 101

Κίνδυνοι διακλάδωσης Αν το αποτέλεσµα της διακλάδωσης καθορίζεται στο MEM Ποινή διακλάδωσης (branch penalty) = 3 κύκλοι 4.8 Κίνδυνοι ελέγχου Εκκένωση αυτών των εντολών (τιµές ελέγχου στο 0) PC Κεφάλαιο 4 Ο επεξεργαστής 102

Μείωση καθυστέρησης διακλάδωσης Μεταφορά υλικού για προσδιορισµό αποτελέσµατος στο στάδιο ID Αθροιστής διεύθυνσης προορισµού Εφικτό στο στάδιο ID Συγκριτής καταχωρητών Επίσης εφικτό στο στάδιο ID Παράδειγµα: λαµβανόµενη διακλάδωση 36: sub $10, $4, $8 40: beq $1, $3, 7 44: and $12, $2, $5 48: or $13, $2, $6 52: add $14, $4, $2 56: slt $15, $6, $7... 72: lw $4, 50($7) προορισµός = 40 + 4 + 7*4 = 72 Κεφάλαιο 4 Ο επεξεργαστής 103

Παράδειγµα: λαµβανόµενη διακλάδωση Κεφάλαιο 4 Ο επεξεργαστής 104

Παράδειγµα: λαµβανόµενη διακλάδωση Κεφάλαιο 4 Ο επεξεργαστής 105

Κίνδυνοι δεδοµένων για διακλαδώσεις (1) Αν ένας καταχωρητής σύγκρισης στη διακλάδωση είναι προορισµός εντολής ALU που προηγείται κατά 2 ή 3 θέσεις; Υπάρχει κίνδυνος; add $1, $2, $3 IF ID EX MEM WB add $4, $5, $6 IF ID EX MEM WB IF ID EX MEM WB beq $1, $4, target IF ID EX MEM WB Ναι, και µπορεί να λυθεί µε προώθηση Προσθέτουµε νέες διαδροµές προώθησης (από το ΕΧ και το ΜΕΜ προς το συγκριτή του σταδίου ID Κεφάλαιο 4 Ο επεξεργαστής 106

Κίνδυνοι δεδοµένων για διακλαδώσεις (2) Αν ένας καταχωρητής σύγκρισης είναι προορισµός εντολής ALU που προηγείται αµέσως ή εντολής φόρτωσης που προηγείται κατά 2 θέσεις. Υπάρχει κίνδυνος; Ναι, και χρειάζεται 1 κύκλος καθυστέρησης για να γίνει προώθηση από το MEM και το EX στο ID lw $1, addr IF ID EX MEM WB add $4, $5, $6 IF ID EX MEM WB beq stalled IF ID beq $1, $4, target ID EX MEM WB Κεφάλαιο 4 Ο επεξεργαστής 107

Κίνδυνοι δεδοµένων για διακλαδώσεις (3) Αν ένας καταχωρητής σύγκρισης είναι προορισµός µιας εντολής φόρτωσης που προηγείται αµέσως. Υπάρχει κίνδυνος; Ναι, και χρειάζονται 2 κύκλοι καθυστέρησης για να γίνει προώθηση lw $1, addr IF ID EX MEM WB beq stalled IF ID beq stalled ID beq $1, $0, target ID EX MEM WB Κεφάλαιο 4 Ο επεξεργαστής 108

υναµική πρόβλεψη διακλάδωσης Σε µεγάλες και υπερβαθµωτές διοχετεύσεις, η ποινή διακλάδωσης (branch penalty) είναι πιο σηµαντική Χρήση δυναµικής πρόβλεψης Προσωρινή µνήµη πρόβλεψης διακλάδωσης (branch prediction buffer), που λέγεται και πίνακας ιστορικού διακλάδωσης (branch history table) του 1 bit εικτοδοτείται από τις διευθύνσεις της πρόσφατης εντολής διακλάδωσης Αποθηκεύει το αποτέλεσµα (λήψη/µη λήψη) Για εκτέλεση µιας διακλάδωσης Έλεγχος του πίνακα, υπόθεση του ίδιου αποτελέσµατος Εκκίνηση προσκόµισης από την επόµενη ή τον προορισµό Αν λάθος, εκκένωση διοχέτευσης και αντιστροφή πρόβλεψης Κεφάλαιο 4 Ο επεξεργαστής 109

ιάταξη πρόβλεψης 1 bit: µειονέκτηµα Οι διακλαδώσεις του εσωτερικού βρόχου προβλέπονται λανθασµένα δύο φορές outer: inner: beq,, inner beq,, outer Λανθασµένη πρόβλεψη λήψης στην τελευταία επανάληψη του εσωτερικού βρόχου Έπειτα, λανθασµένη πρόβλεψη µη λήψης στην πρώτη επανάληψη του εσωτερικού βρόχου την επόµενη φορά που θα εκτελεστεί Κεφάλαιο 4 Ο επεξεργαστής 110

ιάταξη πρόβλεψης των 2 bit Αλλάζει η πρόβλεψη µόνο µετά από δύο διαδοχικές λανθασµένες προβλέψεις Κεφάλαιο 4 Ο επεξεργαστής 111

Καθυστερηµένη διακλάδωση Πιθανές θέσεις για «γέµισµα» Κεφάλαιο 4 Ο επεξεργαστής 112

Υπολογισµός προορισµού διακλάδωσης Ακόµη και µε πρόβλεψη λήψης/µη-λήψης, πρέπει ακόµη να υπολογιστεί η διεύθυνση διακλάδωσης Ποινή 1 κύκλου για λαµβανόµενη διακλάδωση Γιατί; Επειδή υπολογίζεται στο ID Προσωρινή µνήµη προορισµού διακλάδωσης (branch target buffer) Κρυφή µνήµη για διευθύνσεις προορισµού εικτοδοτείται από τον PC όταν προσκοµίζεται η εντολή Αν υπάρχει ευστοχία (hit) και η εντολή είναι διακλάδωση µε πρόβλεψη λήψης, µπορεί να γίνει άµεση προσκόµιση του προορισµού Κεφάλαιο 4 Ο επεξεργαστής 113

Προχωρηµένες προβλέψεις διάταξη πρόβλεψης συσχέτισης (correlating predictor) Μια διάταξη πρόβλεψης διακλάδωσης που συνδυάζει τοπική συµπεριφορά µιας συγκεκριµένης διακλάδωσης µε καθολικές πληροφορίες σχετικά µε τη συµπεριφορά ενός αριθµού διακλαδώσεων που εκτελέστηκαν πρόσφατα. επιλεκτική διάταξη πρόβλεψης διακλάδωσης (tournament branch predictor) ιάταξη πρόβλεψης διακλάδωσης µε πολλές προβλέψεις για κάθε διακλάδωση, και ένα µηχανισµό επιλογής που διαλέγει ποια διάταξη πρόβλεψης να ενεργοποιήσει για µια δεδοµένη διακλάδωση. Κεφάλαιο 4 Ο επεξεργαστής 114

Τελική διαδροµή δεδοµένων Κεφάλαιο 4 Ο επεξεργαστής 115

Εξαιρέσεις και διακοπές «Μη αναµενόµενα» συµβάνται που απαιτούν αλλαγή της ροής του ελέγχου ιαφορετικές αρχιτεκτονικές συνόλου εντολών χρησιµοποιούν τους όρους διαφορετικά Εξαίρεση (exception) Παρουσιάζεται µέσα στη CPU π.χ., µη ορισµένος κωδικός λειτουργίας (undefined opcode), υπερχείλιση (overflow), κλήση συστήµατος (syscall), ιακοπή (interrupt) Από έναν εξωτερικό ελεγκτή εισόδου/εξόδου ύσκολος ο χειρισµός τους χωρίς να θυσιαστεί απόδοση 4.9 Εξαιρέσεις Κεφάλαιο 4 Ο επεξεργαστής 116

Ορολογία MIPS Τύπος συµβάντος Προέλευση Ορολογία MIPS Αίτηση συσκευής Εξωτερική ιακοπή εισόδου/εξόδου Κλήση του λειτουργικού Εσωτερική Εξαίρεση συστήµατος από το πρόγραµµα του χρήστη Αριθµητική υπερχείλιση Εσωτερική Εξαίρεση Χρήση µη ορισµένης εντολής Εσωτερική Εξαίρεση υσλειτουργίες υλικού Οποιοδήποτε από τα δύο Εξαίρεση ή διακοπή Κεφάλαιο 4 Ο επεξεργαστής 117

Χειρισµός εξαιρέσεων Στο MIPS, τις εξαιρέσεις διαχειρίζεται ένας Συνεπεξεργαστής Ελέγχου Συστήµατος (System Control Coprocessor), ο CP0 Αποθήκευση του PC της εντολής που διακόπτεται Στο MIPS: Exception Program Counter (EPC) Αποθήκευση της ένδειξης του προβλήµατος Στον MIPS: καταχωρητής Cause (Αιτίου) Υποθέτουµε 1 bit µόνο (στην πράξη είναι περισσότερα) 0 για µη ορισµένο κωδικό λειτουργίας (undefined opcode), και 1 για υπερχείλιση Άλµα στο χειριστή (handler) στη δ/νση 0x 8000 00180 Κεφάλαιο 4 Ο επεξεργαστής 118

Εναλλακτικός µηχανισµός ιανυσµατικές διακοπές (vectored interrupts) Η δ/νση του χειριστή καθορίζεται από την αιτία Παράδειγµα: Μη ορισµένος opcode: C000 0000 Υπερχείλιση: C000 0020 : C000 0040 Οι εντολές είτε Ασχολούνται µε τη διακοπή, είτε Κάνουν άλµα στον πραγµατικό χειριστή Κεφάλαιο 4 Ο επεξεργαστής 119

Ενέργειες του χειριστή Ανάγνωση αιτίου, και µετάβαση στο σχετικό χειριστή Καθορισµός απαιτούµενης ενέργειας Αν η εντολή είναι επανεκκινήσιµη (restartable) Εκτέλεση διορθωτικής ενέργειας Χρήση του EPC για επιστροφή στο πρόγραµµα Αλλιώς Τερµατισµός προγράµµατος Αναφορά σφάλµατος µε χρήση του EPC, του αιτίου, Κεφάλαιο 4 Ο επεξεργαστής 120

Εξαιρέσεις σε µια διοχέτευση Άλλη µορφή κινδύνου ελέγχου Θεωρήστε υπερχείλιση στην πρόσθεση στο στάδιο EX add $1, $2, $1 1.Αποφυγή ζηµιάς (εγγραφής) στον $1 2.Ολοκλήρωση των προηγούµενων εντολών 3.Εκκένωση της add και των επόµενων εντολών 4.Ρύθµιση τιµών των καταχωρητών Cause και EPC 5.Μεταφορά ελέγχου στο χειριστή Όµοια µε λανθασµένη πρόβλεψη διακλάδωσης Χρήση µεγάλου µέρους του ίδιου υλικού Κεφάλαιο 4 Ο επεξεργαστής 121

ιοχέτευση µε εξαιρέσεις Κεφάλαιο 4 Ο επεξεργαστής 122

Ιδιότητες των εξαιρέσεων Επανεκκινήσιµες εξαιρέσεις (restartable exceptions) Η διοχέτευση µπορεί να εκκενώσει την εντολή Ο χειριστής εκτελείται, µετά επιστρέφει στην εντολή Επαναπροσκοµίζεται και εκτελείται από την αρχή Ο PC αποθηκεύεται στον καταχωρητή EPC Προσδιορίζει την εντολή που προκαλεί εξαίρεση Στη πραγµατικότητα αποθηκεύεται ο PC + 4 Ο χειριστής πρέπει να προσαρµοστεί Κεφάλαιο 4 Ο επεξεργαστής 123

Παράδειγµα εξαίρεσης Εξαίρεση στην add στον κώδικα 40 sub $11, $2, $4 44 and $12, $2, $5 48 or $13, $2, $6 4C add $1, $2, $1 50 slt $15, $6, $7 54 lw $16, 50($7) Χειριστής 80000180 sw $25, 1000($0) 80000184 sw $26, 1004($0) Κεφάλαιο 4 Ο επεξεργαστής 124

Παράδειγµα εξαίρεσης Κεφάλαιο 4 Ο επεξεργαστής 125

Παράδειγµα εξαίρεσης Κεφάλαιο 4 Ο επεξεργαστής 126

Πολλαπλές εξαιρέσεις Η διοχέτευση επικαλύπτει την εκτέλεση πολλών εντολών Μπορούµε να έχουµε πολλές εξαιρέσεις ταυτόχρονα Απλή προσέγγιση: ασχολήσου µε την εξαίρεση της νωρίτερης εντολής Εκκένωση των επόµενων εντολών «Ακριβείς» ( Precise ) εξαιρέσεις Σε σύνθετες διοχετεύσεις Πολλές εντολές ξεκινούν ανά κύκλο Ολοκλήρωση εκτός σειράς (out-of-order) Η διατήρηση των ακριβών εξαιρέσεων είναι δύσκολη! Κεφάλαιο 4 Ο επεξεργαστής 127

Μη ακριβείς (imprecise) εξαιρέσεις Απλώς σταµάτα τη διοχέτευση και αποθήκευσε την κατάσταση Συµπεριλαµβάνεται και το αίτιο (ή τα αίτια) της εξαίρεσης Άφησε στο χειριστή να βρει Ποιες εντολές είχαν εξαιρέσεις Ποιες να ολοκληρώσει ή να εκκενώσει Μπορεί να χρειαστεί µη αυτόµατη ολοκλήρωση Απλοποιεί το υλικό, αλλά απαιτεί πιο σύνθετο λογισµικό του χειριστή εν είναι εφικτό για σύνθετες διοχετεύσεις µε πολλαπλή εκκίνηση και εκτέλεση εκτός σειράς Κεφάλαιο 4 Ο επεξεργαστής 128

Ακριβείς Μη-ακριβείς ανακριβής διακοπή (imprecise interrupt) Ονοµάζεται επίσης ανακριβής εξαίρεση. Οι διακοπές ή οι εξαιρέσεις σε υπολογιστές µε διοχέτευση, οι οποίες δε σχετίζονται µε την ακριβή εντολή που ήταν η αιτία της διακοπής ή της εξαίρεσης. ακριβής διακοπή (precise interrupt) Ονοµάζεται επίσης ακριβής εξαίρεση. Μια διακοπή ή εξαίρεση που σχετίζεται πάντοτε µε τη σωστή εντολή στους υπολογιστές µε διοχέτευση. Κεφάλαιο 4 Ο επεξεργαστής 129

Παραλληλία επιπέδου εντολής Instruction-Level Parallelism (ILP) ιοχέτευση: παράλληλη εκτέλεση πολλών εντολών Για αύξηση του ILP Βαθύτερη διοχέτευση Λιγότερη δουλειά ανά στάδιο µικρότερος κύκλος ρολογιού Πολλαπλή εκκίνηση (multiple issue) Επανάληψη σταδίων διοχέτευσης πολλές διοχετεύσεις Εκκίνηση πολλών εντολών ανά κύκλο ρολογιού CPI < 1, συνεπώς χρήση του Instructions Per Cycle (IPC) Π.χ., 4GHz πολλαπλή εκκίνηση 4 δρόµων (4-way multiple-issue) 16 BIPS, µέγιστο CPI = 0.25, µέγιστο IPC = 4 Αλλά οι εξαρτήσεις το µειώνουν στην πράξη Κεφάλαιο 4 Ο επεξεργαστής 130 4.10 Παραλληλία και Προηγµένη Παραλληλία Επιπέδου Εντολής

Πολλαπλή εκκίνηση Στατική πολλαπλή εκκίνηση Ο µεταγλωττιστής οµαδοποιεί τις εντολές που θα ξεκινήσουν µαζί Τις συσκευάζει σε «υποδοχές εκκίνησης» ( issue slots ) Ο µεταγλωττιστής ανιχνεύει και αποφεύγει τους κινδύνους υναµική πολλαπλή εκκίνηση Η CPU εξετάζει το ρεύµα των εντολών και επιλέγει εντολές για εκκίνηση σε κάθε κύκλο Ο µεταγλωττιστής µπορεί να βοηθήσει µε αναδιάταξη των εντολών Η CPU επιλύει τους κινδύνους µε προηγµένες τεχνικές κατά το χρόνο εκτέλεσης Κεφάλαιο 4 Ο επεξεργαστής 131

Εικασία (speculation) «Μαντεψιά» τι να κάνουµε µε µια εντολή Εκκίνηση λειτουργίας το συντοµότερο Έλεγχος αν η εικασία ήταν σωστή Αν ναι, ολοκλήρωση της λειτουργίας Αν όχι, επιστροφή (roll-back) και εκτέλεση του σωστού Συνηθισµένη στη στατική και τη δυναµική πολλαπλή εκκίνηση Παραδείγµατα Εικασία στο αποτέλεσµα διακλάδωσης Επιστροφή αν η ληφθείσα διαδροµή είναι διαφορετική Εικασία σε φόρτωση (load) Επιστροφή αν η θέση µνήµης έχει αλλάξει τιµή Κεφάλαιο 4 Ο επεξεργαστής 132

Εικασία µεταγλωττιστή/υλικού Ο µεταγλωττιστής µπορεί να αναδιατάξει τις εντολές π.χ., µετακίνηση µιας φόρτωσης πριν από µια διακλάδωση Μπορεί να περιλάβει εντολές «διόρθωσης» για να ανακάµψει από λάθος εικασίες Το υλικό µπορεί να δει πιο πέρα για εντολές προς εκτέλεση Αποθηκεύει προσωρινά τα αποτελέσµατα µέχρι να προσδιορίσει ότι χρειάζονται πραγµατικά Εκκενώνει τις προσωρινές µνήµες αν γίνει λάθος εικασία Κεφάλαιο 4 Ο επεξεργαστής 133

Εικασία και εξαιρέσεις Τι γίνεται αν συµβεί εξαίρεση σε µια εντολή που εκτελείται µε εικασία; π.χ., φόρτωση µε εικασία πριν τον έλεγχο κενού δείκτη (null-pointer check) Στατική εικασία Μπορεί να προσθέσει υποστήριξη από την αρχιτεκτονική συνόλου εντολών για εξαιρέσεις που έχουν µετατεθεί (deferring exceptions) υναµική εικασία Μπορεί να αποθηκεύει προσωρινά τις εξαιρέσεις µέχρι την ολοκλήρωση της εντολής (που µπορεί να µη συµβεί) Κεφάλαιο 4 Ο επεξεργαστής 134

Στατική πολλαπλή εκκίνηση Ο µεταγλωττιστής οµαδοποιεί τις εντολές σε «πακέτα εκκίνησης» ( issue packets ) Οµάδα εντολών που µπορούν να ξεκινήσουν σε έναν κύκλο Καθορίζεται από τους πόρους της διοχέτευσης που απαιτούνται Σκεφθείτε ένα πακέτο εκκίνησης ως µια πολύ µεγάλη εντολή Προσδιορίζει πολλές ταυτόχρονες λειτουργίες Πολύ µεγάλη λέξη εντολής (Very Long Instruction Word VLIW) Κεφάλαιο 4 Ο επεξεργαστής 135

Χρονοπρογ/σµός στατικής Ο µεταγλωττιστής πρέπει να αφαιρέσει κάποιους ή όλους τους κινδύνους Αναδιάταξη εντολών σε πακέτα εκκίνησης Όχι εξαρτήσεις µέσα σε ένα πακέτο Πιθανόν κάποιες εξαρτήσεις µεταξύ πακέτων ιαφορές µεταξύ αρχιτεκτονικών ο µεταγλωττιστής πρέπει να το γνωρίζει! Συµπλήρωση µε εντολές nop αν χρειάζεται Κεφάλαιο 4 Ο επεξεργαστής 136

MIPS µε στατική διπλή εκκίνηση Πακέτα διπλής εκκίνησης (επιτρεπτοί συνδυασµοί) Μια εντολή ALU ή branch µαζί µε: Μια εντολή load ή store Ευθυγραµµισµένες στα 64 bit ALU/branch, µετά load/store Συµπλήρωση µιας αχρησιµοποίητης εντολής µε nop ιεύθυνση Τύπος εντολής Στάδια διοχέτευσης n ALU/branch IF ID EX MEM WB n + 4 Load/store IF ID EX MEM WB n + 8 ALU/branch IF ID EX MEM WB n + 12 Load/store IF ID EX MEM WB n + 16 ALU/branch IF ID EX MEM WB n + 20 Load/store IF ID EX MEM WB Κεφάλαιο 4 Ο επεξεργαστής 137

MIPS µε στατική διπλή εκκίνηση Κεφάλαιο 4 Ο επεξεργαστής 138

Κίνδυνοι στο MIPS µε διπλή εκκίνηση Περισσότερες εντολές εκτελούνται παράλληλα Κίνδυνος δεδοµένων EX Η προώθηση απέφυγε τις καθυστερήσεις στην απλή εκκίνηση Τώρα δεν µπορούµε να χρησιµοποιήσουµε το αποτέλεσµα της ALU σε µια load/store στο ίδιο πακέτο add $t0, $s0, $s1 load $s2, 0($t0) Χωρισµός σε δύο πακέτα, ουσιαστικά µία καθυστέρηση (stall) Κίνδυνος φόρτωσης-χρήσης Και πάλι ένας κύκλος λανθάνοντος χρόνου χρήσης, αλλά τώρα δύο εντολές Ανάγκη πιο επιθετικού χρονοπρογραµµατισµού Κεφάλαιο 4 Ο επεξεργαστής 139

Παράδειγµα χρονοπρ/σµού Χρονοπρογραµµατίστε αυτό σε MIPS διπλής εκκίνησης Loop: lw $t0, 0($s1) # $t0=array element addu $t0, $t0, $s2 # add scalar in $s2 sw $t0, 0($s1) # store result addi $s1, $s1, 4 # decrement pointer bne $s1, $zero, Loop # branch $s1!=0 ALU/branch Load/store κύκλος Loop: nop lw $t0, 0($s1) 1 addi $s1, $s1, 4 nop 2 addu $t0, $t0, $s2 nop 3 bne $s1, $zero, Loop sw $t0, 4($s1) 4 IPC = 5/4 = 1.25 (σύγκριση µε µέγιστο IPC = 2) Κεφάλαιο 4 Ο επεξεργαστής 140

Ξετύλιγµα βρόχου Loop unrolling Επανάληψη του σώµατος του βρόχου για να εµφανιστεί µεγαλύτερη παραλληλία Μειώνει την επιβάρυνση ελέγχου του βρόχου Χρήση διαφορετικών καταχωρητών ανά επανάληψη Ονοµάζεται «µετονοµασία καταχωρητών ( register renaming ) Αποφυγή «αντεξαρτήσεων» ( anti-dependencies ) που µεταφέρονται στο βρόχο (loop-carried) Store που ακολουθείται από load στον ίδιο καταχωρητή Ονοµάζεται επίσης και «εξάρτηση ονόµατος» ( name dependence ) Επαναχρησιµοποίηση ενός ονόµατος καταχωρητή Κεφάλαιο 4 Ο επεξεργαστής 141

Παράδειγµα ξετυλίγµατος βρόχου ALU/branch Load/store Κύκλος Loop: addi $s1, $s1, 16 lw $t0, 0($s1) 1 nop lw $t1, 12($s1) 2 addu $t0, $t0, $s2 lw $t2, 8($s1) 3 addu $t1, $t1, $s2 lw $t3, 4($s1) 4 addu $t2, $t2, $s2 sw $t0, 16($s1) 5 addu $t3, $t4, $s2 sw $t1, 12($s1) 6 nop sw $t2, 8($s1) 7 bne $s1, $zero, Loop sw $t3, 4($s1) 8 IPC = 14/8 = 1.75 Πλησιέστερο στο 2, αλλά µε κόστος σε καταχωρητές και µέγεθος κώδικα Κεφάλαιο 4 Ο επεξεργαστής 142

υναµική πολλαπλή εκκίνηση Υπερβαθµωτοί ( superscalar ) επεξεργαστές Η CPU αποφασίζει αν θα ξεκινήσουν 0, 1, 2, εντολές σε κάθε κύκλο Αποφυγή κινδύνων δοµής και δεδοµένων Αποφεύγει την ανάγκη για χρονοπρογραµµατισµό από το µεταγλωττιστή Παρόλο που αυτός µπορεί ακόµη να βοηθήσει Η CPU εγγυάται τη σηµασιολογία του κώδικα Κεφάλαιο 4 Ο επεξεργαστής 143

Χρονοπρογ/σµός δυναµικής Η CPU µπορεί να εκτελεί εντολές εκτός σειράς (out of order - OoO) για αποφυγή καθυστερήσεων Αλλά η δέσµευση (commit) του αποτελέσµατος σε καταχωρητές γίνεται σε σειρά (in order) Παράδειγµα lw $t0, 20($s2) addu $t1, $t0, $t2 sub $s4, $s4, $t3 slti $t5, $s4, 20 Μπορεί να ξεκινήσει η sub ενώ η addu περιµένει τη lw Επειδή δεν εξαρτάται από τη lw Κεφάλαιο 4 Ο επεξεργαστής 144

CPU µε δυναµικό χρον/σµό ιατηρεί τις εξαρτήσεις Κρατάει τους τελεστέους σε εκκρεµότητα Προσωρινή µνήµη αναδιάταξης (Reorder Buffer ROB) για εγγραφές σε καταχωρητές Μπορεί να παρέχει τελεστέους για εντολές που ξεκίνησαν Τα αποτελέσµατα στέλνονται και σε οποιονδήποτε σταθµό κράτησης (reservation station) τα περιµένει Κεφάλαιο 4 Ο επεξεργαστής 145

Μετονοµασία καταχωρητών Οι σταθµοί κράτησης (reservation stations RS) και η προσωρινή µνήµη αναδιάταξης (reorder buffer ROB) στην πράξη παρέχουν µετονοµασία καταχωρητών Κατά την εκκίνηση εντολής σε σταθµό κράτησης Αν ο τελεστέος είναι διαθέσιµος στο αρχείο καταχωρητών ή την προσωρινή µνήµη αναδιάταξης Αντιγράφεται στο σταθµό κράτησης ε χρειάζεται άλλο στον καταχωρητή, και µπορεί να αντικατασταθεί Αν ο τελεστέος δεν είναι ακόµα διαθέσιµος Θα παρασχεθεί στο σταθµό κράτησης από µια λειτουργική µονάδα Μπορεί να µη χρειαστεί ενηµέρωση καταχωρητή Κεφάλαιο 4 Ο επεξεργαστής 146

Εικασία (speculation) Πρόβλεψη διακλάδωσης και συνέχιση της εκκίνησης ε γίνεται δέσµευση (commit) µέχρι να καθοριστεί το αποτέλεσµα της διακλάδωσης Εικασία φόρτωσης (load speculation) Αποφυγή της καθυστέρησης της φόρτωσης και της αστοχίας κρυφής µνήµης (cache miss) Πρόβλεψη της πραγµατικής διεύθυνσης Πρόβλεψη της τιµής φόρτωσης Φόρτωση πριν την ολοκλήρωση εκκρεµουσών αποθηκεύσεων Παράκαµψη/προώθηση τιµών αποθήκευσης προς τη µονάδα φόρτωσης ε γίνεται δέσµευση (commit) της φόρτωσης µέχρι να ξεκαθαριστεί η εικασία Κεφάλαιο 4 Ο επεξεργαστής 147

Γιατί δυναµικός χρονοπ/σµός; Γιατί να µην αφήσουµε απλώς το µεταγλωττιστή να χρονοπρογραµµατίσει τον κώδικα; ιότι, δεν είναι όλες οι καθυστερήσεις προβλέψιµες π.χ., αστοχίες κρυφής µνήµης (cache misses) εν µπορεί να γίνει πάντα χρονοπρ/σµός γύρω από διακλαδώσεις Το αποτέλεσµα της διακλάδωσης καθορίζεται δυναµικά ιαφορετικές υλοποιήσεις µιας αρχιτεκτονικής έχουν διαφορετικούς λανθάνοντες χρόνους και κινδύνους Κεφάλαιο 4 Ο επεξεργαστής 148

ουλεύει η πολλαπλή εκκίνηση; ΓΕΝΙΚΗ εικόνα Ναι, αλλά όχι όσο θα θέλαµε Τα προγράµµατα έχουν πραγµατικές εξαρτήσεις που περιορίζουν το ILP Μερικές εξαρτήσεις είναι δύσκολο να εξαλειφθούν π.χ., ψευδωνυµία δείκτη (pointer aliasing) Κάποια παραλληλία είναι δύσκολο να εµφανιστεί Περιορισµένο µέγεθος παραθύρου κατά την εκκίνηση εντολών Καθυστερήσεις µνήµης και περιορισµένο εύρος ζώνης ύσκολο να διατηρηθούν γεµάτες οι διοχετεύσεις Η εικασία µπορεί να βοηθήσει αν γίνει καλά Κεφάλαιο 4 Ο επεξεργαστής 149

Αποδοτικότητα ισχύος Η πολυπλοκότητα του δυναµικού χρονοπρογραµµατισµού και της εικασίας απαιτεί ηλεκτρική ισχύ Οι πολλοί απλούστεροι πυρήνες µπορεί να είναι καλύτεροι Μικροεπεξεργαστής Έτος Ρυθµός ρολογιού Στάδια διοχέτευσης Πλάτος εκκίνησης Εκτός-σειράς/ Εικασία Πυρήνες i486 1989 25MHz 5 1 No 1 5W Pentium 1993 66MHz 5 2 No 1 10W Pentium Pro 1997 200MHz 10 3 Yes 1 29W P4 Willamette 2001 2000MHz 22 3 Yes 1 75W Ισχύς P4 Prescott 2004 3600MHz 31 3 Yes 1 103W Core 2006 2930MHz 14 4 Yes 2 75W UltraSparc III 2003 1950MHz 14 4 No 1 90W UltraSparc T1 2005 1200MHz 6 1 No 8 70W Κεφάλαιο 4 Ο επεξεργαστής 150

Μικροαρχιτεκτονική του Opteron X4 72 φυσικοί καταχωρητές Κεφάλαιο 4 Ο επεξεργαστής 151 4.11 Πραγµατικότητα: ιοχέτευση AMD Opteron X4 (Barcelona)

ιοχέτευση του Opteron X4 Για ακέραιες λειτουργίες Για κινητή υποδιαστολή είναι 5 στάδια µεγαλύτερη Μέχρι 106 λειτουργίες RISC σε εξέλιξη Σηµεία συµφόρησης Πολύπλοκες εντολές µε µεγάλες εξαρτήσεις Λάθος προβλέψεις διακλάδωσης Καθυστερήσεις προσπέλασης µνήµης Κεφάλαιο 4 Ο επεξεργαστής 152

Πλάνες Η διοχέτευση είναι εύκολη (!) Η βασική ιδέα είναι εύκολη Ο διάβολος κρύβεται στις λεπτοµέρειες π.χ., ανίχνευση κινδύνων δεδοµένων Η διοχέτευση είναι ανεξάρτητη από την τεχνολογία Τότε γιατί δεν κάναµε πάντα διοχέτευση; Τα περισσότερα τρανζίστορ κάνουν εφικτές τις πιο προηγµένες τεχνικές Η σχεδίαση αρχιτεκτονικών συνόλου εντολών που σχετίζεται µε τη διοχέτευση πρέπει να λαµβάνει υπόψη της τις τεχνολογικές τάσεις π.χ., εντολές µε κατηγορήµατα Κεφάλαιο 4 Ο επεξεργαστής 153 4.13 Πλάνες και παγίδες

Παγίδες Η φτωχή σχεδίαση της αρχιτεκτονικής συνόλου εντολών µπορεί να κάνει δυσκολότερη τη διοχέτευση π.χ., πολύπλοκα σύνολα εντολών (VAX, IA-32) Σηµαντική επιβάρυνση για να δουλέψει η διοχέτευση Προσέγγιση του IA-32 µε µικρολειτουργίες (micro-ops) π.χ., πολύπλοκοι τρόποι διευθυνσιοδότησης Παρενέργειες ενηµέρωσης καταχωρητών, εµµεσότητα µνήµης π.χ., καθυστερηµένες διακλαδώσεις Οι προηγµένες διοχετεύσεις έχουν µεγάλες υποδοχές καθυστέρησης Κεφάλαιο 4 Ο επεξεργαστής 154

Συµπερασµατικές παρατηρήσεις Η αρχιτεκτονική συνόλου εντολών επηρεάζει τη σχεδίαση της διαδροµής δεδοµένων και της µονάδας ελέγχου Η διαδροµή δεδοµένων και η µονάδα ελέγχου επηρεάζουν τη σχεδίαση της αρχιτεκτονικής συνόλου εντολών Η διοχέτευση βελτιώνει τη διεκπεραιωτική ικανότητα εντολών µε τη χρήση παραλληλίας Περισσότερες εντολές ολοκληρώνονται ανά δευτερόλεπτο Ο λανθάνων χρόνος κάθε εντολής δε µειώνεται Κίνδυνοι: δοµής, δεδοµένων, ελέγχου Πολλαπλή εκκίνηση και δυναµικός χρονοπρογραµµατισµός (παραλληλία επιπέδου εντολής ILP) Οι εξαρτήσεις περιορίζουν την επιτεύξιµη παραλληλία Η πολυπλοκότητα οδηγεί στο τείχος της ισχύος (power wall) 4.14 Συµπερασµατικές παρατηρήσεις Κεφάλαιο 4 Ο επεξεργαστής 155