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

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

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

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

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

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

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

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

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

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

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

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

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

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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ασκήσεις Caches

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ασκήσεις Caches

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

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

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

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

Επανάληψη Σύστημα Διασωλήνωσης (Pipelining) Κεφάλαιο 4 - Σύστημα ιασωλήνωσης

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

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

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

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

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

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

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

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

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

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

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

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

Pipelined Datapath, Hazards and Forwarding

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

Παραλληλισµός Εντολών (Pipelining)

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 9: Εισαγωγή στην Ομοχειρία (Pipelining - Διοχέτευση) Μανόλης Γ.Η.

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Spim Cache. Εισαγωγή στη χρήση του προσοµοιωτή. Αρχιτεκτονική Υπολογιστών ΙΙ. Σπύρος Ξεργιάς, ηµήτρης Γκιζόπουλος, Πανεπιστήµιο Αθηνών

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

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός Κεφ. 4: O επεξεργαστής Σύστημα Διασωλήνωσης (Pipelining)

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

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

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

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

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

Διοχέτευση (Pipeline)

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

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

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

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

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

Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής. Αρχιτεκτονική Υπολογιστών. 3ο Μάθημα

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

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr ΠΡΟΗΓΜΕΝΑ ΘΕΜΑΤΑ ΟΡΓΑΝΩΣΗΣ ΥΠΟΛΟΓΙΣΤΩΝ Θέµατα και Λύσεις Εξετάσεων Μαρτίου 2004 Θέµα 1 ο (30%): Έστω το τµήµα του C κώδικα: for (i = 0; i < 12; i++) if (array[i] == k) array[i] = j; Θεωρούµε ότι οι τιµές των µεταβλητών 4 i, j, k βρίσκονται στους καταχωρητές $s1, $s2, $s3 και η διεύθυνση του πίνακα array στον $s4. Το περιεχόµενο των καταχωρητών $s1 και $s5 είναι αρχικά 0 και 48, αντίστοιχα. Ο αντίστοιχος κώδικας σε assembly είναι ο εξής: Loop: add $t1, $s1, $s4 lw $t0, 0($t1) bne $t0, $s3, Next Α sw $s2, 0($t1) Next: addi $s1, $s1, 4 Exit: α) είξτε το διάγραµµα εκτέλεσης των επιµέρους φάσεων για κάθε εντολή, µέσα στην αρχιτεκτονική αγωγού, χωρίς την ύπαρξη κανενός σχήµατος προώθησης (διάγραµµα εκτέλεσης όπως στις διαφάνειες του µαθήµατος: IF - ID - κλπ). Υποθέστε ότι κάθε φορά θεωρούµε ότι δεν πρόκειται να γίνει διακλάδωση (branch not taken) και ότι στο 75% των περιπτώσεων ισχύει η ισότητα array[i]==k. Πόσους κύκλους χρειάζεται για να εκτελεστεί ο παραπάνω βρόχος; β) είξτε το διάγραµµα εκτέλεσης των επιµέρους φάσεων για κάθε εντολή, µέσα στην αρχιτεκτονική αγωγού, υποθέτοντας την ύπαρξη σχήµατος προώθησης. Ισχύουν οι υποθέσεις του ερωτήµατος (α) σε ό,τι αφορά τις εντολές διακλάδωσης και τον έλεγχο της ισότητας array[i]==k. Πόσους κύκλους χρειάζεται για να εκτελεστεί ο παραπάνω βρόχος; Μπορείτε να βελτιστοποιήσετε τον κώδικα (αποφυγή τυχόν pipeline stalls); (γ) Η τεχνική loop unrolling (ξεδίπλωµα βρόχου) είναι µια από τις πιο διαδεδοµένες τεχνικές βελτιστοποίησης κώδικα. Στην τεχνική αυτή, διαδοχικές επαναλήψεις του αρχικού βρόχου γράφονται σαν ξεχωριστές εντολές του ίδιου βρόχου (π.χ. για 2 διαδοχικές επαναλήψεις, ο unrolled βρόχος έχει πλέον βήµα 2). Στο παράδειγµά µας, ο αρχικός βρόχος ξεδιπλώνεται ως εξής: for (i = 0; i < 12; i+=2) { if (array[i] == k) array[i] = j; if (array[i+1] == k) array[i+1] = j;

} Εδώ, θέλουµε να αξιολογήσουµε τα πλεονεκτήµατα υλοποίησης της τεχνικής ξεδιπλώµατος βρόχων σε κώδικα που εκτελείται σε αρχιτεκτονική MIPS µε χρήση αγωγού (pipeline datapath) και ύπαρξη σχήµατος προώθησης (forwarding). Παρακάτω είναι το τµήµα του αρχικού κώδικα, όπου ο βρόχος είναι ξεδιπλωµένος µία φορά: Loop: add $t1, $s1, $s4 lw $t0, 0($t1) bne $t0, $s3, Next1 sw $s2, $0($t1) Next1: lw $t2, 4($t1) Β bne $t2, $s3, Next2 sw $s2, 4($t1) Next2: addi $s1, $s1, 8 Exit: Σχεδιάστε ξανά τον κώδικα ώστε να αποφύγετε τις υποχρεωτικές καθυστερήσεις (pipeline stalls). Λαµβάνοντας υπόψη τα αναγκαία stalls συγκρίνετε τη διαφορά επίδοσης µεταξύ του αρχικού µηξεδιπλωµένου κώδικα (Α) και του δικού σας (µετά το ξεδίπλωµα και τη βελτιστοποίηση του κώδικα Β). Λύση 1 ου Θέµατος α) Χωρίς την ύπαρξη κανενός σχήµατος προώθησης, η εκτέλεση θα γίνει ως εξής: Loop: add $t1, $s1, $s4 IF-ΙD-EX-MEM-WB lw $t0, 0($t1) IF - s - s - ID-EX-MEM-WB bne $t0, $s3, Next IF- s - s -ID -EX-MEM-WB sw $s2, 0($t1) IF ΙD - EX -MEM-WB Next: addi $s1, $s1, 4 IF ID - EX - MEM-WB IF - s - s - ID - EX -MEM-WB 14 cycles Η παραπάνω σειρά εκτέλεσης θα πραγµατοποιηθεί για το 75% των επαναλήψεων (12 75% = 9 επαναλήψεις), όπου ισχύει η ισότητα array[i]==k. Κατά τις υπόλοιπες 12 9 = 3 επαναλήψεις, η σειρά εκτέλεσης θα είναι η ακόλουθη: Loop: add $t1, $s1, $s4 IF-ΙD-EX-MEM-WB lw $t0, 0($t1) IF - s - s - ID-EX-MEM-WB bne $t0, $s3, Next IF- s - s -ID -EX-MEM-WB - - ------- bubbles ------ Next: addi $s1, $s1, 4 IF ID -EX-MEM-WB IF - s - s ID - EX -MEM-WB 15 cycles Εποµένως, συνολικά χρειάζονται: 14 9 + 15 3 + 2= 173 κύκλοι για την ολοκλήρωση των 12 επαναλήψεων του βρόχου (+2 κύκλοι για το τελείωµα του τελευταίου bne). β) Με προώθηση, χωρίς άλλη βελτιστοποίηση, η εκτέλεση θα γίνει ως εξής: 2

