COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22...

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

Transcript of COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22...

Page 1: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

Κεφάλαιο 4

Ο επεξεργαστής

Page 2: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εισαγωγή

Παράγοντες απόδοσης της CPU Πλήθος εντολών

Καθορίζεται από την αρχιτεκτονική συνόλου εντολών και το μεταγλωττιστή

CPI και Χρόνος κύκλου Καθορίζεται από το υλικό της CPU

Θα εξετάσουμε δύο υλοποιήσεις του MIPS Μια απλουστευμένη έκδοση

Μια πιο ρεαλιστική έκδοση με διοχέτευση (pipeline)

Απλό υποσύνολο, δείχνει τις περισσότερες πτυχές Αναφορά μνήμης: lw, sw Αριθμητικές/λογικές: add, sub, and, or, slt Μεταφοράς ελέγχου: beq, j

§4.1

Εισ

αγω

γή

Page 3: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εκτέλεση εντολής

PC μνήμη εντολών, προσκόμιση (fetch)

εντολής

Αριθμοί καταχωρητών αρχείο καταχωρητών

(register file), ανάγνωση καταχωρητών

Ανάλογα με τη κατηγορία της εντολής

Χρήση της ALU για τον υπολογισμό

Αριθμητικού αποτελέσματος

Διεύθυνσης μνήμης για εντολές load/store

Διεύθυνση προορισμού διακλάδωσης

Προσπέλαση μνήμης δεδομένων για load/store

PC διεύθυνση προορισμού ή PC + 4

Page 4: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Επισκόπηση της CPU

Page 5: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Πολυπλέκτες

Δεν μπορούμε

απλώς να ενώσουμε

καλώδια μαζί

Χρήση πολυπλεκτών

Page 6: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Έλεγχος

Page 7: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Βασικά λογικής σχεδίασης §4.2

Συμ

βά

σεις

λογικ

ής σ

χεδ

ίασ

ης

Η πληροφορία κωδικοποιείται δυαδικά

Χαμηλή τάση = 0, Υψηλή τάση = 1

Ένα καλώδιο ανά bit

Δεδομένα πολλών bit κωδικοποιούνται με διαύλους πολλών καλωδίων

Συνδυαστικό στοιχείο

Επενεργεί σε δεδομένα

Η έξοδος είναι συνάρτηση της εισόδου

Στοιχεία κατάστασης (ακολουθιακά)

Αποθηκεύουν πληροφορίες

Page 8: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Συνδυαστικά στοιχεία

Πύλη AND

Y = A & B

A

B Y

I0

I1 Y

M

u

x

S

Πολυπλέκτης

Y = S ? I1 : I0

A

B

Y +

A

B

Y ALU

F

Αθροιστής

Y = A + B

Αριθμητική/Λογική

Μονάδα

Y = F(A, B)

Page 9: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Ακολουθιακά στοιχεία

Καταχωρητής: αποθηκεύει δεδομένα σε ένα κύκλωμα

Χρησιμοποιεί σήμα ρολογιού για να καθορίσει πότε ενημερώνεται η αποθηκευμένη τιμή

Ακμοπυροδοτούμενη: ενημέρωση όταν το Clk αλλάζει από 0 σε 1

D

Clk

Q

Clk

D

Q

Page 10: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Ακολουθιακά στοιχεία

Καταχωρητής με έλεγχο εγγραφής

Ενημερώνει στην ακμή του ρολογιού μόνο όταν η είσοδος ελέγχου εγγραφής είναι 1

Χρησιμοποιείται όταν η αποθηκευμένη τιμή απαιτείται αργότερα

D

Clk

Q

Write

Write

D

Q

Clk

Page 11: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Μεθοδολογία χρονισμού

Η συνδυαστική λογική μετασχηματίζει τα δεδομένα στη διάρκεια των κύκλων ρολογιού Μεταξύ ακμών ρολογιού

Είσοδος από στοιχεία κατάστασης, έξοδος σε στοιχεία κατάστασης

Η μεγαλύτερη καθυστέρηση καθορίζει την περίοδο του ρολογιού

Page 12: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Κατασκευή διαδρομής δεδομένων

Διαδρομή δεδομένων (datapath)

Στοιχεία που επεξεργάζονται δεδομένα και

διευθύνσεις στη CPU

Καταχωρητές, ALU, πολυπλέκτες, μνήμες, …

Θα κατασκευάσουμε μια διαδρομή

