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

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

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

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

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;

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

Ασκήσεις Caches

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

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

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

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

Ασκήσεις Caches

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Cach O p i timisati tions

Οργάνωση Υπολογιστών (ΙI)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο 3. Εαρινό Εξάμηνο

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 4 ο ΟΡΓΑΝΩΣΗ ΤΗΣ ΜΝΗΜΗΣ ΠΕΡΙΦΕΡΕΙΑΚΗ ΜΝΗΜΗ

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

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

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ntua.gr 3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος 2013-2014, 5 ο εξάμηνο Σχολή ΗΜ&ΜΥ Ημερομηνία Παράδοσης: 09/03/2014 Απορίες: ca2013-2014t2@cslab.ece.ntua.gr Θέμα 1 ο Να σχεδιαστεί πλήρης μονάδα μνήμης για υπολογιστικό σύστημα MIPS με διευθύνσεις 32 bit και λέξεις 32 bit, χρησιμοποιώντας ψηφίδες μνήμης RAM 256M x 4 bit. Κάθε ψηφίδα RAM διαθέτει, εκτός από τις αντίστοιχες γραμμές διευθύνσεων και δεδομένων, και τις εισόδους R/W και CS (chip select).

Λύση: Λύση Α Στην περίπτωση που η ελάχιστη διευθυνσιοδοτούμενη ποσότητα μνήμης είναι λέξη των 8 bit (όπως συμβαίνει στον MIPS), η υλοποίηση είναι η ακόλουθη: A02 - A29 Read/Write 7 6 5 4 3 2 1 0 cs A30 - A31 15 14 13 12 11 10 9 8 DECODER 2x4......... 31 30 D28-D31 D24-D27 D20-D23 D16-D19 D12-D15 D8-D11 D4-D7 D0-D3 A0 A1 Multiplexer 32 to 8 1 byte of a 32bit word

Λύση Β Στην περίπτωση που η ελάχιστη διευθυνσιοδοτούμενη ποσότητα μνήμης είναι λέξη των 32 bits, η αντίστοιχη υλοποίηση είναι η ακόλουθη: A0 - A27 Read/Write 7 6 5 4 3 2 1 0 cs A28 - A31 DECODER 4x16... 15 14 13 12 11 10 9 8......... 127 D28-D31 D24-D27 D20-D23 D16-D19 D12-D15 D8-D11 D4-D7 D0-D3

Θέμα 2 ο Δίνεται το ακόλουθο κομμάτι κώδικα σε C: float A[4][4], B[4][3], C[3][4]; for (i=0; i<3; i++) for(j=0; j<4; j++) B[j][i] = (A[i][j]+A[i+1][j]*C[i][j])/2; Οι πίνακες A, B, C περιέχουν στοιχεία κινητής υποδιαστολής μονής ακριβείας (single precision), μεγέθους 4 bytes το καθένα. Όλες οι μεταβλητές εκτός των στοιχείων των πινάκων αποθηκεύονται σε καταχωρητές του επεξεργαστή, οπότε οποιαδήποτε αναφορά σε αυτές δε συνεπάγεται προσπέλαση στη μνήμη. Σε επίπεδο εντολών assembly οι αναγνώσεις γίνονται με τη σειρά που εμφανίζονται στον κώδικα. Οι πίνακες A, B, C είναι αποθηκεμένοι ξεκινώντας από τις θέσεις 0xFF000800, 0x0F000900 και 0xA0010700 αντίστοιχα. Το παραπάνω πρόγραμμα εκτελείται σε ένα επεξεργαστή, τύπου MIPS, με μόνο ένα επίπεδο κρυφής μνήμης δεδομένων η οποία αρχικά είναι άδεια. Η cache διαθέτει 8 blocks, μεγέθους 8 byte το καθένα, πολιτική αντικατάστασης LRU και πολιτικές εγγραφής write-allocate, write-through, ενώ η ελάχιστη ποσότητα δεδομένων που μπορεί να διευθυνσιοδοτηθεί είναι το 1 byte, με χρήση 32 bit διευθύνσεων. Υποθέτουμε τις ακόλουθες οργανώσεις μνήμης: direct mapped 2-way set associative 1. Για κάθε μία από τις παραπάνω οργανώσεις υπολογίστε: a. Τα μεγέθη των TAG, INDEX, OFFSET σε bit (δώστε διάγραμμα). b. Το συνολικό μέγεθος της μνήμης και το ποσοστό του μεγέθους των tags στο συνολικό μέγεθος c. Το συνολικό αριθμό των misses που θα συμβούν καθώς κα το είδος αυτών (compulsory, conflict, capacity) d. Πώς μεταβάλλεται ο αριθμός των misses στην περίπτωση αλλαγής της πολιτικής write-allocate σε write-no-allocate; 2. Υποθέτουμε ότι στην περίπτωση του read/write miss δαπανούνται 3 επιπλέον κύκλοι για να έρθει το αντίστοιχο block στην cache, και την κλασική

