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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Pipelined Datapath, Hazards and Forwarding

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

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

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

Κεφάλαιο 4: Pipelining 75

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

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

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

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

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

Εισαγωγή. Σύνοψη βασικών εννοιών, 5-stage pipeline, επεκτάσεις για λειτουργίες πολλαπλών κύκλων

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

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

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

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

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

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

Εντολές του MIPS (2)

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

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

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

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

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

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

Παραδείγματα Assembly (Μέρος

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

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

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

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

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

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

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

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ε Ρ Γ Α Σ Τ ΗΡ ΙΟ Υ ΠΟΛΟΓΙΣ Τ Ι Κ Ω Ν Σ Υ Σ Τ ΗΜΑΤΩΝ w w w. c s l ab. e c e. nt u a. g r 2η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος 2007-2008, 5ο Εξάμηνο Σχολή ΗΜ&ΜΥ Έστω το ακόλουθο τμήμα C κώδικα: for (i = 0; i < 100; i++) if (x[i] < a) x[i] = a; else x[i] += b; Θεωρούμε ότι οι τιμές των μεταβλητών a, b βρίσκονται αποθηκευμένες στους καταχωρητές $r3, $r5. Αρχικά, ο καταχωρητής $r2 περιέχει τη διεύθυνση του πρώτου στοιχείου του x, ενώ ο $r6 δείχνει 800 bytes μπροστά. Ο αντίστοιχος κώδικας σε assembly είναι ο εξής: Loop: lw $r1, 0($r2) ; $r1=x[i] slt $r4, $r1, $r3 ; if(x[i]<a) $r4=1 else $r4=0 beq $r4, $zero, Else sw $r3, 0($r2) ; x[i]=a j Cont Else: add $r1, $r1, $r5 sw $r1, 0($r2) ; x[i]+=b Cont: add $r2, $r2, #8 bne $r2, $r6, Loop Exit: α) Υποθέτουμε ότι έχουμε αρχιτεκτονική σωλήνωσης (pipelining) 5 σταδίων (IF ID EX MEM WB). Αρχικά, υποθέτουμε ότι η αρχιτεκτονική σωλήνωσης δε διαθέτει σχήμα προώθησης (forwarding). Επίσης, η εγγραφή σε κάποιο καταχωρητή γίνεται στο πρώτο μισό ενός κύκλου, ενώ η ανάγνωση από τον ίδιο καταχωρητή στο δεύτερο μισό του ίδιου κύκλου. Επιπλέον, η ενημέρωση του μετρητή προγράμματος κατά την εκτέλεση μιας εντολής διακλάδωσης γίνεται στο στάδιο ΜΕΜ και για να γίνει η διακλάδωση πρέπει να εκκενωθεί (flush) το pipeline. Τέλος, στο 75% των περιπτώσεων ισχύει η ανισότητα x[i]< a. Χρησιμοποιείστε τα κατάλληλα διαγράμματα χρονισμού για να δείξετε την εκτέλεση των εντολών του παραπάνω κώδικα μέσα στην αρχιτεκτονική αγωγού. Υποδείξτε και εξηγείστε τους πιθανούς κινδύνους (hazards) που μπορούν να προκύψουν κατά την εκτέλεση του κώδικα, καθώς και τον τρόπο με τον οποίον αυτοί αντιμετωπίζονται. Πόσοι κύκλοι απαιτούνται για την εκτέλεση του βρόχου; 1

Το διάγραμμα χρονισμού του pipeline για την περίπτωση όπου η εντολή beq είναι ΤΑΚΕΝ (x[i] a) είναι το ακόλουθο. slt r4,r1,r3 IF ID - - EX M WB beq r4,zero,else IF - - ID - - EX M WB add r1,r1,r5 - - - - - IF ID EX M WB sw r1, 0(r2) IF ID - - EX M WB add r2, r2, #8 IF - - ID EX M WB bne r2, r6, Loop IF ID - - EX M WB lw r1,0(r2) - - - - - IF ID EX slt r4,r1,r3 IF ID Στο παραπάνω διάγραμμα, οι - υποδηλώνουν stalls. Τα stalls στους κύκλους 4-5 οφείλονται στο ότι ο r1 για την εντολή slt (η ανάγνωση του οποίου γίνεται στο στάδιο ID) γίνεται διαθέσιμος στο τέλος του κύκλου 5 (στάδιο WB). Τα stalls στους κύκλους 7-8 οφείλονται πάλι στο ότι ο r4 για την εντολή beq γίνεται διαθέσιμος στο τέλος του κύκλου 8. Τα stalls στους κύκλους 14-15 οφείλονται στο ότι o r1 για την εντολή sw γίνεται διαθέσιμος στο τέλος του κύκλου 18. Τα stalls στους κύκλους 18-19 οφείλονται στο ότι ο r2 για την εντολή bne γίνεται διαθέσιμος στο τέλος του κύκλου 19. Όλα αυτά τα stalls γίνονται προκειμένου να αντιμετωπιστούν οι κίνδυνοι δεδομένων που μπορούν να προκύψουν εξαιτίας RAW εξαρτήσεων μεταξύ των εντολών lw-slt, slt-beq, add-sw και add-bne, αντίστοιχα. Οι κίνδυνοι ελέγχου, που μπορούν να προκύψουν από τις εντολές διακλάδωσης υπό συνθήκη, αντιμετωπίζονται με το να παγώσουμε το pipeline μέχρι να γίνει γνωστό το αποτέλεσμα της διακλάδωσης στο στάδιο ΜΕΜ. Αντίστοιχα, το διάγραμμα χρονισμού του pipeline για την περίπτωση όπου η εντολή beq είναι ΝΟΤ ΤΑΚΕΝ (x[i]<a) είναι αυτό που φαίνεται στη συνέχεια. Τα stalls εξαιτίας των κινδύνων δεδομένων και ελέγχου που πρέπει αντιμετωπιστούν, ακολουθούν την ίδια λογική με πριν. slt r4,r1,r3 IF ID - - EX M WB beq r4,zero,else IF - - ID - - EX M WB sw r3,0(r2) - - - - - IF ID EX M WB j Cont IF ID EX M WB add r2, r2, #8 - - - IF ID EX M WB bne r2, r6, Loop IF ID - - EX M WB lw r1,0(r2) - - - - - IF ID slt r4,r1,r3 Απο τα δύο διαγράμματα χρονισμού συμπεραίνουμε ότι συνολικά, για τις 100 εκτελέσεις του βρόχου, απαιτούνται 100*(25%*21 + 75%*22) + 1 = 2176 κύκλοι. IF β) Υποθέτουμε τώρα ότι η αρχιτεκτονική μας διαθέτει όλα τα δυνατά σχήματα προώθησης. Επιπλέον, υποθέτουμε ότι για την πρώτη εντολή διακλάδωσης υπό συνθήκη υπάρχει πρόβλεψη διακλάδωσης που είναι πάντα NOT TAKEN. Στην περίπτωση αυτή, δηλαδή, στο τέλος του σταδίου IF ο μετρητής 2

προγράμματος θα ανανεώνεται ώστε να δείχνει στην επόμενη σειριακά εντολή. O έλεγχος για το αν η πρόβλεψη έγινε σωστά ή όχι γίνεται στο στάδιο ΜΕΜ. Σε περίπτωση λάθος πρόβλεψης, στο ίδιο στάδιο υπολογίζεται και ο σωστός στόχος της διακλάδωσης, και ανανεώνεται κατάλληλα ο μετρητής προγράμματος. Σε αυτή την περίπτωση, το pipeline πρέπει να εκκενωθεί από τις εντολές που είχαν εισαχθεί σε αυτό εξαιτίας της εσφαλμένης πρόβλεψης. Όπως και στο προηγούμενο ερώτημα, χρησιμοποιείστε τα κατάλληλα διαγράμματα χρονισμού για να δείξετε την εκτέλεση των εντολών του παραπάνω κώδικα μέσα στην αρχιτεκτονική αγωγού. Πόσοι κύκλοι απαιτούνται τώρα για την εκτέλεση του βρόχου; Το διάγραμμα χρονισμού του pipeline για την περίπτωση όπου η εντολή beq είναι ΤΑΚΕΝ (x[i] a, λάθος πρόβλεψη διακλάδωσης ), είναι το ακόλουθο. beq r4,zero,else IF - ID EX M WB add r1,r1,r5 - - - IF ID EX M WB sw r1, 0(r2) IF ID EX M WB add r2, r2, #8 IF ID EX M WB bne r2, r6, Loop IF ID EX M WB lw r1,0(r2) - - - IF ID EX M WB Όπως είναι άμεσα εμφανές από το διάγραμμα, το σχήμα προώθησης μειώνει τα stalls που είχαμε αρχικά λόγω των κινδύνων δεδομένων. Συγκεκριμένα, στον κύκλο 4 υπάρχει πλέον μόνο ένα stall, και αυτό διότι η τιμή της θέσης μνήμης 0(r2), που πρόκειται να αποθηκευτεί στον r1, δεν μπορεί να είναι διαθέσιμη πριν το στάδιο MEM. Όταν όμως γίνει διαθέσιμη στο τέλος του κύκλου αυτού (και αποθηκευτεί στον ενδιάμεσο καταχωρητή ΜΕΜ/WB του pipeline), τότε το σχήμα προώθησης θα την προωθήσει κατευθείαν στις εισόδους της ALU, ώστε να μπορεί να εκτελεστεί η εντολή slt r4,r1,r3 χωρίς να χρειάζεται να περιμένουμε μέχρι η τιμή αυτή γραφτεί στον r1. Με αυτόν τον τρόπο, αποφεύγεται το stall που είχαμε στην προηγούμενη περίπτωση στoν κύκλο 5. Ομοίως, τα stalls που είχαμε στους κύκλους 7-8, 14-15 και 18-19, με το σχήμα προώθησης εξαλείφονται. Για παράδειγμα, η τιμή του r4, τον οποίον χρειάζεται η εντολή beq r4,zero,else στο στάδιο ΕΧ, παράγεται στον 5ο κύκλο της εντολής slt r4,r1,r3 κατά το στάδιο ΕΧ και αποθηκεύεται στον ενδιάμεσο καταχωρητή ΕΧ/ΜΕΜ. Επομένως μπορεί να προωθηθεί στις εισόδους της ALU και να αποφευχθούν τα stalls. Το ίδιο είδος προώθησης γίνεται και στους κύκλους 14-15 και 18-19. Όσον αφορά την εντολή διακλάδωσης beq, εφόσον η πρόβλεψη που γίνεται γι'αυτήν είναι πάντα λανθασμένη σε αυτή την περίπτωση, τα stalls που εισάγονται είναι τα ίδια με το ερώτημα α. (Σημείωση: στην περίπτωση του πρώτου ερωτήματος, όταν εκτελούταν η εντολή beq, το pipeline πάγωνε, και εμπόδιζε έτσι τη φόρτωση επόμενων εντολών μέχρι η εκτέλεση της beq να φτάσει στο στάδιο ΜΕΜ και να γίνει γνωστή η σωστή κατεύθυνση της διακλάδωσης. Στην περίπτωση τώρα που έχουμε πρόβλεψη διακλάδωσης, αλλά αυτή είναι λανθασμένη, θα φορτωθούν οι εντολές της λανθασμένης κατεύθυνσης (sw r3,0(r2), j Cont, κλπ) ενόσω εκτελείται η beq, αλλά μόλις η εκτέλεση της beq φτάσει στο ΜΕΜ και διαπιστωθεί ότι η πρόβλεψη έχει γίνει λάθος, οι εντολές αυτές θα απορριφθούν, και από τον επόμενο κύκλο θα αρχίζουν να φορτώνονται οι εντολές στη σωστή κατεύθυνση. Τόσο στη μία περίπτωση όσο και στην άλλη, ο χρονισμός του pipeline και τα stalls που εισάγονται τελικά είναι τα ίδια.). Αντίστοιχα, το διάγραμμα χρονισμού του pipeline για την περίπτωση όπου η εντολή beq είναι ΝΟΤ ΤΑΚΕΝ (x[i]<a, σωστή πρόβλεψη διακλάδωσης) είναι αυτό που φαίνεται στη συνέχεια. Οι προωθήσεις που γίνονται στο pipeline ακολουθούν την ίδια λογική με πριν. Επιπλέον, με την πρόβλεψη που γίνεται για την εντολή διακλάδωσης beq, φορτώνεται σωστά η επόμενη στη σειρά εντολή sw από τον 5ο κύκλο, με αποτέλεσμα να 3

αποφεύγονται τα stalls που είχαμε στην περίπτωση του ερωτήματος α, στην οποία έπρεπε να περιμένουμε μέχρι το στάδιο ΜΕΜ της beq για να επιλυθεί η διακλάδωση και να φορτωθεί η σωστή επόμενη εντολή. beq r4,zero,else IF - ID EX M WB sw r3,0(r2) IF ID EX M WB j Cont IF ID EX M WB add r2, r2, #8 - - - IF ID EX M WB bne r2, r6, Loop IF ID EX M WB lw r1,0(r2) - - - IF ID EX M WB Από τα δύο διαγράμματα χρονισμού συμπεραίνουμε ότι συνολικά απαιτούνται 100*14+1 = 1401 κύκλοι. γ) Έστω ότι επιθυμούμε την προσθήκη μιας νέας εντολής φόρτωσης-ενημέρωσης (lwu), η οποία εκτός από τη συνηθισμένη ανάγνωση από τη μνήμη πραγματοποιεί και ενημέρωση ενός από τους καταχωρητές με τη υπολογιζόμενη διεύθυνση. Δηλαδή η: lwu $r3, 1($r4) πραγματοποιεί τις λειτουργίες: $r3 = Mem[$r4 + 1] $r4 = $r4 + 1; Χωρίς να προσθέσετε επιπλέον write ports στο register file, τι άλλες αλλαγές θα κάνατε στην αρχιτεκτονική αγωγού 5 σταδίων του MIPS για την υλοποίηση της εντολής αυτής; Τι συνέπειες θα είχαν οι όποιες αλλαγές για την υλοποίηση της νέας εντολής (σε throughput, latency και hazards); Εφόσον δε μπορούμε να χρησιμοποιήσουμε επιπλέον write port στο register file, πρέπει να επεκτείνουμε το pipeline κατά ένα επιπλέον στάδιο για εγγραφή στο αρχείο καταχωρητών, έστω το WB2. Έτσι, για την εντολή lwu r3,1(r4): στο στάδιο ΕΧ θα γίνεται η πράξη r4+1, στο στάδιο ΜΕΜ θα προσπελάζεται το περιεχόμενο της θέσης μνήμης με διεύθυνση r4+1, στο στάδιο WB1 θα γίνεται εγγραφή του περιεχομένου αυτού στον καταχωρητή r3, και στο WB2 θα γίνεται εγγραφή της υπολογισθείσας τιμής r4+1 στον r4. Για όλες τις υπόλοιπες εντολές, στο στάδιο WB2 δε θα επιτελείται καμία λειτουργία. Έχοντας όμως δύο στάδια στο pipeline στα οποία γίνεται εγγραφή στο αρχείο καταχωρητών, υπάρχει περίπτωση να εμφανιστεί δομικός κίνδυνος όταν μία εντολή lwu ακολουθείται από μια εντολή η οποία γράφει στο αρχείο καταχωρητών, καθώς στον ίδιο κύκλο και οι δύο εντολές θα γράψουν ταυτόχρονα στο αρχείο καταχωρητών, με απρόβλεπτες συνέπειες, π.χ. lwu r1,0(r2) IF ID EX MEM WB1 WB2 add r4,r4,r8 IF ID EX MEM WB1 WB2 Γι' αυτό το λόγο, θα πρέπει να προστεθεί λογικό κύκλωμα στο pipeline ώστε όταν ανιχνεύεται η εκτέλεση μιας εντολής lwu, να ελέγχεται πάντα η επόμενή της εντολή. Αν η επόμενη εντολή είναι τέτοια ώστε να γράψει στο αρχείο καταχωρητών στο στάδιο WB1 όταν η lwu γράφει κι αυτή στον ίδιο κύκλο στο WB2, τότε το pipeline θα πρέπει να την καθυστερήσει κατά έναν κύκλο για να αποφευχθεί ο δομικός κίνδυνος, όπως φαίνεται στο παρακάτω διάγραμμα: 4

lwu r1,0(r2) IF ID EX MEM WB1 WB2 add r4,r4,r8 IF ID EX MEM - WB1 WB2 Αν η επόμενη εντολή δε γράφει στο αρχείο καταχωρητών ταυτόχρονα με την lwu (κι αυτό μπορεί να συμβεί είτε αν η εντολή δε γράφει ούτως ή άλλως στο αρχείο καταχωρητών οπότε δεν υπάρχει καμία δραστηριότητα κατά το WB1, ή αν γράφει αλλά έχει καθυστερήσει στο pipeline για άλλους λόγους, π.χ. stalls λόγω κινδύνων δεδομένων), τότε δεν υπάρχει λόγος να καθυστερήσουμε την εκτέλεσή της: lwu r1,0(r2) IF ID EX MEM WB1 WB2 beq r0,r3,l1 IF ID EX MEM WB1 WB2 Μία άλλη τροποποίηση που θα πρέπει να κάνουμε, είναι η επέκταση των ενδιάμεσων καταχωρητών του pipeline με κατάλληλο πεδίο όπου θα αποθηκεύεται η υπολογισθείσα τιμή της διεύθυνσης για την lwu (π.χ. η r4+1 στο αρχικό παράδειγμα) μετά το στάδιο ΕΧ, ώστε να αποθηκευτεί στον αντίστοιχο καταχωρητή κατά το στάδιο WB2. Αυτές οι τροποποιήσεις, εκτός από το επιπλέον stall που εισάγουν για να αποφευχθεί ο δομικός κίνδυνος που περιγράψαμε προηγουμένως, έχουν σαν συνέπεια την αύξηση των stalls στην περίπτωση που πρέπει να αποφευχθεί και κάποιος κίνδυνος δεδομένων, όπως φαίνεται στο ακόλουθο παράδειγμα (έστω ότι δεν έχουμε σχήμα προώθησης): lwu r1,0(r2) IF ID EX MEM WB1 WB2 beq r2,r0,l1 IF ID - - - ΕΧ ΜΕΜ WB1 WB2 Σε αυτό το παράδειγμα, η εντολή beq στον 3ο κύκλο χρειάζεται να διαβάσει την τιμή του καταχωρητή r2, που όμως θα γίνει διαθέσιμη στο τέλος του 6ου κύκλου από την εντολή lwu. Έτσι, χρειάζεται να εισάγουμε 3 stalls, δηλαδή ένα παραπάνω σε σχέση με το κλασικό pipeline 5 σταδίων. Το latency των εντολών, δηλαδή ο αριθμός των κύκλων από τη στιγμή που εισαχθεί μια εντολή στο pipeline μέχρι να βγει από αυτό, στην καλύτερη περίπτωση αυξάνεται κατά 1 κύκλο ρολογιού εξαιτίας του επιπλέον σταδίου. Το throughput, δηλαδή ο ρυθμός με τον οποίον εξέρχονται οι εντολές από το pipeline, παραμένει -θεωρητικάο ίδιος (1 εντολή/κύκλο). Πρακτικά όμως, επειδή με τις νέες τροποποιήσεις όπως είδαμε είναι πιθανό να συμβούν περισσότερα stalls ανά εντολή κατά μέσο όρο, το throughput μειώνεται. δ) Ξαναγράψτε τον αρχικό κώδικα χρησιμοποιώντας την εντολή lwu. Χρησιμοποιείστε τα κατάλληλα διαγράμματα χρονισμού για να δείξετε την εκτέλεση των εντολών του νέου κώδικα μέσα στην τροποποιημένη σωλήνωση του ερωτήματος γ. Όπως και στο ερώτημα β, υποθέστε ότι η σωλήνωση διαθέτει επιπλέον όλα τα δυνατά σχήματα προώθησης, καθώς και πρόβλεψη διακλάδωσης NOT TAKEN για την πρώτη εντολή διακλάδωσης υπό συνθήκη. Πόσοι κύκλοι απαιτούνται για την εκτέλεση του βρόχου; Με τη νέα εντολή lwu, και με την προϋπόθεση ότι ο $r2 πριν την εκκίνηση του βρόχου είναι μειωμένος κατά 8 σε σχέση με την αρχική περίπτωση, ο νέος κώδικας μπορεί να γραφτεί ως εξής: 5