δεδομένων MIPS με διαδοχικά βήματα

Θα κάνουμε πιο αναλυτικό το συνολικό σχέδιο

§4.3

Κα

τασ

κευ

ή δ

ιαδρ

ομ

ής δ

εδομ

ένω

ν

Page 13: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Προσκόμιση εντολής (Instruction Fetch)

καταχωρητής

32 bit

Αύξηση κατά

4 για την

επόμενη

εντολή

Page 14: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εντολές μορφής R

Ανάγνωση δύο τελεστέων καταχωρητών

Εκτέλεση αριθμητικής/λογικής λειτουργίας

Εγγραφή αποτελέσματος σε καταχωρητή

Page 15: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εντολές Load/Store

Ανάγνωση τελεστέων καταχωρητών

Υπολογισμός διεύθυνσης με χρήση της σχετικής απόστασης (offset) των 16 bit Χρήση της ALU, αλλά με επέκταση προσήμου του offset

Φόρτωση (Load): ανάγνωση μνήμης και ενημέρωση καταχωρητή

Αποθήκευση (Store): εγγραφής τιμής καταχωρητή στη μνήμη

Page 16: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εντολές διακλάδωσης (branch)

Ανάγνωση τελεστέων καταχωρητών

Σύγκριση τελεστέων

Χρήση ALU, αφαίρεση και έλεγχος της εξόδου Zero

Υπολογισμός διεύθυνσης προορισμού

Επέκταση προσήμου της μετατόπισης (displacement)

Αριστερή ολίσθηση κατά 2 θέσεις (μετατόπιση λέξης)

Πρόσθεση στο PC + 4 Έχει ήδη υπολογιστεί από την προσκόμιση εντολής

Page 17: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εντολές διακλάδωσης

Απλώς

επαναδρομολογεί

τις εγγραφές

Επαναλαμβάνεται το

καλώδιο του bit προσήμου

Page 18: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Δημιουργία των στοιχείων

Μια πρώτη διαδρομή δεδομένων (data

path) εκτελεί μία εντολή σε έναν κύκλο

ρολογιού

Κάθε στοιχείο της διαδρομής δεδομένων

κάνει μόνο μία συνάρτηση κάθε φορά

Έτσι, χρειαζόμαστε ξεχωριστές μνήμες

εντολών και δεδομένων

Χρήση πολυπλεκτών όταν χρησιμο-

ποιούνται διαφορετικές προελεύσεις

δεδομένων σε διαφορετικές εντολές

Page 19: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διαδρομή δεδομένων για Τύπο R/Load/Store

Page 20: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Πλήρης διαδρομή δεδομένων

Page 21: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Έλεγχος ALU

Η ALU χρησιμοποιείται για

Load/Store: λειτουργία = add

Branch: λειτουργία = subtract

Τύπου R: λειτουργία εξαρτάται από το πεδίο funct

§4.4

Μια

απ

λή μ

έθοδος υ

λοπ

οίη

σης Έλεγχος ALU Λειτουργία

0000 AND

0001 OR

0010 add

0110 subtract

0111 set-on-less-than

1100 NOR

Page 22: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Έλεγχος 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

Page 23: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Η κύρια μονάδα ελέγχου

Σήματα ελέγχου που εξάγονται από εντολή

0 rs rt rd shamt funct

31:26 5:0 25:21 20:16 15:11 10:6

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

Τύπου R

Load/

Store

Branch

opcode πάντα

ανά-

γνωση

ανάγνωση,

εκτός από τη

load

εγγραφή

για τύπου

R και load

επέκταση

προσήμου

και

πρόσθεση

Page 24: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διαδρομή δεδομένων και έλεγχος

Page 25: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εντολή τύπου R

Page 26: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εντολή Load

Page 27: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εντολή Branch-on-Equal

Page 28: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Υλοποίηση αλμάτων

Η Jump χρησιμοποιεί διεύθυνση λέξης

Ενημέρωση του PC με συνένωση των

Υψηλότερων 4 bit του παλιού PC

Διεύθυνσης άλματος των 26 bit

00

Χρειάζεται ένα επιπλέον σήμα ελέγχου

από την αποκωδικοποίηση του opcode

2 address

31:26 25:0

Jump

Page 29: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διαδρομή δεδ. με προσθήκη αλμάτων

Page 30: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Ζητήματα απόδοσης

Η μεγαλύτερη καθυστέρηση καθορίζει την

