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

Σχετικά έγγραφα
Αρχιτεκτονική Υπολογιστών

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

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

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

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

Processor-Memory (DRAM) ιαφορά επίδοσης

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

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

Processor-Memory (DRAM) ιαφορά επίδοσης

ΠΛΕ- 027 Μικροεπεξεργαστές 9ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Κρυφές μνήμες εισαγωγή

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

Διάλεξη 15 Απόδοση της Ιεραρχίας Μνήμης Βελτιστοποίηση της απόδοσης

Processor-Memory (DRAM) Διαφορά επίδοσης

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

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

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

3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ

Οργάνωση Ιεραρχίας Μνήμης - Caches

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

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

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

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

Κύρια μνήμη. Μοντέλο λειτουργίας μνήμης. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (ΙI)

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 8. Χειμερινό Εξάμηνο

Οργάνωση Υπολογιστών (ΙI)

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

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

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

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

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

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

Τεχνολογίες Κύριας Μνήμης

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

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

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

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

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

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

Ασκήσεις Caches

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

Διάλεξη 14 Εισαγωγή στην Ιεραρχία Μνήμης

Αρχιτεκτονική Υπολογιστών II Ενδεικτικές απαντήσεις στα θέματα των εξετάσεων

Άσκηση 1η. Θεωρήστε ένα σύστημα μνήμης με μία cache: 4 way set associative μεγέθους 256ΚΒ,

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

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

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

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

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

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

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

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

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

Ασκήσεις Caches

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

Υ- 07 Παράλληλα Συστήματα Αρχιτεκτονική σύγχρονων πυρήνων επεξεργαστών

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

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

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

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

Αρχιτεκτονικές Συνόλου Εντολών

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

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Η ιεραρχία της μνήμης

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ, 5 ο εξάµηνο

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

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

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

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

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

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

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

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

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

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

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

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

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

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

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

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

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

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

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

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

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

; Τι περιέχεται στη συσκευασία ενός μικροεπεξεργαστή σήμερα;

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

Κεφάλαιο 5. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 2. Σημείωση

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

Με τον όρο μνήμη αναφερόμαστε στα μέσα που χρησιμοποιούνται για την αποθήκευση προγραμμάτων και δεδομένων σε έναν υπολογιστή ή άλλη ψηφιακή

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

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

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

6. Ακολουθίες μικροεντολών 7. Συμβολισμός μικροεντολών (MAL)

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

5. Σχεδιάστε ένα κύκλωμα περιττής ισοτιμίας για το βασικό κώδικα ΑSCII (7 bits).

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

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

Transcript:

Αρχιτεκτονική Υπολογιστών Μικροαρχιτεκτονική Βασικές Πηγές: Αρχιτεκτονική Υπολογιστών: μια Δομημένη Προσέγγιση, Α. Tanenbaum, Vrije Universiteit, Amsterdam. Computer Organization, W. Robinson, CS-231, Vanderbildt Univesrity. Αρχιτεκτονική Υπολογιστών, Ν. Κοζύρης, Εθνικό Μετσόβιο Πολυτεχνείο. Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός, Π. Ευριπίδου, Πανεπιστήμιο Κύπρου Mic-1 simulator http://www.ontko.com/mic1 Mic-1MMV simulator, Rick Salter, Oberlin College. http://www.cs.oberlin.edu/~rms/mic1/ Σύνθεση: Κ.Γ. Μαργαρίτης, Πανεπιστήμιο Μακεδονίας, Τμήμα Εφαρμοσμένης Πληροφορικής.

Αρχιτεκτονική Υπολογιστών Μικροαρχιτεκτονική Μικροαρχιτεκτονική τριών διαύλων (Mic-2) Παραλληλισμός Επιπέδου Εντολής (ILP) Διοχέτευση (Mic-3 και Mic-4) Πρόβλεψη Διακλάδωσης και Υπερβαθμωτή εκτέλεση Kρυφή Μνήμη Σύνοψη

Αρχιτεκτονική Υπολογιστών Μικροαρχιτεκτονική Μικροαρχιτεκτονική τριών διαύλων (Mic-2) Παραλληλισμός Επιπέδου Εντολής (ILP) Διοχέτευση (Mic-3 και Mic-4) Πρόβλεψη Διακλάδωσης και Υπερβαθμωτή εκτέλεση Kρυφή Μνήμη Σύνοψη

Κόστος προς Απόδοση Επιλογή του συνόλου εντολών ώστε να έχουμε λιγότερες και αποδοτικές εντολές (απ ευθείας υλοποίηση εντολών στο υλικό). Βελτίωση του υλικού ώστε να μειωθεί η διάρκεια του κύκλου ρολογιού. Μείωση του αριθμού των κύκλων ρολογιού που απαιτούνται για την εκτέλεση μιας εντολής. Διάρθρωση της CPU σε υπομονάδες ώστε να είναι δυνατή η παράλληλη εκτέλεση εντολών (Instruction Level Parallelism). Μείωση των προσπελάσεων στη κύρια μνήμη (κρυφή μνήμη).

Βελτίωση Υλικού (παράδειγμα) Έλεγχος διαύλου Β: από 9 καταχωρητές επιλέγεται ένας. Με αποκωδικοποιητή (παρούσα υλοποίηση-'κάτακόρυφος μικροκώδικας'): Φθηνότερο αλλά πιο αργό. 4Χ512 bits ROM αποκωδικοποιητής 4-σε-16 καθυστέρηση διάδοσης σήματος (2 πύλες). Χωρίς αποκωδικοποιητή (εναλλακτική υλοποίηση-'οριζόντιος μικροκώδικας'): Ταχύτερο αλλά πιο δαπανηρό. 9X512 bits ROM δεν υπάρχει καθυστέρηση σήματος. Άσκηση: υπολογίστε περίπου τη διαφορά σε πύλες (ή transistors)

Μειονεκτήματα Mic-1 Η είσοδος Α της ALU γίνεται μόνο μέσω του καταχωρητή Η. Απαιτείται μετακίνηση τελεστέου μέσω του διαύλου Β και της ALU. Ο δίαυλος Α είναι μη-λειτουργικός. Η ενημέρωση του PC, που εκτελείται στην αρχή κάθε εντολής, απαιτεί τη κατάληψη των διαύλων και της ALU. Η προσκόμιση και σύνθεση τελεστέων 16-bits απαιτεί πολλές μικροεντολές. Ο κύκλος ρολογιού είναι μεγάλος και σύνθετος. Απαιτεί σημαντικές καθυστερήσεις και αφήνει τμήματα της CPU αδρανή. H CPU αντιμετωπίζεται ως ενιαία μονάδα, δεν διακρίνονται υπομονάδες (τα συνδυαστικά κυκλώματα λειτουργούν διαρκώς).

Αρχιτεκτονική Τριών Διαύλων Η διαδρομή δεδομένων του Mic-2. Διαφορές με Mic-1: * Πλήρης Δίαυλος Α και αντίστοιχος επιπλέον έλεγχος καταχωρητών. * Μονάδα Ανάκλησης Εντολής (IFU) και καταχωρητής MBR2.

Instruction Fetch Unit (IFU) 1. Ανεξάρτητη μονάδα αύξησης PC=PC+1. Εξοικονόμηση ενός κύκλου μηχανής ανά εντολή (μικρο-εντολή Main1). 2. Προκαταβολική προσκόμιση και αναδιάταξη operands. Εξοικονόμηση αναμονής λόγω fetch (ανάγνωση μνήμης).

Αρχιτεκτονική Τριών Διαύλων (1) Αρχικό μικροπρόγραμμα για την εκτέλεση της ILOAD.

Αρχιτεκτονική Τριών Διαύλων (2) iload1 iload2 iload3 MAR=MBRU+LV;rd MAR=SP=SP+1 TOS=MDR;wr; goto(mbr) Μικροπρόγραμμα για την εκτέλεση της ILOAD σε αρχιτεκτονική τριών διαύλων (πάνω) και με επιπλέον χρήση IFU (κάτω).

Μικροπρόγραμμα Mic-2 (1)

Μικροπρόγραμμα Mic-2 (2)

Μικροπρόγραμμα Mic-2 (3)

Μικροπρόγραμμα Mic-2 (4)

Μικροεντολές Mic-2 4 A bus A Α,Β 6 = SP 0 = MDR Η μορφή μικροεντολής του Mic-2. 7 = LV 1 = PC 8 = CPP Addr : Διεύθυνση πιθανής επόμενης μικροεντολής. 2 = MBR1 3 = MBR1U 9 = TOS 10 = OPC 4 = MBR2 JAM : Επιλογή επόμενης μικροεντολή. 5 = MBR2U 11 = H 12-15 none ALU : Πράξεις ALU και Ολισθητή. C : Επιλογή καταχωρητών που θα διαβάσει δεδομένα από το δίαυλο C. Mem: Λειτουργίες Μνήμης Β, Α: Επιλογή καταχωρητή που θα γράψει δεδομένα στους διαύλους Β, Α.

Αρχιτεκτονική Υπολογιστών Μικροαρχιτεκτονική Μικροαρχιτεκτονική τριών διαύλων (Mic-2) Παραλληλισμός Επιπέδου Εντολής (ILP) Διοχέτευση (Mic-3 και Mic-4) Πρόβλεψη Διακλάδωσης και Υπερβαθμωτή εκτέλεση Kρυφή Μνήμη Σύνοψη

