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

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

Application Operating System. Datapath & Control/Memory. Digital Design Circuit Design. Layout

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Ενότητα 6 - Σύστημα Διασωλήνωσης. Π. Ευριπίδου (2007)

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

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

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

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

Εισαγωγή. Σύνοψη βασικών εννοιών, 5-stage pipeline, επεκτάσεις για λειτουργίες πολλαπλών κύκλων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΗΥ425 Αρχιτεκτονική Υπολογιστών. Προχωρημένες Τεχνικές Pipelining. Ιάκωβος Μαυροειδής

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

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

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

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

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

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

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

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

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

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

CS425 Computer Systems Architecture

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

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

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

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

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

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

Pipelined Datapath, Hazards and Forwarding

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

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

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

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

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

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

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

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 10: Επίδοση Επεξεργαστών, CPI. Μανόλης Γ.Η. Κατεβαίνης

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

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

Διασωλήνωση - Pipelining

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

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

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

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

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

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

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

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

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

Βιοµηχανία Αυτοκινήτων

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

(Branch Prediction Mechanisms)

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

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

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

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

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

1.1 ΑΣΚΗΣΗ ΛΥΣΗ 2.1 ΑΣΚΗΣΗ ΛΥΣΗ 3.1 ΑΣΚΗΣΗ

Εντολές Διακλάδωσης. #bubbles ~= pipeline depth X loop length. Next fetch started. Fetch. I-cache. Fetch Buffer. Decode. Issue Buffer.

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

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

Οι τέσσερις αρχές για τον σχεδιασμό του συνόλου εντολών μιας μηχανής είναι:

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

Μέθοδοι Πρόβλεψης Διακλαδώσεων (Branch Prediction Mechanisms)

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

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

Παραλληλισµός Εντολών (Pipelining)

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

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

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

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

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης. Multicycle datapath

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

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

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

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

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

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

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

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

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

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

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

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

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

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

Transcript:

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

ιασωλήνωση 2

Διασωλήνωση και Παραλληλισμός (Parallelism) Διασωλήνωση (Pipelining): Μια λειτουργία διαιρείται σε ένα αριθμό σταδίων. Το κάθε στάδιο υλοποιείται με το δικό του υλικό Η Διασωλήνωση είναι μια τεχνική υλοποίησης στην οποία πολλές ανεξάρτητες λειτουργίες επικαλύπτονται κατά την εκτέλεση (διαφορετικά στάδια τους) 50 10 15 15 10 Παράλληλη Επεξεργασία (Parallelism) Επιπλέον πόρους (Replicated resources) Επεξεργασία ανεξάρτητων λειτουργιών ενός προγράμματος 50 50 3

Pipelining Παραλληλισμός + Pipelining 4

Επεξεργαστές σήμερα βασίζονται στο 1. Pipelining (221) 2. παραλληλισμό εντολών, και (370) 3. παραλληλισμό νημάτων/προγραμμάτων(470) 5

Πόσους κύκλους χρειάζεται μια εντολή; Κάθε πόσους κύκλους τελειώνει μια εντολή; Υποθέστε pipeline με 4 στάδια (S1-S4) T i : εντολή i k n-1 S 4 T 1 T 2 T 3 T 4 T 5 T 6 S 3 T 1 T 2 T 3 T 4 T 5 T 6 S 2 T 1 T 2 T 3 T 4 T 5 T 6 S 1 T 1 T 2 T 3 T 4 T 5 T 6 1 2 3 4 5 6 7 8 9 6

Χρόνος Εκτέλεσης = I x CPI x Cycle Time Με ή χωρις pipeline το Ι είναι το ίδιο όπως και τo CPI = 1. Το Cycle Time; Tο ρολόι πρέπει να δουλεύει με την ταχύτητα του πιο αργού τμήματος 7