περίοδο ρολογιού

Κρίσιμη διαδρομή (critical path): εντολή load

Μνήμη εντολών αρχείο καταχωρητών ALU

μνήμη δεδομένων αρχείο καταχωρητών

Δεν είναι εφικτή διαφορετική περίοδος για

διαφορετικές εντολές

Παραβιάζει τη σχεδιαστική αρχή

Κάνε τη συνηθισμένη περίπτωση γρήγορη

Θα βελτιώσουμε την απόδοση με τη διοχέτευση

(pipelining)

Page 31: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Αναλογία διοχέτευσης

Μπουγάδα με διοχέτευση: επικάλυψη εκτέλεσης

Η παραλληλία βελτιώνει την απόδοση

§4.5

Γεν

ικά

για

τη δ

ιοχέτευ

ση

Τέσσερα φορτία:

Επιτάχυνση

= 8/3.5 = 2.3

Ασταμάτητα:

Επιτάχυνση

= 2n/0.5n + 1.5 ≈ 4

= αριθμός σταδίων

Page 32: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διοχέτευση του 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 (επανεγγραφή αποτελέσματος σε καταχωρητή)

Page 33: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Απόδοση διοχέτευσης

Υποθέστε ότι ο χρόνος των σταδίων είναι

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

Page 34: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Απόδοση διοχέτευσης

Ενός κύκλου (Tc= 800ps)

Με διοχέτευση (Tc= 200ps)

Page 35: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Επιτάχυνση λόγω διοχέτευσης

Αν είναι ισορροπημένα όλα τα στάδια

Δηλαδή, όλα διαρκούν τον ίδιο χρόνο

Χρόνος μεταξύ εντολώνμε διοχέτευση

= Χρόνος μεταξύ εντολώνχωρίς διοχέτευση

Αριθμός σταδίων

Αν δεν είναι ισορροπημένα, η επιτάχυνση είναι

μικρότερη

Επιτάχυνση λόγω αυξημένης διεκπεραιωτικής

ικανότητας (throughput)

Λανθάνων χρόνος – latency (χρόνος για κάθε εντολή)

δε μειώνεται

Page 36: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διοχέτευση και σχεδίαση συνόλου εντολών

Το σύνολο εντολών του MIPS είναι σχεδιασμένο για διοχέτευση Όλες οι εντολές είναι των 32 bit

Ευκολότερη προσκόμιση και αποκωδικοποίηση σε έναν κύκλο

σύγκριση με x86: εντολές 1 έως 17 byte

Λίγες και κανονικές μορφές εντολών Μπορεί να αποκωδικοποιήσει και να διαβάσει καταχωρητές

σε ένα βήμα

Διευθυνσιοδότηση Load/store Μπορεί να υπολογίσει τη δ/νση στο τρίτο στάδιο, και να

προσπελάσει τη μνήμη στο τέταρτο στάδιο

Ευθυγράμμιση των τελεστέων μνήμης Προσπέλαση μνήμης διαρκεί μόνο έναν κύκλο

Page 37: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Κίνδυνοι (hazards)

Καταστάσεις που αποτρέπουν την εκκίνηση της

επόμενης εντολής στον επόμενη κύκλο

Κίνδυνος δομής (structure hazards)

Ένας απαιτούμενος πόρος είναι απασχολημένος

Κίνδυνος δεδομένων (data hazard)

Πρέπει να περιμένει την προηγούμενη εντολή να

ολοκληρώσει την ανάγνωση/εγγραφή δεδομένων της

Κίνδυνος ελέγχου (control hazard)

Η απόφαση σε μια ενέργεια ελέγχου εξαρτάται από

προηγούμενη εντολή

Page 38: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Κίνδυνοι δομής

Διένεξη στη χρήση ενός πόρου

Στη διοχέτευση του MIPS με μία μοναδική μνήμη Οι εντολές load/store απαιτούν προσπέλαση μνήμης

Η προσκόμιση εντολής πρέπει να καθυστερήσει (stall) σε εκείνο το κύκλο

Θα προκαλούσε «φυσαλίδα» της διοχέτευσης (pipeline “bubble”)

Έτσι, οι διαδρομές δεδομένων με διοχέτευση απαιτούν ξεχωριστές μνήμες εντολών/δεδομένων Ή ξεχωριστές κρυφές μνήμες (cache memories)

εντολών/δεδομένων

