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

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

Ασκήσεις Caches

Ασκήσεις Caches

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

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

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

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

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

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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Η ιεραρχία της μνήμης

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

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

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

Αρχιτεκτονική Υπολογιστών II Ενδεικτικές απαντήσεις στα θέματα των εξετάσεων

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

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

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

ΕΠΛ 605: ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2018 ΕΡΓΑΣΙΑ 3 (13/10/2018) Ηµεροµηνία Παράδοσης δεύτερου µέρους: 18/10/2018

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

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

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

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

Processor-Memory (DRAM) ιαφορά επίδοσης

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

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

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

ΠΛΕ- 027 Μικροεπεξεργαστές

Processor-Memory (DRAM) ιαφορά επίδοσης

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

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

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

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

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

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

Εικονική Μνήμη (Virtual Μemory)

Processor-Memory (DRAM) Διαφορά επίδοσης

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

Εικονική Μνήμη (Virtual Μemory)

Οργάνωση Ιεραρχίας Μνήμης - Caches

Υ- 01 Αρχιτεκτονική Υπολογιστών Ιεραρχία μνήμης: προχωρημένα θέματα

Cach O p i timisati tions

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

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

(advanced_ca, ακ. έτος Cache Optimisations

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

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

Εικονική Μνήμη (virtual memory)

Προγραμματισμός συστημάτων UNIX/POSIX. Θέμα επιλεγμένο από τους φοιτητές: Προγραμματιστικές τεχνικές που στοχεύουν σε επιδόσεις

3. Η ιεραρχία της μνήμης

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

Είδη των Cache Misses: 3C s

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

Κεφάλαιο 5. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 2. Σημείωση

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης.

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

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

Κρυφή Μνήµη. Λειτουργικά Συστήµατα ΙΙ UNIX. Μάθηµα: Aναπλ. Καθ. Κ. Λαµπρινουδάκης ιδάσκων: &καιτοπλήθοςτωνπλαισίωντηςκρυφήςµνήµης

ΔΙΑΛΕΞΕΙΣ 6-7: ΚΡΥΦΗ ΜΝΗΜΗ (Cache)

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

Υ- 07 Παράλληλα Συστήματα Αρχιτεκτονική σύγχρονων πυρήνων επεξεργαστών

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

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Προχωρηµένα Θέµατα Αρχιτεκτονικής

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης. Cache Optimizations

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

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

ΔΙΑΛΕΞΕΙΣ 6-7: ΚΡΥΦΗ ΜΝΗΜΗ (Cache)

Εικονική Μνήµη. Κεφάλαιο 8. Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Σειρά Ασκήσεων 11: Κρυφές Μνήμες και η Επίδοσή τους

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

Υλοποίηση DMA για υπολογιστικό σύστημα με Scratch pad μνήμη και βελτιστοποιημένη υλοποίηση εφαρμογών

Σελίδα Φορτώθηκε Προσπελάστηκε Συχνότητα R Μ (dirty)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης Εργαστηριακές Ασκήσεις

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

ΘΕΜΑΤΑ & ΑΠΑΝΤΗΣΕΙΣ Α. ΨΗΦΙΑΚΗ ΣΧΕ ΙΑΣΗ

Λειτουργικά Συστήματα Η/Υ

Εικονική Μνήμη (virtual memory)

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

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Κύρια μνήμη. Μοντέλο λειτουργίας μνήμης. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (ΙI)

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Λύσεις 4 ης Άσκησης 2008-2009 Θεωρήστε το ακόλουθο κομμάτι κώδικα: Μέρος Α int i,j; double result, x[110][4]; for(i=0; i<4; i++) for(j=0; j<100; j++) result += x[j][i]*x[j+1][i] + 0.5; Ο πίνακας x περιέχει στοιχεία κινητής υποδιαστολής διπλής ακρίβειας, μεγέθους 8 bytes. Κάνουμε τις εξής υποθέσεις: Το πρόγραμμα εκτελείται σε έναν επεξεργαστή με μόνο ένα επίπεδο κρυφής μνήμης δεδομένων. H κρυφή μνήμη είναι πλήρως συσχετιστική (fully associative), αποτελείται από 100 blocks δεδομένων, και έχει LRU πολιτική αντικατάστασης. Το μέγεθος του block είναι 32 bytes. Υποθέτουμε ότι όλες οι μεταβλητές, πλην των στοιχείων του πίνακα x, μπορούν να αποθηκευτούν σε καταχωρητές του επεξεργαστή, οπότε οποιαδήποτε αναφορά σε αυτές δεν συνεπάγεται προσπέλαση στην κρυφή μνήμη. Επίσης, ο επεξεργαστής στέλνει προς εκτέλεση τα loads του προγράμματος, με τη σειρά που αυτά εμφανίζονται στο πρόγραμμα (δηλαδή, πρώτα εκτελεί το load για το στοιχείο x[j][i] και μετά για το x[j+1][i]). Ο πίνακας είναι αποθηκευμένος στην κύρια μνήμη κατά γραμμές. Επιπλέον, είναι ευθυγραμμισμένος ώστε το πρώτο στοιχείο του να απεικονίζεται στην αρχή μιας γραμμής της κρυφής μνήμης. Αρχικά, η κρυφή μνήμη δεδομένων είναι άδεια. α) Βρείτε ποιες από τις αναφορές στα στοιχεία του πίνακα a για όλη την εκτέλεση του παραπάνω κώδικα καταλήγουν σε misses στην cache. Υποδείξτε ποια είναι compulsory, ποια είναι capacity, και ποια conflict. Δώστε τον συνολικό αριθμό των misses. Αφού το μέγεθος του block είναι 32 bytes, κάθε στοιχείο του πίνακα είναι 8 bytes, και ο πίνακας είναι αποθηκευμένος κατά γραμμές, αυτό σημαίνει ότι σε ένα block δεδομένων της κρυφής μνήμης θα απεικονίζονται 4 διαδοχικά (κατά γραμμές) στοιχεία του πίνακα. Μάλιστα, εφόσον ο πίνακας είναι ευθυγραμμισμένος ώστε το 1ο στοιχείο του να απεικονίζεται στην αρχή μιας γραμμής της κρυφής μνήμης, και εφόσον κάθε γραμμή του πίνακα αποτελείται από 4 στοιχεία, αυτό σημαίνει ότι σε ένα block δεδομένων θα απεικονίζεται μια ολόκληρη γραμμή του πίνακα. Συνεπώς, η αναφορά σε Αρχιτεκτονική Υπολογιστών-5 ο εξ. cslab@ntua 2008-2009