MIPS IF ID EX MEM WB Instruction Fetch I-Decode Execute Memory Access Write Back Χωρίς pipeline Cycle Time = κρίσιμο μονοπάτι του διαδρόμου δεδομένων (ίδιο για όλες τις εντολές) Με pipeline Cycle Time = Maximum (κρίσιμο μονοπάτι κάθε σταδίου) Στην καλύτερη περίπτωση pipeline Cycle Time = Cycle Time χωρίς pipeline / αριθμός σταδίων 8

Επιτάχυνση Διασωλήνωσης (Pipeline Speedup) Χρόνος Εκτέλεσης χωρίς Διασωλήνωση Sk = Χρόνος Εκτέλεσης με Διασωλήνωση S SpeedUp k T1 n *t*k Tk [(n - 1) + k] * t I I n * k (n - 1) + k I I I= αριθμός εντολών t = χρόνος κύκλου μηχανής k = αριθμός τμημάτων διασωλήνωσης k I-1 S 4 T 1 T 2 T 3 T 4 S 3 T 1 T 2 T 3 T 4 S 2 T 1 T 2 T 3 T 4 S 1 T 1 T 2 T 3 T 4 1 2 3 4 5 6 7 8 9 9

Παράδειγμα: Υπολογίστε την επιτάχυνση από την χρήση ενός διασωληνωμένου αθροιστή με 4 τμήματα στην πρόσθεση δυο Διανυσμάτων 1) 1 2) 10 3) 100 S 4 S 4 S 4 1* 4 1 4 10* 4 4 9 308. 100* 4 388. 4 99 lim Sk( n) n k 4) 1000 S 4 1000* 4 4 999 399. 10

Next PC 5 Steps of MIPS Datapath Instruction Fetch 4 Adder Figure A.2, Page A-8 Instr. Decode. Fetch Next SEQ PC RS1 Execute Addr. Calc Zero? Memory Access MUX Write Back Address Instr. Memory Inst RS2 RD File MUX MUX Data Memory L M D MUX Imm Sign Extend WB Data

Ας υποθέσουμε πως έχουμε τα πιο κάτω στάδια στο pipeline: IF: Προσκόμιση εντολής ( Instruction Fetch) ID: Αποκωδικοποίηση εντολής και ανάγνωση καταχωρητών (Instruction decode and register file read) EXE: Εκτέλεση ή υπολογισμός διεύθυνσης (Execution or address calculation) MEM: Προσπέλαση και ανάγνωση μνήμης δεδομένων (Data memory access) WB: Γράψιμο στους καταχωρητές (Write Back) 12

5 Steps of MIPS Datapath Instruction Fetch Instr. Decode. Fetch Execute Addr. Calc Figure A.3, Page A-9 Memory Access Write Back Next PC 4 Adder Next SEQ PC RS1 Next SEQ PC Zero? MUX Address Memory IF/ID RS2 File ID/EX MUX MUX EX/MEM Data Memory MEM/WB MUX Imm Sign Extend RD RD RD WB Data PIPELINE REGISTERS Καταχωρητές ιασωλήνωσης

(Datapath) του Pipeline με control Instruction Fetch Instr. Decode. Fetch Execute Addr. Calc Memory Access Write Back Next PC 4 Adder Next SEQ PC RS1 Next SEQ PC Zero? MUX Address Memory IF/ID RS2 File ID/EX MUX MUX EX/MEM Memory MEM/WB MUX Datapath Imm Sign Extend RD RD RD WB Data Control Path

Καταχωρητές ιασωλήνωσης F/D: PC, instruction D/E: Src1,Src2, instruction, PC, imm(sign ext) control for other stages (muxes, op, Mem signals) E/W. W/M.

