Θέµατα Φεβρουαρίου 2-2 cslab@ntua 2-
Θέµα ο (3%): Έστω η παρακάτω ακολουθία εντολών που χρησιµοποιείται για την αντιγραφ από µια θέση µνµης σε µια άλλη (memory-to-memory copy): lw $2, ($) sw $2, 2($) i) Εµφανίζει η παραπάνω ακολουθία καθυστέρηση στην εκτέλεση της σε µια δίοδο δεδοµένων µε αρχιτεκτονικ αγωγού (pipelined datapath); Σχεδιάστε ένα διάγραµµα χρονισµού σε δίοδο δεδοµένων των σταδίων, όπως αυτ φαίνεται στο σχµα της επόµενης σελίδας. ii) είξτε πως µπορεί κανείς να χρησιµοποισει ένα σχµα προώθησης, ανάλογο µε αυτό που φαίνεται στο παρακάτω σχµα για τις εντολές, ώστε να αποφεύγει την (ενδεχόµενη) καθυστέρηση. ώστε τις συνθκες (If (ID/EX.) όπως αυτές των σελ. 8-83) που πρέπει να ισχύουν για να γίνει η προώθηση. iii) Ξαναγράψτε την έκφραση στη σελίδα του βιβλίου ώστε να µην ανιχνεύεται πλέον η καθυστέρηση εξ αιτίας της παραπάνω ακολουθίας. cslab@ntua 2-
Θέµα ο (3%) συνέχεια cslab@ntua 2-
Λύση ου θέµατος (i) Εφαρµόζοντας τις υπάρχουσες προβλέψεις forwarding : Υποχρεωτικά εισάγεται µία καθυστέρηση : If ID/EX.MemRead and // lw στο στάδιο ID/EX ((ID/EX.RegRt = IF/ID.RegRs) or // η επόµενη εντολ χρησιµοποιεί (ID/EX.RegRt = IF/ID.RegRt)) // τον RegRt της lw then stall Και στη συνέχεια µε forwarding : If (MEM/WB.RegWrite and // lw στο στάδιο MEM/WB (MEM/WB.RegRt ) and // η επόµενη εντολ χρησιµοποιεί (MEM/WB.RegRt = ID/EX.RegRt)) // τον υποψφιο Reg της lw για WB then forward IF-ID-EX-MEM-WB IF - s -ID -EX -MEM WB cslab@ntua 2-
Λύση ου θέµατος (ii) Μπορούµενα εισάγουµε το εξς forwarding: IF-ID-EX-MEM-WB IF-ID-EX -MEM WB Προσθέτοντας τον έλεγχο : If (ID/EX.MemWrite and EX/MEM.MemRead and (ID/EX.RegRt=EX/MEM.RegRt and EX/MEM.RegRt )) then mux = else mux = M U X cslab@ntua 2-
Λύση ου θέµατος (ii) 2η Λύση : If (EX/MEM.MemWrite and MEM/WB.RegWrite and (EX/MEM.RegRt=MEM/WB.RegRt and MEM/WB.RegRt )) then mux = else mux = M U X cslab@ntua 2-
Λύση ου θέµατος (iii) Ο βρόχος πρόβλεψης των stalls µετά από εντολ lw (για την περίπτωση που στην επόµενη εντολ χρησιµοποιείται η τιµ της θέσης µνµης που φορτώνεται από τη µνµη) πρέπει να αλλάξει: If ID/EX.MemRead and ((ID/EX.RegRt = IF/ID.RegRs) or (ID/EX.RegRt = IF/ID.RegRt)) and not (IF/ID.MemWrite and (ID/EX.RegRt = IF/ID.RegRt)) and ID/EX.RegRt then stall cslab@ntua 2-
Θέµα 2ο (2%): Θέλουµενα συγκρίνουµε τη αποδοτικότητα χρσης µνµης που εµφανίζουν οι διάφορες αρχιτεκτονικές συνόλου εντολών (instruction set architectures) για δύο συγκεκριµένες ακολουθίες εντολών. Οι αρχιτεκτονικές συνόλου εντολών είναι: Συσσωρευτ (accumulator): (LDA mem_address, STA mem_address) Μνµης-Μνµης: (τρία ορίσµατα σε κάθε εντολ που είναι διευθύνσεις µνµης: load A, B, C κλπ) Στοίβας: (όλες οι πράξεις γίνονται στη κορυφ της στοίβας. Μόνο οι push και pop προσπελαύνουν τη µνµη, και όλες οι άλλες εντολές βγάζουν τους τελεστέους τους από τη στοίβα, εκτελείται η αντίστοιχη πράξη, και το αποτέλεσµα αποθηκεύεται στη στοίβα. Η εντολ dup ξανααποθηκεύει στη στοίβα το στοιχείο που ταν στην κορυφ της. Push A, Pop B, mul, sub κλπ). Φόρτωσης/Αποθκευσης (Load/Store): (όλες οι αριθµητικές εντολές έχουν ορίσµατα καταχωρητές, υπάρχουν καταχωρητές γενικού σκοπού, άρα bit για δεικτοδότηση κάθε ορίσµατος) Για να µετρσουµε την αποδοτικότητα στη χρση µνµης κάνουµε τις παρακάτω υποθέσεις: Το τµµα opcode (κώδικας εντολς) έχει µκος byte (8 bit) Οι διευθύνσεις µνµης έχουν µκος 2 bytes ( bit) Όλα τα ορίσµατα-δεδοµένα έχουν µκος bytes (32 bit) Όλες οι εντολές έχουν µκος ακέραιο αριθµό από bytes. εν υπάρχουν άλλου είδους βελτιστοποισεις αναφοράς στη µνµη, και όλες οι µεταβλητές A,B,C,D και E είναι αρχικά στη µνµη. cslab@ntua 2-
Θέµα 2ο (2%): i) γράψτε τις τέσσερις ακολουθίες εντολών για τα παραπάνω Instruction Sets της εντολς A=B+C. Για κάθε ακολουθία µετρστε το σύνολο των instruction και data bytes που φέρνετε από τη µνµη. α) Ποια αρχιτεκτονικ είναι πιο αποδοτικ σε σχέση µε το σύνολο των instruction bytes; β) Ποια αρχιτεκτονικ είναι πιο αποδοτικ σε σχέση µε το συνολικό πλθος των bytes (instruction+data) που ανταλλάσσονται µεταξύ CPU και µνµης (memory bandwidth) ii) επαναλάβετε το (i) για A= B* C D= A C E= A+ C Aν τα αποτελέσµατα είναι διαφορετικά από ότι στο (i), σχολιάστε. cslab@ntua 2-
Λύση 2ου θέµατος (i) : A = B + C Instr data ( bytes). load B + 2 add C + 2 store A + 2 2 2. add A, B, C + 2 + 2 + 2 3 7 2 3. push B + 2 push C + 2 add pop A + 2 2. load r, B +. + 2 = load r2, C +. + 2 = add r3, r, r2 + 3. = 3 store A, r3 +. + 2 = 2 cslab@ntua 2-
A = B * C Λύση 2ου θέµατος (ii) : D = A C E = A + C Instr data ( bytes). load B 3 mul C 3 store A 3 sub C 3 store D 3 load A 3 add C 3 store E 3 2 + 32 = 2. mul A, B, C 7 2 sub D, A, C 7 2 add E, A, C 7 2 cslab@ntua 2-2 + 3 = 7 Instr data 3. push C 3 dup push B 3 mul dup dup pop A 3 push C 3 sub pop D 3 add pop E 3 2 + 2 = 8
A = B * C Λύση 2ου θέµατος (ii) : D = A C E = A + C Instr data ( bytes). load r, B load r2, C mul r3, r, r2 3 store A, r3 sub r, r3, r2 3 store D, r add r, r3, r2 3 store E, r 2 + 2 = cslab@ntua 2-
Έστω το παρακάτω τµµα κώδικα: Loop: lw $, ($2) addi $, $, sw ($2), $ addi $2, $2, sub $, $3, $2 bnez cslab@ntua 2- Θέµα 3ο (3%): $, loop Η αρχικ τιµ του $3 είναι $2+3. Χρησιµοποιούµε µια δίοδο δεδοµένων µε αρχιτεκτονικ αγωγού (pipelined datapath) των σταδίων (IF, ID, EX, MEM, WB). Υποθέστε ότι όλες οι αναφορές στη µνµη ικανοποιούνται από τη κρυφ µνµη (cache hits).. είξτε το διάγραµµα εκτέλεσης των επιµέρους φάσεων για κάθε εντολ, µέσα στην αρχιτεκτονικ αγωγού, χωρίς την ύπαρξη κανενός είδους σχµατος προώθησης (διάγραµµα εκτέλεσης όπως στις διαφάνειες του µαθµατος). Υποθέστε ότι µπορείτε να διαβάσετε και να γράψετε στον ίδιο κύκλο µέσω του register file. Υποθέστε ότι η διακλάδωση γίνεται µε καθάρισµα (flushing) του αγωγού (pipeline). Πόσους κύκλους χρειάζεται για να εκτελεστεί ο παραπάνω βρόχος; 2. είξτε το διάγραµµα εκτέλεσης των επιµέρους φάσεων για κάθε εντολ, µέσα στην αρχιτεκτονικ αγωγού, µε την υποστριξη σχµατος προώθησης. Υποθέστε ότι µπορείτε να διαβάσετε και να γράψετε στον ίδιο κύκλο µέσω του register file. Υποθέστε ότι κάθε φορά θεωρούµε ότι δεν πρόκειται να γίνει η διακλάδωση (branch not taken). Πόσους κύκλους χρειάζεται τώρα για να εκτελεστεί ο παραπάνω βρόχος;
Λύση 3ου θέµατος (i) lw $, ($2) IF D EX MEM-WB addi $, $, IF s -s -ID EX MEM-WB sw ($2), $ IF s- s -ID EX MEM-WB addi $2, $2, IF-D EX MEM-WB sub $, $3, $2 IF-s s ID-EX MEM-WB bnez $, loop IF-s s -D EX MEM-WB... Επανάληψη του βρόχου : 3 / = φορές Συνολικά : x + 2 = 87 = cycles cslab@ntua 2-
Λύση 3ου θέµατος (ii) lw $, ($2) IF D EX MEM-WB addi $, $, IF ID s -EX MEM-WB sw ($2), $ IF s -ID EX MEM-WB addi $2, $2, IF-D EX MEM-WB sub $, $3, $2 IF-ID-EX MEM-WB bnez $, loop IF-ID EX MEM-WB... Επανάληψη του βρόχου : 3 / = φορές Συνολικά : x + 2 = 83 = cycles cslab@ntua 2-
Θέµα ο (%): ίνεται µια σειρά αναφορών σε διευθύνσεις λέξεων στη µνµη ενός υπολογιστ:,, 8,, 2, 7,,,,,, 3,,,, 7. Υποθέτουµε ότι έχουµε κρυφ µνµη µε οργάνωση: απευθείας απεικόνισης (direct mapped) µε blocks, όπου κάθε block έχει µέγεθος µια λέξη (word), απευθείας απεικόνισης (direct mapped), µε λέξεις (words) συνολικό µέγεθος cache, όπου κάθε block έχει µέγεθος τέσσερεις () λέξεις. συνόλου συσχέτισης 2-δρόµων (2-way set associative) µε συνολικό µέγεθος λέξεις (words) όπου κάθε block έχει µέγεθος µια λέξη (Υποθέστε LRU αλγόριθµο αντικατάστασης). είξτε για τις παραπάνω περιπτώσεις οργάνωσης της κρυφς µνµης, για κάθε αναφορά, αν είναι επιτυχς (hit) όχι (miss) καθώς και την τελικά περιεχόµενα της κρυφς µνµης. cslab@ntua 2-
Λύση ου θέµατος (i) index valid tag x-3 ιαθέτουµε cache µε blocks = 2 blocks index = (mem address) mod αλλιώς τα τελευταία bits της διεύθυνσης (σε 2-δικ µορφ) Αρχικά η cache είναι κεν (όλα τα valid flags = ) cslab@ntua 2-2 3 7 8 2 3
Λύση ου θέµατος (i) Κλση της διεύθυνσης : = index = mod = index valid tag x-3 2 3 7 8 2 3 cslab@ntua 2-
Λύση ου θέµατος (i) miss 8 2 7 3 7 cslab@ntua 2- = index = mod = index valid tag x-3 2 3 7 8 2 3 mem[]
Λύση ου θέµατος (i) miss 8 2 7 3 7 cslab@ntua 2- = index = mod = index valid tag x-3 2 3 7 8 2 3 mem[]
Λύση ου θέµατος (i) miss miss 8 2 7 3 7 cslab@ntua 2- = index = mod = index valid tag x-3 2 3 7 8 2 3 mem[] mem[]
Λύση ου θέµατος (i) miss miss 8 2 7 3 7 cslab@ntua 2-8 = index = 8 mod = 8 index valid tag x-3 2 3 7 8 2 3 mem[] mem[]
Λύση ου θέµατος (i) miss miss 2 7 3 7 cslab@ntua 2-8 = index = 8 mod = 8 index valid tag x-3 2 3 7 8 2 3 mem[] mem[] mem[8]
Λύση ου θέµατος (i) miss miss miss 2 7 3 7 cslab@ntua 2- = index = mod = index valid tag x-3 2 3 7 8 2 3 mem[] mem[] mem[] mem[8]
Λύση ου θέµατος (i) miss miss miss 2 miss 7 3 7 cslab@ntua 2-2 = index = 2 mod = index valid tag x-3 2 3 7 8 2 3 mem[] mem[] mem[] mem[8] tags :! =
Λύση ου θέµατος (i) miss miss miss 2 miss 7 3 7 cslab@ntua 2-2 = index = 2 mod = index valid tag x-3 2 3 7 8 2 3 mem[] mem[2] mem[] mem[8]
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss 3 7 cslab@ntua 2-7 = index = 7 mod = index valid tag x-3 2 3 7 8 2 3 mem[] mem[2] mem[] mem[8]
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss 3 7 cslab@ntua 2-7 = index = 7 mod = index valid tag x-3 mem[7] 2 3 mem[2] mem[] 7 8 mem[8] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss 3 7 cslab@ntua 2- = index = mod = 3 index valid tag x-3 mem[7] 2 3 mem[2] mem[] 7 8 mem[8] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss 3 7 cslab@ntua 2- = index = mod = 3 index valid tag x-3 mem[7] 2 3 mem[] mem[2] mem[] 7 8 mem[8] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss miss 3 7 cslab@ntua 2- = index = mod = 8 index valid tag x-3 mem[7] 2 3 mem[] mem[2] mem[] 7 8 mem[8] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss miss 3 7 cslab@ntua 2- = index = mod = 8 index valid tag x-3 mem[7] 2 3 mem[] mem[2] mem[] 7 8 mem[] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss miss miss 3 7 cslab@ntua 2- = index = mod = index valid tag x-3 mem[7] 2 3 mem[] mem[2] mem[] 7 8 mem[] mem[] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss miss miss miss 3 7 cslab@ntua 2- = index = mod = index valid tag x-3 mem[7] 2 3 mem[] mem[2] mem[] 7 8 mem[] mem[] mem[] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss miss miss miss miss 3 7 cslab@ntua 2- = index = mod = index valid tag x-3 mem[7] 2 3 mem[] mem[2] mem[] 7 8 mem[] mem[] mem[] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss miss miss miss miss 3 miss 7 cslab@ntua 2-3 = index = 3 mod = index valid tag x-3 mem[7] 2 3 mem[] mem[] mem[] 7 8 mem[] mem[] mem[] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss miss miss miss miss 3 miss 7 cslab@ntua 2-3 = index = 3 mod = index valid tag x-3 mem[7] 2 3 mem[] mem[] mem[] 7 8 mem[] mem[] mem[3] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss miss miss miss miss 3 miss hit 7 cslab@ntua 2- = index = mod = index valid tag x-3 mem[7] 2 3 mem[] mem[] mem[] 7 8 mem[] mem[] mem[3] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss miss miss miss miss 3 miss hit miss 7 cslab@ntua 2- = index = mod = index valid tag x-3 mem[7] 2 3 mem[] mem[] mem[] mem[] 7 8 mem[] mem[] mem[3] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss miss miss miss miss 3 miss hit miss hit 7 cslab@ntua 2- = index = mod = index valid tag x-3 mem[7] 2 3 mem[] mem[] mem[] mem[] 7 8 mem[] mem[] mem[3] 2 3
Λύση ου θέµατος (i) miss miss miss 2 miss 7 miss miss miss miss miss miss 3 miss hit miss hit 7 hit cslab@ntua 2-7 = index = 7 mod = index valid tag x-3 mem[7] 2 3 mem[] mem[] mem[] mem[] 7 8 mem[] mem[] mem[3] 2 3
Λύση ου θέµατος (ii) index = ( (mem address) div ) mod ιαθέτουµε cache µε blocks / = 2 = sets = 2 sets αλλιώς τα 2bitsτης διεύθυνσης που βρίσκονται στην 3- lsb θέση (σε 2-δικ µορφ) index valid tag x-3 x-7 x8-b xc-f 2 3 cslab@ntua 2- Αρχικά η cache είναι κεν (όλα τα valid flags = )
Λύση ου θέµατος (ii) miss 8 2 7 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[] mem[2] mem[3] 2 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss 8 2 7 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[] mem[2] mem[3] mem[] mem[] mem[] mem[7] 2 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss 2 7 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[] mem[2] mem[3] mem[] mem[] mem[] mem[7] 2 mem[8] mem[] mem[] mem[] 3 8 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 7 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[] mem[2] mem[3] mem[] mem[] mem[] mem[7] 2 mem[8] mem[] mem[] mem[] 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[] mem[2] mem[3] mem[] mem[] mem[] mem[7] 2 mem[8] mem[] mem[] mem[] 3 2 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[] mem[2] mem[3] mem[2] mem[2] mem[22] mem[23] 2 mem[8] mem[] mem[] mem[] 3 2 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[] mem[2] mem[3] mem[2] mem[2] mem[22] mem[23] 2 mem[8] mem[] mem[] mem[] 3 7 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[2] mem[2] mem[22] mem[23] 2 mem[8] mem[] mem[] mem[] 3 7 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[2] mem[2] mem[22] mem[23] 2 mem[8] mem[] mem[] mem[] 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[2] mem[2] mem[22] mem[23] 2 mem[] mem[7] mem[8] mem[] 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss miss 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[2] mem[2] mem[22] mem[23] 2 mem[] mem[7] mem[8] mem[] 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss miss 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[2] mem[2] mem[22] mem[23] 2 mem[8] mem[] mem[] mem[] 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss miss hit 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[2] mem[2] mem[22] mem[23] 2 mem[8] mem[] mem[] mem[] 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss miss hit miss 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[2] mem[2] mem[22] mem[23] 2 mem[8] mem[] mem[] mem[] 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss miss hit miss 3 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[] mem[] mem[] mem[7] 2 mem[8] mem[] mem[] mem[] 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss miss hit miss 3 miss 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[] mem[] mem[] mem[7] 2 mem[8] mem[] mem[] mem[] 3 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss miss hit miss 3 miss 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[] mem[] mem[] mem[7] 2 mem[] mem[] mem[2] mem[3] 3 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss miss hit miss 3 miss hit 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[] mem[] mem[] mem[7] 2 mem[] mem[] mem[2] mem[3] 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss miss hit miss 3 miss hit hit 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[] mem[] mem[] mem[7] 2 mem[] mem[] mem[2] mem[3] 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss miss hit miss 3 miss hit hit miss 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[] mem[] mem[] mem[7] 2 mem[] mem[] mem[2] mem[3] 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss miss hit miss 3 miss hit hit miss 7 index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[] mem[] mem[] mem[7] 2 mem[8] mem[] mem[] mem[] 3 = cslab@ntua 2-
Λύση ου θέµατος (ii) miss miss hit 2 miss 7 miss hit miss miss hit miss 3 miss hit hit miss 7 hit index valid tag x-3 x-7 x8-b xc-f mem[] mem[7] mem[8] mem[] mem[] mem[] mem[] mem[7] 2 mem[8] mem[] mem[] mem[] 3 7 = cslab@ntua 2-
Λύση ου θέµατος (iii) index valid tag x-3 ιαθέτουµε cache µε blocks / 2 = 3 = 8 sets = 2 sets index = (mem address) mod 8 αλλιώς τα 3 τελευταία bits της διεύθυνσης (σε 2-δικ µορφ) Αρχικά η cache είναι κεν (όλα τα valid flags = ) cslab@ntua 2-2 3 7
Λύση ου θέµατος (iii) miss 8 2 7 3 7 cslab@ntua 2- = index = mod 8 = index valid tag x-3 2 3 7
Λύση ου θέµατος (iii) miss 8 2 7 3 7 cslab@ntua 2- = index = mod 8 = index valid tag x-3 2 3 7 mem[]
Λύση ου θέµατος (iii) miss miss 8 2 7 3 7 cslab@ntua 2- = index = mod 8 = index valid tag x-3 2 3 7 mem[] mem[]
Λύση ου θέµατος (iii) miss miss 2 7 3 7 cslab@ntua 2-8 = index = 8 mod 8 = index valid tag x-3 2 3 7 mem[8] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 7 3 7 cslab@ntua 2- = index = mod 8 = index valid tag x-3 2 3 7 mem[8] mem[] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 3 7 cslab@ntua 2- = index = 2 mod 8 = index valid tag x-3 2 3 7 mem[8] mem[] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 3 7 cslab@ntua 2- = index = 2 mod 8 = index valid tag x-3 2 3 7 mem[8] mem[] mem[2] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss 3 7 cslab@ntua 2-7 = index = 7 mod 8 = index valid tag x-3 2 3 7 mem[8] mem[] mem[2] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss 3 7 cslab@ntua 2-7 = index = 7 mod 8 = index valid tag x-3 2 3 7 mem[8] mem[7] mem[] mem[2] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss 3 7 cslab@ntua 2- = index = mod 8 = 3 index valid tag x-3 2 3 7 mem[8] mem[7] mem[] mem[] mem[2] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss 3 7 cslab@ntua 2- = index = mod 8 = index valid tag x-3 2 3 7 mem[8] mem[7] mem[] mem[] mem[2] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss 3 7 cslab@ntua 2- = index = mod 8 = index valid tag x-3 2 3 7 mem[] mem[8] mem[7] mem[] mem[] mem[2] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss miss 3 7 cslab@ntua 2- = index = mod 8 = index valid tag x-3 2 3 7 mem[] mem[8] mem[7] mem[] mem[] mem[2] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss miss 3 7 cslab@ntua 2- = index = mod 8 = index valid tag x-3 2 3 7 mem[] mem[8] mem[] mem[7] mem[] mem[2] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss miss miss 3 7 cslab@ntua 2- = index = mod 8 = 3 index valid tag x-3 2 3 7 mem[] mem[8] mem[] mem[7] mem[] mem[2] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss miss miss 3 7 cslab@ntua 2- = index = mod 8 = 3 index valid tag x-3 2 3 7 mem[] mem[8] mem[] mem[7] mem[] mem[] mem[2] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss miss miss hit 3 7 cslab@ntua 2- = index = mod 8 = index valid tag x-3 2 3 7 mem[] mem[8] mem[] mem[7] mem[] mem[] mem[] mem[2] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss miss miss hit 3 miss 7 cslab@ntua 2-3 = index = 3 mod 8 = 3 index valid tag x-3 2 3 7 mem[] mem[8] mem[] mem[7] mem[] mem[] mem[] mem[2] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss miss miss hit 3 miss 7 cslab@ntua 2-3 = index = 3 mod 8 = 3 index valid tag x-3 2 3 7 mem[] mem[8] mem[] mem[7] mem[3] mem[] mem[] mem[2] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss miss miss hit 3 miss hit 7 cslab@ntua 2- = index = mod 8 = index valid tag x-3 2 3 7 mem[] mem[8] mem[] mem[7] mem[3] mem[] mem[] mem[2] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss miss miss hit 3 miss hit miss 7 cslab@ntua 2- = index = mod 8 = index valid tag x-3 2 3 7 mem[] mem[8] mem[] mem[7] mem[3] mem[] mem[] mem[2] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss miss miss hit 3 miss hit miss hit 7 cslab@ntua 2- = index = mod 8 = index valid tag x-3 2 3 7 mem[] mem[8] mem[] mem[7] mem[3] mem[] mem[] mem[2] mem[] mem[]
Λύση ου θέµατος (iii) miss miss miss 2 miss 7 miss miss miss miss miss hit 3 miss hit miss hit 7 hit cslab@ntua 2- = index = 7 mod 8 = index valid tag x-3 2 3 7 mem[] mem[8] mem[] mem[7] mem[3] mem[] mem[] mem[2] mem[] mem[]