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



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

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

Κάζε functional unit ρξεζηκνπνηείηαη κηα θνξά ζε θάζε θύθιν: αλάγθε γηα πνιιαπιό hardware = θόζηνο πινπνίεζεο!

O επεξεπγαζηήρ: Η δίοδορ δεδομένων (datapath) θαη ε μονάδα ελέγσος (control)

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

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

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

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ. 3. Έλαο θαηαρσξεηήο SISO ησλ 4 bits έρεη: α) Μία είζνδν, β) Δύν εηζόδνπο, γ) Σέζζεξεηο εηζόδνπο.

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

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

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

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

Ενδεικτικά Θέματα Στατιστικής ΙΙ

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

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

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

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

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη

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

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

Αντισταθμιστική ανάλυση

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

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

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

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

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

Pipelined Datapath, Hazards and Forwarding

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

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

Σήκαηα Β Α Γ Γ Δ Λ Η Σ Ο Ι Κ Ο Ν Ο Μ Ο Υ Γ Ι Α Λ Δ Ξ Η - ( 2 ) ΕΙΣΑΓΨΓΗ ΣΤΙΣ ΤΗΛΕΠΙΚΟΙΝΨΝΙΕΣ

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

ΒΗΜΑ 2. Εηζάγεηε ηνλ Κωδηθό Πξόζβαζεο πνπ ιακβάλεηε κε SMS & δειώλεηε επηζπκεηό Όλνκα Πξόζβαζεο (Username) θαη ην ζαο

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο:

Κεθάλαιο 7. Πξνζθνξά ηνπ θιάδνπ Μ. ΨΥΛΛΑΚΗ

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

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

Αιγόξηζκνη Δνκή επηινγήο. Απιή Επηινγή ύλζεηε Επηινγή. Εηζαγσγή ζηηο Αξρέο ηεο Επηζηήκεο ησλ Η/Τ. introcsprinciples.wordpress.

5 η Δργαζηηριακή Άζκηζη Κσκλώμαηα Γσαδικού Αθροιζηή/Αθαιρέηη

ΠΛΗ36. Άσκηση 1. Άσκηση 2. Οη δηεπζύλζεηο ησλ 4 σλ ππνδηθηύσλ είλαη νη αθόινπζεο. Υπνδίθηπν Α: /27 Υπνδίθηπν Β:

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

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

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

Κινητός και Διάχυτος Υπολογισμός (Mobile & Pervasive Computing)

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

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

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

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

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

Αιγόξηζκνη Δθρώξεζε, Δίζνδνο θαη Έμνδνο ηηκώλ Γνκή αθνινπζίαο. Δηζαγσγή ζηηο Αξρέο ηεο Δπηζηήκεο ησλ Η/Υ

Constructors and Destructors in C++

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

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

ΛΙΜΝΗ ΤΣΑΝΤ. Σρήκα 1. Σρήκα 2

ΦΥΣΙΚΗ ΤΩΝ ΡΕΥΣΤΩΝ. G. Mitsou

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

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

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο

Τηλζφωνο: Ε-mail: Ώρες διδασκαλίας: 16:00 19:15 μμ

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

Η αξρή ζύλδεζεο Client-Server

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

Σύνθεζη ηαλανηώζεων. Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο:

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Οδηγίες τρήζης για λειηοσργία μεηαθοράς καναλιών ζε υηθιακό δέκηη OST-7060 HD

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗ ΦΥΣΙΚΗ. Ύλη: Εσθύγραμμη Κίνηζη

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

Άζθεζε 2ε ΤΣΗΜΑΣΑ ΔΛΔΓΥΟΤ ΑΝΟΙΚΣΟΤ ΒΡΟΥΟΤ ΚΑΙ MATLAB

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

Κβαντικοί Υπολογισμοί. Πέκπηε Γηάιεμε

Fortran και Αντικειμενοστραυής προγραμματισμός. 3ε ελόηεηα