Καταχωρητές Διασωλήνωσης (pipeline registers) Όλες οι εντολές προχωρούν σε κάθε κύκλο ρολογιού από ένα καταχωρητή διασωλήνωσης στον επόμενο. Οι καταχωρητές ονομάζονται από τα δύο στάδια που διαχωρίζονται από τον συγκεκριμένο καταχωρητή. Για παράδειγμα ο καταχωρητής μεταξύ των σταδίων IF και ID ονομάζεται IF/ID. Προσέξτε ότι δεν υπάρχει καταχωρητής στο τέλος του σταδίου WB. Όλες οι εντολές πρέπει να αλλάξουν (update) κάποια κατάσταση (state) στη μηχανή -το αρχείο καταχωρητών, την μνήμη ή τον PCέτσι δεν χρειάζεται ακόμα ένας καταχωρητής διασωλήνωσης στο στάδιο όπου η κατάσταση αλλάζεται. Για παράδειγμα, μια εντολή load θα τοποθετήσει το αποτέλεσμα της σε ένα από τους 32 καταχωρητές, και οποιαδήποτε μεταγενέστερη εντολή χρειάζεται αυτό το δεδομένο απλά θα διαβάσει τον κατάλληλο καταχωρητή. 16

Εκτέλεση με διασωλήνωση Κάθε εντολή (ανεξάρτητα τύπου) πρέπει να περάσει από όλα τα στάδια Χρειάζεται 5 κύκλους για να ολοκληρωθεί μια εντολή Δυνατότητα να ολοκληρώνεται μια εντολή κάθε κύκλο 17

Κίνδυνοι Διασωλήνωσης (Pipeline Hazards ) ΙΔΕΑΤΑ: Το σύστημα διασωλήνωσης του ΜIPS εργάζεται χωρίς διακοπές εάν η κάθε εντολή που εκτελείται στη διασωλήνωση είναι ανεξάρτητη από κάθε άλλη εντολή που εκτελείται στη Διασωλήνωση Στην πράξη υπάρχουν αλληλεξαρτήσεις μεταξύ των εντολών που εκτελούνται στην διασωλήνωσης Κίνδυνοι Διασωλήνωσης: Εμποδίζουν την επόμενη ακολουθία εντολών από του να εκτελεστεί κατά τη διάρκεια του προκαθορισμένου κύκλου μηχανής. (στάση διασωλήνωσης ή φυσαλίδες διασωλήνωσης) Stalls και Bubbles: μείωση της βελτίωσης από την χρήση του pipeline Ύπαρξη κινδύνου προαπαιτεί εξάρτηση αλλά όχι το αντίστροφο Δομικοί Κίνδυνοι (Structural Hazards) Κίνδυνοι Δεδομένων (Data Hazards) Κίνδυνοι Ροής (Control Hazards) 18

Speed Up Equation for Pipelining CPI pipelined Ideal CPI Average Stall cycles per Inst Speedup 1 Ideal CPI Pipeline depth Ideal CPI Pipeline stall CPI Cycle Cycle Time Time unpipelined pipelined For simple RISC pipeline, Ideal CPI = 1: Speedup 1 1 Pipeline Pipeline depth stall CPI Cycle Cycle Time Time unpipelined pipelined

20

Δομικοί Κίνδυνοι (Structural Hazards) Ορισμένοι συνδυασμοί εντολών δεν μπορούν να ικανοποιηθούν διότι χρειάζονται περισσότερους πόρους από αυτούς που διαθέτει η μηχανή 1. Ορισμένες λειτουργικές μονάδες δεν είναι διασωληνωμένες 2. Ορισμένες μονάδες δεν αναπαράγονται αρκετά για να ικανοποιήσουν όλους τους πιθανούς συνδυασμούς από εντολές. Αρχείο καταχωρητών που επιτρέπει μόνο μια πρόσβαση (Only one register-file port) Μια πόρτα μνήμης 21

Παράδειγμα: μια πόρτα μνήμης Time (clock cycles) Ποια είναι η εξάρτηση (dependence); Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 I n s t r. O r d e r Load Instr 1 Instr 2 Instr 3 Instr 4 Structural Hazard

Time (clock cycles) Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 I n s t r. O r d e r Load Instr 1 Instr 2 Stall Instr 3 Bubble Bubble Bubble Bubble Bubble Πως προκάλεις bubble στο pipeline?

Time (clock cycles) Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 I n s t r. O r d e r Load Instr 1 Instr 2 Stall Instr 3 Bubble Bubble Bubble Bubble Bubble

Bubble στο FETCH Στο στάδιο fetch εκτελούμε το πιο κάτω: if (Optype[E/M]==memory) PC = PC Instruction[F/D]=nop (no operation) else normal