Loop: add $t1, $s1, $s4 IF-ΙD-EX-MEM-WB lw $t0, 0($t1) IF -ID - EX - MEM-WB bne $t0, $s3, Next IF - ID - s - EX-MEM-WB sw $s2, 0($t1) IF - s - ΙD - EX -MEM-WB Next: addi $s1, $s1, 4 IF ID - EX - MEM-WB IF ID - EX -MEM-WB 9cycles Για το 75% των επαναλήψεων (9 επαναλήψεις) θα πραγµατοποιηθεί η παραπάνω σειρά εκτέλεσης των εντολών. Κατά τις υπόλοιπες 3 επαναλήψεις, οµοίως µε το ερώτηµα (α), θα χρειαστεί 1 επιπλέον κύκλος, για την ολοκλήρωση της εκτέλεσης. Εποµένως, στις 3 αυτές επαναλήψεις θα χρειαστούν 9+1 = 10 κύκλοι. Συνολικά χρειάζονται: 9 9 + 10 3 + 2 = 113 κύκλοι για την ολοκλήρωση των 12 επαναλήψεων του βρόχου. Για να αποφύγουµε το αναγκαίο memory stall που εισάγει η εντολή φόρτωσης (lw), αναδιατάσσουµε τη σειρά εκτέλεσης των εντολών, προσέχοντας να µην επηρεάσουµε το τελικό αποτέλεσµα του βρόχου: Loop: add $t1, $s1, $s4 lw $t0, 0($t1) addi $s1, $s1, 4 bne $t0, $s3, Next sw $s2, 0($t1) Next: Exit: Αναλυτικότερα : Loop: add $t1, $s1, $s4 IF-ΙD-EX-MEM-WB lw $t0, 0($t1) IF -ID - EX - MEM-WB addi $s1, $s1, 4 IF ID - EX -MEM-WB bne $t0, $s3, Next IF - ID - EX -MEM-WB sw $s2, 0($t1) IF - ΙD - EX -MEM-WB Next: IF ID - EX -MEM-WB 8cycles Εποµένως, µε τη βελτιστοποίηση, χρειάζονται 8 κύκλοι για το 75% των περιπτώσεων και 9 κύκλοι για το υπόλοιπο 25% των επαναλήψεων: 8 9 + 9 3 + 2 = 101 κύκλοι γ) Η αναδιάταξη των εντολών µπορεί να γίνει ως εξής: Loop: add $t1, $s1, $s4 lw $t0, 0($t1) lw $t2, 4($t1) bne $t0, $s3, Next1 sw $s2, $0($t1) Β2 Next1: bne $t2, $s3, Next2 sw $s2, 4($t1) Next2: addi $s1, $s1, 8 3