ΑΓΩΜΘΡΘΙΞΘ ΤΩΠΞΘ ΡΘΡ ΛΘΙΠΕΡ ΗΚΘΙΘΕΡ ΛΘΤΑΗΚΘΔΗΡ Τ.

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

ΜΗΧΑΝΟΛΟΓΙΚΟ ΣΧΔΓΙΟ ΙΙ

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

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ ΚΑΗ ΔΠΑΛ ΣΔΣΑΡΣΖ 25 ΜΑΨΟΤ 2016 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΑΡΥΔ ΟΗΚΟΝΟΜΗΚΖ ΘΔΧΡΗΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ - ΔΠΗΛΟΓΖ

10). ΣΤΠΟΠΟΙΗΜΕΝΕ ΠΑΡΟΥΕ ΜΣ ΚΑΙ ΥΣ

Πνηα λνκίδεηο όηη ζα είλαη ε ζπλνιηθή αληίζηαζε κηαο ζπλδεζκνινγίαο δύν αληηζηαηώλ ζπλδεδεκέλεο ζε ζεηξά; Γηαηί;...

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

Image J Plugin particle tracker για παρακολούθηση της κίνησης σωματιδίων

Transcript:

Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση Κεφάλαιο 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

Ηδιόηηηερ ηυν εξαιπέζευν Δπαλεθθηλήζηκεο εμαηξέζεηο (restartable exceptions) Η δηνρέηεπζε κπνξεί λα εθθελώζεη ηελ εληνιή Ο ρεηξηζηήο εθηειείηαη, κεηά επηζηξέθεη ζηελ εληνιή Δπαλαπξνζθνκίδεηαη θαη εθηειείηαη από ηελ αξρή Ο PC απνζεθεύεηαη ζηνλ θαηαρσξεηή EPC Πξνζδηνξίδεη ηελ εληνιή πνπ πξνθαιεί εμαίξεζε ηε πξαγκαηηθόηεηα απνζεθεύεηαη ν PC + 4 Ο ρεηξηζηήο πξέπεη λα πξνζαξκνζηεί Κεθάλαιο 4 Ο επεξεπγαζηήρ 100

Παπάδειγμα εξαίπεζηρ Δμαίξεζε ζηελ 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 Ο επεξεπγαζηήρ 101

Παπάδειγμα εξαίπεζηρ Κεθάλαιο 4 Ο επεξεπγαζηήρ 102

Παπάδειγμα εξαίπεζηρ Κεθάλαιο 4 Ο επεξεπγαζηήρ 103

Πολλαπλέρ εξαιπέζειρ Η δηνρέηεπζε επηθαιύπηεη ηελ εθηέιεζε πνιιώλ εληνιώλ Μπνξνύκε λα έρνπκε πνιιέο εμαηξέζεηο ηαπηόρξνλα Απιή πξνζέγγηζε: αζρνιήζνπ κε ηελ εμαίξεζε ηεο λσξίηεξεο εληνιήο Δθθέλσζε ησλ επόκελσλ εληνιώλ «Αθξηβείο» ( Precise ) εμαηξέζεηο ε ζύλζεηεο δηνρεηεύζεηο Πνιιέο εληνιέο μεθηλνύλ αλά θύθιν Οινθιήξσζε εθηόο ζεηξάο (out-of-order) Η δηαηήξεζε ησλ αθξηβώλ εμαηξέζεσλ είλαη δύζθνιε! Κεθάλαιο 4 Ο επεξεπγαζηήρ 104