Page 39: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Κίνδυνοι δεδομένων

Μια εντολή εξαρτάται από την ολοκλήρωση μιας

προσπέλασης δεδομένων μιας προηγούμενης

εντολής

add $s0, $t0, $t1 sub $t2, $s0, $t3

Page 40: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Προώθηση (Forwarding)

Λέγεται επίσης Παράκαμψη (Bypassing)

Χρήση του αποτελέσματός όταν δημιουργηθεί Μην περιμένεις να αποθηκευτεί σε καταχωρητή

Απαιτεί επιπλέον συνδέσεις στη διαδρομή δεδομένων

Page 41: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Κίνδυνος δεδομένων Φόρτωσης/Χρήσης

Φόρτωση/Χρήση (Load/Use)

Δεν μπορούμε να αποφύγουμε πάντα τις καθυστερήσεις με την προώθηση Αν η τιμή δεν έχει υπολογιστεί όταν χρειάζεται

Δεν μπορεί να γίνει προώθηση προς τα πίσω στο χρόνο!

Page 42: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Χρονοπρογρ/μός κώδικα για αποφυγή καθυστερήσεων

Αναδιάταξη κώδικα για αποφυγή χρήσης του

αποτελέσματος της 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)

καθυστέρηση

καθυστέρηση

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 κύκλοι 13 κύκλοι

Page 43: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Κίνδυνοι ελέγχου

Η διακλάδωση καθορίζει τη ροή του ελέγχου (flow of control)

Η προσκόμιση της επόμενης εντολής εξαρτάται από το αποτέλεσμα της διακλάδωσης

Η διοχέτευση δεν μπορεί να προσκομίσει πάντα τη σωστή εντολή Ακόμη δουλεύει στο στάδιο ID της διακλάδωσης

Στη διοχέτευση του MIPS

Πρέπει να συγκρίνει καταχωρητές και να υπολογίσει τη δ/νση προορισμού νωρίς στη διοχέτευση

Προσθήκη υλικού για να γίνουν στο στάδιο ID

Page 44: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Καθυστέρηση σε διακλάδωση

Stall on branch

Περίμενε μέχρι να καθοριστεί το αποτέλεσμα της διακλάδωσης πριν προσκομίσεις την επόμενη εντολή

Page 45: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Πρόβλεψη διακλάδωσης

Branch prediction

Οι μεγαλύτερες διοχετεύσεις δεν μπορούν να καθορίσουν σύντομα το αποτέλεσμα της διακλάδωσης Η ποινή καθυστέρησης (stall penalty) γίνεται

υπερβολικά μεγάλη

Πρόβλεψη (predict) του αποτελέσματος της διακλάδωσης Καθυστέρηση μόνο αν η πρόβλεψη είναι λανθασμένη

Στη διοχέτευση του MIPS Μπορεί να γίνει πρόβλεψη μη λήψης της

διακλάδωσης (predict not taken)

Προσκόμιση της εντολής μετά τη διακλάδωση, χωρίς καθόλου καθυστέρηση

Page 46: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

MIPS με πρόβλεψη μη λήψης

Σωστή

πρόβλεψη

Λανθασμένη

πρόβλεψη

Page 47: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Πιο ρεαλιστική πρόβλεψη διακλάδωσης

Στατική πρόβλεψη διακλάδωσης

Βασίζεται στην τυπική συμπεριφορά των διακλαδώσεων

Παράδειγμα: διακλαδώσεις σε βρόχους και εντολές if

Πρόβλεψη διακλαδώσεων προς τα πίσω (backward branches) ως

λαμβανόμενες

Πρόβλεψη διακλαδώσεων προς τα εμπρός (forward branches) ως

μη λαμβανόμενες

Δυναμική πρόβλεψη διακλάδωσης

Το υλικό μετράει τη πραγματική συμπεριφορά διακλαδώσεων

π.χ., καταγράφει την πρόσφατη ιστορία κάθε διακλάδωσης

Υποθέτει ότι η μελλοντική συμπεριφορά θα συνεχίσει την τάση

Σε περίπτωση λάθους, γίνεται καθυστέρηση κατά την

επαναπροσκόμιση, και ενημέρωση του ιστορικού

Page 48: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Περίληψη διοχέτευσης

Η διοχέτευση βελτιώνει την απόδοση με την

αύξηση της διεκπεραιωτικής ικανότητας σε

εντολές

Εκτελεί πολλές εντολές παράλληλα

