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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3. Γλώσσα μηχανής IJVM 4. Σχεδιαστικές επιλογές 5. Κρυφή μνήμη

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

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

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)

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

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

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

Ασκήσεις Caches

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

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

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

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

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

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

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

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

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

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

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

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

Ενότητα 2: Η κρυφή µνήµη και η λειτουργία της

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

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

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

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

Ασκήσεις Caches

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

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

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

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

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

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

Εικονική Μνήμη (virtual memory)

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

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

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

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

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

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

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

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

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

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

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

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

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

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

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

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

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

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) Διοχέτευση Ι (Mic-3 και Mic-4) Kρυφή Μνήμη Διοχέτευση ΙΙ και Υπερβαθμωτή εκτέλεση Μικροαρχιτεκτονική Pentium 4 και Υλοποίηση JVM

Μικροαρχιτεκτονική Mic-1 Δύο βασικά τμήματα: Διαδρομή Δεδομένων (Datapath) = λογική αφαίρεση της CPU όπως τη 'βλέπει' η ISA. Έλεγχος (Control) = η υλοποίηση της διερμηνείας της ISA απο το επίπεδο της μικροαχιτεκτονικής.

Mic-1 Διαδρομή Δεδομένων Οι εσωτερικοί δίαυλοι και οι μονάδες επεξεργασίας και αποθήκευσης δεδομένων του επεξεργαστή Mic-1. Υλοποιεί την Αρχιτεκτονική Συνόλου Εντολών (ISA) Integer Java Virtual Machine (IJVM), υποσύνολο της JVM. Αρχιτεκτονική 32-bit word αλλά byte addressable.

Mic-1: Λειτουργία Μνήμης Δύο θύρες μνήμης: * Μια R/W 32-bit (word addressable) για δεδομένα, MDR<->mem(MAR) bytes 0, 4, 8,... Σήματα ελέγχου READ, WRITE * Μια Ro 8-bit (byte addressable) για εντολές, low-bytembr<-mem(pc) bytes 0, 1, 2... Σήμα ελέγχου FETCH. Ειδικός έλεγχος MBR (δυο βέλη): * απρόσημος (index/offset): 0x000low-byteMBR * προσημασμένος (sign extention): 0x000low-byteΜΒR ή 0x111low-byteMBR

Μικροεντολές Mic-1 Η μορφή μικροεντολής του Mic-1. Addr : Διεύθυνση πιθανής επόμενης μικροεντολής. JAM: Προσδιορίζει πώς επιλέγεται η επόμενη μικροεντολή. ALU : Πράξεις ALU και Ολισθητή. C : Επιλογή καταχωρητών που θα διαβάσει δεδομένα από το δίαυλο C. Mem : Λειτουργίες Μνήμης Β : Επιλογή καταχωρητή που θα γράψει δεδομένα στο δίαυλο Β.

Χρονισμός Mic-1 Διάγραμμα ενός πλήρους κύκλου ρολογιού.

Μικρο-εκτέλεση 1. Φόρτωση MIR από μικροrom(mpc). Δw. 2. Σήματα προς διαδρομή δεδομένων, λειτουργίες διαύλων Α, Β. Δx. 3. Λειτουργίες ALU, Ολισθητή και Μνήμης. Δy. 4. Λειτουργίες διαύλου C, φόρτωση Ν/Ζ, φόρτωση καταχωρητών και MDR, MBR από Μνήμη. Δz. 5. Προετοιμασία νέου MPC.

Μάκρο-εκτέλεση 1. MBR = mem(pc); PC = PC + 1 2. Αποκωδικοποίηση (MBR). 3. Ανάκληση τελεστέων 4. Εκτέλεση εντολής 5. Αποθήκευση αποτελέσματος 6. Πίσω στο βήμα 1 Κάθε ένα από τα παραπάνω βήματα εκτελείται μέσω μιας σειράς μικρο-εκτελέσων. Κάθε εντολή IJVM μπορεί να απαιτεί ένα ή περισσότερους κύκλους μηχανής (clock cylcles)

Το Σύνολο Εντολών της IJVM

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

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

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

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

Μικροπρόγραμμα Mic-1 (5) Συνολικά περίπου 125 μικροεντολές. Στατιστικά απόδοσης CPI; Με δεδομένο το προφιλ εντολών ανά πρόγραμμα ποιό είναι το μέσο κόστος εκτέλεσης σε κύκλους μηχανής για πρόγραμμα 100 εντολών;

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

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

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

Επικάλυψη Ανάκλησης Εντολής (1) Αρχικό μικροπρόγραμμα για την εκτέλεση της POP.

Επικάλυψη Ανάκλησης Εντολής (2) Βελτιωμένο μικροπρόγραμμα για την εκτέλεση της POP. Η ανάκληση εντολής γίνεται μόλις ο PC δεν είναι απαραίτητος για την εκτέλεση της εντολής (και αν 'χωρά' μέσα σε κάποιο κύκλο ρολογιού). Στο τέλος μένει μόνο το goto (MBR).

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