Μη ακπιβείρ (imprecise) εξαιπέζειρ Απιώο ζηακάηα ηε δηνρέηεπζε θαη απνζήθεπζε ηελ θαηάζηαζε πκπεξηιακβάλεηαη θαη ην αίηην (ή ηα αίηηα) ηεο εμαίξεζεο Άθεζε ζην ρεηξηζηή λα βξεη Πνηεο εληνιέο είραλ εμαηξέζεηο Πνηεο λα νινθιεξώζεη ή λα εθθελώζεη Μπνξεί λα ρξεηαζηεί κε απηόκαηε νινθιήξσζε Απινπνηεί ην πιηθό, αιιά απαηηεί πην ζύλζεην ινγηζκηθό ηνπ ρεηξηζηή Γελ είλαη εθηθηό γηα ζύλζεηεο δηνρεηεύζεηο κε πνιιαπιή εθθίλεζε θαη εθηέιεζε εθηόο ζεηξάο Κεθάλαιο 4 Ο επεξεπγαζηήρ 105

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

Πολλαπλή εκκίνηζη ηαηηθή πνιιαπιή εθθίλεζε Ο κεηαγισηηηζηήο νκαδνπνηεί ηηο εληνιέο πνπ ζα μεθηλήζνπλ καδί Σηο ζπζθεπάδεη ζε «ππνδνρέο εθθίλεζεο» ( issue slots ) Ο κεηαγισηηηζηήο αληρλεύεη θαη απνθεύγεη ηνπο θηλδύλνπο Γπλακηθή πνιιαπιή εθθίλεζε Η CPU εμεηάδεη ην ξεύκα ησλ εληνιώλ θαη επηιέγεη εληνιέο γηα εθθίλεζε ζε θάζε θύθιν Ο κεηαγισηηηζηήο κπνξεί λα βνεζήζεη κε αλαδηάηαμε ησλ εληνιώλ Η CPU επηιύεη ηνπο θηλδύλνπο κε πξνεγκέλεο ηερληθέο θαηά ην ρξόλν εθηέιεζεο Κεθάλαιο 4 Ο επεξεπγαζηήρ 107

Δικαζία (speculation) «Μαληεςηά» ηη λα θάλνπκε κε κηα εληνιή Δθθίλεζε ιεηηνπξγίαο ην ζπληνκόηεξν Έιεγρνο αλ ε εηθαζία ήηαλ ζσζηή Αλ λαη, νινθιήξσζε ηεο ιεηηνπξγίαο Αλ όρη, επηζηξνθή (roll-back) θαη εθηέιεζε ηνπ ζσζηνύ πλεζηζκέλε ζηε ζηαηηθή θαη ηε δπλακηθή πνιιαπιή εθθίλεζε Παξαδείγκαηα Δηθαζία ζην απνηέιεζκα δηαθιάδσζεο Δπηζηξνθή αλ ε ιεθζείζα δηαδξνκή είλαη δηαθνξεηηθή Δηθαζία ζε θόξησζε (load) Δπηζηξνθή αλ ε ζέζε κλήκεο έρεη αιιάμεη ηηκή Κεθάλαιο 4 Ο επεξεπγαζηήρ 108

Δικαζία μεηαγλυηηιζηή/ςλικού Ο κεηαγισηηηζηήο κπνξεί λα αλαδηαηάμεη ηηο εληνιέο π.ρ., κεηαθίλεζε κηαο θόξησζεο πξηλ από κηα δηαθιάδσζε Μπνξεί λα πεξηιάβεη εληνιέο «δηόξζσζεο» γηα λα αλαθάκςεη από ιάζνο εηθαζίεο Σν πιηθό κπνξεί λα δεη πην πέξα γηα εληνιέο πξνο εθηέιεζε Απνζεθεύεη πξνζσξηλά ηα απνηειέζκαηα κέρξη λα πξνζδηνξίζεη όηη ρξεηάδνληαη πξαγκαηηθά Δθθελώλεη ηηο πξνζσξηλέο κλήκεο αλ γίλεη ιάζνο εηθαζία Κεθάλαιο 4 Ο επεξεπγαζηήρ 109