Κάθε εντολή έχει τον ίδιο λανθάνοντα χρόνο

Υπόκειται σε κινδύνους

Δομής, δεδομένων, ελέγχου

Η σχεδίαση του συνόλου εντολών επιδρά στην

πολυπλοκότητα της υλοποίησης της διοχέτευσης

ΓΕΝΙΚΗ εικόνα

Page 49: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διαδρομή δεδομένων MIPS με διοχέτευση

§4.6

Δια

δρ

ομ

ή δ

εδομ

ένω

ν κ

αι έλ

εγχος μ

ε διο

χέτευ

ση

WB

MEM

Ροή από δεξιά προς

αριστερά οδηγεί σε

κινδύνους (hazards)

Page 50: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Καταχωρητές διοχέτευσης

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

προηγούμενο κύκλο

Page 51: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Λειτουργία διοχέτευσης

Ανά κύκλο ροή των εντολών μέσα από τη

διαδρομή δεδομένων με διοχέτευση

Διάγραμμα διοχέτευσης «ενός κύκλου ρολογιού»

(“single-clock-cycle”)

Δείχνει τη χρήση της διοχέτευσης σε ένα μόνο κύκλο

Τονίζει τους πόρους που χρησιμοποιούνται

Σύγκριση με διάγραμμα «πολλών κύκλων ρολογιού»

(“multi-clock-cycle”)

Γράφημα της λειτουργίας στο χρόνο

Θα δούμε διαγράμματα «ενός κύκλου ρολογιού»

για εντολές load και store

Page 52: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Στάδιο IF για Load, Store, …

Page 53: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Στάδιο ID για Load, Store, …

Page 54: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Στάδιο EX για Load

Page 55: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Στάδιο MEM για Load

Page 56: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Στάδιο WB για Load

Λάθος

αριθμός

καταχωρητή

Page 57: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διορθωμένη διαδρομή Load

Page 58: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Στάδιο EX για Store

Page 59: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Στάδιο MEM για Store

Page 60: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Στάδιο WB για Store

Page 61: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διάγραμμα διοχέτευσης πολλών κύκλων

Μορφή που δείχνει τη χρήση των πόρων

Page 62: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διάγραμμα διοχέτευσης πολλών κύκλων

Παραδοσιακή μορφή

Page 63: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διάγραμμα διοχέτευσης ενός κύκλου

Κατάσταση της διοχέτευσης σε δεδομένο κύκλο

Page 64: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Έλεγχος διοχέτευσης (απλουσ.)

Page 65: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Έλεγχος διοχέτευσης

Σήματα ελέγχου εξάγονται από την εντολή

Όπως και στην υλοποίηση ενός κύκλου

Page 66: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Έλεγχος διοχέτευσης

Page 67: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Κίνδυνοι δεδομένων σε εντολές ALU

Θεωρήστε την ακολουθία:

sub $2, $1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2)

Μπορούμε να επιλύσουμε τους κινδύνους

με προώθηση (forwarding)

Πώς ανιχνεύουμε πότε πρέπει να γίνει

προώθηση;

§4.7

Κίν

δυνοι δ

εδομ

ένω

ν: π

ροώ

θησ

η κ

αι κ

αθυσ

τέρησ

η

Page 68: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εξαρτήσεις και προώθηση

Page 69: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Ανίχνευση ανάγκης για προώθηση

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

καταχ. διοχ.

Page 70: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Ανίχνευση ανάγκης για προώθηση

Αλλά μόνο αν η εντολή που προωθεί

πρόκειται να γράψει σε κάποιο

καταχωρητή!

EX/MEM.RegWrite, MEM/WB.RegWrite

Και μόνο αν το Rd της εντολής δεν είναι

$zero

EX/MEM.RegisterRd ≠ 0,

MEM/WB.RegisterRd ≠ 0

Page 71: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διαδρομές προώθησης

Page 72: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Συνθήκες προώθησης

Κίνδυνος στο στάδιο 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

Page 73: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διπλός κίνδυνος δεδομένων

Θεωρήστε την ακολουθία: add $1,$1,$2 add $1,$1,$3 add $1,$1,$4

Συμβαίνουν και οι δύο κίνδυνοι

Θέλουμε να χρησιμοποιήσουμε τον πιο πρόσφατο

Αναθεώρηση της συνθήκης προώθησης του MEM