Loop: lwu $r1, 8($r2) ;$r1=mem[r2+8](x[i]), r2=r2+8 slt $r4, $r1, $r3 ;if(x[i]<a) $r4=1 else $r4=0 beq $r4, $zero, Else sw $r3, 0($r2) ;Mem[$r2](x[i]) = a j Cont Else: add $r1, $r1, $r5 sw $r1, 0($r2) ;Mem[$r2](x[i]) += b Cont: bne $r2, $r6, Loop Exit: Το διάγραμμα χρονισμού του pipeline για την περίπτωση όπου η εντολή beq είναι ΤΑΚΕΝ (x[i] a, λάθος πρόβλεψη διακλάδωσης ), είναι το ακόλουθο. Σημειώνουμε ότι στην εκτέλεση της εντολής slt, δε χρειάζεται να εισάγουμε επιπλέον stall για την αποφυγή του δομικού κινδύνου με την lwu, καθώς η slt έχει ήδη καθυστερήσει κατά 1 κύκλο λόγω κινδύνου δεδομένων, επομένως η lwu θα βρίσκεται στο WB2, η slt θα βρίσκεται στο ΜΕΜ και δε θα υπάρχει πρόβλημα. lwu r1,8(r2) IF ID EX M W1 W2 beq r4,zero,else IF - ID EX M W1 W2 add r1,r1,r5 - - - IF ID EX M W1 W2 sw r1, 0(r2) IF ID EX M W1 W2 bne r2, r6, Loop IF ID EX M W1 W2 lwu r1,8(r2) - - - IF ID EX M W1 W2 Αντίστοιχα, το διάγραμμα χρονισμού του pipeline για την περίπτωση όπου η εντολή beq είναι ΝΟΤ ΤΑΚΕΝ (x[i]<a, σωστή πρόβλεψη διακλάδωσης) είναι αυτό που φαίνεται στη συνέχεια. lwu r1,8(r2) IF ID EX M W1 W2 beq r4,zero,else IF - ID EX M W1 W2 sw r3,0(r2) IF ID EX M W1 W2 j Cont IF ID EX M W1 W2 bne r2, r6, Loop - - - IF ID EX M W1 W2 lwu r1,8(r2) - - - IF ID EX M W1 W2 Από τα δύο διαγράμματα χρονισμού συμπεραίνουμε ότι συνολικά απαιτούνται 100*13+2 = 1302 κύκλοι. 6