Bubble/Stall Γενικά Εάν υπάρχει σε στάδιο εντολή που έχει hazzard, τότε ΠΡΟΗΓΟΥΜΕΝΑ ΣΤΑΔΙΑ STALL (διατηρούν κατάσταση) ΣΤΟ ΕΠΟΜΕΝΟ ΣΤΑΔΙΟ NOP TA ΑΛΛΑ ΣΤΑΔΙΑ ΠΡΟΧΩΡΟΥΝ

Μηχανισμός Εξασφάλισης της Διασωλήνωσης [Pipeline Interlocks] Επισημαίνει κινδύνους και Σταματά την τροφοδότηση στη διασωλήνωση της εντολής που θα χρησιμοποιήσει ένα δεδομένο μέχρι αυτό να παραχθεί από την παραγωγό εντολή 27

Λύσεις για κίνδυνους δομής Λύση 1: Wait must detect the hazard must have mechanism to stall Χάνεις επίδοση Εάν οι εντολές πρόσβασης στη μνήμη είναι το 30% του ολικού αριθμού των εντολών. Πόσο πιο γρήγορη είναι η ιδανική μηχανή σε σύγκριση με την πραγματική μηχανή; Λύση 2: Throw more hardware at the problem Επίδοση με δύο πόρτες σε σχέση με ιδεατή;

MUX WB Data Λύση των Κίνδυνων ομών στο σχεδιασμό Next PC MUX Next SEQ PC Next SEQ PC Zero? Adder RS1 4 MEM/WB MUX MUX ID/EX File IF/ID Instr Cache Data Cache EX/MEM RS2 Address Sign Extend Imm Datapath RD RD RD Control Path

Εξάρτηση εδομένων: RAW Εξάρτηση Read After Write (RAW) I: add r1,r2,r3 J: sub r4,r1,r3 Αυτό μπορεί να προκαλέσει κίνδυνο σε ένα pipeline. Πότε;

Κίνδυνοι-Δεδομένων (Data Hazards) Κίνδυνοι-Δεδομένων δημιουργούνται όταν η διασωλήνωση διαφοροποιεί τη σειρά πρόσβασης σε τελεστές σε σύγκριση με τη σειρά πρόσβασης χωρίς διασωλήνωση Time (clock cycles) add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 IF ID/RF EX MEM WB A I Re D Re L m g m g U Im Re g I m A L U Re g Im D m A L U Re g Im Re g D m A L U Re g Re g D m A L U Re g D m Re g Ποιες είναι οι εξαρτήσεις (dependences) και ποιοι oi κίνδυνοι (hazards); 31

Μεταβίβαση (Forwarding) για αποφυγή Κινδύνου εδομένων Time (clock cycles) I n s t r. add r1,r2,r3 sub r4,r1,r3 O r d e r and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 32

Αλλαγές στο υλικό για Forwarding NextPC isters ID/EX mux mux EX/MEM Data Memory MEM/WR Immediate mux 33

Τι σημαίνει μεταβίβαση (forwarding); Μεταχείριση πεδίων των pipeline registers σαν πιθανά inputs στις εντολές Πχ: στο στάδιο ΕΧΕC εκτελούμε το πιο κάτω: if (Src1[D/E]!= NULL) if (Dest[Ε/Μ]==Src1[D/Ε]) Src1= DestValue[Ε/Μ] else if (Dest[M/W]==Src1[D/Ε]) Src1= DestValue[M/W] else Src1= SrcValue1[D/E] 34

Κίνδυνοι εδομένων και με Time (clock cycles) Forwarding I n s t r. lw r1,0(r2) sub r4,r1,r6 O r d e r and r6,r1,r7 or r8,r1,r9 35

Λύσεις του κινδύνου της εντολής φόρτωσης Time (clock cycles) I n s t r. O r d e r lw r1, 0(r2) sub r4,r1,r6 and r6,r1,r7 Bubble Bubble or r8,r1,r9 Bubble 36