RISC και CISC O Μικροκώδικας οδήγησε σε όλο και πιο σύνθετο σύνολο εντολών γλώσσας μηχανής (200 ή 300 εντολές). Η γλώσσα μηχανής σταδιακά μετατρέπεται σε μια σύνθετη γλώσσα εικονικής μηχανής, με πολλούς τύπους εντολών, τελεστών, διευθυνσιοδοτήσεων, κύκλων εκτέλεσης κλπ (πλήρης assembly). Σχετικά σύντομος κώδικας γλώσσας μηχανής αλλά πολύπλοκες-αργές εντολές. Δύσκολη μεταγλώττιση (compilation) Complex Instruction Set Computer (CISC) Εναλλακτική ιδέα. Ένα λιτό σύνολο εντολών γλώσσας μηχανής. Οι βασικές, συχνά χρησιμοποιούμενες εντολές υλοποιούνται αποδοτικά με βελτιστοπιημένο μικροκώδικα ή/και 'αμεση εκτέλεση. Οι υπόλοιπες (πρώην εντολές) μπορούν να αναλυθούν από το μεταγλωττιστή. Σχετικά μακροσκελής κώδικας γλώσσας μηχανής αλλά απλές-γρήγορες εντολές και δυνατότητα 'αναδιοργάνωσης' κώδικα (βελτιστοποίηση στο compiler). Reduced Instruction Set Computer (RISC)

RISC, CISC και VLIW Η τεχνολογία RISC επικράτησε γιατί η λιτή σχεδίαση επέτρεψε την εισαγωγή τεχνικών σχεδίασης Παραλληλισμού Επιπέδου Εντολής. Στη σχεδίαση νέων επεξεργαστών (από το μηδέν) η προτίμηση ειναι σαφώς RISC (MIPS, SPARC, PowerPC, ARM).. Στην ανάπτυξη αρχιτεκτονικων (τύπου X86) η λύση είναι εικονική μηχανή CISC πάνω από μικροαρχιτεκτονική RISC (κάτι σαν 'κατακόρυφος μικροκώδικας' που διερμηνεύει εντολές CISC σε ακολουθία μικροεντολών RISC). Very Long Instruction Word (VLIW) αρχιτεκτονική (Itanium): εντολές γλώσσας μηχανής μήκους πολλών bytes επιτρέπουν τη μεταφορά μέρους των δυνατοτήτων ελέγχου του μικροκώδικα στη γλώσσα μηχανής. Πυκνός αλλά δύσχρηστος κώδικας.

Αρχές Σχεδιασμού Επεξεργαστών Εύκολη αποκωδικοποίηση εντολών (μικρό σχετικά σύνολο από σχετικά απλές εντολές). Λελογισμένη χρήση του μικροκώδικα, προσπάθεια χρήσης αρκετού και βελτιστοποιημένου υλικού για την αύξηση της απόδοσης εκτέλεσης. Μεγιστοποίηση του ρυθμού υποβολής εντολών στη CPU (τεχνικές Παραλληλiσμού Επιπέδου Εντολής, ILP). Ελαχιστοποίηση προσπέλασης στη μνήμη, με ειδικές εντολές Load, Store μιας διεύθυνσης. Αφθονία όμοιων καταχωρητών (μεγάλο register file).

Παραλληλισμός Επιπέδου Εντολής Ιnstruction Level Parallelism (ILP) Διοχέτευση Εντολών Πρόβλεψη Διακλάδωσης Υπερβαθμωτή Εκτέλεση Μετονομασία Καταχωρητών Εκτέλεση Εκτός Σειράς Ιεραρχία Κρυφής Μνήμης

Αρχιτεκτονική Υπολογιστών Μικροαρχιτεκτονική Μικροαρχιτεκτονική τριών διαύλων (Mic-2) Παραλληλισμός Επιπέδου Εντολής (ILP) Διοχέτευση (Mic-3 και Mic-4) Πρόβλεψη Διακλάδωσης και Υπερβαθμωτή εκτέλεση Kρυφή Μνήμη Σύνοψη

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

Διοχέτευση (1) Προϋποθέτει διακριτές υπο μονάδες στη CPU, σε αντιστοιχία με το κύκλο Ανάκλησης- Εκτέλεσης. Ενδεικτικές υπομονάδες (στάδια): S1. Ανάκληση της εντολής, Τροποποίηση P S2. Αποκωδικοποίηση της εντολής S3. Ανάκληση των τελεστέων (Ανάγνωση από τη Μνήμη) S4. Εκτέλεση της εντολής (πιθανώς σε υπομονάδες) Ακέραιοι Πραγματικοί Ανάκληση επιπλεόν τελεστέων S5. Aποθήκευση του αποτελέσματος (Εγγραφή στη Μνήμη) Λίγοι, σχετικά μεγάλοι κύκλοι μηχανής, μεταβλητός αριθμός κύκλων ανά εντολή Χρόνος 2 S1 1 3 1 2 S2 2 1 S3 Συμβατική 2 S4 Εκτέλεση... 1 S5 1 2 Στάδια

Διοχέτευση (2) (a) Μια τυπική διοχέτευση πέντε σταδίων (υπομονάδων): Ανάκληση, Αποκωδικοποίηση, Ανάγνωση από τη Μνήμη, Εκτέλεση, Εγγραφή στη Μνήμη (b) Η κατάσταση κάθε σταδίου σε εννέα κύκλους ρολογιού. Σταθερός αριθμός (ή σταθερό πολλαπλάσιο;) κύκλων μηχανής ανά εντολή. Πολλοί μικροί κύκλοι μηχανής, με βάση τη μέγιστη διάρκεια σταδίου.

Διοχέτευση (3) Διεκπεραίωση (Throughput). Η Διοχέτευση αυξάνει κυρίως το ρυθμό εκτέλεσης ακουθλιας εντολών. Ιδανικά στη μονάδα του χρόνου προσκομίζονται στον υπολογιστή Ν εντολές που εκτελούνται στα Ν στάδια της Διοχέτευσης. Μέτρηση σε Αριθμό προσκoμιζόμενων Εντολών σε μονάδα Χρόνου, συνήθως Million Instructions Per Second (MIPS). Επιτάχυνση (Speedup). Λόγος του χρόνου εκτέλεσης (ή του CPI) ενός προγράμματος χωρίς Διοχέτευση προς το χρόνο εκτέλεσης (ή του CPI) με Διοχέτευση. Ιδανικά ίση με Ν. Speedup = Tserial / Tpipelined = CPIserial/CPIpipelined. Ωφελιμότητα (Utilization). Ποσοστό του χρόνου που η Διοχέτευση είναι πλήρης. Μέγιστη Ωφελιμότητα = Ιδεατή Επιτάχυνση. Utilization = Speedup / N = Τserial/Tpipelined*N = CPIserial/CPIpipelined*N.

Διοχέτευση (4) Απώλειες. Η Διοχέτευση παρουσιάζει απώλειες στην εκκίνηση μέχρι να 'γεμίσει' και στη λήξη μέχρι να αδειάσει (filling and drainage). Αυτές ισούνται με περίπου 2N(Ν-1) άεργους κύκλους στα διάφορα στάδια, αριθμός αμελητέος όταν συνήθως η διοχέτευση λειτουργεί για βήματα πολύ περισσότερα του Ν. Ν filling Ν-1 operation drainage Κύκλοι ωφέλιμης λειτουργίας >> Ν Κίνδυνοι Διοχέτευσης (Hazards). Συνηθήκες λειτουργίας της Διοχέτευσης που μειώνουν την απόδοσή της (ιδεατή επιτάχυνση ή μέγιστη ωφελιμότητα). * Δομικοί κίνδυνοι (Structural Hazrds) * Κίνδυνοι Δεδομένων (Data Hazards) * Κίνδυνοι Ελέγχου (Control Hazards).

Κίνδυνοι Διοχέτευσης (Hazards) Συνθήκες του υλικού ή του λογισμικού που αποτρέπουν την επίτευξη βέλτιστης απόδοσης της διοχέτευσης. Δομικοί Κίνδυνοι (Structural Hazards). Η ταυτόχρονη εκτέλεση δύο σταδίων δύο εντολών δεν μπορεί να γίνει γιατί χρησιμοποιούν το ίδιο υλικό. (πχ χρήση ALU, προσπέλαση διάυλου, μνήμης κλπ). Κίνδυνοι Δεδομένων (Data Hazards). Η εκτέλεση ενός σταδίου μιας εντολής απαιτεί την προηγούμενη ολοκλήρωση ενός σταδίου άλλης εντολής (πχ προσκόμιση τελεστέου πριν την αποθήκευσή του). Κίνδυνοι Ελέγχου (Control Hazards). Εντολές διακλάδωσης, κλήσεις μεθόδων, απαιτούν ακύρωση ορισμένων ήδη εκτελεσθέντων σταδίων επομένων εντολών και επαναπλήρωση της διοχέτευσης.

Δομικός Κίνδυνος Ταυτόχρονη ανάγνωση από τη μνήμη ενώ έχουμε μια μόνο θύρα μνήμης. Λύσεις: * Αναστολή (Stall) που προκαλεί κενό (Bubble). * Βελτίωση Υλικού (διαφορετικές θύρες μνήμης για την ανάγνωση δεδομένων και εντολών)

Κίνδυνος Δεδομένων (1) : RAW Read After Write Ανάγνωση Μετά την Εγγραφή Οι εντολές sub, and, or χρησιμοποιούν τον καταχωρητή r1 πριν αυτός προλάβει να ενημερωθεί. Η εντολή xor είναι η πρώτη που χρησιμοποιεί τον ενημερωμένο καταχωρητή. Εξάρτηση (Dependence) ή Αληθής Εξάρτηση Δεδομένων. Η συνηθέστερη περίπτωση σε τυπικές διοχετεύσεις. Δύο τύποι: R-type (Register type) - διαχειρίσιμη. M-type (Memory type) προκαλεί στάση (stall).

