ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών (ΗΜΜΥ) HMΜY 212 Οργάνωση Η/Υ και Μικροεπεξεργαστές Εαρινό Εξάμηνο, 2007 Τελική Εξέταση, Απαντήσεις/Λύσεις Άσκηση 1: Assembly για MIPS (10 μονάδες) 250 I Αρχικό 5000, τελικό 6000, διάστημα βηματισμού 4 II Αρχική διεύθυνση W: 6000, αριθμός στοιχείων: 250, συνάρτηση: dot product, δεκαδικό μέρος γινόμενου Άσκηση 2: Assembly για MIPS (15 μονάδες) Διεύθυνση μνήμης Πράξη (δεκαδικός αριθμός) 1000 Ε= D - Ε 1004 A = A + B 1008 A = A + C = A + B + C 1012 B = 3 1016 A/B 1020 A = A/B = (A + B + C)/3 1024 Δεν ισχύει η διακλάδωση 1028 B = 256E 1032 B = B E = 256E E = 255E 1036 B/D 1040 B = B/D = 255E/D = (255(D-E))/D 1044 D = 42 1048 FD 1052 C = FD 1056 C/E = FD/E 1060 C = FD/E 1064 C = C + G = FD/E + G = (42F/(D-E)) + G A + B + C 255( D E) F A = B = C = 42 + G 3 D D E I Μπορεί να υπάρξει περίπτωση διαίρεσης με μηδέν (divide by zero error). Σελίδα 1 από 6
Άσκηση 3: Assembly για MIPS (10 μονάδες) Ετικέτα (label) Εντολή (MIPS instruction) Σχόλιο (comment) Sum: addi $s2, $s2, $zero # Αρχικά $s2 = 0 addi $s1, $zero, 4096 # Φορτώστε δείκτη μνήμης διανύσματος Loop1: addi $s1, $s1, -4 # Μειώστε δείκτη κατά τέσσερα bytes lw $s3, 5000($s1) # Φορτώστε αριθμό add $s2, $s2, $s3 # Πρόσθεση στο σύνολο bne $s1, $zero, Loop1 # Επανάληψη βρόγχου εάν ισχύει Jr $ra # Επιστροφή στον caller # # I Pseudodirect, register, immediate, base, PC-relative addressing. Άσκηση 4: Αριθμητική (15 μονάδες) 1010101.101 = 1.010101101 2 6 Πόλωση του εκθέτη= 01111111 + 00000110 = 10000101 ΙΕΕΕ 754 = 0 10000101 01010110100000000000000 bin = 42AB4000 hex I Σε δυαδική μορφή: 0 10000011 00101000000000000000000 Πρόσημο: 0, θετικός Εκθέτης = 10000011 01111111 = 10000101 = 00000100 = 4 Κλάσμα = 2 4 1.00101 = 10010.1 = 1 16 + 1 2 + 1 ½ = +18.5 II Πρώτα ευθυγραμμίστε το δυαδικό ψηφίο και για τους δύο αριθμούς ολισθίωντας το significant του μικρότερου αριθμό στα δεξιά μέχρι που οι εκθέτες των δύο αριθμών να είναι οι ίδιοι. Τώρα μετατρέψετε τα significants σε αναπαράσταση συμπληρώματος του δύο χρησιμοποιώντας το πρόσημο του κάθε αριθμού που δηλώνει εάν είναι θετικός η αρνητικός. Τώρα προσθέστε τα significants των δύο αριθμών χρησιμοποιώντας τα αποτελέσματα που λάβατε από το πιο πάνω βήμα. Επέκταση του πρόσημου στον αριθμό δυαδικών ψηφιών αναπαράστασης ανάλογα με το πιο σημαντικό ψηφίο που λάβαμε από το πιο πάνω βήμα. Το αποτέλεσμα είναι ένας μη κανονικοποιημένος αριθμός. Κανονικοπιήστε τον αριθμό ολισθίωντας τον αναλόγως προς τα δεξιά μέχρι που το πρώτο ψηφίο να είναι 1. Η κάθε ολίσθηση πρέπει να συνοδεύεται με ανάλογη προσαρμογή του εκθέτη. Σελίδα 2 από 6
Άσκηση 5: Εκτίμηση Απόδοσης (10 μονάδες) Βασικά πρέπει και στα δύο μέρη των εξισώσεων σας να συμφωνούν οι μανάδες. Την πρώτη εξίσωση την έχουμε μάθει επανειλημμένα στην τάξη. Η δεύτερη εξίσωση είναι επακόλουθη της πρώτης. Η τρίτη εξίσωση είναι κάπως πιο δύσκολη. E s = I CPI CT I Ε c = I CPI II P S = CR/CPI Άσκηση 6: Εκτίμηση Απόδοσης (10 μονάδες) Ο νόμος του Amdhal λέει: Χρόνος εκτέλεσης μετά τη βελτίωση = ανεπηρέαστος χρόνος εκτέλεσης + (επηρεαζόμενος χρόνος εκτέλεσης / ποσοστό βελτίωσης) = 10% + 90%/1000 =~10%, ~90% βελτίωση (που δεν είναι και αρκετά λογικό) Καλό είναι να απορρίψετε την πρόταση του πωλητή! I Χρόνος εκτέλεσης = I CPI Clock cycle time Χρόνος Α = 100,000 1.3 (1/600MHZ) Χρόνος B = I B B 2.5 (1/750MHZ) Εάν ο αριθμός εντολών είναι ο ίδιος και για τους δύο Η/Υ, τότε: I B B = (750MHz 1.3 100,000) / (600MHz 2.5) = 65,000 Άσκηση 7: Σχεδιασμός Κρυφής Μνήμης (15 μονάδες) (α) Άμεσης απεικόνισης Address bits = log 2 (64M) = 26 Index bits = log 2 (128k/4) = 15 Tag bits = 26 15 log 2 (4) = 9 bits (β) Set associative Number of sets = cache word size / (words/set words/block) = 128k / (8 64) = 2 8 So number of index bits = 8 Number of bits for each word = log 2 (64) = 6 Tag bits = 26 8 6 = 12 bits Σελίδα 3 από 6
I Main memory size = 16 words per block number of blocks in memory = 64 16 = 2 10 Χρειαζόμαστε 10 ψηφία για την κυρία μνήμη. Εφόσον έχουμε 4 set χρειαζόμαστε 2 ψηφία για διευθύνσεις set. Έχουμε 16 λέξεις ανά set, άρα χρειαζόμαστε log 2 (16) = 4 ψηφία για κάθε λέξη σε ένα set. Πεδίο TAG = 10 2 4 = 4 ψηφιά Άρα κοιτάμε τα 4 MSB της διεύθυνσης κεντρικής μνήμης για να κάνουμε σύγκριση με το πεδίο TAG στην κρυφή μνήμη. (α) 0x37A = 1101 11 1010 Σύγκριση 1101 με TAG κρυφής μνήμης Υπάρχει! Επιτυχία, cache hit! (α) 0x22C = 1000 10 1100 Σύγκριση 1000 με TAG κρυφής μνήμης Υπάρχει! Επιτυχία, cache hit! Άσκηση 8: Σύντομες Γενικές Ερωτήσεις (10 μονάδες) (1) κ (2) α (3) ι (4) ε (5) β (6) η (7) γ Ερώτηση 1: Λάθος, RISC Ερώτηση 2 : Λάθος, μπορεί να υλοποιηθεί με εντολές shift-add Ερώτηση 3 : Λάθος, (-1) a 1.b 2 c (προσέξτε το 1) Ερώτηση 4 : Σωστό Ερώτηση 5 : Λάθος, μεταφέρουν και στοιχεία ελέγχου Άσκηση 9: Διασωλήνωση MIPS 5 Σταδίων Κίνδυνοι (15 μονάδες) (5 μονάδες) Κύκλος 1 2 3 4 5 6 7 8 9 10 11 12 13 lw $s5, 8($s2) IF ID EX ME WB add s1,$s5,$s6 IF ID S EX ME WB lw $s3, 12($s2) IF S ID EX ME WB sub $s1,$s1,$s3 IF ID S EX ME WB sw $s1,4($s2) IF S ID EX ME WB Χρειάζονται 11 κύκλοι για την εκτέλεση του κώδικα, περιέχει 2 stalls. I Ο αναδιαταγμένος κώδικας έχει ως εξής: Σελίδα 4 από 6
lw $s5, 8($s2) lw $s3, 12($s2) add s1,$s5,$s6 sub $s1,$s1,$s3 sw $s1,4($s2) Άσκηση 10: Σύγκριση Απόδοσης Επεξεργαστών (15 μονάδες) Μ1 = 1 / (2 250ps + 150ps + 2 100ps) = 1/850ps = 1.176GHz M2 = 1 / 250ps = 4GHz M3 = 1 / 250ps = 4GHz I CPI M1 = 1 CPI M2 = (20% 5 κύκλους load) + (15% 4 κύκλους store) + (40% 4 κύκλους arithmetic) + (25% 4 κύκλους branch και jump) = 1 + 0.6 + 1.6 + 1 = 4.2 CPI M3 = (10% 1 κύκλο load + 10% 2 κύκλους load με ένα κύκλο καθυστέρησης) + (15% 1 κύκλο store) + (40% 1 κύκλο arithmetic) + (7.5% 1 κύκλο επιτυχούς branch) + (7.5% 2 κύκλους ανεπιτυχούς branch) + (10% 2 κύκλους jump) = 0.3 + 0.15 + 0.4 + 0.075 + 0.15 + 0.2 = 1.125 Execution time M1 = 1,000,000 1 850ps = 0.85ms Execution time M2 = 1,000,000 4.2 250ps = 1.05ms Execution time M3 = 1,000,000 1.125 250ps = 0.281ms Performance = 1 / execution time M3 has the best performance since it has the smallest execution time II Speedup M3 over M1 = 0.85ms / 0.281ms = 3.02 Speedup M2 over M2 = 1.05ms / 0.85ms = 1.24 Άσκηση 11: Κρυφή Μνήμη (15 μονάδες) Έ Cache Index Direct-mapped 2-way Set Associative 0000 0, 16,48,0,48 0,48 (48 16,0 hit) 0001 49 49 0010 50 50 0011 0100 0101 5, 5 (hit) 5, 5 (hit) 0110 0111 1000 1001 1010 1011 Σελίδα 5 από 6
I 1100 1101 1110 1111 15 15 No. Cache Hits No. Cache Misses Direct-mapped 2-way Set Associative 1 2 9 8 Άσκηση 12: Απόδοση με Κρυφή Μνήμη (15 μονάδες) Instruction miss cycles = 2% 120 AE = 2.4AE Data miss cycles = 4% 120 AE 32% = 1.536AE Total memory stalls = 2.4AE + 1.535AE = 3.935AE I CPI stall = CPI + 3.935 = 2 + 3.935 = 5.935 II Speedup = CPU execution time with stalls / CPU execution time without stalls =AE CPI stall clock speed / AE CPI no stall clock speed = 5.935 / 2 = 2.9675 Σελίδα 6 από 6