Προώθηση μόνο αν η συνθήκη κινδύνου του σταδίου EX δεν είναι αληθής

Page 74: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Αναθεωρημένη συνθήκη προώθησης

Κίνδυνος στο στάδιο 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

Page 75: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διαδρομή δεδομένων με προώθηση

Page 76: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Κίνδυνος δεδομένων φόρτωσης-χρήσης

Απαιτείται

καθυστέρηση

για έναν

κύκλο

Page 77: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Ανίχνευση κινδύνου φόρτωσης-χρήσης

Έλεγχος όταν η εντολή που κάνει τη χρήση

αποκωδικοποιείται στο στάδιο 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))

Αν ανιχνευθεί, γίνεται καθυστέρηση της

διοχέτευσης και εισάγεται φυσαλίδα

Page 78: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Πώς καθυστερεί η διοχέτευση

Οι τιμές ελέγχου στον καταχωρητή ID/EX

γίνονται 0

Τα EX, MEM και WB εκτελούν nop (no-operation,

απραξία)

Αποτρέπεται η ενημέρωση του PC και του

καταχωρητή IF/ID

Η εντολή που κάνει τη χρήση αποκωδικοποιείται και

πάλι

Η επόμενη εντολή προσκομίζεται και πάλι

Η καθυστέρηση 1 κύκλου επιτρέπει στο MEM να

διαβάσει τα δεδομένα για την εντολή lw

Μπορεί στη συνέχεια να κάνει προώθηση στο στάδιο EX

Page 79: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Καθυστέρηση/φυσαλίδα στη διοχέτευση

Η

καθυστέρηση

εισάγεται εδώ

Page 80: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Καθυστέρηση/φυσαλίδα στη διοχέτευση

Ή, για την

ακρίβεια …

καθυστερεί στο ID

καθυστερεί στο IF

Page 81: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διαδρομή δεδομένων με ανίχνευση κινδύνων

Page 82: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Καθυστερήσεις και απόδοση

Οι καθυστερήσεις μειώνουν την απόδοση

Αλλά είναι απαραίτητες για να πάρουμε

σωστά αποτελέσματα

Ο μεταγλωττιστής μπορεί να αναδιατάξει

τον κώδικα για να αποφευχθούν οι

κίνδυνοι και οι καθυστερήσεις

Απαιτεί γνώση της δομής της διοχέτευσης

ΓΕΝΙΚΗ εικόνα

Page 83: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Κίνδυνοι διακλάδωσης

Αν το αποτέλεσμα της διακλάδωσης καθορίζεται στο MEM

§4.8

Κίν

δυνοι ελ

έγχου

PC

Εκκένωση αυτών

των εντολών

(τιμές ελέγχου

στο 0)

Page 84: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Μείωση καθυστέρησης διακλάδωσης

Μεταφορά υλικού για προσδιορισμό αποτελέσματος στο στάδιο 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)

Page 85: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Παράδειγμα: λαμβανόμενη διακλάδωση

Page 86: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Παράδειγμα: λαμβανόμενη διακλάδωση

Page 87: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Κίνδυνοι δεδομένων για διακλαδώσεις

Αν ένας καταχωρητής σύγκρισης είναι προορισμός εντολής ALU που προηγείται κατά 2 ή 3 θέσεις

IF ID EX MEM WB

IF ID EX MEM WB

IF ID EX MEM WB

IF ID EX MEM WB

add $4, $5, $6

add $1, $2, $3

beq $1, $4, target

Μπορεί να λυθεί με προώθηση

Page 88: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Κίνδυνοι δεδομένων για διακλαδώσεις

Αν ένας καταχωρητής σύγκρισης είναι προορισμός εντολής ALU που προηγείται αμέσως ή εντολής φόρτωσης που προηγείται κατά 2 θέσεις

Χρειάζεται 1 κύκλος καθυστέρησης

beq stalled

IF ID EX MEM WB

IF ID EX MEM WB

IF ID

ID EX MEM WB

add $4, $5, $6

lw $1, addr

beq $1, $4, target

Page 89: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Κίνδυνοι δεδομένων για διακλαδώσεις

Αν ένας καταχωρητής σύγκρισης είναι

προορισμός μιας εντολής φόρτωσης που

προηγείται αμέσως

Χρειάζονται 2 κύκλοι καθυστέρησης

beq stalled

IF ID EX MEM WB

IF ID

ID

ID EX MEM WB

beq stalled

lw $1, addr