Δικαζία και εξαιπέζειρ Ση γίλεηαη αλ ζπκβεί εμαίξεζε ζε κηα εληνιή πνπ εθηειείηαη κε εηθαζία; π.ρ., θόξησζε κε εηθαζία πξηλ ηνλ έιεγρν θελνύ δείθηε (null-pointer check) ηαηηθή εηθαζία Μπνξεί λα πξνζζέζεη ππνζηήξημε από ηελ αξρηηεθηνληθή ζπλόινπ εληνιώλ γηα εμαηξέζεηο πνπ έρνπλ κεηαηεζεί (deferring exceptions) Γπλακηθή εηθαζία Μπνξεί λα απνζεθεύεη πξνζσξηλά ηηο εμαηξέζεηο κέρξη ηελ νινθιήξσζε ηεο εληνιήο (πνπ κπνξεί λα κε ζπκβεί) Κεθάλαιο 4 Ο επεξεπγαζηήρ 110

Σηαηική πολλαπλή εκκίνηζη Ο κεηαγισηηηζηήο νκαδνπνηεί ηηο εληνιέο ζε «παθέηα εθθίλεζεο» ( issue packets ) Οκάδα εληνιώλ πνπ κπνξνύλ λα μεθηλήζνπλ ζε έλαλ θύθιν Καζνξίδεηαη από ηνπο πόξνπο ηεο δηνρέηεπζεο πνπ απαηηνύληαη θεθζείηε έλα παθέην εθθίλεζεο σο κηα πνιύ κεγάιε εληνιή Πξνζδηνξίδεη πνιιέο ηαπηόρξνλεο ιεηηνπξγίεο Πνιύ κεγάιε ιέμε εληνιήο (Very Long Instruction Word VLIW) Κεθάλαιο 4 Ο επεξεπγαζηήρ 111

Φπονοππογ/ζμόρ ζηαηικήρ Ο κεηαγισηηηζηήο πξέπεη λα αθαηξέζεη θάπνηνπο ή όινπο ηνπο θηλδύλνπο Αλαδηάηαμε εληνιώλ ζε παθέηα εθθίλεζεο Όρη εμαξηήζεηο κέζα ζε έλα παθέην Πηζαλόλ θάπνηεο εμαξηήζεηο κεηαμύ παθέησλ Γηαθνξέο κεηαμύ αξρηηεθηνληθώλ ν κεηαγισηηηζηήο πξέπεη λα ην γλσξίδεη! πκπιήξσζε κε εληνιέο nop αλ ρξεηάδεηαη Κεθάλαιο 4 Ο επεξεπγαζηήρ 112

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 Ο επεξεπγαζηήρ 113

MIPS με ζηαηική διπλή εκκίνηζη Κεθάλαιο 4 Ο επεξεπγαζηήρ 114

Κίνδςνοι ζηο MIPS με διπλή εκκίνηζη Πεξηζζόηεξεο εληνιέο εθηεινύληαη παξάιιεια Κίλδπλνο δεδνκέλσλ EX Η πξνώζεζε απέθπγε ηηο θαζπζηεξήζεηο ζηελ απιή εθθίλεζε Σώξα δελ κπνξνύκε λα ρξεζηκνπνηήζνπκε ην απνηέιεζκα ηεο ALU ζε κηα load/store ζην ίδην παθέην add $t0, $s0, $s1 load $s2, 0($t0) Υσξηζκόο ζε δύν παθέηα, νπζηαζηηθά κία θαζπζηέξεζε (stall) Κίλδπλνο θόξησζεο-ρξήζεο Καη πάιη έλαο θύθινο ιαλζάλνληνο ρξόλνπ ρξήζεο, αιιά ηώξα δύν εληνιέο Αλάγθε πην επηζεηηθνύ ρξνλνπξνγξακκαηηζκνύ Κεθάλαιο 4 Ο επεξεπγαζηήρ 115

Παπάδειγμα σπονοππ/ζμού Υξνλνπξνγξακκαηίζηε απηό ζε 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 Ο επεξεπγαζηήρ 116

