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

Σχετικά έγγραφα
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

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

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

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

2η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος , 5ο Εξάμηνο Σχολή ΗΜ&ΜΥ

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

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

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

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

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

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

Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών

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

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

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

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

Πανεπιστήµιο Θεσσαλίας

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ, 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;

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

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

AΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ (5 ο εξάμηνο) ΕΠΑΝΑΛΗΠΤΙΚΗ ΕΞΕΤΑΣΗ (ΦΘΙΝΟΠΩΡΟ 2007) ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ 30 ΛΕΠΤΑ

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

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

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

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

Ασκήσεις Caches

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

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

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

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

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

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

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

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

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

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

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

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

Ασκήσεις Caches

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

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

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

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

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

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

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 4 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

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

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

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

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

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

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

Σχεδίαση μονάδας ελέγχου επεξεργαστή

Άσκηση IF ID EX MEM WB α. 300ps 400ps 350ps 500ps 100ps β. 200ps 150ps 120ps 190ps 140ps

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

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

Θέματα Μεταγλωττιστών

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

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

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

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

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

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

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 9 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32. Αρχείο καταχωρητών και Χάρτης Μνήµης

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

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής. Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 3 ο ΜΕΔ απλού κύκλου

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

2 η Ενδιάμεση Εξέταση Λύσεις/Απαντήσεις

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

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

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Συστήματα σε Ολοκληρωμένα Κυκλώματα

Πανεπιστήµιο Θεσσαλίας

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

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

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

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

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