Οπότε : Exit: Loop: add $t1, $s1, $s4 IF-ΙD EX MEM-WB lw $t0, 0($t1) IF ΙD EX MEM -WB lw $t2, 4($t1) IF - ID EX MEM - WB bne $t0, $s3, Next1 IF - ID EX - MEM - WB sw $s2, $0($t1) IF - ID - EX - MEM-WB Next1: bne $t2, $s3, Next2 IF - ID EX - MEM-WB sw $s2, 4($t1) IF ΙD - EX MEM-WB Next2: addi $s1, $s1, 8 IF - ID - EX - MEM-WB 11 cycles Ο παραπάνω βελτιστοποιηµένος βρόχος θα εκτελεστεί 12/2 = 6 φορές. Κάθε ένας από τους βρόχους χρειάζεται για την εκτέλεσή του 11 κύκλους, εκτός από 3 περιπτώσεις (όπου δεν ισχύει η ισότητα array[i]==k), όπου θα χρειαστούν 3 επιπλέον κύκλοι: 6 11 + 3 + 2 = 71 κύκλοι Η βελτιστοποίηση στη συνολική επίδοση είναι : 173 Α Β2 : = 2, 44 71 Θέµα 2 ο (15%): Έστω ότι επιθυµούµε να έχουµε τη δυνατότητα απευθείας προσπέλασης στη µνήµη από τις αριθµητικές εντολές, µέσω της εντολής: δηλαδή: addm $t1, 100($t3) $t1 = $t1 + Mem[$t3+100] Γιατί θα ήταν δύσκολο να προσθέσουµε την εντολή αυτή σε αρχιτεκτονική MIPS µε χρήση αγωγού (pipelined datapath), όπως αυτή περιγράφεται στο κεφ. 6 των σηµειώσεων; Τι συνέπειες θα είχαν οι αλλαγές που απαιτούνται για την υλοποίηση της νέας εντολής (σε throughput, latency και hazards); Λύση 2 ου Θέµατος Η εντολή addm χρειάζεται τα εξής 6 στάδια για την ολοκλήρωση των λειτουργιών της: 1) Ανάγνωση εντολής (IF) 2) Αποκωδικοποίηση εντολής και ανάγνωση των ορισµάτων της (ID) 3) Υπολογισµός της διεύθυνσης ανάγνωσης από τη µνήµη (EX) 4) Ανάγνωση από τη µνήµη (MEM) 5) Πρόσθεση του περιεχοµένου της µνήµης µε τον δεύτερο καταχωρητή (ΕΧ-2) 6) Αποθήκευση του αποτελέσµατος στο register file (WB) Από τα παραπάνω γίνεται φανερό ότι για την υλοποίηση της συγκεκριµένης εντολής θα χρειαστούµε ένα επιπλέον στάδιο στη σωλήνωση, και εποµένως και όλες οι υπόλοιπες εντολές θα πρέπει αν περάσουν µέσα από το στάδιο αυτό. Εποµένως, η προσθήκη µίας τέτοιας εντολής στο σύνολο των εντολών θα έχει ως αποτέλεσµα την αύξηση του latency (της αρχικής καθυστέρησης εξόδου της πρώτης εντολής από τη σωλήνωση), αλλά όχι του throughput (του ρυθµού εξόδου των 4

επόµενων εντολών από τη σωλήνωση), αφού οι επόµενες εντολές θα ολοκληρώνονται µε ρυθµό µία ανά κύκλο ρολογιού, δεδοµένου ότι δεν υπάρχουν stalls. Στην πραγµατικότητα όµως, στη µακρύτερη σωλήνωση υπάρχει µεγαλύτερη πιθανότητα να εµφανιστούν κίνδυνοι δεδοµένων (hazards), και επιπλέον ένα hazard µπορεί να έχει µεγαλύτερο κόστος στην επίδοση (penalty). Εποµένως, µπορεί τελικά να έχουµε µείωση του throughput µε την προσθήκη της νέας εντολής. Τέλος, το επιπλέον hardware που απαιτείται για την υλοποίηση του νέου σταδίου, για την ανίχνευση των hazards και για την πραγµατοποίηση των αναγκαίων προωθήσεων δεδοµένων, θα αυξήσει το κόστος της αρχιτεκτονικής. Εναλλακτικά, θα µπορούσε το επιπλέον στάδιο που απαιτείται για την υλοποίηση της νέας εντολής να εκτελεστεί µε τους υπάρχοντες πόρους του συστήµατος, χωρίς την προσθήκη hardware. Κάτι τέτοιο θα υποχρέωνε την εντολή, ενώ ακολουθούσε τη συνηθισµένη ροή IF-ID-EX-MEM, να επιστρέψει από το στάδιο MEM πίσω στο στάδιο ΕΧ για την εκτέλεση της πρόσθεσης του περιεχοµένου της µνήµης µε τον δεύτερο καταχωρητή, στη συνέχεια να περάσει πάλι από το στάδιο MEM (χωρίς να κάνει τίποτα) και τέλος να εκτελέσει το WB. ηλαδή θα είχαµε την εξής ροή για τη συγκεκριµένη εντολή: IF-ID-EX-MEM-EX-MEM-WB. Άρα κάθε επόµενη εντολή δεν θα µπορούσε παρά να ευθυγραµµιστεί ως εξής: IF-ID-EX-MEM-EX-MEM-WB IF- ID- s - s - EX -MEM-WB Η συγκεκριµένη υλοποίηση επιφέρει µείωση του throughput, και επιπρόσθετα hazards, τα οποία έχουν όλες τις συνέπειες που περιγράφτηκαν και για την προηγούµενη υλοποίηση. Θέµα 3 ο (25%): Έστω η παρακάτω αρχιτεκτονική αγωγού (pipelined datapath) 5 σταδίων (IF-ID-EX-MEM-WB), όπως του επεξεργαστή MIPS του µαθήµατος, όπου όµως το Register File γράφεται στο δεύτερο µισό του κύκλου ρολογιού και διαβάζεται στο πρώτο µισό. Ο εντολές µπορούν να καθυστερήσουν (stall) µέσα στην αρχιτεκτονική αγωγού (pipeline stalls) µόνο στα στάδια IF και ID. α) για την παρακάτω ακολουθία εντολών, δείξτε την εκτέλεσή τους µέσα στο pipelined datapath, γεµίζοντας τον παρακάτω πίνακα. Όπου συµβαίνει καθυστέρηση (stall), βάλτε στο αντίστοιχο στάδιο τη λέξη bubble. (10%) lw $s2, 0($s1) ; lw1 add $s2,$s1,$s2 ; add1 add $s3,$s1,$s3 ; add2 sw $s2, 0($s4) ; sw1 cycles IF ID EX MEM WB 1 lw1 2 add1 lw1 3 add2 add1 lw1.. 5