Ξεηύλιγμα βπόσος Loop unrolling Δπαλάιεςε ηνπ ζώκαηνο ηνπ βξόρνπ γηα λα εκθαληζηεί κεγαιύηεξε παξαιιειία Μεηώλεη ηελ επηβάξπλζε ειέγρνπ ηνπ βξόρνπ Υξήζε δηαθνξεηηθώλ θαηαρσξεηώλ αλά επαλάιεςε Ολνκάδεηαη «κεηνλνκαζία θαηαρσξεηώλ ( register renaming ) Απνθπγή «αληεμαξηήζεσλ» ( anti-dependencies ) πνπ κεηαθέξνληαη ζην βξόρν (loop-carried) Store πνπ αθνινπζείηαη από load ζηνλ ίδην θαηαρσξεηή Ολνκάδεηαη επίζεο θαη «εμάξηεζε νλόκαηνο» ( name dependence ) Δπαλαρξεζηκνπνίεζε ελόο νλόκαηνο θαηαρσξεηή Κεθάλαιο 4 Ο επεξεπγαζηήρ 117

Παπάδειγμα ξεηςλίγμαηορ βπόσος 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 Ο επεξεπγαζηήρ 118

Γςναμική πολλαπλή εκκίνηζη Τπεξβαζκσηνί ( superscalar ) επεμεξγαζηέο Η CPU απνθαζίδεη αλ ζα μεθηλήζνπλ 0, 1, 2, εληνιέο ζε θάζε θύθιν Απνθπγή θηλδύλσλ δνκήο θαη δεδνκέλσλ Απνθεύγεη ηελ αλάγθε γηα ρξνλνπξνγξακκαηηζκό από ην κεηαγισηηηζηή Παξόιν πνπ απηόο κπνξεί αθόκε λα βνεζήζεη Η CPU εγγπάηαη ηε ζεκαζηνινγία ηνπ θώδηθα Κεθάλαιο 4 Ο επεξεπγαζηήρ 119

Φπονοππογ/ζμόρ δςναμικήρ Η CPU κπνξεί λα εθηειεί εληνιέο εθηόο ζεηξάο (out of order) γηα απνθπγή θαζπζηεξήζεσλ Αιιά δέζκεπζε (commit) ηνπ απνηειέζκαηνο ζε θαηαρσξεηέο ζε ζεηξά Παξάδεηγκα lw $t0, 20($s2) addu $t1, $t0, $t2 sub $s4, $s4, $t3 slti $t5, $s4, 20 Μπνξεί λα μεθηλήζεη ε sub ελώ ε addu πεξηκέλεη ηε lw Κεθάλαιο 4 Ο επεξεπγαζηήρ 120

CPU με δςναμικό σπον/ζμό Γηαηεξεί ηηο εμαξηήζεηο Κξαηάεη ηνπο ηειεζηένπο ζε εθθξεκόηεηα Πξνζσξηλή κλήκε αλαδηάηαμεο γηα εγγξαθέο ζε θαηαρσξεηέο Μπνξεί λα παξέρεη ηειεζηένπο γηα εληνιέο πνπ μεθίλεζαλ Σα απνηειέζκαηα ζηέιλνληαη θαη ζε νπνηνλδήπνηε ζηαζκό θξάηεζεο (reservation station) ηα πεξηκέλεη Κεθάλαιο 4 Ο επεξεπγαζηήρ 121