αρχιτεκτονική των πέντε σταδίων, εφοδιασμένη με τα απαραίτητα σχήματα προώθησης. a. Δώστε τα διαγράμματα χρονισμού για τις δύο περιπτώσεις. b. Υπολογίστε τους κύκλους που απαιτούνται για την ολοκλήρωση του προγράμματος στην κάθε περίπτωση. Λύση: Direct Mapped Block offset: για 8 bytes απαιτούνται 3 bits Index: η cache διαθέτει 8 blocks διατεταγμένα ως 1 block / cache line. Άρα διαθέτει 8 cache lines. Για την διευθυνσιοδότηση αυτών απαιτούνται 3 bits. tagsize = addresssize indexsize blockoffest = 26 bits. Συνεπώς έχουμε: TAG index offset 26 bits 3 bits 3 bits Συνολικό μέγεθος tags: cachelines * tagsize = 8 * 26 = 208 bits Συνολικό μέγεθος μνήμης: datasize + (cachelines * tagsize) = 720 bits Ποσοστό μεγέθους tags στο συνολικό μέγεθος cache: P = 208 / 720 = 28.8 % Κατασκευάζουμε τον πίνακα αντιστοίχησης στοιχείων με τις θέσεις που αυτά αποθηκεύονται στην cache. Στον πίνακα αυτό κβαντίζεται και παρουσιάζεται ο κάθε πίνακας σε block τα οποία συνδέονται με τον αντίστοιχο δείκτη που τα διευθυνσιοδοτεί στην cache. cache index A elements B elements C elements 000 A[0][0] / A[0][1] B[0][0] / B[0][1] C[0][0] / C[0][1] 001 Α[0][2] / Α[0][3] Β[0][2] / Β[1][0] C[0][2] / C[0][3] 010 Α[1][0] / Α[1][1] Β[1][1] / Β[1][2] C[1][0] / C[1][1] 011 Α[1][2] / Α[1][3] Β[2][0] / Β[2][1] C[1][2] / C[1][3] 100 Α[2][0] / Α[2][1] Β[2][2] / Β[3][0] C[2][0[ / C[2][1] 101 Α[2][2] / Α[2][3] Β[3][1] / Β[3][2] C[2][2] / C[2][3] 110 Α[3][0] / Α[3][1] 111 Α[3][2] / Α[3][3] Από τη βηματική εκτέλεση του δοθέντος τμήματος κώδικα προκύπτει: Με τη μορφή R( element ) παρουσιάζεται το ποιο στοιχείο και συνεπώς block, εκτοπίζεται από τη cache

Α[i][j] A[i+1][j] C[i][j] B[i][j] A[0][0]: compm A[1][0]: compm C[0][0] : compm R( A[0][0] ) B[0][0]: compm R( C[0][0] ) A[0][1]: confm A[1][1]: hit C[0][1]: confm B[1][0]: compm R( B[0][0] ) R( A[0][1] ) A[0][2]: compm R ( B[1][0] ) A[1][2]: compm C[0][2]: compm R (A[0][2]) B[2][0]: compm R (A[1][2]) A[0][3]: confm A[1][3]: confm C[0][3]: confm B[3][0]: compm R( C[0][2] ) R( B[2][0] ) R( A[0][3] ) A[1][0]: hit A[2][0]: compm R( B[3][0] ) C[1][0]: compm R( A[1][0] ) B[0][1]: confm R ( C[0][1] ) A[1][1]: confm R( C[1][0] ) A[2][1]: hit C[1][1]: confm R( A[1][1]) B[1][1]: compm R( C[1][1] ) A[1][2]: hit A[2][2]: compm C[1][2]: compm R ( A[1][2]/ A[1][3] ) A[1][3]: confm A[2][3]: hit C[1][3]: confm R( B[2][1] ) R ( A[1][3]) A[2][0]: hit A[3][0]: compm C[2][0]: compm R( A[2][0]/ A[2][1]) A[2][1]: confm A[3][1]: hit C[2][1]: confm R( C[2][0] ) R( A[2][1] ) A[2][2]: confm A[3][2]: compm C[2][2]: compm R( B[3][1] ) R ( A[2][2] ) A[2][3]: confm A[3][3]: hit C[2][3]: confm R( C[2][2] ) R( A[2][3] ) B[2][1]: confm R ( C[1][2] ) B[3][1]: compm R( A[2][2]/ A[2][3]) B[0][2]: confm R( C[0][3] ) B[1][2]: hit B[2][2]: confm R( C[2][1] ) B[3][2]: confm R( C[2][3]) Συνολικά έχουμε 39 misses εκ των οποίων 20 είναι compulsory και 19 conflict misses. 2-Way Set associative Block offset: για 8 bytes απαιτούνται 3 bits Index: η cache διαθέτει 8 blocks διατεταγμένα ως 2 blocks / cache line. Άρα διαθέτει 4 cache lines. Για την διευθυνσιοδότηση αυτών απαιτούνται 2 bits. tagsize = addresssize indexsize blockoffest = 26 bits. Συνεπώς έχουμε: TAG index offset 27 bits 2 bits 3 bits Συνολικό μέγεθος tags: cachelines * tagsize = 8 * 27 = 216 bits

Επισημαίνεται ότι στην περίπτωση της 2-way set associative cache έχουμε LRU πολιτική η οποία επιβαρύνει κατά 1 bit τα metadata του κάθε block. Συνολικό μέγεθος μνήμης: datasize + (cachelines * tagsize) + #blocks*1 = 736 bits Ποσοστό μεγέθους tags στο συνολικό μέγεθος cache: P = 216 / 736 = 29.3 % Κατασκευάζουμε τον πίνακα αντιστοίχησης στοιχείων με τις θέσεις που αυτά αποθηκεύονται στην cache. Στον πίνακα αυτό κβαντίζεται και παρουσιάζεται ο κάθε πίνακας σε block τα οποία συνδέονται με τον αντίστοιχο δείκτη που τα τοποθετεί στην cache. Cache C elements C elements A elements A elements B elements B elements index 00 A[0][0] / A[0][1] Α[2][0] / Α[2][1] B[0][0] / B[0][1] Β[2][2] / Β[3][0] C[0][0] / C[0][1] C[2][0] / C[2][1] 01 Α[0][2] / Α[0][3] Α[2][2] / Α[2][3] Β[0][2] / Β[1][0] Β[3][1] / Β[3][2] C[0][2] / C[0][3] C[2][2] / C[2][3] 10 Α[1][0] / Α[1][1] Α[3][0] / Α[3][1] Β[1][1] / Β[1][2] C[1][0] / C[1][1] 11 Α[1][2] / Α[1][3] Α[3][2] / Α[3][3] Β[2][0] / Β[2][1] C[1][2] / C[1][3] Από τη βηματική εκτέλεση του δοθέντος τμήματος κώδικα προκύπτει: Με τη μορφή R( element ) παρουσιάζεται το ποιο στοιχείο και συνεπώς block, εκτοπίζεται από τη cache ενώ σε παρενθέσεις έχει τοποθετηθεί ο αντίστοιχος cache-line index. Α[i][j] A[i+1][j] C[i][j] B[i][j] A[0][0]: compm A[1][0]: compm C[0][0] : compm B[0][0]: compm A[0][1]: confm R( C[0][0] ) A[0][2]: compm A[0][3]: hit A[1][0]: hit A[1][1]: hit A[1][1]: hit A[1][2]: compm A[1][3]: hit A[2][0]: compm R( C[0][1] ) A[2][1]: hit C[0][1]: confm R( B[0][0] ) C[0][2]: compm R (B[1][0]) C[0][3]: hit C[1][0]: compm C[1][1]: hit R( A[0][0] ) B[1][0]: compm B[2][0]: compm B[3][0]: compm R(A[0][1]) B[0][1]: confm R ( B[3][0] ) B[1][1]: compm R( A[1][1]/ A[1][0] )

A[1][2]: hit A[1][3]: confm R( C[1][2] ) A[2][0]: hit A[2][1]: hit A[2][2]: compm R( A[0][3]/ A[0][2] ) A[2][3]: hit A[3][0]: compm R (C[1][0]/ C[1][1] ) A[3][1]: hit C[1][2]: compm R ( B[2][0]) C[1][3]: confm R ( B[2][1]) C[2][0]: compm R( B[0][1] ) C[2][1]: hit B[2][1]: confm R ( A[1][2] /A[1][3]) B[3][1]: compm R( C[0][2]/ C[0][3]) B[0][2]: confm R( A[2][2]/A[2][3] ) B[1][2]: hit A[2][2]: confm R( B[3][1] ) A[2][3]: hit A[3][2]: compm (s11) R( A[1][3]) A[3][3]: hit (s11) C[2][2]: compm R ( B[0][2] ) C[2][3]: hit B[2][2]: confm (s00) R(A[2][0]/ A[2][1]) B[3][2]: confm (s01) R( A[2][2]/A[2][3] ) Από τον παραπάνω πίνακα προκύπτουν 18 hits και 30 misses εκ των οποίων 10 είναι conflict και 20 είναι compulsory. Στην περίπτωση αλλαγής της πολιτικής write-allocate σε write-no-allocate ο συνολικός αριθμός hits θα αυξηθεί λόγω της απουσίας των στοιχείων του πίνακα Β από την cache. Μια πιθανή υλοποίηση της δοθείσας συνάρτησης σε MIPS assembly είναι η ακόλουθη: addi $3, $zero, 3 addi $4, $zero, 16 addi $5, $zero, $0 addi $6, $zero, $zero addi $1, $zero, $zero LOOPEX: addi $2, $zero, $zero LOOPIN: add $7, $6, $2 addi $13, $0, 0xff000800 addu $13, $7, $13 lw $8, 0($13) lw $9, 0($13) addi $7, $7, 16 addi $13, $0, 0xff000800 addu $13, $7, $13 lw $10, 0($13)

add $10, $10, $8 add $10, $10, $9 srl $10, $10, 1 mul $7, $2, $3 muli $8, $1, 4 add $7, $7, $8 addi $13, $0, 0xA0010700 addu $13, $8, $13 sw $10, 0($13) addi $2, $2, 4 blt $2, $4, LOOPIN addi $1, $1, 1 addi $6, $6, 16 blt $1, $3, LOOPEX Μπορούμε να χωρίσουμε τον παραπάνω κώδικα σε 3 τμήματα: τμήμα αρχικοποιήσεων (εκτελείται 1 φορά) τμήμα εξωτερικού αλλά όχι εσωτερικού βρόχου (εκτελείται 3 φορές) τμήμα εσωτερικού βρόχου (εκτελείται 12 φορές)

addi $3, $zero, 3 IF ID EX MEM WB addi $4, $zero, 16 IF ID EX MEM WB addi $5, $zero, $0 IF ID EX MEM WB addi $6, $zero, $zero IF ID EX MEM WB addi $1, $zero, $zero IF ID EX MEM WB LOOPEX: addi $2, $zero, $zero IF ID EX MEM WB LOOPIN: add $7, $6, $2 IF ID EX MEM WB addi $13, $0, 0xff000800 IF ID EX MEM WB addu $13, $7, $13 IF ID EX MEM WB lw $8, 0($13) MISS IF ID EX MEM - - - WB lw $9, 0($13) MISS IF ID EX - - - MEM - - - WB addi $7, $7, 16 IF ID - - - EX - - - MEM WB addi $13, $0, 0xff000800 IF - - - ID - - - EX MEM WB addu $13, $7, $13 IF - - - ID EX MEM WB lw $10, 0x($13) MISS IF ID EX MEM - - - WB add $10, $10, $8 IF ID EX - - - MEM WB add $10, $10, $9 IF ID - - - EX MEM WB srl $10, $10, 1 IF - - - ID EX MEM WB mul $7, $2, $3 IF ID EX MEM WB muli $8, $1, 4 IF ID EX MEM WB add $7, $7, $8 IF ID EX MEM WB addi $13, $0, 0xA0010700 IF ID EX MEM WB addu $13, $8, $13 IF ID EX MEM WB sw $10, 0($13) MISS IF ID EX MEM - - - WB addi $2, $2, 4 IF ID EX - - - MEM WB blt $2, $4, LOOPIN IF ID - - - EX MEM WB addi $1, $1, 1 IF ID EX MEM WB addi $6, $6, 16 IF ID EX MEM WB blt $1, $3, LOOPEX IF ID EX MEM WB addi $2, $zero, $zero IF ID EX MEM WB Στο παραπάνω σχήμα παρουσιάζεται τα ενδεικτικά διαγράμματα χρονισμού των τριών περιπτώσεων. Από το διάγραμμα φαίνεται ότι το σχήμα αρχικοποιήσεων απαιτεί 9 κύκλους. Οι εντολές του εξωτερικού βρόχου απαιτούν 8 κύκλους. Άρα τα δύο αυτά τμήματα αθροιστικά απαιτούν 9 + 3*8 = 33 κύκλους. Ο εσωτερικότερος βρόχος απαιτεί αριθμό κύκλων ανάλογο των misses όπως αυτά απεικονίζονται στους προηγούμενους πίνακες. Είναι φανερό ότι κάθε miss εισάγει καθυστέρηση 3 κύκλων.