Παράδειγμα: Το 20% των εντολών είναι φόρτωσης (loads) Στο 50% των περιπτώσεων η επόμενη εντολή χρησιμοποιεί το αποτέλεσμα της εντολής φόρτωσης Ο κίνδυνος αυτός δημιουργεί μια στάση στη διασωλήνωση Ερώτηση: Πόσο πιο γρήγορη είναι η διασωλήνωση χωρίς τον κίνδυνο αυτό σε σύγκριση με την πραγματική μηχανή 37

Παράδειγμα: Το 20% των εντολών είναι φόρτωσης Στο 50% των περιπτώσεων η επόμενη εντολή χρησιμοποιεί το αποτέλεσμα της εντολής φόρτωσης. Ο κίνδυνος αυτός δημιουργεί μια στάση στη διασωλήνωση Ερώτηση: Πόσο πιο γρήγορη είναι η διασωλήνωση χωρίς τον κίνδυνο αυτό σε σύγκριση με την πραγματική μηχανή Το CPI της εντολής που ακολουθεί την εντολή φόρτωσης και χρησιμοποιεί το αποτέλεσμα της φόρτωσης είναι 1.5 CPI= 1 + 0.2 * 0.5 *1 = 1.1 Performance ratio = 1.1 / 1 i.e. 10% faster 38

Forwarding to Avoid LW-SW Data Hazard Figure A.8, Page A-20 Time (clock cycles) I n s t r. add r1,r2,r3 lw r4, 0(r1) O r d e r sw r4,12(r1) or r8,r6,r9 xor r10,r9,r11

Διαβίβαση Δεδομένων (Data Forwarding) Το σύστημα διασωλήνωσης πρέπει να διαβιβάζει δεδομένα μεταξύ διαφόρων σταδίων Κίνδυνοι Δεδομένων δημιουργούνται και όταν δυο εντολές διαβάζουν ή γράφουν την ίδια τοποθεσία στη μνήμη. #Ποτέ υπάρχει εξάρτηση; sw r4,0(r5).... lw r3,4(r6) Στον pipeline που εξετάζουμε ο κίνδυνος αυτός δεν παρουσιάζεται διότι οι προσπελάσεις στη μνήμη γίνονται πάντοτε στη σωστή σειρά. (Μόνο το τμήμα MEM διαβάζει ή γράφει στη μνήμη) 40

Κίνδυνοι Διακλαδώσεων 10: beq r1,r3,36 14: and r2,r3,r5 18: or r6,r1,r7 22: add r8,r1,r9 36: xor r10,r1,r11

Κίνδυνοι Διακλαδώσεων 10: beq r1,r3,36 Three Stage Stall Τι θα γίνει όταν διαβάσουμε εντολή διακλάδωσης?

Κίνδυνοι Διακλαδώσεων 10: beq r1,r3,36 Three Stage Stall stall Bubble Bubble Bubble Bubble Bubble stall Bubble Bubble Bubble Bubble Bubble stall Bubble Bubble Bubble Bubble Bubble 36: xor r10,r1,r11 (taken) ή 14: and r2,r3,r5 (not taken)

Κίνδυνοι Διακλαδώσεων (Κίνδυνοι Ροής Ελέγχου) Οι Κίνδυνοι Διακλαδώσεων δημιουργούνται όταν έχουμε μια διακλάδωση (η οποία μπορεί και να βασίζεται σε αποτέλεσμα άλλης εντολής) στην διασωλήνωση που ακολουθείτε από άλλες εντολές. Παράδειγμα: Υπολογίστε την επιτάχυνση του pipeline εάν το 30% των εντολών είναι διακλαδώσεις Οι διακλαδώσεις στο MIPS χρειάζονται 3 τμήματα (IF, ID,EXE) 3 stalls (στάσεις, φυσσαλίδες) Ideal CPI = 1. CPIreal= 1 + 0.3 x 3 = 1.9 Μόνο 50% της ιδανικής επιτάχυνσης είναι εφικτή. 44