Μεηονομαζία καηασυπηηών Οη ζηαζκνί θξάηεζεο (reservation stations) θαη ε πξνζσξηλή κλήκε αλαδηάηαμεο (reorder buffer) ζηελ πξάμε παξέρνπλ κεηνλνκαζία θαηαρσξεηώλ Καηά ηελ εθθίλεζε εληνιήο ζε ζηαζκό θξάηεζεο Αλ ν ηειεζηένο είλαη δηαζέζηκνο ζην αξρείν θαηαρσξεηώλ ή ηελ πξνζσξηλή κλήκε αλαδηάηαμεο Αληηγξάθεηαη ζην ζηαζκό θξάηεζεο Γε ρξεηάδεηαη άιιν ζηνλ θαηαρσξεηή, θαη κπνξεί λα αληηθαηαζηαζεί Αλ ν ηειεζηένο δελ είλαη αθόκα δηαζέζηκνο Θα παξαζρεζεί ζην ζηαζκό θξάηεζεο από κηα ιεηηνπξγηθή κνλάδα Μπνξεί λα κε ρξεηαζηεί ελεκέξσζε θαηαρσξεηή Κεθάλαιο 4 Ο επεξεπγαζηήρ 122

Δικαζία (speculation) Πξόβιεςε δηαθιάδσζεο θαη ζπλέρηζε ηεο εθθίλεζεο Γε γίλεηαη δέζκεπζε (commit) κέρξη λα θαζνξηζηεί ην απνηέιεζκα ηεο δηαθιάδσζεο Δηθαζία θόξησζεο (load speculation) Απνθπγή ηεο θαζπζηέξεζεο ηεο θόξησζεο θαη ηεο αζηνρίαο θξπθήο κλήκεο (cache miss) Πξόβιεςε ηεο πξαγκαηηθήο δηεύζπλζεο Πξόβιεςε ηεο ηηκήο θόξησζεο Φόξησζε πξηλ ηελ νινθιήξσζε εθθξεκνπζώλ απνζεθεύζεσλ Παξάθακςε/πξνώζεζε ηηκώλ απνζήθεπζεο πξνο ηε κνλάδα θόξησζεο Γε γίλεηαη δέζκεπζε (commit) ηεο θόξησζεο κέρξη λα μεθαζαξηζηεί ε εηθαζία Κεθάλαιο 4 Ο επεξεπγαζηήρ 123

Γιαηί δςναμικόρ σπονοπ/ζμόρ; Γηαηί λα κελ αθήζνπκε απιώο ην κεηαγισηηηζηή λα ρξνλνπξνγξακκαηίζεη ηνλ θώδηθα; Γελ είλαη όιεο νη θαζπζηεξήζεηο πξνβιέςηκεο π.ρ., αζηνρίεο θξπθήο κλήκεο (cache misses) Γελ κπνξεί λα γίλεη πάληα ρξνλνπξ/ζκόο γύξσ από δηαθιαδώζεηο Σν απνηέιεζκα ηεο δηαθιάδσζεο θαζνξίδεηαη δπλακηθά Γηαθνξεηηθέο πινπνηήζεηο κηαο αξρηηεθηνληθήο έρνπλ δηαθνξεηηθνύο ιαλζάλνληεο ρξόλνπο θαη θηλδύλνπο Κεθάλαιο 4 Ο επεξεπγαζηήρ 124

Γοςλεύει η πολλαπλή εκκίνηζη; ΓΕΝΙΚΗ εικόνα Ναη, αιιά όρη όζν ζα ζέιακε Σα πξνγξάκκαηα έρνπλ πξαγκαηηθέο εμαξηήζεηο πνπ πεξηνξίδνπλ ην ILP Μεξηθέο εμαξηήζεηο είλαη δύζθνιν λα εμαιεηθζνύλ π.ρ., ςεπδσλπκία δείθηε (pointer aliasing) Κάπνηα παξαιιειία είλαη δύζθνιν λα εκθαληζηεί Πεξηνξηζκέλν κέγεζνο παξαζύξνπ θαηά ηελ εθθίλεζε εληνιώλ Καζπζηεξήζεηο κλήκεο θαη πεξηνξηζκέλν εύξνο δώλεο Γύζθνιν λα δηαηεξεζνύλ γεκάηεο νη δηνρεηεύζεηο Η εηθαζία κπνξεί λα βνεζήζεη αλ γίλεη θαιά Κεθάλαιο 4 Ο επεξεπγαζηήρ 125