οποιδήποτε στοιχείο του πίνακα, θα έχει σαν αποτέλεσμα τη μεταφορά ολόκληρης της αντίστοιχης γραμμής του πίνακα σε ένα block της κρυφής μνήμης. Για i=0, j=0, οι αναφορές στα στοιχεία x[0][0] και x[1][0] αντιστοιχούν σε compulsory misses (καθώς αναφερόμαστε για πρώτη φορά στα αντίστοιχα blocks, και η cache αρχικά είναι άδεια). Μαζί τους, θα μεταφερθούν και τα υπόλοιπα στοιχεία των αντίστοιχων γραμμών, δηλ. x[0][1], x[0][2], x[0][3] και x[1][1], x[1][2], x[1][3], αντίστοιχα. Κάθε γραμμή θα τοποθετηθεί σε κάποιο block στην cache. Για i=0, j=1, γίνονται αναφορές στα x[1][0] (hit, αφού έχει έρθει στην cache από την προηγούμενη επανάληψη) και x[2][0] (compulsory miss). Έτσι, για τις επαναλήψεις (i,j) = (0,1) έως (0,99), θα έχουμε 1 hit και 1 compulsory miss ανά επανάληψη. Για i=0, λοιπόν, θα έχουμε 2+99=101 misses, τα οποία θα είναι compulsory. Για j=99, με την αναφορά στο x[99][0], θα έχουν γεμίσει και τα 100 blocks της cache με τις πρώτες 100 γραμμές του πίνακα. Συνεπώς η αναφορά στο x[100][0], θα οδηγήσει στην αντικατάσταση του block που περιέχει την 1η γραμμή (x[0][0]-x[0][3]) με το block της 101ης γραμμής (x[100][0]-x[100][3]), λόγω του ότι το block της 1ης γραμμής είναι το least recently used, αφού ήρθε πρώτο στην cache. Έτσι, στην επόμενη επανάληψη (i=1, j=0), η αναφορά στο x[0][1] θα οδηγήσει σε miss, και το block που περιέχει την 1η γραμμή (x[0][0]-x[0][3]) θα έρθει για να αντικαταστήσει το επόμενο least recently used block, δηλαδή το block x[1][0]-x[1][3] της 2ης γραμμής. Κυκλικά, δηλαδή, θα έχουμε αντικαταστάσεις blocks, οπότε για τις αναφορές στις επόμενες επαναλήψεις του εξωτερικού loop, θα είναι στην ουσία σαν να ήταν άδεια η cache. Έτσι τα misses και τα hits θα ακολουθούν το ίδιο μοτίβο όπως και για i=0, με τη διαφορά ότι τα misses τώρα θα είναι capacity, αφού συμβαίνουν λόγω του ότι αντικαταστάθηκαν blocks που είχαν έρθει κατά το παρελθόν λόγω έλλειψης χώρου στην cache (conflict misses δεν έχουμε λόγω του ότι η cache είναι fully associative και τα blocks δεδομένων μπορούν να απεικονιστούν οπουδήποτε στην cache). Συνολικά, λοιπόν, θα έχουμε 4*101=404 misses. β) Πώς θα αλλάζατε τον κώδικα ώστε να μειωθούν τα misses; Ξαναγράψτε τον κώδικα και υπολογίστε τον νέο αριθμό misses. Στο σώμα του loop δεν υπάρχουν εξαρτήσεις, επομένως μπορούμε να εφαρμόσουμε αναδιάταξη των βρόχων. for(j=0; j<100; j++) for(i=0; i<4; i++) result += x[j][i]*x[j+1][i] + 0.5; Τώρα ο πίνακας προσπελαύνεται όπως είναι αποθηκευμένος, δηλαδή κατά γραμμές. Αυτό έχει σαν αποτέλεσμα καλύτερη τοπικότητα στις προσπελάσεις δεδομένων, αφού γειτονικά μεταξύ τους στοιχεία προσπελαύνονται σε διαδοχικές επαναλήψεις του εσωτερικού loop. Έτσι, misses έχουμε μόνο όταν αναφερόμαστε στο πρώτο στοιχείο κάθε γραμμής (i=0). Στις αναφορές που ακολουθούν και οι οποίες αφορούν τα επόμενα στοιχεία στην ίδια γραμμή, έχουμε hits, καθότι αυτά τα στοιχεία έχουν έρθει στην cache όταν έγινε η αναφορά στο πρώτο. Για j=0 έχουμε 2 misses και 6 hits. Για τις επόμενες 99 επαναλήψεις έχουμε 1 miss και 7 hits κάθε φορά. Επομένως συνολικά έχουμε 101 misses (όλα compulsory).