Κίνδυνος Δεδομένων (2) : WAR * Write After Read: Εγγραφή Μετά την Ανάγνωση Μια εντολή γράφει σε ένα καταχωρητή πριν μια επόμενη εντολή χρησιμοποιήσει τη παλιά τιμή του. πχ. sub add r2, r1, r3 r1, r4, r5 // r2 = r1 - r3 // r1 = r4 + r5 Αντι-Εξάρτηση (Anti-Dependence). Μπορεί να συμβεί μόνο αν * Αλλάξει η σειρά εκτέλεσης εντολών, για παράδειγμα επειδή η sub σταμάτησε (stalled) και η add τη πρόλαβε. * Επιτρέπεται εγγραφή σε διαφορετικά στάδια της διοχέτευσης.

Κίνδυνος Δεδομένων (3) : WAW * Write After Write: Εγγραφή Μετά την Εγγραφή Μια εντολή γράφει (η add) σε ένα καταχωρητή πριν μια προηγούμενη εντολή (η sub) γράψει. πχ. sub add r1, r2, r3 r1, r4, r5 // r1 = r2 - r3 // r1 = r4 + r5 Εξάρτηση Εξόδου (Output Dependence). Μπορεί να συμβεί μόνο αν * Αλλάξει η σειρά εκτέλεσης εντολών, για παράδειγμα επειδή η sub σταμάτησε (stalled) και η add τη πρόλαβε. * Επιτρέπεται εγγραφή σε διαφορετικά στάδια της διοχέτευσης.

Αρχιτεκτονική με Διοχέτευση Mic-3 * Χρήση μανδαλωτών (latches) στους διαύλους Α, Β, C. * Απομόνωση κυκλωμάτων == δημιουργία υπομονάδων IFU => Καταχωρητές Αποκωδικοποίηση Καταχωρητές => A,Β A, B => ALU, Shift => C C = > Καταχωρητές Μνήμη <=> Καταχωρητές

Απεικόνιση Διοχέτευσης Mic-3 Τυπική λειτουργία της διοχέτευσης του Mic-3. Ανάκληση (IFU) Αποκωδικοποίηση Καταχωρητές (Reg) Δίαυλοι AB Δίαυλος C Μνήμη (Μem)* * δεν φαίνεται

Υλοποίηση της SWAP (1) Το μικροπρόγραμμα Μic-2 της εντολής SWAP.

Υλοποίηση της SWAP (2) μικρο-εντολή Bubble χρόνος Εμφάνιση κινδύνου δεδομένων RAW M-type λόγω rd (ανάγνωση από μνήμη). Το goto(mbr1) αντιστοιχεί σε σήμα προς IFU για προσκόμιση εντολής.

Υλοποίηση της IADD στο Mic-3 1 2 3 4 5 6 7 8 MAR=SP=SP-1;rd H=TOS B=SP C=B-1 MAR=C;SP=C;rd MDR=mem B=TOS C=B H=C MDR=TOS=MDR+H;wr;goto(MBR1) B=MDR C=B+H MDR=C; TOS=C;wr mem=mdr; goto(mbr1) Κύκλοι ρολογιού: 8X1/3=2.6 < 3 Κάθε χρώμα δείχνει ένα διαφορετικό στάδιο διοχέτευσης. Κάθε στήλη δείχνει μια μικρο-εντολή Κάθε γραμμή δείχνει τη κατάσταση των σταδίων σε ένα κύκλο

Αποφυγή Κινδύνων Διοχέτευσης 1. Εσωτερική συνέπεια εκτέλεσης εντολής Κάθε στήλη δείχνει την εκτέλεση μιας μικρο-εντολής. Κάθε στάδιο εμφανίζεται ΜΙΑ φορά. 2. Αποφυγή Δομικού Κινδύνου. Κάθε γραμμή δείχνει τη λειτουργία των σταδίων ανά χρονική στιγμή. Κάθε χρώμα εμφανίζεται ΜΙΑ φορά. 3. Αποφυγή Κινδύνου RAW M-type. Όταν έχουμε rd ακολουθεί κύκλος MDR=mem. Η επόμενη χρήση του MDR για Ανάγνωση (B=MDR) καθυστερεί. 4. Αποφυγή Κινδύνου RAW R-type, WAR. Ένας καταχωρητής ή μανδαλωτής δε μπορεί να αλλάζει τιμή πριν η τιμή του διοχετευθεί σε επόμενο στάδιο (ή το πολύ ταυτόχρονα). Δεν εμφανίζεται Κίνδυνος Δεδομένων WAW, Κίνδυνοι Ελέγχου αργότερα Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Educatio

ΙSUB, IAND, IAND, POP στο Mic-3 MAR=SP=SP-1;rd 1 2 3 4 5 6 7 8 B=SP C=B-1 MAR=C;SP=C;rd MDR=mem H=TOS MDR=TOS=MDR * H;wr;goto(MBR1) B=TOS C=B H=C B=MDR C=B Η ή Β AND Η ή Β OR Η ή τίποτε MDR=C; TOS=C;wr mem=mdr; goto(mbr1) Κύκλοι ρολογιού: 8X1/3=2.6 < 3 Αυτό που αλλάζει είναι η λειτουργία της ALU

Υλοποίηση της DUP στο Mic-3 SP=MAR=SP+1 1 B=SP 2 C=B+1 3 MAR=C; SP=C 4 5 MDR=TOS;wr ;goto(mbr1) B=TOS C=B MDR=C; wr mem=mdr; goto(mbr1) Κύκλοι ρολογιού: 5X1/3=1.6 < 2

Υλοποίηση της BIPUSH στο Mic-3 SP=MAR=SP+1 1 B=SP 2 C=B+1 3 MAR=C; SP=C 4 5 MDR=TOS=MBR1;wr ;goto(mbr1) Α=MBR1 C=Α MDR=C; TOS=C;wr mem=mdr; goto(mbr1) Κύκλοι ρολογιού: 5X1/3=1.6 < 2

Υλοποίηση της ΙΙΝC στο Mic-3 1 2 3 4 5 6 7 8 MAR=LV+MBR1U;rd H=MBR1 Α=MBR1U;Β=LV C=A+B MAR=C; rd MDR=Mem Α=MBR1 C=B H=C MDR=MDR+H;wr ;goto(mbr1) A=MDR;B=H C= A+B MDR=C;wr mem=mdr; goto(mbr1) Κύκλοι ρολογιού: 8X1/3=2.6 < 3

Υλοποίηση της ILOAD στο Mic-3 1 2 3 4 5 6 7 8 MAR=LV+MBR1U;rd MAR=SP=SP+1 A=MBR1U;B=LV C=A+B MAR=C;rd MDR=mem B=SP C=B+1 MAR=C; SP=C TOS=MDR;wr;goto(MBR1) B=MDR C=B TOS=C;wr mem=mdr; goto(mbr1) Κύκλοι ρολογιού: 8X1/3=2.6 < 3

Υλοποίηση της ISTORE στο Mic-3 MAR=LV+MBR1U MDR=TOS;wr MAR=SP=SP-1;rd TOS=MDR;goto(MBR1) 1 A=MBR1U;B=LV 2 C=A+B 3 MAR=C 4 5 6 7 8 9 10 B=TOS C=B MDR=C; wr mem=mdr B=SP C=B-1 MAR=C;SP=C;rd MDR=mem B=MDR C=B TOS=C goto(mbr1) Κύκλοι ρολογιού: 10X1/3=3.3 < 5

Διοχέτευση BIPUSH και ISTORE SP=MAR=SP+1 MDR=TOS=MBR1; MAR=LV+MBR1U MDR=TOS;wr MAR=SP=SP-1;rd TOS=MDR; wr ;goto(mbr1) goto(mbr1) 1 B=SP 2 C=B+1 3 MAR=C; SP=C 4 5 6 7 8 9 10 11 12 B=MBR1 C=B A=MBR1U;B=LC MDR=C; TOS=C; wr C=A+B B=TOS mem=mdr;go..r1) MAR=C C=B MDR=C; wr mem=mdr B=SP C=B-1 MAR=C;SP=C;rd MDR=mem B=MDR C=B TOS=C goto(mbr1) Κύκλοι ρολογιού: 12X1/3=4

ILOAD, ILOAD, IADD, ISTORE MAR=LV+MBR1U;rd MAR=SP=SP+1 TOS=MDR;wr;* MAR=LV+MBR1U;rd MAR=SP=SP+1 TOS=MDR;wr;*...... 01 A=MBR1U;B=LV 02 C=A+B B=SP 03 MAR=C;rd C=B+1 04 MDR=mem MAR=C; SP=C 05 B=MDR 06 C=B A=MBR1U;B=LV 07 TOS=C;wr C=A+B B=SP 08 mem-mdr;* MAR=C;rd C=B+1 09 MDR=mem MAR=C; SP=C 10 B=MDR 11 C=B 12 TOS=C;wr... 13 mem=mdr;*...... -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------MAR=SP=SP-1;rd H=TOS MDR=TOS=MDR+H;wr;* MAR=LV+MBR1U MDR=TOS;wr MAR=SP=SP-1;rd TOS=MDR;* 12 B=SP 13 C=B-1 B=TOS 14 MAR=C;SP=C;rd C=B 15 MDR=mem H=C 16 B=MDR 17 C=B+H A=MBR1U;B=LV 18 MDR=C; TOS=C;wr C=A+B B=TOS 19 mem=mdr;* MAR=C C=B B=SP 20 MDR=C; wr C=B-1 21 mem=mdr MAR=C;SP=C;rd 22 MDR=mem 23 B=MDR 24 C=B 25 TOS=C 26 *

