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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Pipelined Datapath, Hazards and Forwarding

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 4: Pipelining 75

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

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

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

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

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

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

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

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

Υλοποίηση Mικροεπεξεργαστή MIPS -16

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

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

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

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

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

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

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

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

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

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 3

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

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

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

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

Απλός επεξεργαστής (Επανάληψη)

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 4 ο ΜΕΔ πολλαπλών κύκλων

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

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

; Τι περιέχεται στη συσκευασία ενός μικροεπεξεργαστή σήμερα;

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

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

Μικροαρχιτεκτονική του LC3

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

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

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

Transcript:

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

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

Εκτέλεση εντολής PC μνήμη εντολών, προσκόμιση (fetch) εντολής Αριθμοί καταχωρητών αρχείο καταχωρητών (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 Ασταμάτητα: Επιτάχυνση = 2n/0.5n + 1.5 4 = αριθμός σταδίων 4.5 Γενικά για τη διοχέτευση Κεφάλαιο 4 Ο επεξεργαστής 31

Διοχέτευση του 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

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

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

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

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

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

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

Χρονοπρογρ/μός κώδικα για αποφυγή καθυστερήσεων Αναδιάταξη κώδικα για αποφυγή χρήσης του αποτελέσματος της 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 Ο επεξεργαστής 42

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κίνδυνοι δεδομένων σε εντολές 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 Ο επεξεργαστής 67

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

Ανίχνευση ανάγκης για προώθηση Μεταβίβαση αριθμών καταχωρητών μέσα στη διοχέτευση π.χ., 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 Ο επεξεργαστής 69

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

Διαδρομές προώθησης Κεφάλαιο 4 Ο επεξεργαστής 71

Συνθήκες προώθησης Κίνδυνος στο στάδιο 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 Ο επεξεργαστής 72

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

Αναθεωρημένη συνθήκη προώθησης Κίνδυνος στο στάδιο 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 Ο επεξεργαστής 74

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

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

Ανίχνευση κινδύνου φόρτωσης-χρήσης Έλεγχος όταν η εντολή που κάνει τη χρήση αποκωδικοποιείται στο στάδιο 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 Ο επεξεργαστής 77

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

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

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

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

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

Κίνδυνοι διακλάδωσης Αν το αποτέλεσμα της διακλάδωσης καθορίζεται στο MEM 4.8 Κίνδυνοι ελέγχου Εκκένωση αυτών των εντολών (τιμές ελέγχου στο 0) PC Κεφάλαιο 4 Ο επεξεργαστής 83

Μείωση καθυστέρησης διακλάδωσης Μεταφορά υλικού για προσδιορισμό αποτελέσματος στο στάδιο 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) Κεφάλαιο 4 Ο επεξεργαστής 84

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

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

Κίνδυνοι δεδομένων για διακλαδώσεις Αν ένας καταχωρητής σύγκρισης είναι προορισμός εντολής 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 Μπορεί να λυθεί με προώθηση Κεφάλαιο 4 Ο επεξεργαστής 87

Κίνδυνοι δεδομένων για διακλαδώσεις Αν ένας καταχωρητής σύγκρισης είναι προορισμός εντολής ALU που προηγείται αμέσως ή εντολής φόρτωσης που προηγείται κατά 2 θέσεις Χρειάζεται 1 κύκλος καθυστέρησης 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 Ο επεξεργαστής 88

Κίνδυνοι δεδομένων για διακλαδώσεις Αν ένας καταχωρητής σύγκρισης είναι προορισμός μιας εντολής φόρτωσης που προηγείται αμέσως Χρειάζονται 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 Ο επεξεργαστής 89

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

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

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

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

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

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

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

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

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

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

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

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

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