Μέρος Β Θεωρήστε ένα σύστημα μνήμης με μία cache χωρητικότητας 64 KΒ δεδομένων, με cache line 16 λέξεων. Το μέγεθος της λέξης είναι 32 bits. Η μικρότερη μονάδα δεδομένων που μπορεί να διευθυνσιοδοτηθεί είναι το 1 byte, ενώ οι διευθύνσεις μνήμης έχουν εύρος 32 bit. Για κάθε μία από τις ακόλουθες περιπτώσεις οργάνωσης της cache: ευθείας αντιστοίχισης (direct mapped συσχέτισης 4 δρόμων (4-way set associative), με LRU αλγόριθμο αντικατάστασης. πλήρως συσχετιστική (fully associative), με LRU αλγόριθμο αντικατάστασης. 1) Υπολογίστε τον αριθμό των bits καθενός από τα επιμέρους πεδία στα οποία χωρίζεται μία διεύθυνση μνήμης σε μία τέτοια οργάνωση cache. Παρουσιάστε ένα διάγραμμα που να δείχνει πώς διαχωρίζεται η διεύθυνση στα πεδία αυτά, και εξηγείστε τη σημασία του καθενός. 2) Σε ποιες cache lines απεικονίζονται οι ακόλουθες διευθύνσεις στη μνήμη, που γίνονται με τη σειρά (δίνονται σε 16-δική μορφή): 01A52, 10003, 1A2B20, 21A51, 9FF1F, 123456, 1A53, 9A2B25, 1A55, 2B27, 37F13, 12B25, 1000F, 9FF10, 12B26, 1A2B24. Η αναζήτησή τους στη μνήμη καταλήγει σε miss ή hit; Διαθέτουμε cache χωρητικότητας 64 KB = 2 16 bytes δεδομένων. bits bytes 6 Κάθε cache line περιέχει 16 λέξεις = 16 words 32 = 16words 4 = 64bytes = 2 bytes. word word Εφόσον η δεικτοδότηση της cache line γίνεται ανά byte δεδομένων και κάθε cache line αποτελείται από 2 6 bytes, για τη δεικτοδότησή τους χρειάζονται 6 bits offset (4bits word offset + 2bits byte offset) 16 2 bytes 10 (i) Η cache αποτελείται από = 2 cache lines και επομένως για τη δεικτοδότησή τους 6 bytes 2 cache line χρειάζονται 10 bits index. 32 10 6 = 16 bits tag. tag index offset 16 bits 10 bits 6 bits (ii) Η cache αποτελείται από 10 2 cache η 4-way set associative cache αποτελείται από δεικτοδότησή τους χρειάζονται 8 bits index. lines, ενώ ανά τέσσερις οι cache lines ανήκουν στο ίδιο set. Άρα 10 2 cache lines 8 = 2 sets και επομένως για τη cache lines 4 set 32 8 6 = 18 bits tag. tag index offset 18 bits 8 bits 6 bits