Απόδοση Διοχέτευσης Επιτάχυνση 26Χ1/3 = 8.6 κύκλοι έναντι 14 κύκλων, speedup 1.63 (ιδεατό 3, για 3 βαθμίδες, αφού η IFU δεν επηρεάζει και η MEM συμμετέχει μέσω των αναφορών στη μνήμη). Σε μεγαλύτερο αριθμό εντολών η επιτάχυνση τείνει στο 2 (εκτελούνται το πολύ 2 εντολές ταυτόχρονα). Ωφελιμότητα 39 ενεργά στάδια / 3 στάδια Χ 26 κύκλοι = 39 / 78 = 50%. Υποθέσεις Χρόνος σταδίου διοχέτευσης = 1/3 του κύκλου ρολογιού Mic-1ή-2. Χρόνος προσπέλασης μνήμης = χρόνος σταδίου διοχέτευσης.

Μικροεντολές Mic-3 'Ενας MIR ανά στάδιο της διοχέτευσης. Σε κάθε ωρολογιακό παλμό η μικροεντολή προωθείται από ένα MIR στό επόμενο. Δομή μικρο-εντολής όπως Μic-2. Ο κάθε MIR ελέγχει διαφορετικά πεδία της μικρο-εντολής, ανάλογα με το στάδιο της διοχέτευσης που ελέγχει. Addr JAM ALU C Mem B A Addr JAM ALU C Mem B A Addr JAM ALU C Mem B A Τα 3 πρώτα στάδια συνήθως εκτελούνται πάντα. Τo Mem εκτελείται ανάλογα με την μικροεντολή και διαρκεί δύο στάδια (σήμα και Addr JAM ALU C Mem B A μεταφορά δεδομένων) Τo Αddr εκτελείται σε ένα από τα στάδια και καθορίζει ξεκινά η επόμενη μικρο-εντολή. Addr JAM ALU C Mem B A To JAM καθορίζει το goto ή ενημερώνει την ΙFU για επόμενη εντολή. goto ή IFU

Μειονεκτήματα Μic-3 * Η χρήση μοντέλου στοίβας προκαλεί μόνιμο κίνδυνο δεδομένων τύπου RAW, Μ-type. Σχεδόν κάθε εντολή (όχι μόνο οι απαραίτητες ILOAD, ISTORE) περιέχει ενημέρωση μνήμης. * Πολλαπλές διελεύσεις ανά εντολή (μεγάλες εντολές). Το πολύ δύο εντολές στη διοχέτευση. Χρήση ALU για αυξήσεις-μειώσεις-διελεύσεις τιμών καταχωρητών. * Περιορισμένος αριθμός καταχωρητών με πολλαπλές εγγραφές και αναγνώσεις ανά εντολή. Έλλειψη επαρκούς αριθμού γενικών καταχωρητών. Λύσεις: Ελαχιστοποίηση προσπελάσεων στη μνήμη. Μεγάλος αριθμός καταχωρητών γενικού σκοπού. Συντομότερες, απλούστερες εντολές μιας διέλευσης. Περισσότερο υλικό.

Βελτίωση Mic-3 (1) 64 λέξεις της στοίβας των μεταφέροντα σε register file. Παράδειγμα: ΙLOAD x 1 rd, 1wr 1 rd ή 1 move (μεταξύ καταχωρητών) ILOAD y 1 rd, 1wr 1 rd ή 1 move IADD 1 rd, 1wr -ISTORE z 1 rd, 1wr 1 wr ή 1 move

Βελτίωση Μιc-3 (2) Σύμπτυξη εντολών με τη στοίβα σε register file. Κίνηση στη στοίβα (register file) για την ακολουθία ILOAD k, ILOAD m, IADD, ISTORE n (a) Χωρίς σύμπτυξη εντολών: κίνηση καταχωρητών στη 'στοίβα' με imov ILOAD k, ILOAD m, IADD, ISTORE n = imov r7, imov r1, iadd, imov r3 (b) Με σύμπτυξη χωρίς σύμπτυξη εντολών: απ' ευθείας πράξη στους Καταχωρητές. Στην ουσία: ΙLOAD k, ILOAD m, IADD, ISTORE n = iadd r3, r1, r7

Βελτίωση Μιc-3 (3) (a) (b) (a) Τυπικές ομάδες εντολών της JVM (b) Σύμπτυξη ομάδων εντολών της JVM

Διοχέτευση Επτά Σταδίων: Mic-4 (1) + R0-R127

Διοχέτευση Επτά Σταδίων: Mic-4 (2) 1: Μονάδα Ανάκλησης Εντολών (IFU) 2: Αποκωδικοποίηση Εντολών (Decode) εντολές τύπου RISC 3: Ουρά Μικροεντολών (Queue) 4: Προσκόμιση Τελεστέων (Operands) από καταχωρητές 5: Εκτέλεση (Exec) απλή (όχι πολλαπλή) διέλευση 6: Εγγραφή Αποτελέσματος (Write Back) προς καταχωρητές 7: Επικοινωνία με Μνήμη (Memory) μόνο load, store

Αρχιτεκτονική Υπολογιστών Μικροαρχιτεκτονική Μικροαρχιτεκτονική τριών διαύλων (Mic-2) Παραλληλισμός Επιπέδου Εντολής (ILP) Διοχέτευση (Mic-3 και Mic-4) Πρόβλεψη Διακλάδωσης και Υπερβαθμωτή εκτέλεση Kρυφή Μνήμη Σύνοψη

Υλοποίηση της GOTO στο Mic-3 H=PC-1 1 A=PC 2 C=A-1 3 H=C; 4 5 6 7 8 PC=H+MBR2;fetch MBR=mem(PC);goto(MBR1) Στάση διοχέτευσης: Η επόμενη εντολή δεν εισάγεται A=MBR2;B=H C=A+B PC=C;fetch MBR=mem goto(mbr1) Νέος PC διαθέσιμος Νέα εντολή διαθέσιμη Εισαγωγή νέας εντολής: Στάση 3 κύκλων Κύκλοι ρολογιού: 8X1/3.5 < 4 Στάση 4 κύκλων

Υλοποίηση της IFLT στο Mic-3 1 2 3 4 5 6 7 8 9 MAR=SP=SP-1;rd OPC=TOS B=SP C=B-1 MAR=C;SP=C;rd MDR=mem B=TOS C=B OPC=C TOS=MDR B=MDR C=B TOS=C N=OPC; if(n) goto T; else goto F B=OPC C=B if (N) goto T; else goto F εκτέλεση μέρους GOTO Κύκλοι ρολογιού: 8X1/3=2.6 < 4 Στάση 2 κύκλοι + στάση μέρους GOTO (~4 κύκλοι): Συνολική στάση ~6 κύκλοι

Υλοποίηση της IFEQ στο Mic-3 1 2 3 4 5 6 7 8 MAR=SP=SP-1;rd OPC=TOS B=SP C=B-1 MAR=C;SP=C;rd MDR=mem B=TOS C=B OPC=C TOS=MDR B=MDR C=B TOS=C Z=OPC; if(z) goto T; else goto F B=OPC C=B if (Z) goto T; else goto F εκτέλεση μέρους GOTO Κύκλοι ρολογιού: 8X1/3=2.6 < 4 Στάση 2 κύκλοι + στάση μέρους GOTO (~ 4 κύκλοι): Συνολική στάση ~ 6 κύκλοι

Υλοποίηση της IF_ICMPNEQ στο Mic-3 MAR=SP=SP-1;rd MAR=SP=SP-1 H=MDR;rd OPC=TOS TOS=MDR 1 2 3 4 5 6 7 8 9 10 11 12 B=SP C=B-1 MAR=C;SP=C;rd MDR=mem Z=H-OPC; if(z) goto T; else goto F B=SP C=B-1 MAR=C B=MDR C=B B=TOS H=C;rd C=B MDR=mem OPC=C B=MDR C=B TOS=C A=H;B=OPC C=A-B if (Z) goto T; else goto F εκτέλεση μέρους GOTO Κύκλοι ρολογιού: 12X1/3=4 < 6 Στάση 2 κύκλοι + στάση μέρους GOTO (~4 κύκλοι): Συνολική στάση ~6 κύκλοι

Κίνδυνος Ελέγχου στο Mic-3 // if (i == 3) k = 0 else k = 1; ILOAD i BIPUSH 3 IF_ICMPEQ L1 BIPUSH 1 ISTORE k GOTO L2 L1: BIPUSH 0 ISTORE k L2: BIPUSH.. ISTORE.. Πρόγραμμα i==3 TRUE i==3 FALSE ILOAD i BIPUSH 3 IF_ICMPEQ L1 BIPUSH 1 ISTORE k GOTO L2 L1: L1: BIPUSH 0 ISTORE k L2: L2: BIPUSH.. ISTORE Ροή εντολών TRUE ILOAD i BIPUSH 3 IF_ICMPEQ L1 BIPUSH 1 ISTORE k GOTO L2 BIPUSH 0 ISTORE k BIPUSH.. ISTORE Ροή εντολών FALSE Στο TRUE οι πράσινες εντολές καθυστερούνται και δεν εισάγονται. Στο FALSE οι πράσινες εντολές καθυστερούνται και εισάγονται ενώ οι μπλέ καθυστερούνται και δεν εισάγονται λόγω GOTO.