β) προσπαθήστε να εξαφανίσετε καθυστερήσεις (stalls) που εµφανίζονται στην ακολουθία εντολών, προσθέτοντας σχήµα προώθησης (forwarding-bypass path), ώστε η παραπάνω αρχιτεκτονική αγωγού να συµπεριφέρεται όπως µια αρχιτεκτονική αγωγού όπου το register file γράφεται στο πρώτο µισό του κύκλου και διαβάζεται στο δεύτερο µισό. είξτε σε αναλυτικό διάγραµµα τα εναλλακτικά µονοπάτια δεδοµένων που δηµιουργεί το σχήµα προώθησης που επιλέξατε. Στον πίνακα του α) ερωτήµατος, βάλτε το γράµµα Β δίπλα σε κάθε bubble που εξαφανίζεται µε το σχήµα προώθησης που επιλέξατε ( ηλ. bubble, B). Τέλος, γράψτε τις συνθήκες που πρέπει να ισχύουν για να γίνει το προτεινόµενο σχήµα προώθησης. (15%) Λύση 3 ου Θέµατος α) Παρατηρούµε ότι υπάρχουν δύο διαφορετικές εξαρτήσεις µεταξύ των εντολών: i) η πρώτη βρίσκεται µεταξύ των lw1 και add1. εδοµένου (όπως φαίνεται από το σχήµα του datapath) ότι δεν υπάρχει κανενός είδους προώθησης, θα χρειαστεί να περιµένουµε να γράψει η lw1 στο στάδιο WB τον καταχωρητή $s2 και στον επόµενο κύκλο να διαβάζει η add1, η οποία θα πρέπει εν τω µεταξύ να παραµένει στο στάδιο ID, το περιεχόµενό του. ii) η δεύτερη εξάρτηση βρίσκεται µεταξύ των add1 και sw1. Οµοίως, θα περιµένουµε να γράψει η add1 στο στάδιο WB τον καταχωρητή $s2 και στον επόµενο κύκλο θα διαβάζει η sw1, η οποία θα παραµένει στο στάδιο ID, το περιεχόµενό του. Η εκτέλεση της δοσµένης ακολουθίας εντολών θα γίνει ως εξής: cycles IF ID EX MEM WB 1 lw1 2 add1 lw1 3 add2 add1 lw1 4 add2 add1 bubble lw1 5 add2 add1 bubble bubble lw1 6 add2 add1 bubble bubble bubble 7 sw1 add2 add1 bubble bubble 8 - sw1 add2 add1 bubble 9 - sw1 bubble add2 add1 10 - sw1 bubble bubble add2 11 - - sw1 bubble bubble 12 - - - sw1 bubble 13 - - - - sw1 β) Οι εµφανιζόµενες καθυστερήσεις µπορούν να εξαφανιστούν χρησιµοποιώντας ένα κατάλληλο σχήµα προώθησης, εκτός από µία, εκείνη που παρεµβάλλεται µεταξύ των lw1 και add1 (όπως συµβαίνει εξάλλου και στη συνηθισµένη αρχιτεκτονική σωλήνωσης του MIPS). ηλαδή, και στις δύο περιπτώσεις εξαρτήσεων, προωθούµε το προς εγγραφή (στον $s2) αποτέλεσµα, από την έξοδο του σταδίου MEM της πρώτης εντολής, στην είσοδο του σταδίου EX της δεύτερης-εξαρτηµένης εντολής. Εποµένως, ο παραπάνω πίνακας µπορεί να διορθωθεί ως εξής: cycles IF ID EX MEM WB 1 lw1 2 add1 lw1 3 add2 add1 lw1 4 add2 add1 bubble lw1 6