Δείγμα Τελικής Εξέτασης στο ΗΜΥ213. Διδάσκοντας: Γιώργος Ζάγγουλος

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

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 8 ο Μερική Επικάλυψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

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

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

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

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

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Pipelined Datapath, Hazards and Forwarding

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr ΠΡΟΗΓΜΕΝΑ ΘΕΜΑΤΑ ΟΡΓΑΝΩΣΗΣ ΥΠΟΛΟΓΙΣΤΩΝ Θέµατα και Λύσεις Εξετάσεων Ιουλίου 2005 8 Ιουλίου 2005 Επώνυµο: Όνοµα: Εξάµηνο: Θέµα 1 2 3 Βαθµός Μην ξεχάσετε να γράψετε το ονοµατεπώνυµο σας σε όλες τις κόλλες. Η εξέταση γίνεται µε ανοικτά βιβλία και σηµειώσεις, χωρίς χρήση Η/Υ ή PDAs. ιάρκεια εξέτασης 2 ½ ώρες. Το διαγώνισµα βαθµολογείται µε άριστα 10 µονάδες. Στον τελικό βαθµό προαγωγής του µαθήµατος προστίθεται 1 µονάδα (bonus) αν έχετε παραδώσει µία ικανοποιητική λύση στις δύο σειρές που µοιράσθηκαν στο µάθηµα (0,5 µονάδες για κάθε σειρά ασκήσεων). Θέµα 1 ο (30%): Οι κρυφές µνήµες χωρίς κλειδώµατα (lockup-free caches) και η πρώιµη ανάκληση δεδοµένων στο υλικό (hardware prefetching) σχεδιάστηκαν για να επιταχύνουν το ρυθµό εκτέλεσης των εντολών στον επεξεργαστή, επικαλύπτοντας το χειρισµό των αστοχιών κρυφής µνήµης (cache misses) µε την επεξεργασία άλλων εντολών ή άλλων αστοχιών κρυφής µνήµης. Στο πρόβληµα αυτό υποθέστε ότι η ιεραρχία µνήµης διαθέτει κρυφή µνήµη ενός επιπέδου, µε µέγεθος cache line 32 bytes και διάδροµο επικοινωνίας κύριας µνήµης µε την κρυφή µνήµη (memory bus) 8 bytes. Υποθέστε, επίσης, ότι ο χρόνος εύρεσης των ζητούµενων δεδοµένων στη µνήµη (miss latency) είναι t miss = 2 cycles, και ο χρόνος µεταφοράς δεδοµένων στη κρυφή µνήµη (transfer latency) είναι 1 cycle / 8 bytes, δηλαδή για την µεταφορά ολόκληρης της cache line: t transfer = 4 cycles. Τέλος, δίνεται ότι στο σύστηµα 1word = 4 bytes. Εξετάζουµε την εκτέλεση του εξής κώδικα: for (i = 0; i < 1000; i+=4) { a += A[i] + B[i]; Θεωρούµε ότι οι τιµές των µεταβλητών 4 i, a βρίσκονται στους καταχωρητές $s4, $t0 και οι διευθύνσεις των πινάκων A και B στους $s1 και $s2. Το περιεχόµενο του καταχωρητή $s4 είναι αρχικά 0. Ο αντίστοιχος κώδικας σε assembly είναι ο εξής: Loop: $t1, $s1, $s4 $t2, $s2, $s4 lw $t3, 0($t1)

Exit: lw $t4, 0($t2) $t0, $t0, $t3 $t0, $t0, $t4 i $s4, $s4, 16 $s4, $s5, Loop Στον πίνακα που ακολουθεί φαίνεται η ροή εκτέλεσης του παραπάνω βρόχου, υποθέτοντας ότι έχουµε µοντέλο υλοποίησης single cycle και ότι κανένα από τα στοιχεία των πινάκων A και B δεν βρίσκονται ήδη στην κρυφή µνήµη (συµβολίζουµε µε m = miss latency, t = transfer latency). Θεωρούµε ότι ο σχεδιασµός της κρυφή µνήµης επιτρέπει την προώθηση στον επεξεργαστή της ζητούµενης λέξης αµέσως µόλις αφιχθεί στην κρυφή µνήµη, χωρίς να χρειάζεται να ολοκληρωθεί η µεταφορά ολόκληρης της cache line. Επιπλέον, υποθέτουµε ότι µετά από µία αστοχία, όλες οι επόµενες εντολές πρέπει να περιµένουν έως η ζητούµενη λέξη φτάσει στον επεξεργαστή. Τα στοιχεία των πινάκων είναι ευθυγραµµισµένα στην κρυφή µνήµη, δηλαδή το στοιχείο Α[0] καταλαµβάνει την πρώτη θέση µέσα σε κάποια cache line, οµοίως και το στοιχείο Β[0]. Τέλος, ο µηχανισµός πρώιµης ανάκλησης δεδοµένων, καταγράφει τις ακολουθίες προσπελάσεων στη µνήµη (αστοχίες της κρυφής µνήµης). Αν παρατηρηθούν τρεις συνεχόµενες προσπελάσεις ίδιου βήµατος, τότε ενεργοποιείται η πρώιµη ανάκληση των επόµενων θέσεων µνήµης ίδιου βήµατος (π.χ. οι αστοχίες δεδοµένων που αναφέρονται στις θέσεις µνήµης a+0, a+32, a+64, ενεργοποιούν την πρώιµη ανάκληση των θέσεων µνήµης a+96, a+128, κλπ). Ο µηχανισµός πρώιµης ανάκλησης καλεί στην κρυφή µνήµη ένα δεδοµένο (a+96) στον κύκλο που ακολουθεί αµέσως µετά τον πρώτο κύκλο ανάγνωσης από τη µνήµη της τρίτης αστοχίας (a+64). Επιπλέον, προκειµένου να µην κατακλυστεί η κρυφή µνήµη µε δεδοµένα που δεν χρειάζονται στον επεξεργαστή, κάθε επόµενη πρώιµη ανάκληση (a+128) περιµένει έως ότου κληθεί προς επεξεργασία το δεδοµένο που έχει αποθηκευθεί στην κρυφή µνήµη από την προηγούµενη πρώιµη ανάκληση (a+96). Σηµειώστε ότι επιτρέπεται η επικάλυψη κύκλων ανάγνωσης από την µνήµη (κύκλων m), αλλά ο διάδροµο επικοινωνίας της κύριας µνήµης µε την κρυφή µνήµη (memory bus) µπορεί σε κάθε κύκλο να µεταφέρει δεδοµένα µίας συγκεκριµένης cache line. Συµπληρώστε το διάγραµµα χρονισµού του παραπάνω πίνακα για τους πρώτους 100 κύκλους εκτέλεσης. Πόσοι κύκλοι απαιτούνται για την εκτέλεση των 250 επαναλήψεων του for loop; Λύση 1 ου Θέµατος Εφόσον κανένα από τα στοιχεία των πινάκων A και B δεν βρίσκονται ήδη στην κρυφή µνήµη, κατά την πρώτη αναφορά σε ένα από τα στοιχεία µίας cache line θα πραγµατοποιείται cache miss και θα φορτώνεται µία ολόκληρη cache line στην cache. Όπως φαίνεται από το τµήµα του κώδικα που εξετάζουµε, γίνεται προσπέλαση σε στοιχεία µονοδιάστατων πινάκων αποθηκευµένα σειριακά στη µνήµη µε βήµα 4. Κάθε cache line περιέχει: µ έγεθος cache line 32bytes = = 8words µ έγεθος λέξης 4bytes / word 8 Άρα, κατά την εκτέλεση του κώδικα προσπελαύνονται = 2 στοιχεία από κάθε cache line, και 4 εποµένως πραγµατοποιείται 1 miss (κατά την πρώτη αναφορά σε µία cache line), και στη συνέχεια 1 hit. (Για δική µας διευκόλυνση µπορούµε να θεωρήσουµε ότι δεν πραγµατοποιείται σύγκρουση δεδοµένων στην cache µεταξύ στοιχείων διαφορετικών πινάκων.) Η ακολουθία αυτή 1miss-1hit, επαναλαµβάνεται 3 φορές, έως ότου ενεργοποιηθεί ο µηχανισµός πρώιµης ανάκλησης. 2

Κατά τη διάρκεια της 5 ης επανάληψης του βρόχου, όπου πραγµατοποιείται το 3 ο miss, ενεργοποιείται ο µηχανισµός πρώιµης ανάκλησης, αµέσως µετά τον πρώτο κύκλο ανάγνωσης (m) για κάθε έναν από τους δύο πίνακες. Παρατηρούµε ότι τα τρία διαδοχικά misses προκαλούνται από τις αναφορές στα στοιχεία Α[0], Α[8], Α[16]. ηλαδή έχουν σταθερό βήµα = 8 στοιχεία (32 bytes). Εποµένως και ο µηχανισµός πρώιµης ανάκλησης θα φέρνει στην cache τις cache lines που περιέχουν τα επόµενα στοιχεία βήµατος 8: Α[24], Α[32], κλπ. (Η διαδικασία της πρώιµης ανάκλησης λειτουργεί όπως ακριβώς και µία εντολή load µε τη διαφορά ότι καλείται από το hardware και προκειµένου να µην δηµιουργούνται καθυστερήσεις στην εκτέλεση του προγράµµατος έχει µειωµένη προτεραιότητα έναντι των αναγνώσεων από τη µνήµη που προκαλούνται από εντολές του προγράµµατος.) 1 cycles 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 array A m m t t t t array B m m t t t t A B A[0] B[0] A[4] B[4] i 2 3 cycles 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 array A m m t t t t array B m m t t t t A A[8] B[8] A[12] B B[12] i Α[8] Β[8] Α[12] i Β[12] 4 5 cycles 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 array A m m t t t t array B m m t t t t A m m t t t t B 3 ο miss A[16] A[24] 3 ο miss m m B[16] B[24] i i 6 7 cycles 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 array A array B A[24] A[32] B[32] B[24] A A[20] B[20] m m t t t t A[28] B t t t t m m t t t B[28] t i i cycles 8 9 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 array A array B A[40] B[32] B[40] A[32] A m m t t t t A[36] B[36] B m m t t t t i i i Όπως φαίνεται στον παραπάνω πίνακα, στην περίπτωση µίας επανάληψης του βρόχου όπου οι αναφορές στη µνήµη είναι misses, η διάρκεια εκτέλεσης είναι 14 κύκλοι. Στην περίπτωση που οι αναφορές στη µνήµη είναι hits, η διάρκεια εκτέλεσης είναι 8 κύκλοι. Από την 5 η επανάληψη και µετά, όλες οι αναφορές στη µνήµη είναι hits, αφού ο µηχανισµός πρώιµης ανάκλησης φέρνει έγκαιρα σε όλες τις περιπτώσεις τα δεδοµένα στην cache. Άρα, συνολικά, έχουµε 3 misses και (250 3) = 247 hits Συνολικά: 14 3+8 247 = 2018 κύκλοι εκτέλεσης Θέµα 2 ο (35%): Έστω ότι οι εντολές αναφοράς στη µνήµη (load, store) δεν επιτρέπεται να περιέχουν σταθερό όρισµα (offset). ηλαδή έχουν τη µορφή, π.χ: lw $s1, ($s2) Για τη λειτουργία: $s1 = Mem[$s2]; (i) (ii) Πώς επηρεάζει η συγκεκριµένη τροποποίηση του συνόλου εντολών (ISA) την υλοποίηση της αρχιτεκτονικής αγωγού; Θα µπορούσε να µειωθεί το βάθος της σωλήνωσης και πώς; Τι συνέπειες θα είχαν οι όποιες αλλαγές σε throughput και latency; Καταγράψτε τις περιπτώσεις όπου ενδέχεται να εµφανισθούν κίνδυνοι δεδοµένων καθώς και τις αντίστοιχες αναγκαίες συνθήκες προώθησης δεδοµένων (forwarding); Υπενθύµιση: εξαρτήσεις δεδοµένων µεταξύ εντολών αριθµητικών/λογικών µε αριθµητικές/λογικές καθώς και µεταξύ lw/sw και αριθµητικών/λογικών. Σε ότι αφορά τη δεύτερη περίπτωση εξαρτήσεων, υπάρχει κάποια βελτίωση σε σχέση µε την κλασσική σωλήνωση 5 σταδίων του MIPS; Λύση 2 ου Θέµατος (i) εδοµένου ότι οι εντολές αναφοράς στη µνήµη δεν χρειάζεται πλέον να πραγµατοποιήσουν υπολογισµό της διεύθυνσης ανάγνωσης / εγγραφής, το στάδιο EX της κλασσικής σωλήνωσης 5 σταδίων δεν χρησιµοποιείται για τις εντολές αυτές. Εξάλλου, ως γνωστόν, οι αριθµητικές-λογικές εντολές δεν χρησιµοποιούν το στάδιο MEM. Εποµένως, µπορούµε να ενοποιήσουµε τα δύο στάδια σε ένα, (έστω EM), µειώνοντας το βάθος της σωλήνωσης. Αν πρόκειται για αριθµητική-λογική εντολή θα χρησιµοποιείται η ALU, ενώ αν πρόκειται για εντολή αναφοράς στη µνήµη θα προσπελαύνεται η µνήµη. (Οι εντολές άλµατος µπορούν να ολοκληρωθούν στα τρία πρώτα στάδια IF-ID-EM, όπως στην κλασσική περίπτωση, χρησιµοποιώντας στο 3 ο στάδιο την ALU.) Με την ενοποίηση αυτή, µειώνεται το latency, αφού πλέον η πρώτη εντολή βγαίνει από τη σωλήνωση σε 4 κύκλους. 4

Το throughput στην ιδανική περίπτωση που δεν υπάρχουν καθυστερήσεις παραµένει σταθερό και ίσο µε 1 εντολή/κύκλο ρολογιού. Από την άλλη µεριά, αν χρειαζόµαστε εντολές τύπου lw $s1, α($s2), µε τη νέα σωλήνωση θα χρειαστούµε πλέον δύο εντολές: i $s2, $s2, α lw $s1, ($s2) ηλαδή, αυξάνεται ο αριθµός των εντολών του προγράµµατος, µειώνοντας την επίδοση. Ωστόσο, όπως θα δούµε στο ερώτηµα (ii), η πολυπλοκότητα της σωλήνωσης µειώνεται, µειώνοντας ταυτόχρονα και τους κινδύνους εξαρτήσεων δεδοµένων. (ii) Αναλυτικά, οι κίνδυνοι δεδοµένων που η επίλυσή τους απαιτεί προώθηση δεδοµένων είναι οι εξής: (Κατασκευάζουµε ένα απλουστευµένο διάγραµµα µόνο για τα στάδια ΕΜ-WB, ώστε να φανούν τα σηµεία προώθησης των δεδοµένων) ID/EM EM/WB MUX A Rs A L U Rd MUX B Rt MUX MUX C MUX D (Rs) Data Rt (lw) Memory Rt (sw) (α) Μεταξύ εντολών αριθµητικών/λογικών: π.χ. $s3, $s2, $s1 IF ID EM - WB $s5, $s3, $s4 IF ID EM - WB If EM/WB.RegWrite and ID/EM.ALUop and (EM/WB.RegRd 0) ((EM/WB.RegRd = ID/EM.RegRs) then forwarda=10 // µία a/l στο στάδιο EM/WB // µία a/l στο στάδιο ID/EM // η επόµενη εντολή a/l χρησιµοποιεί // τον RegRd της πρώτης ή π.χ. $s3, $s2, $s1 IF ID EM - WB $s5, $s4, $s3 IF ID EM - WB 5

If EM/WB.RegWrite and ID/EM.ALUop and (EM/WB.RegRd 0) (EM/WB.RegRd = ID/EM.RegRt)) then forwardb=10 // µία a/l στο στάδιο EM/WB // µία a/l στο στάδιο ID/EM // η επόµενη εντολή a/l χρησιµοποιεί // τον RegRd της πρώτης (β) Μεταξύ εντολών αριθµητικών/λογικών µε εντολές αναφοράς στη µνήµη: π.χ. $s3, $s2, $s1 IF ID EM - WB lw $s5, ($s3) IF ID EM - WB If EM/WB.RegWrite and // µία a/l στο στάδιο EM/WB (ID/EM.MemWrite or ID/EM.MemRead) and // µία sw/lw στο στάδιο ID/EM (EM/WB.RegRd 0) ((EM/WB.RegRd = ID/EM.RegRs) // η επόµενη εντολή lw/sw χρησιµοποιεί then forwardc=10 // τον RegRd της πρώτης για υπολογισµό διεύθυνσης και µόνο για εντολές αποθήκευσης: π.χ. $s3, $s2, $s1 IF ID EM - WB sw $s3, ($s4) IF ID EM - WB If EM/WB.RegWrite and ID/EM.MemWrite and (EM/WB.RegRd 0) (EM/WB.RegRd = ID/EM.RegRt)) then forwardd=10 // µία a/l στο στάδιο EM/WB // µία sw στο στάδιο ID/EM // η επόµενη εντολή sw χρησιµοποιεί // τον RegRd της πρώτης ως περιεχόµενο προς αποθήκευση στη µνήµη (γ) Μεταξύ εντολών αναφοράς στη µνήµη µε αριθµητικές/λογικές εντολές: π.χ. lw $s2, ($s4) IF ID EM - WB $s3, $s2, $s1 IF ID EM - WB If EM/WB.MemRead and ID/EM.ALUop and (EM/WB.RegRt 0) ((EM/WB.RegRt = ID/EM.RegRs) then forwarda=10 // µία lw στο στάδιο EM/WB // µία a/l στο στάδιο ID/EM // η επόµενη εντολή a/l χρησιµοποιεί // τον RegRd της πρώτης και π.χ. lw $s2, ($s4) IF ID EM - WB $s3, $s1, $s2 IF ID EM - WB If EM/WB.MemRead and ID/EM.ALUop and (EM/WB.RegRt 0) ((EM/WB.RegRt = ID/EM.RegRt) then forwardb=10 // µία lw στο στάδιο EM/WB // µία a/l στο στάδιο ID/EM // η επόµενη εντολή a/l χρησιµοποιεί // τον RegRd της πρώτης 6

Στην περίπτωση αυτή υπάρχει σαφής βελτίωση σε σχέση µε την κλασσική αρχιτεκτονική σωλήνωσης 5 σταδίων. Στην αρχιτεκτονική 5 σταδίων µετά από µία εντολή lw που ακολουθείται από εντολή που χρησιµοποιεί το δεδοµένο που φορτώθηκε από τη µνήµη, απαιτείται stall. Θέµα 3 ο (35%): Θεωρούµε της εξής ακολουθία εντολών. Αρχικά, ισχύει: $t4 = 16 + $r1; loop: lw $t1, 0($r1) #1 lw $t2, 0($r2) #2 lw $t3, 0($r3) #3 $t1, $t1, $t2 #4 $t1, $t1, $t3 #5 sll $t1, $t1, 2 #6 sw $t1, 0($r4) #7 i $r1, $r1, 4 #8 i $r2, $r2, 4 #9 i $r3, $r3, 4 #10 $r1, $t4, loop #11 exit: i) Υποθέτουµε ότι διαθέτουµε έναν επεξεργαστή µε αρχιτεκτονική σωλήνωσης 5 σταδίων, όπου υπάρχουν όλα τα δυνατά σχήµατα προώθησης. είξτε το διάγραµµα εκτέλεσης των επιµέρους φάσεων για κάθε εντολή (κατά την πρώτη σειρά επαναλήψεων), στην περίπτωση που οι εντολές εκτελούνται µε τη σειρά που υπαγορεύει ο κώδικας της ρουτίνας. Σηµειώστε όλες τις αναγκαίες προωθήσεις δεδοµένων. Πόσους κύκλους χρειάζεται για να ολοκληρωθεί η εκτέλεση της ρουτίνας; ii) Ο παραλληλισµός επιπέδου εντολής (instruction level parallelism - ILP) αναφέρεται στην έλλειψη εξαρτήσεων µεταξύ των εντολών ενός σειριακού προγράµµατος και την εκµετάλλευση του γεγονότος για την παράλληλη εκτέλεσή τους, διατηρώντας την ορθότητα του τελικού αποτελέσµατος. Για το σκοπό αυτό, στο εξής (για τα ερωτήµατα α και β) υποθέτουµε ότι διαθέτουµε έναν επεξεργαστή µε αρχιτεκτονική σωλήνωσης 5 σταδίων, πλάτους 2 σωληνώσεων. Επιπλέον, υπάρχουν όλα τα δυνατά σχήµατα προώθησης. α) είξτε το διάγραµµα εκτέλεσης των επιµέρους φάσεων για κάθε εντολή (κατά την πρώτη σειρά επαναλήψεων), στην περίπτωση που οι εντολές εκτελούνται µε τη σειρά (in-order: αν οι διαδοχικές εντολές έχουν µεταξύ τους κάποιο είδος εξάρτησης δεδοµένων, εισάγεται στη σωλήνωση µία µόνο εντολή/ κύκλο ρολογιού). Σηµειώστε όλες τις αναγκαίες προωθήσεις δεδοµένων. Πόσους κύκλους χρειάζεται για να ολοκληρωθεί η εκτέλεση της ρουτίνας; β) Αν οι εντολές µπορούν να εκτελεστούν εκτός σειράς (out-of-order: αν οι διαδοχικές εντολές έχουν µεταξύ τους κάποιο είδος εξάρτησης δεδοµένων, αναζητούνται ανεξάρτητες εντολές µεταξύ των επόµενων εντολών µε στόχο να εισάγονται στη σωλήνωση 2 εντολές/ κύκλο ρολογιού), πόσους κύκλους κερδίζουµε; Κατασκευάστε το αντίστοιχο διάγραµµα εκτέλεσης και σηµειώστε όλες τις αναγκαίες προωθήσεις δεδοµένων. 7

Λύση 3 ου Θέµατος i) Σύµφωνα µε την αρίθµηση των εντολών που προστέθηκε στην εκφώνηση, η εκτέλεση των εντολών στη σωλήνωση και η προώθηση δεδοµένων σε αυτήν έχει ως εξής: 1 IF-ΙD-EX-MEM-WB 2 IF -ID - EX - MEM-WB 3 IF - ID EX - MEM-WB 4 IF - ΙD - EX -MEM-WB 5 IF ID - EX - MEM-WB 6 IF ID - EX - MEM-WB 7 IF - ΙD - EX -MEM-WB 8 IF ID - EX -MEM-WB 9 IF - ID - EX -MEM-WB 10 IF - ΙD - EX -MEM-WB 11 IF ID - EX - MEM-WB 13 κύκλοι 16 Ο βρόχος θα επαναληφθεί = 4 φορές. Οπότε το σύνολο των κύκλων που απαιτούνται για την 4 ολοκλήρωση της ρουτίνας είναι: 4 13 + 2 = 54. ii-α) Σε κάθε κύκλο, οι εντολές εισέρχονται 2-2 στη σωλήνωση, εκτός αν υπάρχει εξάρτηση δεδοµένων του ζεύγους: 1 IF-ΙD-EX-MEM-WB Σωλήνωση #1 2 IF-ID-EX-MEM-WB Σωλήνωση #2 3 IF- ID EX -MEM-WB Σωλήνωση #1 4 IF- ΙD s - EX -MEM-WB Σωλήνωση #2 5 IF ID - s - EX - MEM-WB Σωλήνωση #1 6 IF s - ID - EX - MEM-WB Σωλήνωση #1 7 IF - ΙD - EX -MEM-WB Σωλήνωση #1 8 IF ID - EX -MEM-WB Σωλήνωση #2 9 IF - ID - EX -MEM-WB Σωλήνωση #1 10 IF - ΙD - EX -MEM-WB Σωλήνωση #2 11 IF ID - EX - MEM-WB Σωλήνωση #1 10 κύκλοι Το σύνολο των κύκλων που απαιτούνται για την ολοκλήρωση της ρουτίνας είναι: 4 10 + 2 = 42. 8