Τύποι Διακλάδωσης Χωρίς συνθήκη (GOTO) Η εκτέλεση του GOTO αναιρεί την εκτέλεση ορισμένων εντολών που ακολουθούν και έχουν εισέλθει στη διοχέτευση. Προφανής λύση: πρόκληση στάσης (stall) με εντολές τύπου NOP μέχρι να η GOTO να φθάσει στη φάση εκτέλεσης, ώστε ο PC να λάβει τη σωστή τιμή. Με ειδικό υλικό η διάρκεια της στάσης μπορεί να μειωθεί (άμεση γνώση της διεύθυνσης διακλάδωσης). Με συνθήκη (απόφαση) (IFLT, IFEQ, IF_CMPEQ) Πριν την εκτέλεση της διακλάδωσης απαιτείται υπολογισμός της τιμής της συνθήκης. Αυτό επιβαρύνει ακόμη περισσότερο τη καθυστέρηση που θα επιβληθεί στη διοχέτευση γιατί απαιτείται κανονική εκτέλεση της εντολής (δε μπορεί να γίνει παράκαμψη τύπου GOTO).

Εναλλακτικές Λύσεις Εισαγωγή στάσης (stall) Απλή αλλά χρονοβόρα λύση, μειώνει την απόδοση της διοχέτευσης. Εκτίμηση μέσων καθυστερήσεων (CPI); Βελτίωση με ειδικό υλικό, ειδικά για GOTO. Πρόβλεψη Μη-Διακλάδωσης (IFLT, IFEQ, IF_CMPEQ) Εκτελούνται οι εντολές αμέσως μετά το IF: No Branch. Σε περίπτωση Αληθούς Συνθήκης οι εκτελεσθείσες εντολές πρέπει να αναιρεθούν (ενδεικτική συχνότητα 47%). Πρόβλεψη Διακλάδωσης (IFLT, IFEQ, IF_CMPEQ) Εκτελούνται οι εντολές αμέσως μετά το Label: Branch. Σε περίπτωση Ψευδούς Συνθήκης οι εκτελεσθείσες εντολές πρέπει να αναιρεθούν (ενδεικτική συχνότητα 53%).

Πρόβλεψη Διακλάδωσης Στατική Πρόβλεψη O compiler χρησιμοποιεί βοηθητικές εντολές διακλάδωσης που υποδεικνύουν Διακλάδωση ή Μη-Διακλάδωση (Branch, No Branch). Το πρόγραμμα εκτελείται με profiler για να διαπιστωθεί η συχνότητα επιλογής σε κάθε εντολή διακλάδωσης. Δυναμική Πρόβλεψη Η CPU κρατά τις διευθύνσεις και το ιστορικό των διακλαδώσεων. Εφαρμόζονται διάφοροι αλγόριθμοι πρόβλεψης με βάση το ιστορικό. Και στις δύο περιπτώσεις απαιτείται σύνθετο υλικό (στη δυναμική πρόβλεψη πιο σύνθετο).

Δυναμική Πρόβλεψη Διακλάδωσης (1) (a) Πίνακας ιστορικού διακλάδωσης 1-bit. (b) Πίνακας ιστορικού διακλάδωσης 2-bit. (c) Πίνακας με συσχέτιση διεύθυνσης εντολής διακλάδωσης και διεύθυνσης στόχου διακλάδωσης (νέα τιμή PC).

Δυναμική Πρόβλεψη Διακλάδωσης (2) Πίνακας Ιστορικού Διακλάδωσης Η CPU κρατά τις διευθύνσεις και το ιστορικό των διακλαδώσεων σε ειδική κρυφή μνήμη. Πίνακας Διευθύνσεων Στόχου Διακλάδωσης Η CPU κρατά και τη διεύθυνση στόχου της επικρατούσας επιλογής σε κάθε διακλάδωση. Ιστορικό Διακλάδωσης 1-bit Αποθηκεύει τη τελευταία επιλογή (Branch, No Branch) Αποτυγχάνει πάντα σε είσοδο και έξοδο βρόχου επανάληψης. Ιστορικό Διακλάδωσης 2-bit Αποθηκεύει Ισχυρή (Strong) και Ασθενή (Weak) Πρόβλεψη. Με δύο διαδοχικά σφάλματα επέρχεται αντιστροφή Πρόβλεψης.

Δυναμική Πρόβλεψη Διακλάδωσης (3) Weak No Branch Strong No Branch Weak Branch Strong Branch Μηχανή πεπερασμένων καταστάσεων για πρόβλεψη διακλάδωσης 2-bit.

Δυναμική Πρόβλεψη Διακλάδωσης (4) Συμβάντα Διακλάδωση Μη-Διακλάδωση 00 Ισχυρή Πρόβλεψη Μη-Διακλάδωσης 01 Ασθενής Πρόβλεψη Μη-Διακλάδωσης 10 Ασθενής Πρόβλεψη Διακλάδωσης 11 Ισχυρή Πρόβλεψη Διακλάδωσης Παρούσα Κατάσταση 01 11 11 11 00 00 00 10 Επόμενη Κατάσταση Εναλλακτική παρουσίαση της μηχανής πεπερασμένων καταστάσεων για πρόβλεψη διακλάδωσης.

Υπερβαθμωτή (Superscalar) Αρχιτεκτονική (1) Υπερβαθμωτός επεξεργαστής με πέντε λειτουργικές μονάδες, τοποθετημένος σε διοχέτευση πέντε σταδίων (Pentim II).

Υπερβαθμωτή (Superscalar) Αρχιτεκτονική (2) 1 2 3 4 5 6 7 8 9 10 Χρόνος Α Β C D1 D2 D3 D4 D5 E Μονάδες Απαιτείται αναδιάταξη των εντολών με βάση τη σειρά εισόδου Η Υπερβαθμωτή αρχιτεκτονική επιτρέπει την εκτέλεση πολλαπλών εντολών: Τα στάδια Α έως C 'αδειάζουν' γρήγορα. Η σειρά ολοκλήρωσης των εντολών μπορεί να είναι διαφορετική από τη σειρά εισαγωγής λόγω διαφορετικής καθυστέρησης μονάδων (πχ ΙΝΤ, FLOAT ή ΑDD, DIV) και χρήσης πολλαπλών καταχωρητών.

Υπερβαθμωτή (Superscalar) Αρχιτεκτονική (3) Οι εντολές υποβάλονται (issue) με τη σειρά εμφάνισης στο πρόγραμμα. Οι εντολές αποχωρούν (retire) με τη σειρά εμφάνισης στο πρόγραμμα. Οι εντολές μπορεί να εκτελούνται εντός σειράς (in order) ή εκτός σειράς (out of order). Εντολές ή τμήματα εντολών (πράξεις) που δεν εξαρτώνται μεταξύ τους μπορεί να εκτελεστούν εκτός σειράς, με χρήση μετονομασίας καταχωρητών (register renaming). Τα αποτελέσματα αποθηκεύονται σε ενδιάμεσους (πρόχειρους) καταχωρητές και όταν η εξάρτηση λυθεί το αποτέλεσμα μεταφέρεται στον σωστό καταχωρητή.

Υπερβαθμωτή (Superscalar) Αρχιτεκτονική (4) Η απόδοση της υπερβαθμωτής εκτέλεσης μπορεί να μην είναι βέλτιστη λόγω εξαρτήσεων δεδομένων (data dependencies) ή δομικών κινδύνων και κινδύνων δεδομένων. Η μονάδα υποβολής για την υπο εκτέλεση εντολή εξετάζει: (α) Πιθανό δομικό κίνδυνο (χρήση κοινής υπομονάδας εκτέλεσης την ίδια χρονική στιγμή) με εκτελόύμενη εντολή (χρήση collision vectors) (β) Πιθανό κίνδυνο δεδομένων: Αν δεν είναι έτοιμοι οι καταχωρητές για ανάγνωση ή εγγραφή η εντολή δε μπορεί να ξεκινήσει. Στην εκτέλεση εκτός σειράς, αν οι καταχωρητές για ανάγνωση είναι έτοιμοι αλλά ο καταχωρητής για εγγραφή όχι, τότε το αποτέλεσμα γράφεται προσωρινά σε άλλο καταχωρητή (register renaming). Στη συνέχεια γράφεται στο σωστό καταχωρητή από τη μονάδα αποχώρησης.

Παράδειγμα Υπερβαθμωτής Επεξεργασίας Υποβολή έως δύο εντολών ανά κύκλο μηχανής: η υπερβαθμωτή μονάδα έχει διπλάσια διεκπεραιωτική ικανότητα από την υπόλοιπη διοχέτευση. Δύο διαφορετικές καθυστερήσεις (latency) στην υπερβαθμωτή μονάδα: 1 κύκλος μηχανής για ADD, SUB 2 κύκλοι μηχανής για MUL, DIV Πρώτο παράδειγμα: Εκτέλεση Εντός Σειράς (In-Order). Δεύτερο παράδειγμα: Εκτέλεση Εκτός Σειράς (Out-of-Order).

Κανόνες Εκτέλεσης Εντολών Αληθής Εξάρτηση Δεδομένων (Κίνδυνος RAW) Μια εντολή δεν μπορεί να εκτελεστεί αν ένας τελεστής (καταχωρητής) αναμένει να εγγραφεί. Αντι-Εξάρτηση Δεδομένων (Κίνδυνος WAR) Μια εντολή δεν μπορεί να εκτελεστεί αν ο προορισμός (καταχωρητής) αναμένει να διαβαστεί. Αντι-Εξάρτηση Δεδομένων (Κίνδυνος WAR) Μια εντολή δεν μπορεί να εκτελεστεί αν ο προορισμός (καταχωρητής) αναμένει να εγγραφεί. Στην εκτός σειράς εκτέλεση οι δύο τελευταίοι κανόνες μπορεί να παρακαμφθούν.