5 add2 add1 bubble, Β bubble lw1 6 add2 add1 bubble, Β bubble, Β bubble 7 sw1 add2 add1 bubble, Β bubble, Β 8 - sw1 add2 add1 bubble, Β 9 - sw1 bubble, Β add2 add1 10 - sw1 bubble, Β bubble, Β add2 11 - - sw1 bubble, Β bubble, Β 12 - - - sw1 bubble, Β 13 - - - - sw1 Οι αναγκαίες προσθήκες µονοπατιών και δοµικών στοιχείων για την προώθηση δεδοµένων φαίνονται στο σχήµα που ακολουθεί: Α MUX MUX Για τον έλεγχο των πολυπλεκτών, χρησιµοποιούνται οι εξής συνθήκες: για την προώθηση από add1 σε sw1 If (MEM/WB.RegWrite) and (MEM/WB.RegRd 0) and (EX/MEM.RegRd ID/EX.RegRt) and (MEM/WB.RegRd = ID/EX.RegRt) and then forwardb = 1 και για την προώθηση από lw1 σε add1 If (MEM/WB.RegWrite) and (MEM/WB.RegRt 0) and (EX/MEM.RegRt ID/EX.RegRt) and (MEM/WB.RegRt = ID/EX.RegRt) and then forwardb = 1 Β Θέµα 4 ο (30%): ίνεται µια σειρά αναφορών σε διευθύνσεις λέξεων στη µνήµη ενός υπολογιστή: 5, 9, 12, 28, 32, 25, 6, 8, 11, 28, 31, 24, 5, 25, 4, 12. Υποθέτουµε ότι έχουµε κρυφή µνήµη µε οργάνωση: i) απευθείας απεικόνισης (direct mapped) µε 16 blocks, όπου κάθε block έχει µέγεθος µια λέξη (word), ii) απευθείας απεικόνισης (direct mapped), µε 16 λέξεις (words) συνολικό µέγεθος cache, όπου κάθε block έχει µέγεθος τέσσερις (4) λέξεις. iii) συνόλου συσχέτισης 2-δρόµων (2-way set associative) µε συνολικό µέγεθος 16 λέξεις (words) όπου κάθε block έχει µέγεθος δύο (2) λέξεις (Υποθέστε LRU αλγόριθµο αντικατάστασης). είξτε για τις παραπάνω περιπτώσεις οργάνωσης της κρυφής µνήµης, για κάθε αναφορά, αν είναι επιτυχής (hit) ή όχι (miss) καθώς και την τελικά περιεχόµενα της κρυφής µνήµης. 7

