Περιεχόμενα
description
Transcript of Περιεχόμενα
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Αρχιτεκτονική Επεξεργαστών
Από Τον 80386 Στον Pentium 4 Στέφανος Καξίρας{ [email protected], [email protected] }
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Περιεχόμενα
Αρχιτεκτονική και ο νόμος του Moore Σετ εντολών
• Ο πόλεμος των σετ εντολών: RISC εναντίον CISC Από το μικροκώδικα στο pipelining
• 80386 -> 80486 Σπάζοντας το φράγμα του 1 IPC: superscalar
• 80486 -> Pentium Το επόμενο βήμα: ΕΕΣ (OOO)
• Pentium -> Pentium Pro/ΙΙ/ΙΙΙ, Pentium 4 Μνήμη
• Caches Κατανάλωση Ισχύος
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Αρχιτεκτονική και ο Νόμος του Moore
Νόμος του Moore
• Ο αριθμός των τρανζίστορ στα ολοκληρωμένα κυκλώματα διπλασιάζεται κάθε ~ 2 χρόνια
• Intel 4004 (1971): 2300, Pentium 4 (2001): 55.000.000
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Αρχιτεκτονική και ο Νόμος του Moore
Στην πραγματικότητα η απόδοση (ταχύτητα επεξεργασίας για συγκεκριμένα προγράμματα) των επεξεργαστών διπλασιάζεται σε λιγότερο από 2 χρόνια
Σε λιγότερο από 2 χρόνια θα κάνουμε τόση πρόοδο όση κάναμε στα προηγούμενα 28 χρόνια ...
Είναι αυτό αποτέλεσμα του νόμου του Moore?
• Μικρότερα τρανζίστορ = πιο γρήγορα τρανζίστορ = πιο πολλά MHz = απόδοση ?
• OXI
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Αρχιτεκτονική και ο Νόμος του Moore
Η αρχιτεκτονική είναι αυτή που μεταφράζει τα κέρδη στην πυκνότητα και ταχύτητα των τρανζίστορ σε κέρδη στην απόδοση του επεξεργαστή.
Παράδειγμα 1: Το χάσμα της μνήμης (memory gap/wall)
• Την εποχή του Intel 8086 η μνήμη DRAM ήταν πιο γρήγορη από τον επεξεργαστή. Ένα LOAD πιο γρήγορο από ένα ADD.
• Σήμερα ένα LOAD ~ 70 κύκλους του επεξεργαστή, ίσως ~ 140 εντολές (ADD) !
• Αλλά η αναλογία των LOAD στα προγράμματα παραμένει η ίδια …
• Λύση ? Αρχιτεκτονική:
— Cache memories, “κρυφές” “γρήγορες” μνήμες
— κάνουν τη DRAM να φαίνεται γρήγορη ...
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Αρχιτεκτονική και ο Νόμος του Moore
Παράδειγμα 2: παραλληλισμός στην εκτέλεση εντολών
• Την εποχή του Intel 8086 μια εντολή χρειαζόταν πολλούς κύκλους για να εκτελεστεί
• Σήμερα ένας Pentium 4 μπορεί να εκτελέσει ταυτόχρονα στον ίδιο κύκλο 6 εντολές
• Εάν δεν μπορούσαμε να εκτελέσουμε πολλές εντολές κάθε κύκλο η αύξηση της απόδοσης θα υπολείπονταν της αύξησης συχνότητας (που έτσι και αλλιώς είναι μικρότερη από 2x/2,5χρόνια).
Αυτά τα δύο παραδείγματα αποτελούν την ουσία της σύγχρονής αρχιτεκτονικής
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Σετ εντολών
Η αρχιτεκτονική του σετ εντολών (ISA) ενός επεξεργαστή είναι το interface με τον έξω κόσμο.
Το σετ εντολών καθώς, η διαχείριση μνήμης (Εικονική μνήμη, virtual memory) και ο χειρισμός των διακοπών (interrupts) ορίζουν την συμπεριφορά του επεξεργαστή.
Έχει σημασία το σετ εντολών για το πόσο εύκολο είναι αρχιτεκτονικά να αποσπάσουμε την μέγιστη απόδοση από έναν επεξεργαστή ?
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Σετ εντολών
Τη δεκαετία του 80 οι μικροεπεξεργαστές με αρχηγό την Intel αλλά και άλλους (π.χ. Moto. 68000, Nat. Semi. 32032) ακολουθούσαν τους κατασκευαστές των mini (IBM, DEC VAX-11) και ολοένα παρουσίαζαν πιο πολύπλοκα σετ εντολών
Οι εντολές γινόταν όλο και πιο σύνθετες, πλησιάζοντας τις γλώσσες υψηλού επιπέδου («semantic gap», VAX 11)
Η αποκορύφωση ήταν ο Intel 432, ένας φοβερά πολύπλοκος επεξεργαστής και μια φοβερή εμπορική αποτυχία της Intel.
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Σετ εντολών
Επικρατούσα αρχιτεκτονική: αρχιτεκτονική με μικροκώδικα:
• ένα μικροπρόγραμμα που έτρεχε συνεχώς σε ένα υποτυπώδη κρυφό επεξεργαστή διάβαζε τις (μακρο)εντολές του προγράμματος μια-μια και ενορχήστρωνε την εκτέλεσή τους κατευθείαν πάνω στο υλικό χρησιμοποιώντας όμως πολλούς κύκλους για κάθε μακροεντολή
Δεδομένου του περιορισμένου αριθμού τρανζίστορ
• Αύξηση της πολυπλοκότητας του σετ εντολών με μεγαλύτερο μικροκώδικα
Δυνατότερες εντολές = καλύτερη απόδοση ? CISC
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Σετ εντολών
RISC: Αντίδραση στην αύξηση της πολυπλοκότητας ήρθε από το Stanford (MIPS) και το Berkeley (RISC-I, RISC-II, SUN SPARC)
Δεδομένου του περιορισμένου αριθμού τρανζίστορ
• Αύξηση της απόδοσης με απλούστερο σετ εντολών (στα βήματα των CRAY και CDC 6600)
Mικροεντολές -> σετ εντολών
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
RISC εναντίων CISC
RΙSC CISC Διαφορά σε 32 bit Μεταβλητού μήκους Decode Ομοιόμορφες Πολλές μορφές Decode
Εντολές
Απλές Πολύπλοκες Execute Καταχωρητές Πολλοί Λίγοι Pipelining
Λίγα Πολλά Decode
Απλά Πολύπλοκα Execute
Addressing Modes
Χρήσιμα σε compilers
Αχρησιμοποίητα από compilers
Εκτέλεση Load-store Memory-memory Pipelining
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
RISC εναντίων CISC
Δεδομένου του περιορισμένου αριθμού τρανζίστορ και με πάρα πολλούς πόρους διαθέσιμους...
IA-32, x86(CISC) Εσωτερική μετάφραση σε RISC μ-ops P-PRO/ I I / I I I /4
Μεταβλητού μήκους Σταθερού μήκους 118bit Πολλές μορφές -
Εντολές
Πολύπλοκες Απλές Καταχωρητές Λίγοι
(αρχιτεκτονικοί) Πάρα πολλοί εσωτερικοί (physical registers)
Πολλά
Πολύπλοκα
Addressing Modes
Αχρησιμοποίητα από compilers
Μετάφραση σε πράξεις με διευθύνσεις
Εκτέλεση Memory-memory Load-store εσωτερικα
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Η κατάληξη
Παρόλο που το RISC ήταν πολύ επιτυχημένο την εποχή που παρουσιάστηκε (2,6x RISC advantage), το CISC κατόρθωσε να επιζήσει και να επικρατήσει
Το CISC μπόρεσε να εκμεταλλευτεί όλες τις καινοτομίες του RISC, κυρίως ΟΟΟ, caches
Η αρχιτεκτονική όπως εκφράζεται σήμερα αναφέρεται στο εσωτερικό RISC πυρήνα των επεξεργαστών (είτε είναι Pentium 4 είτε οτιδήποτε άλλο)
Το “εξωτερικό” σετ εντολών δεν καθορίζει πια την “εσωτερική” αρχιτεκτονική ενός επεξεργαστή
• TRANSMETA CRUSOE (Pentium compatible): μεταφράζει το ΙΑ-32(x86) στο δικό του σετ εντολών (VLIW) και μετά το εκτελεί !
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Περιεχόμενα
Αρχιτεκτονική και ο νόμος του Moore Σετ εντολών
• Ο πόλεμος των σετ εντολών: RISC εναντίον CISC Από το μικροκώδικα στο pipelining
• 80386 -> 80486 Σπάζοντας το φράγμα του 1 IPC: superscalar
• 80486 -> Pentium Το επόμενο βήμα: OOO, Εκτέλεση Εκτός Σειράς
• Pentium -> Pentium Pro/2/3, Pentium IV Μνήμη
• Caches Κατανάλωση Ισχύος
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Από τον μικροπρογραμματισμό στο pipelining: 80386 -> 80486
80386 (1986), IA-32, x86 8 registers Αρχιτεκτονική μικροκώδικα
• ένα μικροπρόγραμμα τρέχει συνεχώς σε ένα υποτυπώδη κρυφό επεξεργαστή, διαβάζει τις x86 εντολές του προγράμματος μια-μια και ενορχηστρώνει την εκτέλεσή τους κατευθείαν πάνω στο υλικό, χρησιμοποιώντας όμως πολλούς κύκλους για κάθε x86 εντολή
π.χ. fetch - decode - execute
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
80386
sum=0for i=0 to 10 sum+=a[i]
i1 r1=0 /* index */i2 r0=0 /* sum */i3 loop:r2=MEM[a+r1] /* a[i] */i4 r0=r0+r2 i5 r1=r1+1i6 r3=(r1 != 10)i7 if(r3==true) goto loop
r2=MEM[a+r1] r0 = r0 + r2 r1 = r1 + 1 r3 = r1!=10
fetch i4 decode i4 r0=r0+r2 fetch i5 decode i5 r1=r1 + r2
1 2 543 6
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Από τον μικροπρογραμματισμό στο pipelining: 80386 -> 80486
80486 (1989) 1.000.000 τρανζίστορ, 2ο chip με > 1M τρανζίστορ (πρώτο με διαφορά μηνών το i860)
Αρχιτεκτονική Pipeline/μικροκώδικα Pipeline: επικάλυψη των σταδίων εκτέλεσης των εντολών
(π.χ. Fetch, decode, execute)
• Σαν τις αλυσίδες παραγωγής αυτοκινήτων (π.χ., αμάξωμα, σαλόνι, μηχανή, βάψιμο)
Ποιες εντολές εκτελούνται στο pipleline του 80486?
• Απλές, RISC-like,
• οι υπόλοιπες … με μικροκώδικα Pipeline παράδειγμα fetch - decode - execute (στον 80486 5
στάδια)
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
80486
sum=0for i=0 to 10 sum+=a[i]
i1 r1=0 /* index */i2 r0=0 /* sum */i3 loop:r2=MEM[a+r1] /* a[i] */i4 r0=r0+r2 i5 r1=r1+1i6 r3=(r1 != 10)i7 if(r3==true) goto loop
r2=MEM[a+r1] r0 = r0 + r2 r1 = r1 + 1 r3 = r1!=10
fetch i4 decode i4 r0=r0+r2
fetch i5 decode i5 r1=r1+1
fetch i6 decode i6 r3=r1!=10
1 2 543
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Pipelining
Απαράβατος Κανόνας: διατηρούνται τα Sequential Semantics, εντολές εκτελούνται με τη σειρά που εμφανίζονται στο πρόγραμμα
• Εντολές χωρίζονται σε δύο κατηγορίες
— In-progress: αποτελέσματά τους αόρατα στην εξωτερική κατάσταση του επεξεργαστή
— Committed: τα αποτελέσματά τους ορατά στη κατάσταση του επεξεργαστή
Το pipelining βελτιώνει μόνο το Ρυθμό (throughput) ΟΧΙ την καθυστέρηση (latency)
• η κάθε εντολή είναι όσο αργή ήταν και πριν (π.χ. 3κ.)
• 1000 εντολές 1002 κύκλους (χωρίς pipelining 3000 κύκλους). Στο ΟΡΙΟ 1 εντολή ανά κύκλο.
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Pipelining
Το pipeline πρέπει να είναι ΠΑΝΤΑ γεμάτο
• Data hazzards
— RAW: read after write
– δεν μπορούμε να εκτελέσουμε αν το αποτέλεσμα δεν είναι έτοιμο
– load X; A=A+X;
• Control Hazzards
— Δεν μπορούμε να αποφασίσουμε γρήγορα από που θα κάνουμε fetch
— Βλέπε branch prediction
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
80486: RAW pipeline bubble
sum=0for i=0 to 10 sum+=a[i]
i1 r1=0 /* index */i2 r0=0 /* sum */i3 loop:r2=MEM[a+r1] /* a[i] */i4 r0=r0+r2 i5 r1=r1+1i6 r3=(r1 != 10)i7 if(r3==true) goto loop
r2=MEM[a+r1] r0 = r0 + r2 r1 = r1 + 1 r3 = r1!=10
fetch i3 decode i3 r2=[a+r1]
fetch i4 decode i4 STALL
fetch i5 decode i5 STALL
1 2 543
r0=r0+r2
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
80486: JMP pipeline bubble
sum=0for i=0 to 10 sum+=a[i]
i1 r1=0 /* index */i2 r0=0 /* sum */i3 loop:r2=MEM[a+r1] /* a[i] */i4 r0=r0+r2 i5 r1=r1+1i6 r3=(r1 != 10)i7 if(r3==true) goto loop
fetch i7 decode i7 jmp i3
fetch i8 decode i8 KILL
fetch i9 KILL KILL
1 2 543 fetch i3 decode i3
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Superscalar: 80486 -> Pentium
Pentium 1993, 3.100.000 τρανζίστορ με 16KB cache Ορισμός του superscalar: διαδοχικές εντολές παράλληλα Εκτέλεση σε σειρά, μέχρι 2 εντολές τον κύκλο Δύο pipelines, 5-στάδια η κάθε μία Ασύμμετρα pipelines: το ένα πιο “ικανό” από το άλλο Εύκολες, ανεξάρτητες διαδοχικές εντολές παράλληλα,
διαφορετικά μία-μία στο κύριο pipeline Δύσκολες εντολές με μικροπρόγραμμα π.χ. Dual Superscalar Pipeline : fetch - decode - execute
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Pentium
sum=0for i=0 to 10 sum+=a[i]
i1 r1=0 /* index */i2 r0=0 /* sum */i3 loop:r2=MEM[a+r1] /* a[i] */i4 r0=r0+r2 i5 r1=r1+1i6 r3=(r1 != 10)i7 if(r3==true) goto loop
r2=MEM[a+r1] r0 = r0 + r2 r1 = r1 + 1 r3 = r1!=10
fetch i4
fetch i5
decode i4 r0=r0+r2
decode i5 r1=r1+1
fetch i6 decode i6 r3=r1!=10
1 2 543
fetch i3 decode i3 r2=M[a+r1]
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Superscalar: 80486 -> Pentium
Τι υλικό χρειάζεται για superscalar ? Στο decode πρέπει να αποφασίσουμε αν οι εντολές μπορούν να
εκτελεστούν παράλληλα
• Ανεξαρτησία εντολών: Εξάρτηση των εντολών εκδηλώνεται μέσα από την εγγραφή/ανάγνωση καταχωρητών:
— RAW: Μια εντολή χρειάζεται το αποτέλεσμα μιας άλλης
— WAR, WAW hazards (κίνδυνοι)
• resource hazards: αν οι εντολές χρειάζονται τους ίδιους πόρους για την εκτέλεσή τους
• Control Hazzards “Bypass networks” για τα pipelines και μεταξύ των pipelines
— Παράκαμψη του πίνακα καταχωρητών (RF) για τη μεταφορά αποτελεσμάτων από εντολή σε εντολή
— γράψιμο, ανάγνωση καταχωρητών πολύ αργό
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
OOO: Pentium->Pentium Pro/II/III
Pentium Pro (1995) 5,5M τρανζίστορ (2x8KB L1) Pentium II (1997) 7,5M - 27,4M (2x16KB L1, 256KB L2) Pentium III (1999) 9,5M - 44M (2x16KB L1, 512KB L2) O πρώτος OOO επεξεργαστής. Dynamic Execution (Intel),
Out-of-Order, Εκτέλεση εκτός σειράς προγράμματος ΟΟΟ ? Σαν το SUPERSCALAR αλλά οι εντολές που
εκτελούνται παράλληλα ΔΕΝ χρειάζεται να είναι διαδοχικές Μετάφραση των x86 εντολών σε RISC μ-Ops 14 στάδια pipeline (12 σε σειρά 2 εκτός σειράς) μέχρι 5 μ-Ops παράλληλα σε 5 FUs:
• 2 x ALU, LOAD, STORE, FPU
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
OOO: Pentium->Pentium Pro/II/III
Γιατί χρειάζεται το ΟΟΟ? Δεν φτάνει μόνο το SUPERSCALAR? Ας πούμε ότι έχουμε 2 pipelines διαθέσιμα
Ο παραλληλισμός ΔΕΝ βρίσκεται σε διαδοχικές εντολές (που συνήθως εξαρτώνται η μια από την άλλη) ΑΛΛΑ ΠΙΟ ΜΑΚΡΥΑ
/* C =((A+1)/2)-((B+1)/2) */i1 r1 = MEM[A]i2 r2 = r1+1i3 r3 = r1/2i4 r4 = MEM[B]i5 r5 = r4+1i6 r6 = r5/2i7 r7 = r3-r6i8 MEM[C] = r7
i1i2i3i4i5i6i7i8
i1i4i2i5i3i6i7i8
SUPERSCALAR OOO
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
OOO: Pentium Pro/II/IIIsum=0for i=0 to 10 sum+=a[i]
i1 r1=0 /* index */i2 r0=0 /* sum */i3 loop:r2=MEM[a+r1] /* a[i] */i4 r0=r0+r2 i5 r1=r1+1i6 r3=(r1 != 10)i7 if(r3==true) goto loop
fetch i4 decode i4
fetch i5 decode i5
fetch i6 decode i6
1 2 543
fetch i3 decode i3 r2=M[a+r1]
r3=r1!=10 Commit
Commit
Commit
Commit
Stall
Stall
r1=r1+1
r0=r0+r2
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Pentium Pro Pipeline (Conceptual)
DECODE
FETCH
DISPATCH
EXECUTE
RETIRE(COMMIT)
Decoupled(διαφορετικός
ρυθμός εκτέλεσης)
Decoupled
FRONT END
BACK END
EXEC
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Pentium Pro/II/III block diagram (απλοποιημένο)
IFCfetch
Decode
x86 εντολές
DispatchRS20
Decode
Decode
ALU0
AGU1 LD
AGU2 ST
FPU
ALU1JmpI-Cache
ROB40
Registerfile40
RRFIA-32x86
10 στάδια 1-n στάδιαFRONT END BACK END
(COMMIT)
4C
2C
2C2C
2C
1-n C
EXEC
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Instruction Decode
Convert x86 instructions into μops (uops)Uops: 2-operand RISC instructions:
x86 (IA-32):
add (eax), (ebx) MEM(eax) <- MEM(eax) + MEM(ebx)
UOPS:
ld guop0, (eax) guop0 <- MEM(eax)
ld guop1, (ebx) guop1 <- MEM(ebx)
add guop0, guop1 guop0 <- guop0 + guop1
sta eax
std guop0 MEM(eax) <- guop0
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Pentium Pro/II/IIIInstruction flow
IFCfetch
short
x86 εντολές
DispatchRS20
long
short
ALU0
AGU1 LD
AGU2 ST
FPU
ALU1JmpI-Cache
ROB40
Registerfile40
RRFIA-32x86
1-3x86
instructions
16b instr.buffer
6 uopbuffer
1 uop1 uop4 uops
3 uop rename &dispatch
Up to5 uops issue/c
Up to5 uops exec/c
3 uop retirecommit/c
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
AMD K6 Instruction Decode
X86 -> RiscOPs (πιο ισχυρά από τα uops)2 ισχυρούς decoders vs. 3 της IntelPredecoding
• 32K Instruction cache + 20K predecode bits (5 bits/byte)
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Το πρόβλημα με τα branch (JUMP)
fetch i4 decode i4
fetch i5 decode i5 r1=r1+1
fetch i6 decode i6
fetch i3 decode i3 r2=M[a+r1]
r0=r0+r2
r3=r1!=10 Commit
Commit
Commit
Commit
Stall
Stall
fetch i7 decode i7 Stall if r3 loopStall
fetch i4
fetch i5
fetch i6
fetch i3
fetch i7
Commit
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Branch prediction
Pipeline Πάντα γεμάτο … Pentium Pro: 12 pipeline στάδια πριν από την εκτέλεση =
12 * 3 εντολές μετά από ένα branch (JUMP) Πού θα τις βρούμε όλες αυτές τις εντολές ?
• Πρόβλεψη branch
• Ποντάρουμε στο ότι το i7 μάλλον θα πάει στο i3 και όχι στο i8
i1 r1=0 /* index */i2 r0=0 /* sum */i3 loop:r2=MEM[a+r1] /* a[i] */i4 r0=r0+r2 i5 r1=r1+1i6 r3=(r1 != 10)i7 if(r3==true) goto loopi8 continue: ...
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Branch prediction
fetch i4 decode i4
fetch i5 decode i5 r1=r1+1
fetch i6 decode i6
fetch i3 decode i3 r2=M[a+r1]
r0=r0+r2
r3=r1!=10 Commit
Commit
Commit
Commit
Stall
Stall
fetch i7 decode i7 Stall if r3 loopStall
fetch i4 decode i4
fetch i5 decode i5 r1=r1+1
fetch i6 decode i6
fetch i3 decode i3 r2=M[a+r1]
r0=r0+r2
r3=r1!=10 Commit
Commit
Commit
Commit
Stall
Stall
fetch i7 decode i7 Stall if r3 loopStall
Commit
Πρόβλεψη
Πρόβλεψη
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Pentium Pro branch prediction
IFCfetch
Decode
x86 εντολές
DispatchRS20
Decode
Decode
ALU0
AGU1 LD
AGU2 ST
FPU
ALU1JmpI-Cache
ROB40
Registerfile40
RRFIA-32x86
10 στάδια 1-n στάδια 2 σ.FRONT END
BACK END(COMMIT)
Branch Predict
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Speculative execution
Η πρόβλεψη branch (JUMP) οδηγεί σε ΥΠΟΘΕΤΙΚΗ ΕΚΤΕΛΕΣΗ ΕΝΤΟΛΩΝ (Speculative Execution)
• υποθέτουμε ότι θα εκτελεστούν … Αν όμως κάνουμε λάθος ?
• Θα πρέπει τα αποτελέσματα της υποθετικής εκτέλεσης να είναι αναστρέψιμα
• Οι βασικοί μηχανισμοί υπάρχουν ήδη για το OOO
• Το ROB κρατάει τις υποθετικές εντολές ώσπου να επαληθευτεί η ροή του προγράμματος
• ROB (40) > RS (20)
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Branch prediction
Branch (JUMP) ορολογία:
Πως γίνεται το branch prediction?
• Στατικά (π.χ. branch προς τα πίσω είναι “taken” )
• Με τη βοήθεια του compiler
• Δυναμικά (κατά την εκτέλεση του προγράμματος)
i-x loop: ...... ...i JUMP loopi+1 continue …i+2 ...
τaken (αλλαγή ροής)
not taken/fall-throughσυνέχεια ροής
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Branch prediction
Δυναμικό branch prediction
• Απλοϊκό: για κάθε branch κάνε ότι έκανε την προηγούμενη φορά
— loop: 10 φορές σωστό, λάθος, λάθος, 9 φορές σωστό, λάθος, λάθος …
• για κάθε branch κάνε ότι έτεινε να κάνει πιο πολύ τις 2-3 πιο πρόσφατες φορές που το είδαμε (Jim Smith, UW, βραβείο Mauchley-Eckert), Pentium branch prediction, 256 br.
— loop: 10 φορές σωστό, λάθος, 10 φορές σωστό, λάθος...
i-x loop: ...... ...i JUMP loopi+1 continue …i+2 ...
τaken (αλλαγή ροής)
not taken/fall-throughσυνέχεια ροής
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Branch prediction
Σύγχρονο branch prediction στον Pentium Pro/II/III Δύο επιπέδων, με ιστορία (two-level, history-based), Yeh &
Patt, UM Η συμπεριφορά του branch εξαρτάται από το τι έγινε με τα
άλλα branch πριν από αυτό Με άλλα λόγια από πιο δρόμο φτάσαμε σε αυτό το branch
• Ιστορία: τι έγινε με τα ν προηγούμενα branches
— π.χ. taken,fall-through,taken,taken (1,0,1,1)
• Πρόβλεψη: τι έτεινε να κάνει το branch (πιο πολύ) τις προηγούμενες 2-3 φορές που το είδαμε με την ίδια ιστορία
Pentium Pro: 4 προηγούμενα branch ιστορία (πχ. 1011) , προβλέπει 512 συνδιασμούς ιστορίας/branch
95% ακρίβεια πρόβλεψης
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Βranch prediction
Πολύ προσοδοφόρο πεδίο (πολλές δημοσιεύσεις) Γιατί ? 90-95% επιτυχία πρόβλεψης δεν είναι αρκετή … Π.x.: καθημερινή πρόβλεψη σεισμών: σήμερα δεν θα γίνει
σεισμός: 99% επιτυχία
• Το θέμα είναι όμως πόσο “κοστίζει” η 1 (στις 100) λάθος πρόβλεψη
• Στους επεξεργαστές το κόστος λάθος πρόβλεψης αυξάνει διαρκώς (Pentium 4, 20-στάδια pipeline, 6 εντολές παράλληλα …)
Παραμένει ένα από τα δύσκολα προβλήματα που οδήγησε την Intel σε άλλες αρχιτεκτονικές : IA-64, Itanium που αποφεύγουν την πρόβλεψη
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Register renaming
Ο παραλληλισμός δεσμεύεται από τις αλληλεξαρτήσεις των εντολών
• Αληθινές εξαρτήσεις: δεν μπορεί να εκτελεστεί μια εντολή πριν από τις εντολές που παράγουν τα ορίσματά της.
— RAW (Read-After-Write) εξαρτήσεις.
• Πλασματικές εξαρτήσεις: αποτροπή εκτέλεσης λόγω ανακύκλωσης των καταχωρητών
— WAW (Write-After-Write) αντι-εξάρτηση
— WAR (Write-After-Read) output εξάρτησηi1 r1 = r2 * 10i2 r3 = r1 * 10i3 r1 = r4 * 20i4 r5 = r1 * 20
Αντι-εξάρτηση WAWoutput-εξάρτηση WAR
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Register renaming
Για τις αληθινές εξαρτήσεις χρειάζεται να περάσουμε σε εξελιγμένα είδη πρόβλεψης για να τις υπερβούμε (Value Prediction, dataflow barrier). Θεωρητικά μιλώντας...
Οι πλασματικές εξαρτήσεις μειώνουν τον παραλληλισμό στο επίπεδο εντολών (ILP) χωρίς να έχουν ουσιαστικό λόγο ύπαρξης. Απαλείφονται εύκολα αρκεί να είχαμε πάρα πολλούς καταχωρητές.
Αλλά το Σετ Εντολών ποτέ δεν αλλάζει (συμβατότητα λογισμικού). (μόνο επεκτείνεται …)
Λύση ? Μετονομασία Καταχωρητών (Register Renaming): Αντιστοίχισε τους καταχωρητές σε ένα πολύ μεγαλύτερο σετ, κατά την εκτέλεση του προγράμματος, αυτόματα και αόρατα στον εξωτερικό κόσμο.
Εξαλείφει το πλεονέκτημα των RISC που πάντα υποστήριζαν πολλούς καταχωρητές για τους ίδιους λόγους
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Register renaming
i1 r1 = r2 * 10i2 r3 = r1 * 10i3 r1 = r4 * 20i4 r5 = r1 * 20
i1 ra = r2 * 10i2 r3 = ra * 10i3 r1 = r4 * 20i4 r5 = r1 * 20
i1 ra = r2 * 10i2 rb = ra * 10i3 rc = r4 * 20i4 r5 = rc * 20
Οι 8 “αρχιτεκτονικοί” καταχωρητές των x86 αντιστοιχίζονται σε 40 “φυσικούς” (physical) καταχωρητές
Ένας πίνακας (RAT, Register Alias Table) κρατά τις αντιστοιχίες
Κάθε φορά που γράφεται ένας αρχιτεκτονικός καταχωρητής αντιστοιχίζεται σε νέο φυσικό καταχωρητή
Με αυτό τον τρόπο εξαλείφουμε τις πλασματικές εξαρτήσεις (WAW, WAR) αλλά αφήνουμε ανέπαφες τις πραγματικές εξαρτήσεις (RAW)
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Pentium Pro/II/III block diagram, register renaming
fetch
Decode
x86 εντολές
renameRS20
Decode
Decode
ALU
LOAD
STORE
FPU
ALU/JmpI-Cache
Branch Predict
ROB40
Registerfile40
RRFIA-32x86
10 στάδια 2 στάδια 2 σ.
RegisterAliasTable
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Instruction decode
CISC -> RISC ?Στατικά
— Apple 68000 -> PowerPC
— Digital FX32! (x86 -> ALPHA)
Δυναμικά (κατά την εκτέλεση)
• Συνέχεια— Ppro,II,III, AMD K6, ...
• Μιά φορά— Transmeta Crusoe x86 -> VLIW
— Pentium 4 TRACE CACHE
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Σύνοψη: OOO
Για να μεγιστοποιήσουμε τον παραλληλισμό στην εκτέλεση εντολών πρέπει να καταφύγουμε σε εκτέλεση εκτός σειράς προγράμματος (OOO).
Το OOO υποβοηθείται από:
• Πρόβλεψη ροής (Branch prediction) και υποθετική εκτέλεση (speculative execution)
— επιτρέπει (1) να βρούμε αρκετές εντολές ώστε να κρατάμε όλα τα pipelines γεμάτα, (2) να εκτελούμε εντολές υποθετικά ώσπου να επαληθεύσουμε τη ροή του προγράμματος
• Μετονομασία καταχωρητών (Register Renaming)
— αφαιρεί τις πλασματικές εξαρτήσεις μεταξύ εντολών που προέρχονται από την ανακύκλωση καταχωρητών
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Pentium 4
IFCfetch
Decode
x86 εντολές
DispatchDecode
Decode
I-Cache
Trace Cache12K uops
6-uop lines
RS,EXEC
Multiple branch
prediction
PC + predictions
Trace genarator
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Instruction Issue
Reduced function unit utilization due to dependencies
Time
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Superscalar Issue
Superscalar leads to more performance, but lower utilization
Time
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Predicated Issue
Adds to function unit utilization, but results are thrown away
Time
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Chip Multiprocessor
Limited utilization when only running one thread
Time
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Fine Grained Multithreading
Intra-thread dependencies still limit performance
Time
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Simultaneous Multithreading
Maximum utilization of function units by independent operations
Time
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Basic Out-of-order Pipeline
Fetch Decode/Map
Queue Reg Read
Execute
Dcache/Store Buffer
Reg Write
Retire
PC
Icache
RegisterMap
DcacheRegs Regs
Thread-blind
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
SMT Pipeline
Fetch Decode/Map
Queue Reg Read
Execute
Dcache/Store Buffer
Reg Write
Retire
IcacheDcache
PC
RegisterMap
Regs Regs
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Changes for SMT
Basic pipeline – unchanged
Replicated resources• Program counters• Register maps
Shared resources• Register file (size increased)• Instruction queue• First and second level caches• Translation buffers• Branch predictor
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Multiprogrammed workload
0%
50%
100%
150%
200%
250%
SpecInt SpecFP Mixed Int/ FP
1T2T3T4T
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Decomposed SPEC95 Applications
0%
50%
100%
150%
200%
250%
Turb3d Swm256 Tomcatv
1T2T3T4T
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Multithreaded Applications
0%
50%
100%
150%
200%
250%
300%
Barnes Chess Sort TP
1T2T4T
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Περιεχόμενα
Αρχιτεκτονική και ο νόμος του Moore Σετ εντολών
• Ο πόλεμος των σετ εντολών: RISC εναντίον CISC Από το μικροκώδικα στο pipelining
• 80386 -> 80486 Σπάζοντας το φράγμα του 1 IPC: superscalar
• 80486 -> Pentium Το επόμενο βήμα: OOO, Εκτέλεση Εκτός Σειράς
• Pentium -> Pentium Pro/2/3, Pentium IV Μνήμη
• Caches Κατανάλωση Ισχύος
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Μνήμη
Bob Colwell (αρχιτέκτονας του Pentium Pro) ISCA 2002 keynote address
An Unbalanced System
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Μνήμη
Το χάσμα της Μνήμης (Memory Wall, Memory Gap) H ταχύτητα των επεξεργαστών αυξάνεται πολύ πιο πολύ από
αυτή της μνήμης (DRAM)
Το χάσμα αυξάνεται 50% το χρόνο …
CPU 2x/2 χρόνια
DRAM 2x/10 χρόνια
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Μνήμη
Λύση ?
• Ουσιαστικό χαρακτηριστικό της μνήμης: H μνήμη μπορεί να είναι ΤΕΡΑΣΤΙΑ ‘Η ΓΡΗΓΟΡΗ αλλά ΟΧΙ και τα δύο μαζί (VAST OR FAST)
• => Ιεραρχία μνήμης:
registersΜνήμη Cache Level 1
Μνήμη Cache L2,L3
ταχύτητα
μέγεθος
DRAM
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Generations of Microprocessors
Time of a full cache miss in instructions executed:
1st Alpha (7000): 340 ns/5.0 ns = 68 clks x 2 or 136
2nd Alpha (8400): 266 ns/3.3 ns = 80 clks x 4 or 320
3rd Alpha (t.b.d.): 180 ns/1.7 ns =108 clks x 6 or 648
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Cache
Μνήμες Cache
• SRAM, κοντά στον επεξεργαστή, αντικατοπτρίζουν τα πιο “χρήσιμα” περιεχόμενα της κύριας μνήμης
• Κάνουν την κύρια μνήμη να “φαίνεται” πιο γρήγορη
• Χαρακτηριστικά προσπέλασης μνήμης
— Temporal Locality
– Ότι προσπελάστηκε πρόσφατα είναι πιθανό να προσπελαστεί ξανά
— Spatial Locality
– Αν προσπελαστεί μια θέση μνήμης τότε είναι πιθανό ότι θα προσπελαστούν και οι κοντινές σε αυτή
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Cache
Λειτουργία
• Σε κάθε προσπέλαση κοιτάμε αν τα περιεχόμενα της μνήμης στη ζητούμενη διεύθυνση βρίσκονται στην cache.
• Ναι: cache HIT
— Hit rate: ποσοστό προσπελάσεων που πετυχαίνουν
• Όχι: cache MISS
— Θέση στη cache κενή ? Φέρε τα δεδομένα από τη μνήμη
— Θέση στη cache πιασμένη από άλλα δεδομένα (άλλη διεύθυνση μνήμης) ? cache REPLACEMENT:
– γράψε στη μνήμη τα παλιά δεδομένα (αν χρειάζεται) και φέρε τα νέα
— miss rate: ποσοστό που αποτυχαίνει (100-hit rate)
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Χαρακτηριστικά Cache
Είδος δεδομένων
• εντολές, instruction cache
• δεδομένα, data cache
• ενοποιημένη, unified cache Τοποθεσία
• εσωτερική
• εξωτερική
• L1 (level 1) Eπίπεδο Ιεραρχίας, L1 πιο κοντά στον επεξεργαστή
• L2, L3
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Four Questions for Memory Hierarchy Designers
Q1: Where can a block be placed in the upper level? (Block placement)
• Fully Associative, Set Associative, Direct Mapped Q2: How is a block found if it is in the upper level?
(Block identification)
• Tag/Block Q3: Which block should be replaced on a miss?
(Block replacement)
• Random, LRU Q4: What happens on a write?
(Write strategy)
• Write Back or Write Through (with Write Buffer)
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Block Identification
Πως βρίσκουμε τι υπάρχει στην cache και τι όχι ? Ζητούμενη διεύθυνση χωρίζεται σε 3 μέρη: block, index, tag Το index μας δίνει τη θέση στη cache που θα ψάξουμε Το tag (ετικέτα) συγκρίνεται με αυτό που φυλάσσεται στην
cache μαζί με τα δεδομένα
Δεδομένα (block 4 bytes)
Ετικέτα/tag(Διεύθυνση)
Μνήμη Cache0000 00
1111 00
0111 00
01
00011011
Διεύθυνση block
TAG INDEX BLOCK
Ζητούμενη διεύθυνση
01 11 0011 11 10
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Direct mapped
• 1-1 αντιστοιχία block μνήμης σε θέση στην cache
Block Placement: direct-mapped
Μνήμη Direct mapped0000
1111
0111
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Set associative (n-way): • 1-n αντιστοιχία block μνήμης σε θέσεις στην cache• To index διαλέγει ένα ολόκληρο set• Πρέπει να συγκρίνουμε με όλα τα tags στο set για να
βρούμε αν κάτι είναι στην cache• Καλύτερο Hit Rate, πιο αργή στην προσπέλαση
Block Placement: set-associative
Μνήμη2-way Set associative
0000
1111
0111
TAG INDEX BLOCK
Ζητούμενη διεύθυνση:
01 11 0011 11 00
00011011
01 11
00 11 00
0011
Way-0 Way-1
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Αντικατάσταση
• Tυχαία (Random)
— πολύ εύκολη υλοποίηση
— αποδεκτή απόδοση
• LRU (Pseudo-LRU): Least Recently Used, λιγότερο πρόσφατο
— δύσκολη υλοποίηση
— καλύτερη απόδοση
— Pseudo-LRU: συμβιβασμός
• FIFO: First-In First-Out 2 με 4 way η καλύτερη απόδοση
• πιο πολλά way: πολύ μικρή αύξηση στην απόδοση με μεγάλο κόστος
Block Replacement: set-associative
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Write-through
• Κάθε φορά που γράφουμε σε ένα block της cache στέλνουμε τα νέα δεδομένα και στη μνήμη
Write-back
• Νέα δεδομένα που γράφονται στην cache δεν στέλνονται στη μνήμη αμέσως αλλά μόνο αν αντικατασταθεί το block
• Πολλαπλές εγγραφές στο block χρειάζονται μόνο μια μεταφορά στην μνήμη
• Τα περιεχόμενα της μνήμης και της cache ΔΕΝ είναι ιδια Cache Consistency problem => I/O, multiprocessing κλπ.
— Αντιμετωπίζεται σαν μέρος του Cache Coherency Protocol (MESI) για multiprocessing
• Χρειάζεται ένα επιπλέον bit το “dirty bit” σε κάθε block που υποδηλώνει εάν το block έχει αλλάξει
Write Strategy: write-trough vs. write-back
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Cache Performance
CPUtime = Instruction Count x (CPIexecution + Mem accesses per instruction x Miss rate x Miss penalty) x Clock cycle time
Misses per instruction = Memory accesses per instruction x Miss rate
CPUtime = IC x (CPIexecution + Misses per instruction x Miss penalty) x Clock cycle time
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Improving Cache Performance
1. Reduce the miss rate,
2. Reduce the miss penalty, or
3. Reduce the time to hit in the cache.
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Reducing Misses
Classifying Misses: 3 Cs
• Compulsory—The first access to a block is not in the cache, so the block must be brought into the cache. Also called cold start misses or first reference misses.(Misses in even an Infinite Cache)
• Capacity—If the cache cannot contain all the blocks needed during execution of a program, capacity misses will occur due to blocks being discarded and later retrieved.(Misses in Fully Associative Size X Cache)
• Conflict—If block-placement strategy is set associative or direct mapped, conflict misses (in addition to compulsory & capacity misses) will occur because a block can be discarded and later retrieved if too many blocks map to its set. Also called collision misses or interference misses.(Misses in N-way Associative, Size X Cache)
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Cache Size (KB)
Mis
s R
ate
per
Typ
e
0
0.02
0.04
0.06
0.08
0.1
0.12
0.141 2 4 8
16
32
64
12
8
1-way
2-way
4-way
8-way
Capacity
Compulsory
3Cs Absolute Miss Rate (SPEC92)
Conflict
Compulsory vanishinglysmall
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Cache Size (KB)
Mis
s R
ate
per
Typ
e
0
0.02
0.04
0.06
0.08
0.1
0.12
0.14
1 2 4 8
16
32
64
12
8
1-way
2-way
4-way
8-way
Capacity
Compulsory
2:1 Cache Rule
Conflict
miss rate 1-way associative cache size X = miss rate 2-way associative cache size X/2
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
How Can Reduce Misses?
3 Cs: Compulsory, Capacity, Conflict In all cases, assume total cache size not changed:What happens if:1) Change Block Size:
Which of 3Cs is obviously affected?
2) Change Associativity: Which of 3Cs is obviously affected?
3) Change Compiler: Which of 3Cs is obviously affected?
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Block Size (bytes)
Miss Rate
0%
5%
10%
15%
20%
25%
16
32
64
12
8
25
6
1K
4K
16K
64K
256K
1. Reduce Misses via Larger Block Size
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
2. Reduce Misses via Higher Associativity
2:1 Cache Rule:
•Miss Rate DM cache size N Miss Rate 2-way cache size N/2
Beware: Execution time is only final measure!
•Will Clock Cycle time increase?
•Hill [1988] suggested hit time for 2-way vs. 1-way external cache +10%, internal + 2%
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
3. Reducing Misses via a“Victim Cache”
How to combine fast hit time of direct mapped yet still avoid conflict misses?
Add buffer to place data discarded from cache
Jouppi [1990]: 4-entry victim cache removed 20% to 95% of conflicts for a 4 KB direct mapped data cache
Used in Alpha, HP machines
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
How to combine fast hit time of Direct Mapped and have the lower conflict misses of 2-way SA cache?
Divide cache: on a miss, check other half of cache to see if there, if so have a pseudo-hit (slow hit)
Drawback: CPU pipeline is hard if hit takes 1 or 2 cycles
• Better for caches not tied directly to processor (L2)
• Used in MIPS R1000 L2 cache, similar in UltraSPARC
4. Reducing Misses via “Pseudo-Associativity”
Hit Time
Pseudo Hit Time Miss Penalty
Time
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Prefetching: μεταφορά block από την μνήμη στην cache πριν αυτά ζητηθούν από τον επεξεργαστή
• Χρειάζονται περισσότερο bandwidth αλλά μπορεί να μειώσουν το latency
• Οταν είναι λάθος μπορεί να κάνουν μεγάλη ζημιά: όχι μόνο καταναλώνουν bandwidth αλλά μπορεί να εκτοπίσουν χρήσιμα δεδομένα από την cache
Πως γίνεται ?
• Software, MIPS 10K
• Hardware: πάρα πολλά σχήματα απλά … πολύ πολύπλοκα
— sequential prefetch (block i, prefetch i+1)
— stream buffers (ανακαλύπτουν ακολουθίες από block)
— correlating prefetchers (πρόβλεψη με ιστορία)
5: Hardware prefetching
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Το πιο πετυχημένο σχήμα μέχρι στιγμής: Hu, Καξίρας, Martonosi, ISCA 2002
Correlating prefetcher με πρόβλεψη χρόνου
• Διατηρεί ιστορία από ακολουθείες tag που εμφανίζονται στη cache:
• Αν δούμε A,B κάνουμε prefetch to C
• Προβλέπουμε επίσης πόσο θα μείνει το B στην cache ώστε να κάνουμε prefetch το C μετά τη “ζωή” του B
• Με 8ΚΒ ιστορία ελαχιστοποιούμε το miss rate μιας 32KB L1D σχεδόν όσο είναι θεωρητικά δυνατό
5: Hardware prefetching
...,A,B,C,..
...,D,B,C,..
...,C,A,B,C.
...,E,F,G,..
ABCDBCCABEFG
Πίνακας Ιστορίας
Μνήμη Cache
Ακολουθίες TAG
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
6. Reducing Misses by Software Prefetching Data
Data Prefetch
• Load data into register (HP PA-RISC loads)
• Cache Prefetch: load into cache (MIPS IV, PowerPC, SPARC v. 9)
• Special prefetching instructions cannot cause faults;a form of speculative execution
Issuing Prefetch Instructions takes time
• Is cost of prefetch issues < savings in reduced misses?
• Higher superscalar reduces difficulty of issue bandwidth
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
7. Reducing Misses by Compiler Optimizations
McFarling [1989] reduced caches misses by 75% on 8KB direct mapped cache, 4 byte blocks in software
Instructions
• Reorder procedures in memory so as to reduce conflict misses
• Profiling to look at conflicts(using tools they developed) Data
• Merging Arrays: improve spatial locality by single array of compound elements vs. 2 arrays
• Loop Interchange: change nesting of loops to access data in order stored in memory
• Loop Fusion: Combine 2 independent loops that have same looping and some variables overlap
• Blocking: Improve temporal locality by accessing “blocks” of data repeatedly vs. going down whole columns or rows
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Performance Improvement
1 1.5 2 2.5 3
compress
cholesky(nasa7)
spice
mxm (nasa7)
btrix (nasa7)
tomcatv
gmty (nasa7)
vpenta (nasa7)
mergedarrays
loopinterchange
loop fusion blocking
Summary of Compiler Optimizations to Reduce Cache Misses (by hand)
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Summary
3 Cs: Compulsory, Capacity, Conflict
1. Reduce Misses via Larger Block Size
2. Reduce Misses via Higher Associativity
3. Reducing Misses via Victim Cache
4. Reducing Misses via Pseudo-Associativity
5. Reducing Misses by HW Prefetching Instr, Data
6. Reducing Misses by SW Prefetching Data
7. Reducing Misses by Compiler Optimizations Remember danger of concentrating on just one
parameter when evaluating performance
CPUtimeIC CPIExecution
Memory accesses
InstructionMiss rateMiss penalty
Clock cycle time
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Review: Improving Cache Performance
1. Reduce the miss rate,
2. Reduce the miss penalty, or
3. Reduce the time to hit in the cache.
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
1. Reduce Miss Penalty: Subblock Placement
Don’t have to load full block on a missHave valid bits per subblock to indicate valid(Originally invented to reduce tag storage)
Valid Bits Subblocks
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
2. Reduce Miss Penalty: Early Restart and Critical Word First
Don’t wait for full block to be loaded before restarting CPU
• Early restart—As soon as the requested word of the block arrives, send it to the CPU and let the CPU continue execution
• Critical Word First—Request the missed word first from memory and send it to the CPU as soon as it arrives; let the CPU continue execution while filling the rest of the words in the block. Also called wrapped fetch and requested word first
Generally useful only in large blocks, Spatial locality a problem; tend to want next sequential
word, so not clear if benefit by early restart
block
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Γιά Superscalar και OOO χρειάζεται να εκτελούμε πολλά loads ταυτόχρονα (stores υπάρχει store buffer)
• Οι σύγχρονες cache έχουν πολλαπλά ports και μπορούν να εξυπηρετήσουν πολλά Hits ταυτόχρονα
Τι γίνεται όμως όταν έχουμε πολλαπλά miss ?
• Εάν η cache μπορεί να εξυπηρετήσει μόνο ένα miss τη φορά ( Blocking ) τότε τα load εκτελούνται το ένα μετά το άλλο με μεγάλη καθυστέρηση
3. Reduce Miss Penalty: Non-blocking Cache
Load A Load B Load C Load D
miss miss miss miss
time
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Λύση ? Non-blocking caches: εξυπηρετούν ταυτόχρονα πολλαπλά miss. PIPELINING για τα miss
To status κάθε miss ελέγχεται από ένα MSHR (miss-status handling register)
3. Reduce Miss Penalty: Non-blocking Cache
Load A
Load B
Load C
Load D
miss
miss
miss
miss
time
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
3. Reduce Miss Penalty: Non-blocking Caches
“hit under miss” reduces the effective miss penalty by working during miss vs. ignoring CPU requests
“hit under multiple miss” or “miss under miss” may further lower the effective miss penalty by overlapping multiple misses
• Significantly increases the complexity of the cache controller as there can be multiple outstanding memory accesses
• Requires muliple memory banks (otherwise cannot support)
• Penium Pro allows 4 outstanding memory misses
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Value of Hit Under Miss for SPEC
FP programs on average: AMAT= 0.68 -> 0.52 -> 0.34 -> 0.26
Int programs on average: AMAT= 0.24 -> 0.20 -> 0.19 -> 0.19
8 KB Data Cache, Direct Mapped, 32B block, 16 cycle miss
Hit Under i Misses
Av
g.
Me
m.
Acce
ss T
ime
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
eqnto
tt
esp
ress
o
xlisp
com
pre
ss
mdljsp
2
ear
fpppp
tom
catv
swm
256
doduc
su2co
r
wave5
mdljdp2
hydro
2d
alv
inn
nasa
7
spic
e2g6
ora
0->1
1->2
2->64
Base
Integer Floating Point
“Hit under n Misses”
0->11->22->64Base
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Reducing Miss penalty: L2 Cache
Reducing L2 Miss Rate
1. Reduce Misses via Larger Block Size
2. Reduce Conflict Misses via Higher Associativity
3. Reducing Conflict Misses via Victim Cache
4. Reducing Conflict Misses via Pseudo-Associativity
5. Reducing Misses by HW Prefetching Instr, Data
6. Reducing Misses by SW Prefetching Data
7. Reducing Capacity/Conf. Misses by Compiler Optimizations
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Relative CPU Time
Block Size
11.11.21.31.41.51.61.71.81.9
2
16 32 64 128 256 512
1.361.28 1.27
1.34
1.54
1.95
L2 cache block size & A.M.A.T.
32KB L1, 8 byte path to memory
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Reducing Miss Penalty Summary
Four techniques
• Subblock placement
• Early Restart and Critical Word First on miss
• Non-blocking Caches (Hit under Miss, Miss under Miss)
• Second Level Cache
CPUtimeIC CPIExecution
Memory accesses
InstructionMiss rateMiss penalty
Clock cycle time
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Cache Optimization Summary
Technique MR MP HT Complexity
Larger Block Size + – 0Higher Associativity + – 1Victim Caches + 2Pseudo-Associative Caches + 2HW Prefetching of Instr/Data + 2Compiler Controlled Prefetching + 3Compiler Reduce Misses + 0
Priority to Read Misses + 1Subblock Placement + + 1Early Restart & Critical Word 1st + 2Non-Blocking Caches + 3Second Level Caches + 2
mis
s r
ate
mis
s p
en
alty
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Improving Cache Performance
1. Reduce the miss rate,
2. Reduce the miss penalty, or
3. Reduce the time to hit in the cache.
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
1. Fast Hit times via Small and Simple Caches
Why Alpha 21164 has 8KB Instruction and 8KB data cache + 96KB second level cache?
•Small data cache and clock rateDirect Mapped, on chip
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
2. Fast hits by Avoiding Address Translation
Send virtual address to cache? Called Virtually Addressed Cache or just Virtual Cache vs. Physical Cache
• Every time process is switched logically must flush the cache; otherwise get false hits
—Cost is time to flush + “compulsory” misses from empty cache
• Dealing with aliases (sometimes called synonyms); Two different virtual addresses map to same physical address
• I/O must interact with cache, so need virtual address Solution to aliases
• HW guarantees covers index field & direct mapped, they must be unique;called page coloring
Solution to cache flush
• Add process identifier tag that identifies process as well as address within process: can’t get a hit if wrong process
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Virtually Addressed Caches
CPU
TB
$
MEM
VA
PA
PA
ConventionalOrganization
CPU
$
TB
MEM
VA
VA
PA
Virtually Addressed CacheTranslate only on miss
Synonym Problem
CPU
$ TB
MEM
VA
PATags
PA
Overlap $ accesswith VA translation:requires $ index to
remain invariantacross translation
VATags
L2 $
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
2. Fast Cache Hits by Avoiding Translation: Process ID impact
Black is uniprocessLight Gray is multiprocess when
flush cacheDark Gray is multiprocess when use
Process ID tagY axis: Miss Rates up to 20%X axis: Cache size from 2 KB to
1024 KB
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
2. Fast Cache Hits by Avoiding Translation : Index with Physical Portion of Address
If index is physical part of address, can start tag access in parallel with translation so that can compare to physical tag
Limits cache to page size: what if want bigger caches and uses same trick?
•Higher associativity moves barrier to right
•Page coloring
Page Address Page Offset
Address Tag Index Block Offset
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Cache Optimization Summary
Technique MR MP HT Complexity
Larger Block Size + – 0Higher Associativity + – 1Victim Caches + 2Pseudo-Associative Caches + 2HW Prefetching of Instr/Data + 2Compiler Controlled Prefetching + 3Compiler Reduce Misses + 0
Priority to Read Misses + 1Subblock Placement + + 1Early Restart & Critical Word 1st + 2Non-Blocking Caches + 3Second Level Caches + 2
Small & Simple Caches – + 0Avoiding Address Translation + 2Pipelining Writes + 1
mis
s ra
teh
it t
ime
mis
sp
enal
ty
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Ιεραρχία Μνήμης στους x86
80386 εξωτερική, unified, direct-mapped, 32ΚΒ 80486 εξωτερική, unified, direct-mapped, 64KB Pentium
L1 Instruction8KB, 2-way LRU,
32B/line
L1 Data8KB, 2-way LRU, 32B/line, 2-ports
L2 Unified64-256KB, direct mapped,
32B/line
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Ιεραρχία Μνήμης στους x86
Pentium Pro
L1 Instruction8KB, 4-way LRU,
32B/line
L1 Data8KB, 2-way LRU,
32B/line, 2-ports,8 banks
L2 Unified256KB-1MB, 4-way,
32B/linenon-blocking
εσωτερική/εξωτερική
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Ιεραρχία Μνήμης στους x86
Pentium 4
L1 InstructionTRACE CACHE
12ΚμOP, 8-way LRU, 6-μOPs/line
(across branches)
L1 Data8KB, 4-way LRU, 64B/line, 2-ports,
Write-troughNon-blocking (4 misses)
2/6 Cycle latency (Integer/FP)16 byte bus to FP
L2 Unified128KB 2-way, 256KB 4-way, 512 8-way
Pseudo-LRU, 64B/linenon-blocking
7/7 Cycle Latency (Integer/FP),256 Bit Bus, Data on every Cycle
L3-Unified: 512KB, 4-Way, 1024KB, 8-Way, 64 Byte/Line
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Το “καυτό” πρόβλημα της αρχιτεκτονικής σήμερα
• Intel CTO Pat Gelsinger: “πυκνότητα ισχύος” σε επεξεργαστές αυξάνεται εκθετικά
Δυναμική ισχύς (λειτουργία τρανζίστορ, ~90%), στατική ισχύς (ρεύματα διαρροής, ~10%)
• Για να μειώσουμε τη δυναμική ισχύ μειώνουμε την τάση τροφοδοσίας (Vdd) => εκθετική αύξηση της στατικής κατανάλωσης ισχύος
Andy Grove (13/12/2002) : Το τέλος του νόμου του Moore!
• Λιθογραφία? Κβαντικά φαινόμενα? Κόστος εργοστασίων?
• Ρεύματα διαρροής
Κατανάλωση Ισχύος
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
CACHE DECAY: Καξίρας, Hu, Martonosi, ISCA 2001 Διακοπή τάσης τροφοδοσίας σε γραμμές της cache που δεν
πρόκειται να χρησιμοποιηθούν ξανά
• Temporal Locality: Ότι προσπελάστηκε πρόσφατα είναι πιθανό να προσπελαστεί ξανά
• Ότι δεν έχει προσπελαστεί εδώ και πολύ ώρα είναι απίθανο να προσπελαστεί ξανά
Μέθοδο να μετράμε χρόνο μεταξύ προσπελάσεων Μπορούμε να “σβήσουμε” το 80% της cache (L1) χωρίς
σχεδόν καμία επίπτωση στην απόδοση (L2 καλύτερα)
• δεν σημαίνει ότι μια μικρή cache δουλεύει το ίδιο καλά …
5x μείωση κατανάλωσης στατικής ισχύος (αμελητέα αύξηση στη δυναμική ισχύ)
Κατανάλωση Στατικής Ισχύος και μνήμες cache