Υπερβαθμωτή Εκτέλεση Εντός Σειράς (1) Κίνδυνος RAW: #4 και #2. Στάση λόγω R4. Εκτέλεση Εντός Σειράς: Η #2 αποχωρεί στο κύκλο 4. Αναμένει την #1. Κίνδυνος WAR: #6 και #4, #5. Στάση λόγω R1.

Υπερβαθμωτή Εκτέλεση Εντός Σειράς (2) Κίνδυνος WAR: #6 και #4, #5. Στάση λόγω R1. Κίνδυνος RAW: #7 και #6. Στάση λόγω R1. Κίνδυνος WAR: #8 και #7. Στάση λόγω R1.

Υπερβαθμωτή Εκτέλεση Εκτός Σειράς (1) Κίνδυνος RAW: #4 και #2. Στάση λόγω R4. Εκτέλεση Εκτός Σειράς: Η #5 υποβάλεται στο κύκλο 3, πρίν την #4. Κίνδυνος WAR: #6 και #4, #5 λόγω R1. Μετονομασία Καταχωρητή: R1 σε S1. Εκτέλεση Εκτός Σειράς: Η #2 αποχωρεί στο κύκλο 3, πριν την #1. Operation of a superscalar CPU with out-of-order issue and out of-order completion.

Υπερβαθμωτή Εκτέλεση Εκτός Σειράς (2) Κίνδυνος RAW: #7 και #6. Στάση λόγω S1 (πρώην R1). Εκτέλεση Εκτός Σειράς: Η #8 υποβάλεται στο κύκλο 4, πρίν την #7. Κίνδυνος WAR: #8 και #6, #7 λόγω S1. Μετονομασία Καταχωρητή: S1 σε S2. Εκτέλεση Εκτός Σειράς: Η #6 αποχωρεί στο κύκλο 5, πριν τις #4, #5. Η #8 αποχωρεί στο κύκλο 6, πριν την #7.

Αρχιτεκτονική Υπολογιστών Μικροαρχιτεκτονική Μικροαρχιτεκτονική τριών διαύλων (Mic-2) Παραλληλισμός Επιπέδου Εντολής (ILP) Διοχέτευση (Mic-3 και Mic-4) Πρόβλεψη Διακλάδωσης και Υπερβαθμωτή εκτέλεση Kρυφή Μνήμη Σύνοψη

Κρυφή Μνήμη (Cache) (1) Από λογική (αρχιτεκτονική) άποψη η cache είναι μεταξύ της CPU και της Κύριας Μνήμης.

Αρχή Τοπικότητας Ένα πρόγραμμα έχει τη τάση να προσπελαύνει σε κάθε χρονική στιγμή δεδομένα και εντολές σε σχετικά περιορισμένο χώρο διευθύνσεων. Δύο ειδών τοπικότητες: Χρονική Τοπικότητα: Αν μια θέση μνήμης προσπελαστεί μια φορά, τότε πιθανότατα θα ξαναχρησιμοποιηθεί τις επόμενες χρονικές στιγμές. Παράδειγμα: εντολές βρόχων επανάληψης Χωρική Τοπικότητα: Αν μια θέση μνήμης προσπελαστεί, τότε πιθανότατα σύντομα θα προσπελαστούν και οι γειτονικές θέσεις μνήμης Παράδειγμα: πίνακες και άλλες δομές δεδομένων.

Κρυφή Μνήμη (Cache) (2) Από φυσική (οργανωτική) άποψη, συνήθως έχουμε πολλαπλά επίπεδα cache (L1/2/3) που βρίσκονται μέσα ή έξω από τον επεξεργαστή με διαφορετική ταχύτητα, χωρητικότητα και λειτουργικότητα (Εντολές, Δεδομένα).

Χαρακτηριστικά Cache Κόστος L1 > Kόστος L2 > Κόστος L3 > Κόστος Κύριας Μνήμης. Ταχύτητα L1 < Ταχύτητα L2 < Ταχύτητα L3 < Ταχύτητα Κ. Μνήμης Μέγεθος L1 < Μέγεθος L2 < Μέγεθος L3 < Μέγεθος Κ. Μνήμης Μέγεθος Cache < 1% Μέγεθος Κύριας Μνήμης Διαφορές με Καταχωρητές: * Η Cache είναι διαφανής στο επίπεδο συνόλου εντολών (δεν υπάρχουν δηλαδή ειδικές εντολές γλώσσας μηχανής). * Η διαχείριση της Cache γίνεται από το υλικό, όχι το λογισμικό. * Η Cache αποθηκεύει δεδομένα και εντολές.

Ιεραρχία Μνήμης 16-256 καταχωρητές Static RAM L1: 16-64K L1 Instruction/Data on chip L2: 128-512K L2 on chip package L3: 128K -8M L3 on board Dynamic RAM: ως 16G Virtual memory HDD: ως Τ Εντολές καταχωρητών * * Εντολές μνήμης * Εντολές Ι/Ο Μια ιεραρχία μνήμης με πέντε (ή εννέα) φυσικά επίπεδα. Τα λογικά επίπεδα είναι τρία (σημειώνονται με *).

Παράδειγμα Ιεραρχίας Μνήμης ( με 2 επίπεδα cache ) Μεγαλύτερη Ταχύτητα Μεγαλύτερη Χωρητικότητα Processor Main Memory (DRAM) Virtual Memory, Secondary Storage (Disk) Tertiary Storage (Tape) Control Registers Datapath On-Chip Level One Cache L1 Second Level Cache (SRAM) L2 Ταχύτητα : 1-5ns 10ns 30ns 50ns 10ms 10sec Μέγεθος : <1KB <256KB <8MB <4GB >1GB TB Bandwidth : 150GB/s 50GB/s cslab@ntua 2007-2008 25GB/s 4GB/s 10MB/s

Οργάνωση και Λειτουργία Οργάνωση δεδομένων (Τύποι Κρυφής Μνήμης): direct-mapped (άμεση χαρτογράφηση) set-associative (συνολοσυνειρμική) fully associative (πλήρως συνειρμική) Προσπέλαση δεδομένων (Διευθυνσιοδότηση): Tag line mod (#lines, #sets, #1) Ανάγνωση/Εγγραφή δεδομένων: Read / Write Hit / Miss Μηχανισμός Aντικατάστασης: Direct (Άμεσος) Least Recently Used (LRU) Λιγότερο Πρόσφατη Χρήση FIFO (First In First Out) Random (Τυχαίος) Μηχανισμός Eνημέρωσης : write-through ή write-back write-allocate ή write-no-allocate cslab@ntua 2007-2008

Τύποι Κρυφής Μνήμης (1) Άμεσης Χαρτογράφησης (Direct Mapped Cache) Κάθε λέξη μνήμης έχει μια μόνο πιθανή θέση στη cache. Σχετικά απλή στην υλοποίηση. Συνειρμική (Associative Cache) Κάθε λέξη μνήμης μπορεί να καταλάβει οποιαδήποτε θέση της cache. Πολύ ευέλικτη αλλά δαπανηρή στην υλοποίηση. Συνολοσυνειρμική (Set-associative Cache) Κάθε λέξη μνήμης έχει ένα συγκεκριμένο σύνολο πιθανών θέσεων στη cache. Παράδειγμα: Συνολοσυνειρμική κρυφή μνήμη τεσσάρων δρόμων.

Τύποι Κρυφής Μνήμης (2) Γραμμή Η γραμμή 12 μπαίνει οπουδήποτε Η γραμμή 12 μπαίνει Η γραμμή 12 μπαίνει μόνο στη θέση 4 οπουδήποτε μέσα στο 4=12 mod 8) set 0 (=12 mod 4) Γραμμή Γραμμή Cache Αρ. Γραμμής διεύθυνση της γραμμής δεδομένων Μνήμη Κρυφή μνήμη με 8 γραμμές και μνήμη με 32 γραμμές δεδομένων cslab@ntua 2007-2008

Κρυφή Μνήμη Άμεσης Χαρτογράφησης (a) Κρυφή μνήμη άμεσης χαρτογράφησης 64K bytes =2K Χ 32 bytes. Στο μέγεθος δεν λαμβάνονται υπ' όψη τα bits ελέγχου (Valid, Tag). (b) Εικονική διεύθυνση των 32 bits (ίση με τη φυσική).

Εικονική διεύθυνση MAR MDR PC IR(MBR) address virtual address word address block address block virtual address byte CPU Cache Chip cslab@ntua 2007-2008 RAM

Διεθυνσιοδότηση και Μεγέθη (1) Η εικονική διεύθυνση παράγεται από τη CPU και έχει την ίδια μορφή σε όλους τους τύπους κρυφής μνήμης και το μέγεθός της είναι ίσο με αυτό της φυσικής διεύθυνσης. Καθορίζεται από το μέγεθος της κύριας μνήμης. Θεωρούμε οτι έχουμε κύρια μνήμη με 2^32 bytes, άρα διεύθυνση μεγέθους 32 bits. Η μνήμη είναι οργανωμένη σε λέξεις (words) των 4(2^2) bytes, άρα έχουμε 2^30 λέξεις των 4 bytes. Εικονική Διεύθυνση LINE TAG 16 bits 11 bits WORD BYTE 3 bits 2 bits 32 bits