Λύση 4 ου Θέµατος i) ιαθέτουµε µνήµη µε 16 blocks, όπως φαίνεται στο σχήµα που ακολουθεί: 0 32 1 2 3 4 4 5 5 6 6 7 8 8 24 9 9 25 10 11 11 12 12 28 12 13 14 15 31 5 miss 9 miss 28 miss 32 miss 25 miss 6 miss 8 miss 11 miss 28 hit 31 miss 24 miss 5 hit 25 hit 4 miss 16 ii) Η µνήµη διαθέτει 16 words. Αφού περιέχει 4 words / block, περιέχει = 4 blocks 4 0 (32-33-34-35) 1 (4-5-6-7) 2 (8-9-10-11) (24-25-26-27) (8-9-10-11) (24-25-26-27) 3 (12-13-14-15) (28-29-30-31) (12-13-14-15) 5 miss 9 miss 28 miss 32 miss 25 miss 6 hit 8 miss 11 hit 28 hit 31 hit 24 miss 5 hit 25 hit 4 hit iii) Η µνήµη διαθέτει 168 words. Αφού είναι 2-way set associative µε 2 words / block, περιέχει 16 = 4 sets 2 2 8

0 (8-9) (32-33) (24-25) (8-9) (32-33) (24-25) (8-9) (24-25) 1 (10-11) 2 (4-5) (12-13) (28-29) (4-5) (12-13) (28-29) (4-5) (12-13) 3 (6-7) (30-31) 5 miss 9 miss 28 miss 32 miss 25 miss 6 miss 8 miss 11 miss 28 hit 31 miss 24 hit 5 miss 25 hit 4 hit