Instruction Fetch Unit (IFU) Βελτιωμένη Υπομονάδα Ανάκλησης Εντολής (Instruction Fetch Unit, IFU) του Mic-1.

IFU (1) Μηχανή πεπερασμένων καταστάσεων για την υλοποίηση της IFU.

IFU (2) Παρούσα Κατάσταση 0 1 2 3 4 5 6 Συμβάντα Word Word Word MBR1 MBR1 MBR1 MBR1 MBR1 MBR1 MBR2 MBR2 MBR2 MBR2 MBR2 Νέες Καταστάσεις 4 5 6 0 1 2 3 4 5 0 1 2 3 4 Μηχανή πεπερασμένων καταστάσεων για την υλοποίηση της IFU. Μια εναλλακτική παρουσίαση.

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

Αρχιτεκτονική Τριών Διαύλων (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 Α,Β Η μορφή μικροεντολής του Mic-2. Addr : Διεύθυνση πιθανής επόμενης μικροεντολής. JAM: Επιλογή επόμενης μικροεντολή. ALU : Πράξεις ALU και Ολισθητή. C : Επιλογή καταχωρητών που θα διαβάσει δεδομένα από το δίαυλο C. Mem : Λειτουργίες Μνήμης Β, Α : Επιλογή καταχωρητή που θα γράψει δεδομένα στους διαύλους Β, Α.

Ασκήσεις 1. Μέτρηση κύκλων ρολογιού. Συγκρίνετε τα δύο σύνολα μικροπρογραμμάτων, Mic-1 και Μic-2. Ποιές εντολές βελτιώνονται; Πόσοι είναι οι συνολικοί κύκλοι που εξοικονομουνται; 2. Σε ένα απλό πρόγραμμα JAS/JVM (για παράδειγμα ένα πρόγραμμα με δύο μόνο εντολές BIPUSH, ISTORE) κάντε ανάλυση σε μικροεντολές με βάση τα μικροπρογράμματα Μic-1 και Μic-2. Πόση βελτίωση παρατηρείτε, σε απόλυτους αριθμούς και ποσοστιαία; 3. Με βάση τη μελέτη για τη ποσοστιαία συμμετοχή των εντολών επιπέδου ISA που συζητήσαμε στην εισαγωγή, υπολογίστε τη μέση ποσοστιαία βελτίωση της απόδοσης ενός υπολογιστή που διατηρεί το ίδιο επίπεδο ISA (δηλ τη IJVM) αλλά αλλάζει το επίπεδο μικροαρχιτεκτονικής του, από Mic-1 σε Mic-2. 4. Με βάση το σχέδιο μικροεντολών Mic-2 γράψτε ενδεικτικά σε δυαδική μορφή ορισμένες ακολουθίες μικροεντολών, για παράδειγμα της ILOAD και ISTORE. 5. Ανασχεδιάστε την μικροαρχιτεκτονική Mic-1 ώστε να εκτελεί τις μικροεντολές Mic-2. Απαιτούνται αλλαγές στο χρονισμό του συστήματος;

Αρχιτεκτονική Υπολογιστών Μικροαρχιτεκτονική Προκαταβολική ανάκληση εντολών (Mic-2) Διοχέτευση Ι (Mic-3 και Mic-4) Kρυφή Μνήμη Διοχέτευση ΙΙ και Υπερβαθμωτή εκτέλεση Μικροαρχιτεκτονική Pentium 4 και Υλοποίηση JVM

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

Διοχέτευση (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 Μονάδε ς Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education

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

Διοχέτευση (3)... Διοχέτευση με βαθμίδες άνισης διάρκειας. IFU, ALU, Mem = 2ns. Reg/Bus = 1ns. Χρόνος βαθμίδων = μέγιστος χρόνος βαθμίδας. Σημειώστε τη διαφορετική οπτική: μια εντολή, όχι μια βαθμίδα ανά γραμμή. Συγκρίνετε με προηγούμενο σχήμα. 38 cslab@ntua (2007-2008)

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

Διοχέτευση (6) Απώλειες. Η Διοχέτευση παρουσιάζει απώλειες στην εκκίνηση μέχρι να 'γεμίσει' και στη λήξη μέχρι να αδειάσει (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 => Καταχωρητές (IF) Αποκωδικοποίηση+ Καταχωρητές => A, B (ID) A, B => ALU, Shift => C (EX) C = > Καταχωρητές (WB) Μνήμη <=> Καταχωρητές (MEM)

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

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

Υλοποίηση της SWAP (2) Το μικροπρόγραμμα Μic-3 της εντολής SWAP. Χρήση τεχνικών διοχέτευσης σε επίπεδο μικροπρογράμματος.

Υλοποίηση της SWAP (3) B=SP; C=B-1;MAR=C;rd MDR=Mem WB ID WB ID B=SP; C=B; MAR=C B=MDR;C=B;H=C;wr; Mem=MDR MEM MEM X WB ID bubble MEM WB ID MEM X B=TOS; C=B; MDR=C B=SP;C=B-1;MAR=C; wr;mem=mdr WB ID B=H; C=B; TOS=C; goto(mbr1) WB ID 1 2 3 4 5 6 7 8 ΜΕΜ Χ 9 Το μικροπρόγραμμα Μic-3 της εντολής SWAP. Εναλλακτική παρουσίαση της διοχέυτευσης. 50 cslab@ntua (2007-2008) MEM 10 11

Εκτέλεση δύο SWAP στο Mic-3 (2) Stall Βubble 1 2 3 4 RAW Hazard 5 6 7 Χρόνος 8 9 10 11 12 13 14 15 16 ID EX WB MEM IF Stall Instruction Pre-fetch goto(mbr1) Τρίτη εναλλακτική παρουσίαση της διοχέτευσης για το μικροπρόγραμμα της SWAP στο Mic-3.

Υλοποίηση της 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 goto(mbr1) Κύκλοι ρολογιού: 8X1/3=2.6 < 3

Εκτέλεση SWAP, ΙADD.. στο Mic-3 RAW Hazard Stall 1 2 3 4 5 6 7 8 9 Stall 10 11 12 Χρόνος 13 14 15 16 ID EX WB MEM IF Stall Instruction Pre-fetch goto(mbr1) Επαναλαμβανόμενο μοτίβο εντολών. Επαναλαμβανόμενος Κίνδυνος Δεδομένων RAW. Ειδικά σε περιπτώσεις επικοινωνίας με μνήμη προκαλείται οπωσδήποτε καθυστέρηση.

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

Υλοποίηση της ΙΙΝC στο Mic-3 MAR=LV+MBR1U;rd 1 2 3 4 5 6 7 8 A=LV; B=MBR1U C=A+B MAR=C; rd MDR=Mem H=MBR1 MDR=MDR+H;wr ;goto(mbr1) B=MBR1 C=B H=C A=MDR;B=H C= A+B MDR=C;wr 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=LV;B=MBR1U 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 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=LV;B=MBR1U 2 C=A+B 3 MAR=C 4 5 6 7 8 9 10 B=TOS C=B MDR=C; wr 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

Εκτέλεση σειράς εντολών στο Mic-3 ILOAD ΙF ILOAD IADD ISTORE Stall ID EX WB ME * To βήμα IF είναι στην ουσία ανεξάρτητο και δεν έχει κινδύνους διοχέτευσης. Μόνος περιορισμός το ρυθμός διεκπεραίωσης της κύριας διοχέτευσης. Δε λαμβάνεται υπ' όψη στους παρακάτω υπολογισμούς. * Το βήμα MEM είναι η αναφορά στη μνήμη. Στο Mic-3 το βήμα MEM επηρεάζει ιδιαίτερα επειδή σχεδόν κάθε εντολή έχει αναφορά στη μνήμη (λόγω stack). * Τα βήματα ID,EX, WB παρουσιάζουν κινδύνους διοχέτευσης (κυρίως RAW) και συνεχείς στάσεις λόγω επικοινωνίας με μνήμη (Μ-type).

Απόδοση Διοχέτευσης Επιτάχυνση 24Χ1/3 = 8 κύκλοι έναντι 14 κύκλων, speedup 1.75 (ιδεατό 3, για τις βαθμίδες ID, EX, WB, οι IF δεν επηρεάζει και η MEM συμμετέχει μέσω των αναφορών στη μνήμη). Σε μεγαλύτερο αριθμό εντολών η επιτάχυνση πρέπει να τείνει στο 2. Ωφελιμότητα 47 ενεργά στάδια / 4Χ24 σύνολο = 47/96~50%. Υποθέσεις Χρόνος σταδίου διοχέτευσης = 1/3 του κύκλου ρολογιού Mic-1/2. Χρόνος προσπέλασης μνήμης = χρόνος σταδίου διοχέτευσης.

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

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

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

Υποσύνολο Εντολών IJVM Mic-4 (1) Αριθμητικές Πράξεις IADD dst,src1,src2 dst=src1+src2 ISUB dst,src1,src2 dst=src1-src2 IINC dst, const dst=dst +/- const const: ακέραιος 1 byte Λογικές Πράξεις IAND dst,src1,src2 IOR dst,src1,src2 dst=src1andsrc2 dst=src1orsrc2 Τα ορίσματα dst, src, src1, src2 παίρνουν τιμές από R0 έως R7.

Υποσύνολο Εντολών IJVM Mic-4 (2) Μνήμη ILOAD dst, varnum dst=x (x τοπική μεταβλητή) ISTORE src, varnum x=src (x τοπική μεταβλητή) BIPUSH dst, byte dst=byte μετά από μετατροπή σε προσημασμένο 32 bit LDC_W dst, index dst= x (x σταθερά) index: σχετική διεύθυνση 2 bytes (από CPP) Βοηθητικές λειτουργίες NOP καμμία ενέργεια WIDE πρόθεμα για χρήση varnum 2 bytes αντί 1 byte

Υποσύνολο Εντολών IJVM Mic-4 (3) Έλεγχος Ροής GOTO offset PC = PC +/- offset IFEQ src, offset if (src == 0) then PC = PC +/- offset IFLT src, offset if (src < 0) then PC = PC +/- offset IF_ICMPEQ src1, src2, offset if (src1 == src2) then PC = PC +/- offset offset: σχετική διεύθυνση 2bytes (PC) Κλήση Μεθόδου INVOKEVIRUAL disp κλήση μεθόδου disp: σχετική έμμεση διεύθυνση 2bytes (CPP, PC) IRETURN επιστροφή από μέθοδο

Υλοποίηση εντολών στο Mic-4 (1) 1 2 3 A=src1;B=src2 C=A+B dst=c ID WB MEM X IADD Κύκλοι ρολογιού 3Χ1/3=1<3 1 A=src1;B=MBR1U 2 C=A+B 3 dst=c ID WB MEM X IINC Κύκλοι ρολογιού 3Χ1/3=1<3 1 A=MBR1U 2 C=A 3 dst=c ID WB MEM X BIPUSH Κύκλοι ρολογιού 3Χ1/3=1<2

Υλοποίηση εντολών στο Mic-4 (2) 1 2 3 4 5 6 7 A=LV;B=MBR1U C=A+B MAR=C;rd MDR=Mem ILOAD A=MDR C=A dst=c ID WB MEM RAW bubble ID WB MEM X Κύκλοι ρολογιού 7Χ1/3=2.3<3

Υλοποίηση εντολών στο Mic-4 (3) 1 2 3 4 5 A=LV;B=MBR1U C=A+B MAR=C A=src C=A MDR=C;wr Mem=MDR ISTORE Κύκλοι ρολογιού 5Χ1/3=1.6<3 ID WB MEM X ID WB MEM

Μερικές Πράξεις // i = 3; j = 4; n = i + j; // i = 3; j = 4; n = j i; BIPUSH R0, 3 ISTORE R0, i BIPUSH R0, 3 ISTORE R0, i BIPUSH R1, 4 ISTORE R1, j BIPUSH R1, 4 ISTORE R1, j IADD R2, R1, R0 ISTORE R2, n ISUB R2, R0, R1 ISTORE n

Απόφαση // if (i!= 3) k = 0; // if (i == 3) k = 0 else k = 1; ILOAD R0, i BIPUSH R1, 3 IF_ICMPEQ R0, R1, L1 BIPUSH R4, 0 ISTORE R4, k L1:... ILOAD R0, i BIPUSH R1, 3 IF_ICMPEQ R0, R1, L1 BIPUSH R4, 1 ISTORE R4, k GOTO L2 L1:BIPUSH R4, 0 ISTORE R4, k L2:..

Επανάληψη x = 0; while (x < n) {... x = x+1; } x = 0; L1: if ((x-n) < 0) goto L2 else goto L3 L2:... x = x+1; goto L1; L3:... // x = 1; BIPUSH R0, 0 ISTORE R0, x // if ((x-n) < 0) L1:ILOAD R1, x ILOAD R2, n ISUB R3, R2, R1 IFLT R3, L2 GOTO L3 L2:... // x = x+1; IINC R1,1 ISTORE R1,x GOTO L1 L3:...

Εκτέλεση σειράς εντολών στο Mic-4 ILOAD 1 2 3 ILOAD IADD ISTORE IINC IADD ISTORE... Stall Stall Stall 4 5 6 7 * Tα βήματα 1 έως 3 αντιστοιχούν σε ανάλυση των Fetch, Decode, Queue. Θεωρούμε οτι είναι ανεξάρτητα και δεν έχουν κινδύνους διοχέτευσης. Μόνος περιορισμός το μέγεθος ουράς μικροεντολών. * Τα βήματα 4 έως 7 αντιστοιχούν στα Operands, Exec, Write Back, Memory. Η εντολή ILOAD παρουσιάζει κινδύνους διοχέτευσης (RAW) λόγω επικοινωνίας με μνήμη. Η ISTORE απαιτεί διπλή διοχέτευση. Η κάτω διοχέτευση παρουσιάζει bubbles στην ILOAD. Η προσπέλαση στη μνήμη (7) πρέπει να είναι αραιή..

Απόδοση Διοχέτευσης Επιτάχυνση 16Χ1/3 = 6.3 κύκλοι έναντι 14 κύκλων, speedup 2.2 (ιδεατό 3, λαμβάνοντας υπ' όψη τις βαθμίδες 4, 5 και 6 και τις αναστολές λόγω 7). Σε μεγαλύτερο αριθμό εντολών καταχωρητών η επιτάχυνση πρέπει να τείνει στο 2.7 (με ~20% εντολές ILOAD ανά πρόγραμμα, με τη ILOAD να έχει ωφελιμότητα 2/5 περίπου). Ωφελιμότητα 27 ενεργά στάδια / 4Χ17 σύνολο = 33/68~50%, πολύ καλύτερα αν είχαμε εντολές καταχωρητών (πρέπει να προσεγγίζει το 70% για τα στάδια 4 έως 6, με ~ 20% εντολές ILOAD). Βελτιώσεις * Η χρήση καταχωρητών μειώνει τις αναφορές στη μνήμη αλλά μπορεί να δημιουργήσει κινδύνους δεδομένων. Αυτοί επιλύονται συχνά με Προώθηση (Forwarding) ή/και Μετονομασία (Renaming). * Δυνατότητα μετακίνησης δεδομένων απ ευθείας μεταξύ καταχωρητών (π.χ. ΙLOAD, ISTORE) χωρίς χρήση διαύλων A, B, C. * Μια διαφορετική λύση: ο stack υλοποιείται σε καταχωρητές χωρίς να μεταβληθούν οι εντολές σε επίπεδο ISA (υλοποίηση JVM)

Εκτέλεση εκτός σειράς στο Mic-4 LD OP STST*LD*LD OP OP OP LD*OP ST ST*OP OP OP... 1 Stall 2 Stall 3 Stall D 4 5 6 7 A A' AD D' A'D' LD= ILOAD, ST=ISTORE, OP=Register Operations Η σειρά εντολών αντιστοιχεί στην βαθμίδα 4. Μπορεί να υλοποιηθεί η παραπάνω εκτέλεση εκτός σειράς; Ορισμένα ζητήματα: 1. Χρήση δεδομένων μνήμης σε επόμενα βήματα. 2. Τιμές MAR (A)και MDR (D) στο κατάλληλο χρονικό βήμα 3. Χρήση καταχωρητών γενικής χρήσης από διαδοχικές εντολές (Data Hazards)

Ασκήσεις (1) 1. Μέτρηση κύκλων ρολογιού (CPI). Αναπτύξτε το μικροπρόγραμμα Mic-3/4 μόνο για τις απλές εντολές (όχι WIDE, διακλάδωση, κλήση/επιστροφή μεθόδου). Συγκρίνετε τα δύο σύνολα μικροπρογραμμάτων, Mic-2 και Μic-3/4. Ποιές εντολές βελτιώνονται; Πόσοι είναι οι συνολικοί κύκλοι που εξοικονομουνται; 2. Συγκρίνετε τα αποσπάσματα προγραμμάτων που παρουσιάζονται (Mόνο Πράξεις, όχι Απόφαση και Επανάληψη) σε κύκλους μηχανής Mic-2 και Mic-3/4. 3. Σε ένα απλό πρόγραμμα JAS/JVM (για παράδειγμα ένα πρόγραμμα με επτά εντολές, 2 BIPUSH, 2 ILOAD, 1 ΙSUB, και 1 ISTORE) κάντε ανάλυση σε μικροεντολές με βάση τα μικροπρογράμματα Μic-2 και Μic-3/4. Πόση βελτίωση παρατηρείτε (CPI), σε απόλυτους αριθμούς και ποσοστιαία; 4. Με βάση τη μελέτη για τη ποσοστιαία συμμετοχή των εντολών επιπέδου ISA που συζητήσαμε στην εισαγωγή, υπολογίστε τη μέση ποσοστιαία βελτίωση της απόδοσης ενός υπολογιστή που διατηρεί το ίδιο επίπεδο ISA (δηλ τη IJVM) αλλά αλλάζει το επίπεδο μικροαρχιτεκτονικής του, από Mic-2 σε Mic-3 (χωρίς διακλαδώσεις και κλήσεις μεθόδων).

Ασκήσεις (2) 5. Έστω οτι οι εντολές πράξεων του Mic-4 επέτρεπαν μια προσπέλαση στη μνήμη, στo πεδίο src ή dst. Δηλαδή οι εντολές πράξεων επιτρέπουν μια προσπέλαση στη μνήμη (ανάγνωση ή εγγραφή). Υποθέτουμε οτι υπάρχει ειδικό κύκλωμα επικοινωνίας μνήμης και επεξεργαστών, χωρίς τη μεσολάβηση των διαύλων Α, Β, και C του επεξεργαστή. * Τι θα άλλαζε στις εντολές γλώσσας μηχανής; * Τι θα άλλαζε στη διοχέτευσή μας; Για να βοηθηθείτε μελετήστε τα διαγράμματα που παρουσιάζονται στο Δομικό Κίνδυνο. 6. Έστω οτι η βαθμίδα IF στο Mic-4 δεν είναι ανεξάρτητη, δηλαδή η ανάκληση εντολών δεν μπορεί να συμπέσει με ανάγνωση/εγγραφή δεδομένων στη μνήμη. Τι θα άλλαζε στη διοχέτευσή μας;

Αρχιτεκτονική Υπολογιστών Μικροαρχιτεκτονική Προκαταβολική ανάκληση εντολών (Mic-2) Διοχέτευση Ι (Mic-3 και Mic-4) Kρυφή Μνήμη Διοχέτευση ΙΙ και Υπερβαθμωτή εκτέλεση Μικροαρχιτεκτονική Pentium 4 και Υλοποίηση JVM

Ιεραρχία Μνήμης 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: ως Τ Εντολές καταχωρητών * * Εντολές μνήμης * Εντολές Ι/Ο Μια ιεραρχία μνήμης με πέντε (ή εννέα) φυσικά επίπεδα. Τα λογικά επίπεδα είναι τρία (σημειώνονται με *).

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

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

Παράδειγμα Ιεραρχίας Μνήμης ( με 2 επίπεδα cache ) Μεγαλύτερη Ταχύτητα Μεγαλύτερη Χωρητικότητα Processor Main Memory (DRAM) Virtual Memory, Secondary Storage (Disk) Control Registers Datapath On-Chip Level One Cache L1 Second Level Cache (SRAM) L2 Tertiary Storage (Tape) Ταχύτητα : 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 (ίση με τη φυσική).

Διεθυνσιοδότηση και Μεγέθη (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) δεδομένων 00001 cslab@ntua 2007-2008 00101 01001 01101 10001 Μνήμη 10101 11001 11101

Παράδειγμα Υλοποίησης 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 γραμμές... 18 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 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 (Τυχαίος) Στη συνολοσυνειρμική ο μηχανισμός εφαρμόζεται μόνο στο συγκεκριμένο υποσύνολο. Ο Τυχαίος είναι ο απλούστερος στην υλοποίηση και γι' αυτό χρησιμοποιείται πιο συχνά. O LRU είναι ο αποδοτικότερος αλλά πλέον σύνθετος. Ο FIFO είναι καλή προσέγγιση του LRU.

Μηχανισμός Ενημέρωσης (1) Write-through Κάθε ενημέρωση της κρυφής μνήμης 'περνά' άμεσα και στα ανώτερα επίπεδα μνήμης. Η κύρια μνήμη πάντα ενημερωμένη, δεν απαιτείται να 'σώσουμε' τη cache. Απλή διαχείριση της cache: το Valid bit αρκεί. Μεγάλη κυκλοφορία στο δίαυλο μνήμης αλλά συνέπεια (consistency) των διαφόρων επιπέδων μνήμης.

Μηχανισμός Ενημέρωσης (2) Write-back Τα ανωτερα επίπεδα ενημερώνονται μόνον αν υπάρξει Αντικατάσταση. Η κύρια μνήμη δεν είναι πάντα ενημερωμένη, απαιτείται να 'σώσουμε' τη cache. Πιο σύνθετη διαχείριση της cache: το Valid bit και Dirty bit αρκεί. Μικρή κυκλοφορία στο δίαυλο μνήμης.

Write Miss Write-allocate Ο μηχανισμός του αλγορίθμου εγγραφής. Συνήθως συνδυάζεται με Write-back. Write-no-allocate Η εγγραφή γίνεται κατ' ευθείαν στο ανώτερο επίπεδο (εκεί που υπάρχει Write Hit) και η κρυφή μνήμη δεν μεταβάλλεται. Συνήθως συνδυάζεται με Write-through.

Λειτουργία (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) αλλάξει και προσκόμιση των νέων δεδομένων. write-back 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 writeallocate 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

Ασκήσεις κρυφής μνήμης 1. Οργάνωση και Διευθυνσιοδότηση Σχεδιάστε και να δείξτε τη διευθυνσιοδότηση κρυφής μνήμης με διάφορες παραλλαγές τύπου, μεγέθους κρυφής και κύριας μνήμης, μεγέθους λέξης και γραμμής, αριθμού συνόλων κλπ. 2. Λειτουργία Εκτελέστε τις βασικές λειτουργίες προσπέλασης κρυφής μνήμης με διάφορα σενάρια: ανάγνωση (hit/miss), αντικατάσταση, εγγραφή (hit/miss), ενημέρωση (write miss). 3. Απόδοση Για τα παραδείγματα της πρώτης άσκησης και για διαφορετικά miss rates/penalties και άλλες παραμέτρους υπολογίστε την απόδοση σε CPI. Προσθέστε και L2 κρυφή μνήμη. cslab@ntua 2007-2008

Αρχιτεκτονική Υπολογιστών Μικροαρχιτεκτονική Προκαταβολική ανάκληση εντολών (Mic-2) Διοχέτευση Ι (Mic-3 και Mic-4) Kρυφή Μνήμη Διοχέτευση ΙΙ και Υπερβαθμωτή εκτέλεση Μικροαρχιτεκτονική Pentium 4 και Υλοποίηση JVM

Υλοποίηση της GOTO στο Mic-3 H=PC-1 1 2 3 4 5 6 7 8 PC=H+MBR2;fetch MBR=mem(PC);goto(MBR1) A=PC C=A-1 H=C; A=H, B=MBR2 C=A+B PC=C;fetch MBR=mem goto(mbr1) Κύκλοι ρολογιού: 8X1/3=2.6 < 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

Υλοποίηση της 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 Κύκλοι ρολογιού: 8X1/3=2.6 < 4

Υλοποίηση της 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

Κίνδυνος Ελέγχου στο 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 Οι διαγραμμένες εντολές πρέπει να 'αφαιρεθούν' από τη διοχέτευση ανάλογα με την τιμή της συνθήκης IF_CMPEQ και λόγω της εκτέλεσης GOTO.

Εκτέλεση GOTO στο Mic-3 GOTO BIPUSH ΙF ISTORE GOTO BIPUSH ISTORE Stall Stall ID EX WB ME Θέση πρώτης Έγκυρης Ανάκλησης stall Νέος PC διαθέσιμος Οι εντολές BIPUSH και ILOAD που βρίσκονται αμέσως μετά το GOTO πρέπει να αναιρεθούν. Στάση (stall) Διοχέτευσης λόγω της εκτέλεσης της GOTO. Εκτελούνται οι εντολές BIPUSH και ILOAD που βρίσκονται μετά το label L2.

Υποσύνολο Εντολών IJVM Mic-4 Έλεγχος Ροής GOTO offset PC = PC +/- offset IFEQ src, offset if (src == 0) then PC = PC +/- offset IFLT src, offset if (src < 0) then PC = PC +/- offset IF_ICMPEQ src1, src2, offset if (src1 == src2) then PC = PC +/- offset offset: σχετική διεύθυνση 2bytes (PC) Κλήση Μεθόδου INVOKEVIRUAL disp κλήση μεθόδου disp: σχετική έμμεση διεύθυνση 2bytes (CPP, PC) IRETURN επιστροφή από μέθοδο

Υλοποίηση GOTO στο Mic-4 1 2 3 4 5 6 7 8 A=PC C=A-1 H=C A=H, B=MBR2 C=A+B PC=C; fetch MBR=mem goto(mbr2) ID WB MEM X ID WB MEM goto Κύκλοι ρολογιού 8Χ1/3=2.6<4

Εντολές απόφασης στο Mic-4 1 2 3 A=src1 C=A (N) if (N) goto T; else goto F ID WB MEM X IFLT Κύκλοι ρολογιού 3Χ1/3=1<4 1 A=src1 2 C=A (Z) 3 if (z) goto T; else goto F ID WB MEM X IFEQ Κύκλοι ρολογιού 3Χ1/3=1<4 1 A=src1; B=src2 2 C=A-B 3 if (z) goto T; else goto F ID WB MEM X IF_CMPEQ Κύκλοι ρολογιού 3Χ1/3=1<6

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

Εντολές με GOTO στο Mic-4 WB ID GOTO MEM Χ WB ID MEM WB ID stall MEM WB ID 2 3 4 5 6 7 8 9 MEM X ID 1 BIPUSH 10 11 ISTORE WB MEM 12 13 Εκτέλεση της ακολουθίας GOTO L2,... L2: BIPUSH, ISTORE. Εναλλακτική παρουσίαση της διοχέτευσης. 131 cslab@ntua (2007-2008)

Τύποι Διακλάδωσης Χωρίς συνθήκη (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 Α Β C D1 D2 D3 D4 D5 E 2 3 4 5 6 7 8 9 10 Χρόνο ς Σειρά Εκτέλεσης? Ρυθμός Εκτέλεσης? Καθυστέρηση Μονάδων? Μονάδε ς Η Υπερβαθμωτή αρχιτεκτονική επιτρέπει την εκτέλεση πολλαπλών εντολών: Τα στάδια Α έως C 'αδειάζουν' γρήγορα. Η σειρά ολοκλήρωσης των εντολών μπορεί να είναι διαφορετική από τη σειρά εισαγωγής λόγω διαφορετικής καθυστέρησης μονάδων και χρήσης πολλαπλών καταχωρητών.

Εκτέλεση Εντός-Εκτός Σειράς Οι εντολές υποβάλονται (issue) με τη σειρά εμφάνισης στο πρόγραμμα. Οι εντολές αποχωρούν (retire) με τη σειρά εμφάνισης στο πρόγραμμα. Οι εντολές μπορεί να εκτελούνται εντός σειράς (in order) ή εκτός σειράς (out of order) Η απόδοση διοχέτευσης και υπερβαθμωτής εκτέλεσης μπορεί να μην είναι βέλτιστη λόγω εξαρτήσεων δεδομένων (data dependencies) ή κινδύνων δεδομένων (data hazards). Δεδομένα μεταγενέστερων εντολών δεν είναι έτοιμα προς χρήση έγκαιρα. Αληθής Εξάρτηση Δεδομένων Αντι-Εξάρτηση Δεδομένων Εξάρτηση Εξόδου Read After Write Write After Read Write After Write RAW WAR WAW

Κίνδυνος Δεδομένων (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-4 Switch + R0-R7 MUX Switch ΜUX MUX Έλεγχος Προώθησης Switch

Παράδειγμα Προώθησης Καταχωρητών Χωρίς προώθηση καταχωρητών Με προώθηση καταχωρητών

Υπερβαθμωτή Επεξεργασία στο Mic-4 + R0-R7 C1,C2.. A1,A2.. B1,B2.. ALU1, ALU2, MUL, DIV, SHIFT, FPU.. 5 Execution Order Control

Παράδειγμα Υπερβαθμωτής Επεξεργασίας Υποβολή έως δύο εντολών ανά κύκλο μηχανής: η υπερβαθμωτή μονάδα έχει διπλάσια διεκπεραιωτική ικανότητα από την υπόλοιπη διοχέτευση. Δύο διαφορετικές καθυστερήσεις (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.

Εικαζόμενη Εκτέλεση (a) Απόσπασμα προγράμματος. (b) Λογικό διάγραμμα.

Ασκήσεις 1. Υλοποιείστε πλήρως τις εντολές απόφασης στη διοχέτευση Mic-4 (μαζί με το GOTO που ακολουθεί). 2. Σχεδιάστε το χρονοδιάγραμμα της διοχέτευσης για την εκτέλεση του ενδεικτικού προγράμματος απόφασης που παρουσιάζεται παραπάνω. 3. Έστω οτι χρησιμοποιούμε τη λογική της υπερβαθμωτής εκτέλεσης στο Mic-4, με υποβολή δύο εντολών ανά κύκλο. Καταγράφουμε τη χρήση των καταχωρητών MAR, MDR, LV, και R0-R7. Προσπαθήστε να καταγράψετε μια λειτουργική χρήση καταχωρητών στην εκτέλεση των εντολών LOAD ADD STORE LOAD SUB SUB AND LOAD OR STORE ADD IINC.. στη λογική της διοχέτευσης LD OP STST*LD*LD OP OP OP LD*OP ST ST*OP OP OP... που είχε παρουσιαστεί παραπάνω. ΟΙ LD, SΤ κάνουν χρήση MAR, MDR και ενός από τους R0-R7 για εγγραφή ή ανάγνωση. Οι OP κάνουν χρήση τριών καταχωρητών R0-R7, έναν για εγγραφή και δύο για ανάγνωση.

Αρχιτεκτονική Υπολογιστών Μικροαρχιτεκτονική Προκαταβολική ανάκληση εντολών (Mic-2) Διοχέτευση Ι (Mic-3 και Mic-4) Kρυφή Μνήμη Διοχέτευση ΙΙ και Υπερβαθμωτή εκτέλεση Μικροαρχιτεκτονική Pentium 4 και Υλοποίηση JVM

Διάγραμμα Pentium 4 Επικοινωνία με Μνήμη Μονάδα Εκτέλεσης Δεδομένα Κρυφή Μνήμη L2 Ανάκληση Αποκωδ-ση Υπερβαθμωτή Εκτέλεση Ουρά Εντολών Μικροεντολές Υποβολή Αποχώρηση Πρόβλεψη Διακλάδωσης Κύρια Μονάδα Ελέγχου Έλεγχος Σειράς Εκτέλεσης

Εικόνα Intel Pentium 4

Δίαυλος NetBurst Pentium 4

Υλοποίηση JVM (1) o stack σε register file

Σύμπτυξη εντολών (1) Κίνηση στη στοίβα για την ακολουθία ILOAD, ILOAD, IADD, ISTORE (a) Χωρίς σύμπτυξη εντολών (b) Με σύμπτυξη χωρίς σύμπτυξη εντολών

(a) (b) Σύμπτυξη εντολών (2) (a) Ομάδες εντολών της JVM (b) Σύμπτυξη ομάδων εντολών της JVM