Η μείωση του κόστους της επιτάχυνσης είναι εξαιρετικά σημαντική Ειδικά για μηχανές υψηλής απόδοσης Πολλαπλά στάδια μεταξύ fetch και execution) Τρόποι για μείωση κινδύνων λόγο διακλαδώσεων: #1: Stall until branch direction is known #2: Determine target and direction early #3: Predict Branch Not Taken #4: Predict Branch Taken #5 #6 45

Οι στάσεις που οφείλονται σε κινδύνους διακλαδώσεων μπορούν να ελαττωθούν εάν: 1. Προσδιορίσουμε πιο νωρίς στην διασωλήνωση εάν η διακλάδωση θα γίνει 2. Υπολογίσουμε το νέο PC πιο νωρίς και τα δυο πρέπει να γίνουν 46

Write Back MEM/WB MUX WB Data Μείωση stalls λόγο διακλαδώσεων Memory Access Execute Addr. Calc Instr. Decode. Fetch Instruction Fetch Next SEQ PC Next PC MUX Zero? Adder Adder RS1 4 Data Memory EX/MEM RS2 MUX ID/EX File IF/ID Memory Address Sign Extend Imm RD RD RD

Η μείωση επιτυγχάνεται με: Την προσθήκη ειδικού κυκλώματος για να ελέγχει τη συνθήκη διακλάδωσης (test-for-zero) στο τμήμα ID Την προσθήκη ειδικού αθροιστή στο τμήμα ID για τον υπολογισμό της Διεύθυνσης του Προορισμού της Διακλάδωσης(BTA: branch target address). Γιατί όχι στο στάδιο fetch; Το κόστος της διακλάδωσης τώρα ένας κύκλος Μειονεκτήματα; 48

Μείωση του κόστους των διακλαδώσεων σε διασωληνωμένες μηχανές Στατικές Προβλέψεις Πρόβλεψη ότι η διακλάδωση θα είναι επιτυχής (taken) Πρόβλεψη ότι η διακλάδωσης δεν θα είναι επιτυχής (not taken) 49

#3: Predict Branch Not Taken Execute successor instructions in sequence Flush/Squash instructions in pipeline if branch actually taken Τι σημαίνει squash? 47% branches not taken on average PC+4 already calculated, so use it to get next instruction 50

Control Hazard on Branches 10: beq r1,r3,36 Three Stage Stall 14: and r2,r3,r5 Bubble Bubble 18: or r6,r1,r7 Bubble Bubble Bubble 22: add r8,r1,r9 Bubble Bubble Bubble Bubble 36: xor r10,r1,r11

Squash Pipeline Σε όλα τα στάδια πριν το branch εισαγωγή bubble. 52

#4: Predict Branch Taken 53% branches taken on average But haven t calculated branch target address Still incur 1 cycle branch penalty Other machines: branch target known before outcome 53

Διακλαδώσεις με καθυστέρηση [Delayed branch] Διακλαδώσεις με καθυστέρηση n κύκλων Η Διακλάδωση με καθυστέρηση δεν λαμβάνει χώρα μέχρις ότου ένας αριθμός εντολών (n) που ακολουθούν τη διακλάδωση εκτελεστούν Branch Instruction Sequential Successor 1 Sequential Successor 2 Sequential Successor n branch target if taken Ο MIPS έχει μια στάση για κάθε διακλάδωση. Δηλαδή η Διακλάδωση με καθυστέρηση δεν λαμβάνει χώρα μέχρι να εκτελεστεί η εντολή που ακολουθεί την διακλάδωση. Σχισμή Καθυστέρησης Διακλάδωσης: Η σχισμή που ακολουθεί τη σχισμή της Διακλάδωσης με καθυστέρηση [Branch Delay Slots] Μέρος της αρχιτεκτονικής συνόλου εντολών MIPS 54