(iii) Μία fully associative cache αποτελείται από 1 μόνο set και επομένως το τμήμα index της διεύθυνσης αποτελείται από 0 bits. 32 0 6 = 26 bits tag. tag offset 26 bits 6 bits Συνοψίζοντας, το τμήμα index της διεύθυνσης εξυπηρετεί στη δεικτοδότηση των διαφορετικών sets της cache, για τον εντοπισμό της(των) cache line(s) στην(-ις) οποία(-ες) μπορεί να αποθηκευθεί το ζητούμενο δεδομένο. Το τμήμα offset της διεύθυνσης εξυπηρετεί στον εντοπισμό (ανάγνωση/εγγραφή) των μεμονομένων bytes τα οποία εμπεριέχονται σε κάθε cache line. Το τμήμα tag της διεύθυνσης αποθηκεύεται μαζί με τα δεδομένα της cache line, γιατί σε κάθε cache line μπορούν να αποθηκευθούν περισσότερα του ενός block μνήμης, ώστε να μπορούμε να τα διακρίνουμε μεταξύ τους. 2) Σε ποιες cache lines απεικονίζονται οι ακόλουθες διευθύνσεις στη μνήμη, που γίνονται με τη σειρά (δίνονται σε 16-δική μορφή): 01A52, 10003, 1A2B20, 21A51, 9FF1F, 123456, 1A53, 9A2B25, 1A55, 2B27, 37F13, 12B25, 1000F, 9FF10, 12B26, 1A2B24. Η αναζήτησή τους στη μνήμη καταλήγει σε miss ή hit; (i) (i) miss/hit index Tag σχόλια 1. 01A52 miss 0001 1010 01 0 Line 105 2. 10003 miss 0000 0000 00 1 Line 0 3. 1A2B20 miss 0010 1011 00 1 1010 Line 172 4. 21A51 miss 0001 1010 01 10 Line 105 - Διαγραφή #1 5. 9FF1F miss 1111 1111 00 1001 Line 1020 6. 123456 miss 0011 0100 01 1 0010 Line 209 7. 1A53 miss 0001 1010 01 0 Line 105 - Διαγραφή #4. 8. 9A2B25 miss 0010 1011 00 1001 1010 Line 172 Διαγραφή #3. 9. 1A55 hit 0001 1010 01 0 # 7 10. 2B27 miss 0010 1011 00 0 Lin 172 Διαγραφή #8 11. 37F13 miss 0111 1111 00 0011 Line 508 12. 12B25 miss 0010 1011 00 1 Line 172 - Διαγραφή #10. 13. 1000F hit 0000 0000 00 1 #2 14. 9FF10 hit 1111 1111 00 1001 #5 15. 12B26 hit 0010 1011 00 1 Βλ. κλήση #12. Victim 6 16. 1A2B24 miss 0010 1011 00 1 1010 Διαγραφή #15.