Αποδοηικόηηηα ιζσύορ Η πνιππινθόηεηα ηνπ δπλακηθνύ ρξνλνπξνγξακκαηηζκνύ θαη ηεο εηθαζίαο απαηηεί ειεθηξηθή ηζρύ Οη πνιινί απινύζηεξνη ππξήλεο κπνξεί λα είλαη θαιύηεξνη Μηθξνεπεμεξγαζηήο Έηνο Ρπζκόο ξνινγηνύ ηάδηα δηνρέηεπζεο Πιάηνο εθθίλεζεο Δθηόο-ζεηξάο/ Δηθαζία Ππξήλεο 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 Ο επεξεπγαζηήρ 126

Μικποαπσιηεκηονική ηος Opteron X4 72 θπζηθνί θαηαρσξεηέο Κεθάλαιο 4 Ο επεξεπγαζηήρ 127 4.11 Πξαγκαηηθόηεηα: Γηνρέηεπζε AMD Opteron X4 (Barcelona)

Γιοσέηεςζη ηος Opteron X4 Γηα αθέξαηεο ιεηηνπξγίεο Γηα θηλεηή ππνδηαζηνιή είλαη 5 ζηάδηα κεγαιύηεξε Μέρξη 106 ιεηηνπξγίεο RISC ζε εμέιημε εκεία ζπκθόξεζεο Πνιύπινθεο εληνιέο κε κεγάιεο εμαξηήζεηο Λάζνο πξνβιέςεηο δηαθιάδσζεο Καζπζηεξήζεηο πξνζπέιαζεο κλήκεο Κεθάλαιο 4 Ο επεξεπγαζηήρ 128

Πλάνερ Η δηνρέηεπζε είλαη εύθνιε (!) Η βαζηθή ηδέα είλαη εύθνιε Ο δηάβνινο θξύβεηαη ζηηο ιεπηνκέξεηεο π.ρ., αλίρλεπζε θηλδύλσλ δεδνκέλσλ Η δηνρέηεπζε είλαη αλεμάξηεηε από ηελ ηερλνινγία Σόηε γηαηί δελ θάλακε πάληα δηνρέηεπζε; Σα πεξηζζόηεξα ηξαλδίζηνξ θάλνπλ εθηθηέο ηηο πην πξνεγκέλεο ηερληθέο Η ζρεδίαζε αξρηηεθηνληθώλ ζπλόινπ εληνιώλ πνπ ζρεηίδεηαη κε ηε δηνρέηεπζε πξέπεη λα ιακβάλεη ππόςε ηεο ηηο ηερλνινγηθέο ηάζεηο π.ρ., εληνιέο κε θαηεγνξήκαηα Κεθάλαιο 4 Ο επεξεπγαζηήρ 129 4.13 Πιάλεο θαη παγίδεο

Παγίδερ Η θησρή ζρεδίαζε ηεο αξρηηεθηνληθήο ζπλόινπ εληνιώλ κπνξεί λα θάλεη δπζθνιόηεξε ηε δηνρέηεπζε π.ρ., πνιύπινθα ζύλνια εληνιώλ (VAX, IA-32) εκαληηθή επηβάξπλζε γηα λα δνπιέςεη ε δηνρέηεπζε Πξνζέγγηζε ηνπ IA-32 κε κηθξνιεηηνπξγίεο (micro-ops) π.ρ., πνιύπινθνη ηξόπνη δηεπζπλζηνδόηεζεο Παξελέξγεηεο ελεκέξσζεο θαηαρσξεηώλ, εκκεζόηεηα κλήκεο π.ρ., θαζπζηεξεκέλεο δηαθιαδώζεηο Οη πξνεγκέλεο δηνρεηεύζεηο έρνπλ κεγάιεο ππνδνρέο θαζπζηέξεζεο Κεθάλαιο 4 Ο επεξεπγαζηήρ 130

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