ii-β) Σε κάθε κύκλο, οι εντολές εισέρχονται 2-2 στη σωλήνωση. Αν υπάρχει εξάρτηση δεδοµένων σε ένα ζευγάρι εντολών, τότε αναζητούµε, µεταξύ των εντολών που ακολουθούν, µία ανεξάρτητη εντολή: 1 IF-ΙD-EX-MEM-WB Σωλήνωση #1 2 IF-ID-EX-MEM-WB Σωλήνωση #2 3 IF- ID EX -MEM-WB Σωλήνωση #1 4 IF- ΙD s - EX -MEM-WB Σωλήνωση #2 5 IF ID - s - EX - MEM-WB Σωλήνωση #1 (stall λόγω εξάρτησης από εντολή 4) 8 IF s - ID - EX - MEM-WB Σωλήνωση #2 (stall λόγω δέσµευσης πόρων της σωλήνωσης #2 από εντολή 4) 6 IF - s - ΙD - EX -MEM-WB Σωλήνωση #1 9 IF ID - EX -MEM-WB Σωλήνωση #2 7 IF - ID - EX -MEM-WB Σωλήνωση #1 10 IF - ΙD - EX -MEM-WB Σωλήνωση #2 11 IF ID - EX - MEM-WB Σωλήνωση #1 9 κύκλοι Το σύνολο των κύκλων που απαιτούνται για την ολοκλήρωση της ρουτίνας είναι: 4 9 + 2 = 38. 9