add $1,$2,$3 if $2=0 then delay slot Scheduling Branch Delay Slots A. From before branch B. From branch target C. From fall through sub $4,$5,$6 add $1,$2,$3 if $1=0 then delay slot In B and C, must be okay to execute sub when branch fails Αλλιώς πρέπει να ακυρώσεις την εντολή στο delay slot Ποτε ok not to cancel? add $1,$2,$3 if $1=0 then delay slot sub $4,$5,$6 becomes becomes becomes add $1,$2,$3 if $2=0 then if $1=0 then add $1,$2,$3 add $1,$2,$3 if $1=0 then sub $4,$5,$6 sub $4,$5,$6

Precise Exceptions

Πως χειριζόμαστε τις εξαιρέσεις και διακοπές (exceptions και interrupts) Η εντολή που προκαλεί την εξαίρεση την σημειώνουμε (flag) στον καταχωρητή διασωλήνωσης στο τέλος του σταδίου που βρίσκεται η εντολή Οι διακοπές σημειώνονται στο προτελευταίο στάδιο Όταν η εντολή φτάσει στο τελευταίο στάδιο εξυπηρετούμαι το exception/interrupt ιασφαλίζεται πως εξυπηρετείτε το exception της πιο παλιάς εντολής Όλες οι προηγούμενες εντολές έχουν τελειώσει και καμία πιο μετά δεν έχει ξεκινήσει 57

Διασωλήνωσης Μονάδων Υποθέστε το pipeline με 7 στάδια Σε κάθε κύκλο μηχανής τερματίζεται η επεξεργασία μιας εντολής Επιτάχυνση της τάξης του 7 σε σύγκριση με μη-διασωληνωμένη μηχανή. Υποθέστε ότι η μνήμη χρειάζεται 4 κύκλους μηχανής και όχι 1. Ο μέσος χρόνος εκτέλεσης μιας εντολής εξαρτάται από το πιο αργό τμήμα, τη μνήμη Με αυτό το ρυθμό παράγεται ένα αποτέλεσμα σε κάθε κύκλο. Η μη-διασωληνωμένη μηχανή χρειάζεται 3 x 4 + 4 x 1 = 16 κύκλους. Επιτάχυνση της τάξης του 4 Ερώτηση: Πως μπορούμε να βελτιώσουμε αυτή την διασωλήνωση 58 Instr. Fetch Instr. Decode Address Gen Oper. Fetch Execute Oper. Store Update PC

Διασωλήνωσης Μονάδων Προσθέτουμε 3 τμήματα καθυστέρησης μετά από κάθε τμήμα μνήμης Η νέα διασωλήνωση έχει 16 τμήματα Ένα αποτέλεσμα παράγεται σε κάθε κύκλο. Επιτάχυνση της τάξης του 16 Ερώτηση: Είναι αυτό εφικτό/πρακτικό; Τι γίνεται με τις διακλαδώσεις; Η καινούργια διασωλήνωση χρειάζεται ταυτόχρονα 12 προσπελάσεις μνήμης Σε αυτή την περίπτωση η διασωλήνωση έχει μεταβιβάσει το πρόβλημα σε ένα άλλο σύστημα. Instr. Fetch IF2 IF3 IF4 Instr. Decode Address Gen Oper. Fetch OF2 OF3 OF4 Execute Oper. Store OS2 OS3 OS4 59 Update PC

Χρονοπρογραμματισμός Εντολών [Instruction Scheduling] Οι Μεταγλωττιστές επιδιώκουν να αποφεύγουν την παραγωγή κώδικα στον οποίο μια εντολή φόρτωσης ακολουθείται από μια ή περισσότερες εντολές που θα χρησιμοποιήσουν το αποτέλεσμα της φόρτωσης Παράδειγμα: Γράψετε κώδικα που αποφεύγει στάσεις στη διασωλήνωση του MIPS (υποθέστε a,b,c,d,e διευθύνσεις μνήμης) a= b+ c d= e- f Unoptimized Code lw Rb, b lw Rc, c add Ra, Rb, Rc sw a, Ra lw Re, e lw Rf, f sub Rd, Re, Rf sw d, Rd Optimized Code lw Rb, b lw Rc, c lw Re, e add Ra, Rb, Rc lw Rf, f sw a, Ra sub Rd, Re, Rf sw d, Rd 60