beq $1, $0, target

Page 90: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Δυναμική πρόβλεψη διακλάδωσης

Σε πιο βαθιές και υπερβαθμωτές διοχετεύσεις, η ποινή της διακλάδωσης είναι πιο σημαντική

Χρήση δυναμικής πρόβλεψης Προσωρινή μνήμη πρόβλεψης διακλάδωσης (branch

prediction buffer), που λέγεται και πίνακας ιστορικού διακλάδωσης (branch history table)

Δεικτοδοτείται από τις διευθύνσεις της πρόσφατης εντολής διακλάδωσης

Αποθηκεύει το αποτέλεσμα (λήψη/μη λήψη)

Για εκτέλεση μιας διακλάδωσης Έλεγχος του πίνακα, υπόθεση του ίδιου αποτελέσματος

Εκκίνηση προσκόμισης από την επόμενη ή τον προορισμό

Αν λάθος, εκκένωση διοχέτευσης και αντιστροφή πρόβλεψης

Page 91: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διάταξη πρόβλεψης 1 bit: μειονέκτημα

Οι διακλαδώσεις του εσωτερικού βρόχου προβλέπονται λανθασμένα δύο φορές

outer: … … inner: … … beq …, …, inner … beq …, …, outer

Λανθασμένη πρόβλεψη λήψης στην τελευταία

επανάληψη του εσωτερικού βρόχου

Μετά λανθασμένη πρόβλεψη μη λήψης στην

πρώτη επανάληψη του εσωτερικού βρόχου την

επόμενη φορά που θα εκτελεστεί

Page 92: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διάταξη πρόβλεψης των 2 bit

Αλλάζει η πρόβλεψη μόνο μετά από δύο

διαδοχικές λανθασμένες προβλέψεις

Page 93: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Υπολογισμός προορισμού διακλάδωσης

Ακόμη και με πρόβλεψη, πρέπει ακόμη να υπολογιστεί η διεύθυνση διακλάδωσης

Ποινή 1 κύκλου για λαμβανόμενη διακλάδωση

Προσωρινή μνήμη προορισμού διακλάδωσης (branch target buffer)

Κρυφή μνήμη για διευθύνσεις προορισμού

Δεικτοδοτείται από τον PC όταν προσκομίζεται η εντολή Αν υπάρχει ευστοχία (hit) και η εντολή είναι

διακλάδωση με πρόβλεψη λήψης, μπορεί να γίνει άμεση προσκόμιση του προορισμού

Page 94: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εξαιρέσεις και διακοπές

«Μη αναμενόμενα» συμβάντα που απαιτούν

αλλαγή της ροής του ελέγχου

Διαφορετικές αρχιτεκτονικές συνόλου εντολών

χρησιμοποιούν τους όρους διαφορετικά

Εξαίρεση (exception)

Παρουσιάζεται μέσα στη CPU

π.χ., μη ορισμένος κωδικός λειτουργίας (undefined opcode),

υπερχείλιση (overflow), κλήση συστήματος (syscall), …

Διακοπή (interrupt)

Από έναν εξωτερικό ελεγκτή εισόδου/εξόδου

Δύσκολος ο χειρισμός τους χωρίς να θυσιαστεί

απόδοση

§4.9

Εξα

ιρέσ

εις

Page 95: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Χειρισμός εξαιρέσεων

Στο MIPS, τις εξαιρέσεις διαχειρίζεται ένας Συνεπεξεργαστής Ελέγχου Συστήματος (System Control Coprocessor), ο CP0

Αποθήκευση του PC της εντολής που διακόπτεται Στο MIPS: Exception Program Counter (EPC)

Αποθήκευση της ένδειξης του προβλήματος Στον MIPS: καταχωρητής Cause (Αιτίου)

Υποθέτουμε 1 bit μόνο 0 για μη ορισμένο κωδικό λειτουργίας (undefined opcode), και

1 για υπερχείλιση

Άλμα στο χειριστή στη δ/νση 8000 00180

Page 96: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εναλλακτικός μηχανισμός

Διανυσματικές διακοπές (vectored interrupts)

Η δ/νση του χειριστή καθορίζεται από την αιτία

Παράδειγμα:

Μη ορισμένος opcode: C000 0000

Υπερχείλιση: C000 0020

…: C000 0040

Οι εντολές είτε

Ασχολούνται με τη διακοπή, είτε

Κάνουν άλμα στον πραγματικό χειριστή

