Professional Documents
Culture Documents
Pipe PDF
Pipe PDF
Pipe PDF
Αρχιτεκτονική
Υπολογιστών
Υπόβαθρο:
Διοχέτευση
Αρης
Ευθυμίου
Το
σημερινό
μάθημα
2
Βήματα
εκτέλεσης
εντολής
Από
το
μοντέλο
von
Neumann,
για
επεξεργαστές
RISC:
1. Fetch
–
προσκόμιση
εντολής,
από
τη
διεύθυνση
που
δείχνει
ο
PC
(program
pointer)
2. Decode
–
αποκωδικοποίηση
3. Execute
–
εκτέλεση
4. Αποθήκευση
αποτελέσματος
και
ενημέρωση
του
PC
Μικρές
παραλλαγές
ανάλογα
με
το
είδος
εντολής,
π.χ.
στο
3ο
βήμα:
– load/store:
υπολογισμός
διεύθυνσης
μνήμης
και
προσπέλαση
– branch:
υπολογισμός
νέου
PC
αν
η
διακλάδοση
ακολουθείται
Παρατήρηση:
δυνατή
η
επικάλυψη
βημάτων
3
Διοχέτευση
-‐
pipelining
Κάθε
έργο
A,
B,
…
διαιρείται
σε
n
δουλειές
(A1,
…,
An)
που
εκτελούνται
με
τη
σειρά
– κάθε
δουλειά
απαιτεί
παρόμοιο
χρόνο
εκτέλεσης
Τα
έργα
περνούν
μέσα
από
n
στάδια
(stages)
– Το
i-‐οστό
στάδιο
εκτελεί
την
i-‐οστή
δουλειά
– Κάθε
δουλειά
εκτελείται
από
διαφορετικό
σταθμό
Εστω
ti
ο
χρόνος
εκτέλεσης
της
δουλειάς
Ai
και
tM=max{ti}
Με
γεμάτη
διοχέτευση,
ένα
έργο
τελειώνει
κάθε
tM
Αύξηση
ρυθμού
εκτέλεσης
έργων
Καθυστέρηση
ενός
έργου
n
x
tM
– μπορεί
να
είναι
μεγαλύτερη
από
t1
+
t2
+
…
+
tn
4
Παράδειγμα
Πλύσιμο
πιάτων:
5
άνθρωποι,
4
βρώμικα
πιάτα
ο
καθένας
Δουλειές:
– μεταφορά
πιάτου
στη
κουζίνα
–
20
sec
– πέταγμα
υπολειμάτων
–
30
sec
– πλύσιμο
–
30
sec
– στέγνωμα
–
30
sec
– αποθήκευση
–
40
sec
Σειριακό
πλύσιμο:
4x5
x
(20+30+30+30+40)
=
3000
=
50m
– ρυθμός:
150
sec
το
πιάτο
Αν
βοηθήσουν
όλοι;
– κάθε
βήμα
θα
παίρνει
40
sec
5
Διοχέτευση:
παρατηρήσεις
Ο
χρόνος
κάθε
σταδίου
πρέπει
να
είναι
παρόμοιος
(balanced
pipeline)
Χρειάζεται
αποθήκευση
(buffering)
μεταξύ
σταδίων
για
τις
μικροδιαφορές
του
χρόνου
εκτέλεσής
τους
Κάθε
έργο
περνά
από
όλα
τα
στάδια
και
με
την
ίδια
σειρά
Κάθε
στάδιο
πρέπει
να
έχει
διαθέσιμους
όλους
τους
πόρους
που
χρειάζεται
για
να
λειτουργήσει
– αλλιώς
δομικός
κίνδυνος
(structural
hazard)
Διακοπές
προκαλούν
άδειασμα
της
διοχέτευσης
6
Στοιχεία
υπόθ.
επεξεργαστή
RISC,
load-‐store,
32
general
purpose
registers
(R0-‐R31)
32bit
registers,
PC
Ξεχωριστές
Instruc‡on,
Data
caches
– υποθέτουμε
ότι
πάντα
έχουν
ό,τι
ζητηθεί
Εντολές
Αριθμητικές,
λογικές:
Ri
Rj
op
Rk
– Το
Rt
μπορεί
να
αντικατασταθεί
από
μία
σταθερά
(immediate)
Μεταφορές
δεδομένων:
Ri
Mem[Rj
+
disp]
Αλλαγή
ροής:
br
(R
op
R),
disp
– Αν
η
συνθήκη
ισχύει,
PC
=
PC
+
disp
7
Διαχωρισμός
σταδίων
Εξετάζουμε
τη
load
που
χρειάζεται
τα
περισσότερα
βήματα:
Fetch
pipeline
register
Decode
Execute
Memory
access
Writeback
8
Στάδιο
προσκόμισης
εντολής
Instruc‡on
Fetch
(IF)
Ανάγνωση
μνήμης
στη
διεύθυνση
που
δείχνει
ο
καταχωρητής
PC
(program
counter)
Υπολογισμός
της
διεύθυνσης
επόμενης
εντολής:
PC+4
– κάθε
εντολή
είναι
4
bytes
– μνήμη
είναι
διευθυνσιοδοτημένη
σε
bytes
9
Στάδιο
αποκωδικοποίησης
Instruc‡on
decode/register
fetch
(ID)
Αποκωδικοποίηση
εντολής
Ανάγνωση
από
το
αρχείο
καταχωρητών
(register
file)
των
(μέχρι)
2
καταχωρητών
πηγής
Επέκταση
προσήμου
του
τμήματος
offset
της
εντολής
– για
εντολές
με
σταθερά
κωδικοποιημένη
μέσα
στην
εντολή
– π.χ.
branch,
load,
store,
…
Υπολογισμός
PC
σε
περίπτωση
διακλάδωσης:
– PC
+
sgn-‐ext(offset).
Σημ.
το
PC
έχει
ήδη
αυξηθεί
κατά
4
στο
προηγούμενο
κύκλο
Πολλές
πράξεις
γίνονται
πρότερα,
ίσως
να
μή
χρειαστούν!
10
Στάδιο
Εκτέλεσης
Execu‡on
/
effec‡ve
address
(EX)
Εκτέλεση
αριθμητικών
πράξεων
ανάλογα
με
την
εντολή
Μεταφορές
από
μνήμη:
υπολογισμός
διεύθυνσης
– τιμή
καταχωρητή
+
σταθερά
(με
επέκταση
προσήμου)
– effec‡ve
address
=
base
register
+
offset
Εντολές
πράξεων
ALU
– η
ALU
εκτελεί
τη
κατάλληλη
πράξη
είτε
μεταξύ
τιμών
καταχωρητών
ή
μεταξύ
σταθεράς
και
καταχωρητή.
Υπολογισμός
συνθήκης
για
εντολές
διακλάδοσης
11
Στάδιο
προσπέλασης
μνήμης
Memory
access
(MEM)
Η
διεύθυνση
που
έχει
υπολογιστεί
στο
προηγούμενο
κύκλο
χρησιμοποιείται
για
προσπέλαση
μνήμης
Εκτέλεση
εγγραφών
(store)
ολοκληρώνεται
εδώ.
12
Στάδιο
επανεγγραφής
Write-‐back
Εντολές
load
γράφουν
τη
τιμή
που
διαβάστηκε
από
τη
μνήμη
πίσω
στο
αρχείο
καταχωρητών
– και
οι
εντολές
ΑLU.
13
Σχηματική
αναπαράσταση
14
Διοχετευμένος
MIPS
4
M Branch
ADD u taken
x
Zero?
IR6..10
PC IR11..15 M
u
Instruction IR
x
memory MEM/WB.IR Registers ALU
M
u Data M
x memory u
x
16 32
Sign-
extend
15
Κίνδυνοι
διοχέτευσης
Αν
όλες
οι
εντολές
στη
διοχέτευση
ήταν
ανεξάρτητες,
επίδοση
*=
αριθμός
σταδίων
Καταστάσεις
που
εμποδίζουν
μία
εντολή
να
εκτελεστεί
στο
χρόνο
ρολογιού
που
της
αναλογεί
– κίνδυνοι
–
hazards
Δομικοί
-‐
structural
hazards
– δεν
υπάρχει
αρκετό
υλικό
για
όλους
τους
δυνατούς
συνδιασμούς
εντολών
της
διοχέτευσης
Δεδομένων
-‐
data
hazards
– μία
εντολή
εξαρτάται
από
το
αποτέλεσμα
μιας
άλλης
Ελέγχου
-‐
control
hazards
– διακλαδώσεις,
άλματα,
κλήση-‐επιστροφή
υπορουτίνας,
διακοπές
16
Δομικοί
κίνδυνοι
Συμβαίνουν
όταν
δεν
επαρκούν
οι
πόροι
(resources)
για
όλους
τους
πιθανούς
συνδιασμούς
εντολών
στη
διοχέτευση
Παράδειγμα:
– σε
κάποιες
περιπτώσεις
πρέπει
να
επανεγγραφούν
2
αποτελέσματα
στον
ίδιο
κύκλο
αλλά
το
αρχείο
καταχωρητών
έχει
μία
θύρα
εγγραφής
Μπορούν
πάντα
να
απαλειφθούν
«πληρώνοντας»
περισσότερο
υλικό
– Αν
συμβαίνουν
σπάνια,
το
κόστος
είναι
μεγαλύτερο
από
το
όφελος
17
Παράδειγμα
Μία
θύρα
μνήμης
για
εντολές
και
δεδομένα
Προσπελάσεις
μνήμης
(δεδομένων)
40%
των
εντολών
CPI
χωρίς
stalls
=
1
Συχνότητα
ρολογιού
επεξεργαστή
με
το
δομικό
κίνδυνο
1.05
φορές
από
αυτού
χωρίς
τον
κίνδυνο
AvgInstTimenohazard = CPI × ClockCyclenohazard = 1 × ClockCyclenohazard
18
Κίνδυνοι
δεδομένων
Συμβαίνουν
λόγω
εξαρτήσεων
μεταξύ
εντολών
– π.χ.
μία
εντολή
περιμένει
το
αποτέλεσμα
μιας
προηγούμενης
R7 R12 + R15
R8 R7 - R12
R15 R8 + R7
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6
ALU
IM Reg DM Reg
R8 R7 DSUB
- R
ALU
R4,12
R1, R5 IM Reg DM Reg
R15 R8 AND+R6,
R7R1, R7
ALU
IM Reg DM
ALU
IM Reg
OR R8, R1, R9
20
Αποφυγή
κινδύνων
-‐
προώθηση
Time (in clock cycles)
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6
ALU
IM Reg DM Reg
R8 R7 DSUB
- R
ALU
R4,12
R1, R5 IM Reg DM Reg
R15 R8 AND+R6,
R7R1, R7
ALU
IM Reg DM
… …R
ALU
IM
OR 7R8, R1, R9 Reg
21
Υλοποίηση
προώθησης
22
Προώθηση
-‐
λεπτομέρειες
R10 R4 + R5
R5 Mem[R6]
R10 R7 + R10
Mem[R8] R5
R8 R10 + R7
23
Αναμονή
-‐
stall
Time (in clock cycles)
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6
ALU
IM Reg DM Reg
2
R7 R6 +DSUBRR4,
ALU
4 R1, R5 IM Reg DM Reg
ALU
AND R6, R1, R7 IM Reg DM
ALU
IM Reg
OR R8, R1, R9
24
Pipeline
interlocks
Το
προηγ.
παράδειγμα
είναι
γνωστή,
συνηθισμένη
περίπτωση:
load-‐use
stall
(ή
hazard)
– Συνεπάγεται
αντίστοιχη
καθυστέρηση
(l-‐u
delay,
penalty)
Το
υλικό
πρέπει
να
ανιχνεύσει
τέτοιες
περιπτώσεις
και
να
σταματήσει
(stall)
μέρος
της
διοχέτευσης
για
κατάλληλο
αριθμό
κύκλων
– τουλάχιστον
1
κύκλο
στη
περίπτωση
load-‐use
Αυτή
η
τεχνική
λέγεται
pipeline
interlock
25
Αναμονή
Οταν
μια
εντολή
πρέπει
να
περιμένει
(stall)
σε
ένα
στάδιο
διοχέτευσης
για
κάποιους
κύκλους
– (όλες)
οι
επόμενες
εντολές
πρέπει
επίσης
να
περιμένουν
– Δεν
μπορούν
να
ξεκινήσουν
καινούριες
εντολές
Οι
προηγούμενες
εντολές
συνεχίζουν
την
εκτέλεσή
τους
– αλλιώς
δε
θα
ξαναξεκινούσε
ποτέ
η
διοχέτευση!
Δημιουργούνται
κενά
(bubbles)
στη
διοχέτευση
– στάδια
που
δεν
έχουν
εντολές
για
εκτέλεση
26
Υλοποίηση
αναβολής
load
enable
stall
IF/ID ID/EX EX/MEM MEM/WB
4
M Branch
ADD u taken
x
Zero?
IR6..10
PC IR11..15 M
u
Instruction IR
x
memory MEM/WB.IR Registers ALU
M
u Data M
x memory u
x
16 32
Sign-
extend
27
Κίνδυνοι
ελέγχου
Η
διοχέτευση
είναι
αποδοτική
όταν
είναι
πάντα
γεμάτη
Αλλαγές
στη
ροή
του
προγράμματος
διακόπτουν
τη
συνεχή
ροή
εντολών
στη
διοχέτευση
και
προκαλούν
κινδύνους
ελέγχου
Εντολές
που
αλλάζουν
τη
ροή
εκτέλεσης:
– διακλάδωση
υπό
συνθήκη
– άλμα
(διακλάδωση
χωρίς
συνθήκη)
– κλήση
υπορουτίνας
– επιστροφή
υπορουτίνας
28
Διακλάδωση
υπό
συνθήκη
Εντολή:
br (Rj op Rk), displ
1. Σύγκριση:
Rj
op
Rk
– στο
στάδιο
EX
(ίσως
στο
ID,
αν
η
σύγκριση
είναι
απλή)
2. αν
χρειάζεται,
υπολογισμός:
PC
+
displ
– γίνεται
πρότερα
στο
στάδιο
ID
με
επιπλέον
ALU
3. αν
χρειάζεται,
εγγραφή
νέας
τιμής
στο
PC
29
Διοχέτευση
και
διακλάδωση
30
Ποινή
διακλάδωσης
Η
καθυστέρηση
που
προκαλεί
μια
διακλάδωση
ονομάζεται
ποινή
διακλάδωσης
–
branch
penalty
31
Χειρισμός
διακλαδώσεων
Αναβολλή
προσκόμισης
– όταν
γνωρίζουμε
ότι
η
εντολή
είναι
διακλάδωση:
1
κύκλο
μετά!
– πιθανό
κέρδος
μόνο
σε
κατανάλωση
ενέργειας
Υπόθεση
ότι
δεν
θα
ακολουθηθεί
(predict
not-‐taken)
– συνέχιση
προσκόμισης,
μέχρι
να
έχουμε
το
αποτέλεσμα
της
συνθήκης
– ακύρωση
των
λάθος
εντολών,
αν
η
συνθήκη
ισχύει
Υπόθεση
ότι
θα
ακολουθηθεί
(predict
taken)
– όταν
γνωρίζουμε
ότι
η
εντολή
είναι
διακλάδωση
– χρήσιμο
αν
ο
υπολογισμός
του
προορισμού
γίνεται
πριν
τον
υπολογισμό
της
συνθήκης
Καλύτερα:
δυναμική
πρόβλεψη
– θα
εξεταστεί
αργότερα
32
Αλλοι
κίνδυνοι
ελέγχου
Διακοπή
ροής
προγράμματος
από
απρόβλεπτες
καταστάσεις
(excep‡ons,
interrupts)
– π.χ.
υπερχειλίσεις,
page
faults,
διακοπές
από
περιφερειακά
Οι
διακοπές
διαχειρίζονται
από
το
Λ.Σ.
με
βοήθεια
από
το
υλικό
– σταματά
η
εκτέλεση
του
προγράμματος
– τρέχει
ο
χειριστής
διακοπών
του
Λ.Σ.
– ξαναξεκινά
η
εκτέλεση
του
προγράμματος,
αν
το
επιτρέπει
το
Λ.Σ.
Αποθήκευση
«κατάστασης»
– τιμές
καταχωρητών,
PC
Πρέπει
το
πρόγραμμα
να
μπορεί
να
συνεχίσει
από
το
σημείο
που
διακόπηκε
33
Ακριβείς
διακοπές
precise
excep‡ons
Χρήσιμες
για
εύκολη
αποθήκευση
κατάστασης
διεργασίας
και
γρήγορη
εξυπηρέτησης
της
διακοπής.
Εστω
ότι
η
διακοπή
προκαλείται
από
i-‐οστή
εντολή
Συνθήκες
για
precise
excep‡ons:
Οι
προηγούμενες
εντολές
(i-‐1,
…)
ολοκληρώνουν
την
εκτέλεσή
τους
και
αποθηκεύουν
τα
αποτελέσματά
τους
Η
εντολή
i
και
οι
επόμενες
ακυρώνονται
(no-‐op),
χωρίς
να
έχουν
αποθηκεύσει
αποτελέσματα
Η
διεύθυνση
της
εντολής
i
κρατείται
ως
το
PC
της
διεργασίας
34
Υλοποίηση
precise
excep‡ons
Οταν
ανιχνευθεί
excep‡on:
η
εντολή
που
το
προκαλεί
παίρνει
ένα
σημάδι
(flag)
– που
την
ακολουθεί
μέχρι
το
τελευταίο
στάδιο
οι
επόμενες
εντολές
ακυρώνονται
σταματά
η
προσκόμιση
εντολών
αφήνουμε
τη
διοχέτευση
να
αδειάσει
– δλδ
η
σημαδεμένη
εντολή
να
φτάσει
στο
τελευταίο
στάδιο
θέτουμε
το
excep‡on
PC
=
διεύθυνση
της
εντολής
που
προκάλεσε
excep‡on
35
Εναλλακτικές
οργ.
διοχέτευσης
Προβλήματα
της
οργάνωσης
που
εξετάσαμε
– 1
κύκλος
καθυστέρη
load-‐use
– Αριθμητικές
εντολές
δεν
κάνουν
τίποτα
στο
MEM
χρειάζονται
forwarding
paths
Εναλλακτική
ιδέα:
– 3ο
στάδιο
μόνο
για
υπολογισμό
διεύθυνσης
(AG)
επιπλέον
αθροιστής
– 4ο
στάδιο
για
προσπέλαση
μνήμης
ή
αριθμ.
εντολές
(MEM-‐EX)
μετακίνηση
της
ALU
στο
4ο
στάδιο
36
Βάθος
διοχέτευσης
Η
διοχέτευση
5
σταδίων
χρησιμοποιείται
ελάχιστα
πλέον
– π.χ.
σε
φτηνούς
μικροελεγκτές
Θα
εξετάσουμε
τα
στάδια
IF,
ID,
ΜΕΜ,
WB
αργότερα
Το
στάδιο
EX
περιλαμβάνει
διάφορα
είδη
λειτουργικών
μονάδων
(func‡onal
unit)
– γρήγορες
ακέραιες
αριθμητικές
λογικές
μονάδες
– αργές
ακέραιες
αριθμητικές
μονάδες:
πολλαπλασιαστές,
διαιρέτες
– μονάδες
κινητής
υποδιαστολής
37
Διοχετ.
λειτουργικές
μονάδες
Καθυστέρηση/Latency:
αριθμός
κύκλων
που
απαιτούνται
μεταξύ
της
εντολής
που
παράγει
ένα
αποτέλεσμα
και
αυτής
που
το
χρησιμοποιεί
– Integer
ALU
latency
=
0!
Η
επόμενη
εντολή
μπορεί
να
χρησιμοποιήσει
το
αποτέλεσμα
της
προηγούμενης
(με
προώθηση)
– Γενικά
είναι:
βάθος
διοχέτευσης
(της
μονάδας)
-‐
1
– Υποθέτουμε
ότι
η
εντολή
«καταναλωτής»
χρειάζεται
το
αποτέλεσμα
στο
στάδιο
EX.
– Αν
το
χρειάζεται
στο
MEM
(εντολή
store),
η
καθυστέρηση
είναι
1
κύκλο
μικρότερη
– Αν
το
χρειάζεται
στο
ID
(σύγκριση
για
διακλάδωση)
η
καθυστέρηση
είναι
1
κύκλο
μεγαλύτερη
38
Διοχετ.
λειτουργικές
μονάδες
Ini‡a‡on/repeat
interval
(μεσοδιάστημα
έναρξης):
αριθμός
κύκλων
για
εκκίνηση
(issue)
εντολών
του
ίδιου
τύπου
(εννοείται
ανεξάρτητη
εντολή)
– Integer
unit:
ini‡a‡on
interval
=
1
-‐
σε
κάθε
κύκλο
μπορούμε
να
ξεκινήσουμε
μια
νέα
εντολή
39
Υλοποίηση
Integer unit
EX
FP/integer multiply
M1 M2 M3 M4 M5 M6 M7
IF ID MEM WB
FP adder
A1 A2 A3 A4
FP/integer divider
DIV
40
Επόμενη
φορά
Υπόβαθρο:
κρυφές
μνήμες
(+
βοήθεια
υλικού
για
εικονική
μνήμη)
41