Διεθυνσιοδότηση και Μεγέθη (2) Δεδομένα (Data) ή Line ή Block Δεδομένων 8 λέξεις ή 32 bytes δεδομένων από κύρια μνήμη που αποθηκεύονται σε μια γραμμή της κρυφής μνήμης. Το μέγεθος αυτό καθορίζεται από την αρχιτεκτονική της κρυφής μνήμης και φαίνεται στο σχετικό πεδίο της εικονικής διεύθυνσης. Byte ή Byte Select (= Word / Byte ) Δείχνει αν γίνεται αναφορά σε μεμονωμένο byte. Το μέγεθος εξερτάται από τον αριθμό bytes ανά λέξη. Αφού έχουμε 4 bytes ανά λέξη, απαιτούνται 2 bytes, όταν είναι 00 προσπελέυνουμε πλήρη λέξη. Λέξη (Word) ή Block Offset Δείχνει σε ποιά λέξη της γραμμής γίνεται αναφορά. Αφού η κάθε γραμμή αποθηκεύει 32 bytes ή 8 words, απαιτούνται 3 bits από την εικονική διεύθυνση. Άρα στη κύρια μνήμη έχουμε 2^27 γραμμές ή blocks των 32 bytes.

Διεθυνσιοδότηση και Μεγέθη (3) Γραμμή (Line) ή Δείκτης (Index) ή Block Δείχνει ποιά καταχώρηση κρυφής μνήμης περιέχει τα αντίστοιχα δεδομένα της κύριας μνήμης, αν υπάρχουν. Αφού η κρυφή μνήμη έχει 2K γραμμές απαιτούνται 11 bits. Άρα οι 2^27 γραμμές (blocks) της κύριας μνήμης ομαδοποιούνται σε 2^11 ομάδες γραμμών που η κάθε μια περιέχει 2^16 γραμμές. Ετικέτα (Tag) Μια μοναδική τιμή 16 bits που καθορίζει μια από τις 2^16 γραμμές κάθε ομάδας (τα bits υψηλότερης τάξης από τη θέση κύριας μνήμης από όπου προέρχονται τα δεδομένα). Επομένως στην κρυφή μνήμη άμεση χαρτογράφησης μόνο μια από τις γραμμές κάθε ομάδας μπορεί να βρίσκεται στη κρυφή μνήμη, η γραμμή Tag Line mod #lines. 'Εγκυρo (Valid) Δείχνει αν η καταχώρηση έχει έγκυρα δεδομένα (1 bit).

Παράδειγμα Ομαδοποίησης Κάθε χρώμα ορίζει μια ομάδα γραμμών / block δεδομένων. Κάθε ομάδα μπορεί να αποθηκευθεί μόνο σε μία γραμμή της κρυφής μνήμης άμεσης χαρτογράφησης: (διεύθυνση γραμμής block) MOD (Αριθμός γραμμών / blocks στην cache) Στο παράδειγμά μας: (διεύθυνση block address) MOD (8) cache 111 110 101 100 011 010 001 000 8 cache γραμμές (11101) MOD (1000) = 101 32 γραμμές (blocks) δεδομένων 0000 1 cslab@ntua 2007-2008 0010 1 0100 1 0110 1 1000 1 Μνήμη 1010 1 1100 1 1110 1

Παράδειγμα Υλοποίησης Tag field Διεύθυνση (θέση των bit) 31 15 14 5 4..2 1 0 Index field 2K γραμμές / blocks, κάθε block = 8 words, κάθε word = 4 bytes byte offset Hit/Miss 16 11 3 2 index 16 b i t s v data Επιλογή λέξης tag block offset 8 Χ 4 bytes = 32 bytes = 256 bits tag data 2047 2K γραμμές... 16 32 32... Mux 32 cslab@ntua 2007-2008 32 32 1 0

Συνολοσυνειρμική Κρυφή Μνήμη (1) 511 Συνολοσυνειρμική μνήμη τεσσάρων δρόμων.