Page 97: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Ενέργειες του χειριστή

Ανάγνωση αιτίου, και μετάβαση στο σχετικό χειριστή

Καθορισμός απαιτούμενης ενέργειας

Αν η εντολή είναι επανεκκινήσιμη (restartable)

Εκέλεσεση διορθωτικής ενέργειας

Χρήση του EPC για επιστροφή στο πρόγραμμα

Αλλιώς

Τερματισμός προγράμματος

Αναφορά σφάλματος με χρήση του EPC, του αιτίου, …

Page 98: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Εξαιρέσεις σε μια διοχέτευση

Άλλη μορφή κινδύνου ελέγχου

Θεωρήστε υπερχείλιση στην πρόσθεση στο

στάδιο EX

add $1, $2, $1

Αποφυγή ζημιάς (εγγραφής) στον $1

Ολοκλήρωση των προηγούμενων εντολών

Εκκένωση της add και των επόμενων εντολών

Ρύθμιση τιμών των καταχωρητών Cause και EPC

Μεταφορά ελέγχου στο χειριστή

Όμοια με λανθασμένη πρόβλεψη διακλάδωσης

Χρήση μεγάλου μέρους του ίδιου υλικού

Page 99: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Διοχέτευση με εξαιρέσεις

Page 100: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Πλάνες

Η διοχέτευση είναι εύκολη (!)

Η βασική ιδέα είναι εύκολη

Ο διάβολος κρύβεται στις λεπτομέρειες

π.χ., ανίχνευση κινδύνων δεδομένων

Η διοχέτευση είναι ανεξάρτητη από την

τεχνολογία

Τότε γιατί δεν κάναμε πάντα διοχέτευση;

Τα περισσότερα τρανζίστορ κάνουν εφικτές τις πιο

προηγμένες τεχνικές

Η σχεδίαση αρχιτεκτονικών συνόλου εντολών που

σχετίζεται με τη διοχέτευση πρέπει να λαμβάνει

υπόψη της τις τεχνολογικές τάσεις

π.χ., εντολές με κατηγορήματα

§4.1

3 Π

λά

νες

κα

ι πα

γίδ

ες

Page 101: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Παγίδες

Η φτωχή σχεδίαση της αρχιτεκτονικής συνόλου

εντολών μπορεί να κάνει δυσκολότερη τη

διοχέτευση

π.χ., πολύπλοκα σύνολα εντολών (VAX, IA-32)

Σημαντική επιβάρυνση για να δουλέψει η διοχέτευση

Προσέγγιση του IA-32 με μικρολειτουργίες (micro-ops)

π.χ., πολύπλοκοι τρόποι διευθυνσιοδότησης

Παρενέργειες ενημέρωσης καταχωρητών, εμμεσότητα

μνήμης

π.χ., καθυστερημένες διακλαδώσεις

Οι προηγμένες διοχετεύσεις έχουν μεγάλες υποδοχές

καθυστέρησης

Page 102: COD4e greek slides - NTUA · 2014-10-15 · Κ 0φάλαιο 4 — Ο 0π 0ξργαής — 22 Έλγχος ALU Υποθέτουμε ότι ένα πεδίο 2 bit ALUOp εξάγεται

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

Συμπερασματικές παρατηρήσεις

Η αρχιτεκτονική συνόλου εντολών επηρεάζει τη σχεδίαση της διαδρομής δεδομένων και της μονάδας ελέγχου

Η διαδρομή δεδομένων και η μονάδα ελέγχου επηρεάζουν τη σχεδίαση της αρχιτεκτονικής συνόλου εντολών

Η διοχέτευση βελτιώνει τη διεκπεραιωτική ικανότητα εντολών με τη χρήση παραλληλίας Περισσότερες εντολές ολοκληρώνονται ανά δευτερόλεπτο

Ο λανθάνων χρόνος κάθε εντολής δε μειώνεται

Κίνδυνοι: δομής, δεδομένων, ελέγχου

Πολλαπλή εκκίνηση και δυναμικός χρονοπρογραμματισμός (παραλληλία επιπέδου εντολής – ILP) Οι εξαρτήσεις περιορίζουν την επιτεύξιμη παραλληλία

Η πολυπλοκότητα οδηγεί στο τείχος της ισχύος (power wall)

§4.1

4 Σ

υμ

περ

ασ

μα

τικές

πα

ρα

τηρ

ήσ

εις