(ii) (ii) miss/hit index Tag σχόλια 1. 01A52 miss 01 1010 01 0 1 ο στο set 2. 10003 miss 00 0000 00 1 00 3. 1A2B20 miss 10 1011 00 1 1010 00 1 ο στο set 4. 21A51 miss 01 1010 01 0010 00 2 ο στο set 1 ο στο set 5. 9FF1F miss 11 1111 00 1001 11 1 ο στο set 6. 123456 miss 11 0100 01 0001 0010 00 7. 1A53 hit 01 1010 01 0 (βλ. #1, 1 ο στο set) 2 ο στο set 8. 9A2B25 miss 10 1011 00 1001 1010 00 2 ο στο set 1 ο στο set 9. 1A55 hit 01 1010 01 0 (βλ. #7) 10. 2B27 miss 10 1011 00 0 3 ο στο set 2 ο στο set 11. 37F13 miss 11 1111 00 0011 01 2 ο στο set 1 ο στο set 12. 12B25 miss 10 1011 00 1 00 4 ο στο set 3 ο στο set 13. 1000F hit 00 0000 00 1 00 (βλ. #2) 14. 9FF10 hit 11 1111 00 1001 11 (βλ. #5, 1 ο στο set) 2 ο στο set 15. 12B26 hit 10 1011 00 1 00 (βλ. #12, 4 ο στο set) 16. 1A2B24 hit 10 1011 00 1 1010 00 (βλ. #3, 1 ο στο set) 4 ο στο set (iii) (iii) miss/hit Tag σχόλια 1. 01A52 miss 1 1010 01 Compulsory miss 2. 10003 miss 1 0000 0000 00 Compulsory miss 3. 1A2B20 miss 1 1010 0010 1011 00 Compulsory miss 4. 21A51 miss 10 0001 1010 00 Compulsory miss 5. 9FF1F miss 1001 1111 1111 00 Compulsory miss 6. 123456 miss 1 0010 0011 0100 00 Compulsory miss 7. 1A53 hit 1 1010 01 βλ. #1 8. 9A2B25 miss 1001 1010 0010 1011 00 Compulsory miss 9. 1A55 hit 1 1010 01 βλ. #1 10. 2B27 miss 10 1011 00 Compulsory miss 11. 37F13 miss 11 0111 1111 00 Compulsory miss 12. 12B25 miss 1 0010 1011 00 Compulsory miss 13. 1000F hit 1 0000 0000 00 βλ. #2 14. 9FF10 hit 1001 1111 1111 00 βλ. #5 15. 12B26 hit 1 0010 1011 00 βλ. #12 16. 1A2B24 hit 1 1010 0010 1011 00 βλ. #3