Συνολοσυνειρμική Κρυφή Μνήμη (2) Η εικονική διεύθυνση έχει την ίδια μορφή με τη κρυφή μνήμη άμεσης χαρτογράφησης. Όμως έχουμε τη Η συνολοσυσχετιστική μνήμη 4 δρόμων αποθηκεύει 4 γραμμές της ίδιας ομάδας, άρα έχουμε 4 εναλλακτικές ετικέτες για κάθε γραμμή. Επομένως το σύνολο των τετράδων κάθε ομάδας είναι ίσο με 2^9 = 2^11 / 2^2. Αντίστοιχα τα tag bits αυξάνονται κατά δύο (δηλ. 18 = 16 + 2) για να επιλέγουμε μια γραμμή από τη τετράδα. Tag Line mod (#lines/#sets) Εικονική Διεύθυνση TAG 18 bits LINE 9 bits WORD BYTE 3 bits 2 bits

Συνολοσυνειρμική Κρυφή Μνήμη (3) Στη περίπτωση της πλήρως συνειρμικής μνήμης έχουμε στην ουσία μια συνολοσυνειρμική μνήμη με 2^27 ομάδες-γραμμές των 32 bytes η κάθε μια (2^32 = 2^27 X 2^5). Άρα #lines = #sets και η προσπέλαση γίνεται με Tag Line mod (#lines/#sets) Επομένως 1 αν #sets = 1: αμεση χαρτογράφηση αν #sets = #lines: πλήρως συνειρμική αν 1 < #sets < #lines: συνολοσυνειρμική Εικονική Διεύθυνση TAG LINE 27 bits WORD BYTE 3 bits 2 bits

Συνολοσυνειρμική Κρυφή Μνήμη (4) 1-way set associative (direct mapped) block Tag Data 0 2-way set associative 1 Set 2 Χωρητικότητα cache : 8 words Tag Data Tag Data 0 3 1 4 2 5 3 6 7 4-way set associative Set Tag Data Tag Data Tag Data Tag Data 0 1 8-way set associative (fully associative) Tag Data Tag Data cslab@ntua 2007-2008 Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data

Συνολοσυνειρμική Κρυφή Μνήμη (5) Διεύθυνση Tag Field 31 3 0 16 15 1 4 13 12 9 1 8 In d ex V Tag D a ta V Tag D a ta Word/byte 6 5 4.. 0 Index Field 3 2 V T ag D ata V T ag D ata 511 510 509 2 1 0 18 512 sets 2048 block frames 4 to 1 multiplexer Hlt/Miss cslab@ntua 2007-2008 data 4x32

Παράδειγμα οργάνωσης και διευθυνσιοδότησης κρυφής μνήμης Έστω κρυφή μνήμη με 128 γραμμές (block frames) Κάθε γραμμή (block frame) περιέχει 4 λέξεις (16 bytes) 16-bit διευθύνσεις μνήμης στην cache (64Kbytes κύρια μνήμη ή 4096 γραμμές) Δείξτε την οργάνωση της κρυφής μνήμης και τα πεδία της εικονικής διεύθυνσης: Fully Associative cache. Direct mapped cache. 2-way set-associative cache. cslab@ntua 2007-2008

Fully Associative Valid bit V V Oι 128 tags ελέγχονται παράλληλα από το hardware κατά την τοποθέτηση ενός data block στην cache V Διεύθυνση του Block =12bits Tag = 12bits cslab@ntua 2007-2008 Block Offset = 4bits

Direct Mapped Valid bit V V V Μόνο ένα tag ελέγχεται παράλληλα από το hardware κατά την τοποθέτηση ενός data block στην cache V Διεύθυνση του Block =12bits Tag = 5bits Index = 7bits cslab@ntua 2007-2008 Block Offset = 4bits Κύρια Μνήμη

2-Way Set-Associative Cache Δύο tags σε ένα set ελέγχονται παράλληλα από το hardware κατά την τοποθέτηση ενός data block στην cache Διεύθυνση του Block =12bits Tag = 6bits Index = 6bits cslab@ntua 2007-2008 2 3 Block Offset = 4bits Κύρια Μνήμη

Αλγόριθμος Ανάγνωσης 1. Η CPU παράγει μια εικονική διεύθυνση για Read. 2. Το υλικό διαβάζει τις κατάλληλες Γραμμές της κρυφής μνήμης ανάλογα με τον τύπο οργάνωσης. 3. Συγκρίνει τα bits Ετικέτας της εικονικής διεύθυνσης με τα bits Valid/Ετικέτας της Γραμμής (ή Γραμμών). Αν δεν υπάρχει συμφωνία τότε έχουμε Αποτυχία Ανάγνωσης (Read Miss). 4. Επιτυχία Ανάγνωσης (Read Hit). Με βάση το πεδίο Λέξη (Word) και Byte προσκομίζονται τα αντίστοιχα bytes από τα Δεδομένα (Data) από τη κατάλληλη Γραμμή, γίνεται η ανάγνωση. Τέλος. 5. Αποτυχία Ανάγνωσης (Read Miss). Η αντίστοιχη γραμμή προσκομίζεται από ανώτερο επίπεδο Κρυφής Μνήμης ή τελικά από τη Κύρια Μνήμη. 5.1. Αν η αποτυχία οφειλόταν στο Valid bit τότε έχουμε νέα Εγγραφή, αλλιώς 5.2. έχουμε Σύγκρουση που απαιτεί Αντικατάσταση. Τελικά γίνεται η ανάγνωση. Τέλος.

Αλγόριθμος Εγγραφής 1. Η CPU παράγει μια εικονική διεύθυνση για Write (ή προκύπτει εγγραφή λόγω του αλγορίθμου ανάγνωσης). 2. Το υλικό διαβάζει τις κατάλληλες Γραμμές της κρυφής μνήμης ανάλογα με τον τύπο οργάνωσης. 3. Συγκρίνει τα bits Ετικέτας της εικονικής διεύθυνσης με τα bits Valid/Ετικέτας της Γραμμής (ή Γραμμών). Αν δεν υπάρχει συμφωνία τότε έχουμε Αποτυχία Κρυφής Μνήμης (Write Miss). 4. Επιτυχία Εγγραφής (Write Hit). Με βάση το πεδίο Λέξη (Word) και Byte προσκομίζονται τα αντίστοιχα bytes από τα Δεδομένα (Data) στη κατάλληλη Γραμμή, γίνεται η Ενημέρωση. Τέλος. 5. Αποτυχία Εγγραφής (Write Miss). 5.1. Αν η αποτυχία οφειλόταν στο Valid bit τότε έχουμε νέα Εγγραφή, αλλιώς 5.2. έχουμε Σύγκρουση που απαιτεί Αντικατάσταση. Τελικά γίνεται η εγγραφή (Δες Write Miss παρακάτω). Τέλος.

Αντικατάσταση Άμεσης Χαρτογράφησης Direct (Άμεσος): μια μόνη επιλογή. Συνειρμική και Συνολοσυνειρμική Least Recently Used (LRU) Λιγότερο Πρόσφατη Χρήση FIFO (First In First Out) Σειρά Εισόδου Random (Τυχαίος) Ενημέρωση, Εγγραφή Write Allocate + Write Back Στο write miss το block μεταφέρεται στη cache και ενημερώνεται. Η κύρια μνήμη ενημερώνεται μόνο στην αντικατάσταση. Write No-Allocate + Write Through Στο write miss το block ενημερώνεται στη κύρια μνήμη. Η κύρια μνήμη ενημερώνεται σε κάθε εγγραφή στη cache.

Λειτουργία (1) Σύστημα με διαδρομή δεδομένων 16 bit (1 λέξη = 2 bytes), Διευθύνσεις των 16 bit, άρα 2^16 bytes ή 2^15 λέξεις. H γραμμή της κρυφής μνήμης κρατά 16 λέξεις (32 bytes). Η μνήμη ομαδοποιείται σε 2^16/2^5 = 2^15/2^4 = 2^11 blocks (lines). H κρυφή μνήμη είναι τύπου Άμεσης Χαρτογράφησης και έχει συνολικά 8 γραμμές (2^3). Σε κάθε γραμμή αντιστοιχούν 2^11/2^3 = 2^8 blocks. Άρα η διευθυνσιοδότηση έχει τη μορφή Tag Line mod 8 Tag Line Word Byte 8 3 4 1 Εικονική Διεύθυνση

Λειτουργία (2) word/byte Line 0xXX00-0xXX1F 0xXX20-0xXX3F 0xXX40-0xXX5F...... 0xXXE0-0xXXFF Κρυφή Μνήμη, αρχική κατάσταση 0x00 000 0000 0-0x00 000 1111 1 0x01 000 0000 0-0x01 000 1111 1 0x02 000 0000 0-0x02 000 1111 1 0x03 000 0000 0-0x03 000 1111 1... 0xFC 000 0000 0-0xFC 000 1111 1 0xFD 000 0000 0-0xFD 000 1111 1 0xFE 000 0000 0-0xFE 000 1111 1 0xFF 000 0000 0-0xFF 000 1111 1 0x00 001 0000 0-0x00 001 1111 1 0x01 001 0000 0-0x01 001 1111 1 0x02 001 0000 0-0x02 001 1111 1 0x03 001 0000 0-0x03 001 1111 1... 0xFC 001 0000 0-0xFC 001 1111 1 0xFD 001 0000 0-0xFD 001 1111 1 0xFE 001 0000 0-0xFE 001 1111 1 0xFF 001 0000 0-0xFF 001 1111 1

Λειτουργία (3) Tag Line 00001010 011 Y 0x0Α Word 1001 Byte 0 (0x0A60-0x0A7F) READ 0x0A72. Read Miss (Valid bit). Νέα Εγγραφή. Ανάγνωση.

Λειτουργία (4) Tag Line 00001100 101 Word 0100 Y 0x0Α (0x0A60-0x0A7F) Y 0x0C (0x0CA0-0x0CBF) Byte 0 READ 0x0CA8. Read Miss (Valid bit). Νέα Εγγραφή. Ανάγνωση.

Λειτουργία (5) Tag Line 00000001 000 Word 1111 Y 0x01 (0x0100-0x011F) Y 0x0Α (0x0A60-0x0A7F) Y 0x0C (0x0CA0-0x0CBF) Byte 0 READ 0x011E. Read Miss (Valid bit). Νέα Εγγραφή. Ανάγνωση.

Λειτουργία (6) Αποτυχία Tag Line 00100100 011 Word 0010 Y 0x01 (0x0100-0x011F) Y 0x0Α (0x0A60-0x0A7F) Y 0x0C Byte 0 Αντικατάσταση αν έχει (0x0CA0-0x0CBF) αλλάξει και προσκόμιση των νέων δεδομένων. READ 0x2464. Read Miss (Tag). Αντικατάσταση >>.

Λειτουργία (7) Overwrite Tag Line 00100100 011 Word 0010 Y 0x01 (0x0100-0x011F) Y 0x24 (0x2460-0x247F) Y 0x0C (0x0CA0-0x0CBF) Byte 0 READ 0x2464. Read Miss (Tag). >> Αντικατάσταση. Ανάγνωση.

Λειτουργία (8) Tag Line 00000001 000 Word 0111 Y 0x01 (0x0100-0x011F) Y 0x24 (0x2460-0x247F) Y 0x0C (0x0CA0-0x0CBF) Byte 1 READ 0x010F. Read Ηit. Ανάγνωση.

Λειτουργία (8) Tag Line 00001100 101 Word 1000 0x01 (0x0100-0x011F) Y 0x0Α (0x0A60-0x0A7F) Y 0x0C (0x0CA0-0x0CBF) Byte 0 WRITE 0x0CB0. Write Hit. Εγγραφή.

Απόδοση Κρυφής Μνήμης (1) Επιτυχία (hit) : το block βρίσκεται σε θέση του εξεταζόμενου επιπέδου κρυφής μνήμης hit rate : hits προς συνολικές προσπελάσεις μνήμης (ποσοστό) hit time/cycles : χρόνος/κύκλοι προσπέλασης των δεδομένων Αποτυχία (miss) : το block δεν υπάρχει στο εξεταζόμενο επίπεδο μνήμης miss rate : 1 (hit rate) miss penalty : χρόνος/κύκλοι μεταφοράς των δεδομένων ενός block στο συγκεκριμένο επίπεδο μνήμης + χρόνος/κύκλοι απόκτησης των δεδομένων από την CPU χρόνος/κύλοι προσπέλασης (access time/cycles) : χρόνος/κύκλοι απόκτησης της 1ης λέξης από τη μνήμη μέσος χρόνος/κύκλοι προσπέλασης (average access time/cycles) : hit time/cycle + miss rate X miss penalty cslab@ntua 2007-2008

Απόδοση Κρυφής Μνήμης (2) Για CPU με ένα μόνο επίπεδο (L1) cache και καθόλου πρόσθετη καθυστέρηση όταν έχουμε cache hit: Χρόνος CPU = χρόνος 1 κύκλου ρολογιού Χ { κύκλοι ρολογιού ανά εντολή κατά τη λειτουργία της CPU και για cache hit + κύκλοι ρολογιού λόγω καθυστέρησης από προσπέλαση της μνήμης λόγω cache miss (Mem stalls) } Mem stalls = αναγνώσεις x miss rate αναγνώσεων x miss penalty αναγνώσεων + εγγραφές x miss rate εγγραφών x miss penalty εγγραφών Αν τα miss penalties των αναγνώσεων και των εγγραφών είναι ίδια: Mem stalls = προσπελάσεις μνήμης x miss rate x miss penalty cslab@ntua 2007-2008

Παράδειγμα Έστω μία CPU λειτουργεί cache L1 και έχει CPIexecution = 1.1 cycles Εντολές: 50% arith/logic, 30% load/store, 20% control Έστω cache miss rate = 1.5% και miss penalty = 50 cycles. CPI = CPIexecution + Mem stalls/εντολή Mem Stalls/εντολή = Mem accesses /εντολή x Miss rate x Miss penalty Mem accesses /εντολή = 1 + 0.3 = 1.3 cycles Instruction fetch Load/store Mem Stalls /εντολή = 1.3 x 0.015 x 50 = 0.975 cycles CPI = 1.1 + 0.975 = 2.075 cycles Η ιδανική CPU χωρίς misses είναι 2.075/1.1 = 1.88 φορές γρηγορότερη Ποιοί είναι οι χρόνοι με ρολόι 200 MHz (5 ns/cycle) ; cslab@ntua 2007-2008

Αρχιτεκτονική Υπολογιστών Μικροαρχιτεκτονική Μικροαρχιτεκτονική τριών διαύλων (Mic-2) Παραλληλισμός Επιπέδου Εντολής (ILP) Διοχέτευση (Mic-3 και Mic-4) Πρόβλεψη Διακλάδωσης και Υπερβαθμωτή εκτέλεση Kρυφή Μνήμη Σύνοψη

Μικροαρχιτεκτονική Core i7 Sandy Bridge (1)

Μικροαρχιτεκτονική Core i7 Sandy Bridge (1) Απλοποιημένη μορφή των σταδίων της διοχέτευσης.

Μικροαρχιτεκτονική Core i7 Sandy Bridge (3) Η μονάδα Ανάθεσης/Μετονομασίας στέλνει Μικροεντολές σε 6 μονάδες Υπερβαθμωτής Εκτέλεσης. ALU 1 και floating-point multiply unit ALU 2 και floating-point add/subtract unit ALU 3 και floating-point compare unit Εντολές Αποθήκευσης (Store) Εντολές Φόρτωσης (Load) 1 Εντολές Φόρτωσης (Load) 2