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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ασκήσεις Caches

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

Ασκήσεις Caches

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Cach O p i timisati tions

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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;

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

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός Κεφάλαιο 5: Ιεραρχία Μνήμης Memory Hierarchy

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

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

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

Επανάληψη Ιεραρχία Μνήμης Memory Hierarchy. Κεφάλαιο 5- Ιεραρχία Μνήμης

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Ενότητα 7(α) - Ιεραρχία Μνήμης

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

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

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

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

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

ΔΙΑΛΕΞΗ 8: ΕΙΚΟΝΙΚΗ (Virtual) ΜΝΗΜΗ

Σχεδιασµός της Ιεραρχίας Μνήµης. Pedro Trancoso

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

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Ενότητα 7 Ιεραρχία Μνήμης

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

Επανάληψη Ιεραρχία Μνήμης Memory Hierarchy. Κεφάλαιο 5- Ιεραρχία Μνήμης

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

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

Με τον όρο μνήμη αναφερόμαστε στα μέσα που χρησιμοποιούνται για την αποθήκευση προγραμμάτων και δεδομένων σε έναν υπολογιστή ή άλλη ψηφιακή

Αρχιτεκτονική-ΙI Ενότητα 4 :

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

ΔΙΑΛΕΞΗ 8: ΕΙΚΟΝΙΚΗ (Virtual) ΜΝΗΜΗ

Προηγμένοι Μικροεπεξεργαστές. Paging & Segmentation

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

Transcript:

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

Πόσο μεγάλη είναι μια μνήμη cache; Έστω ότι έχουμε μια μνήμη cache σε ένα 6-bit σύστημα διευθύνσεων με τα κάτωθι χαρακτηριστικά: Η cache είναι direct-mapped Κάθε cache block έχει ένα byte To block index είναι τα 4 τελευταία bit της 6-bit διεύθυνσης. Πόσο μεγάλη είναι η cache (σε bytes); H μνήμη cache αποτελείται από τον πίνακα των δεδομένων, από τον πίνακα των tags και το valid bit. Data: 4-bit index -> 2 4 = 6 blocks Μέγεθος του tag = 2 bits (6 bit διεύθυνση- 4 bit index) (2 tag bits + valid bit + dirty bit + 8 data bits) x 6 blocks = 22 bits x 6 = 352 bits 2

Μέτρηση της απόδοσης του συστήματος Θυμάστε από προηγούμενο μάθημα: Χρόνος Εκτέλεσης Προγράμματος = Κύκλοι Εκτέλεσης * Περίοδος Ρολογιού Οι κύκλοι εκτέλεσης περιλαμβάνουν: Τους κύκλους εκτέλεσης στην CPU Θεωρώντας % caches hit rate Περιλαμβάνει τον χρόνο του cache hit Τους κύκλους καθυστέρησης στις μνήμες cache από cache misses (stalls) Χρόνος Εκτέλεσης Προγράμματος = (Κύκλοι Εκτέλεσης CPU + κύκλοι καθυστέρησης στις μνήμες) * Περίοδος Ρολογιού όπου Κύκλοι καθυστέρησης στις μνήμες = Προσπελάσεις στις μνήμες/πρόγραμμα * Ρυθμός Αστοχίας * Ποινή αστοχίας σε κύκλους = Αριθμός Αστοχιών /Πρόγραμμα * Ποινή αστοχίας σε κύκλους = Εντολές /Πρόγραμμα * Αστοχία/Εντολή * Ποινή αστοχίας σε κύκλους Μία εντολή μπορεί να έχει maximum 2 misses (I + D-Cache) 3

Μέτρηση της απόδοσης του συστήματος Συνεπώς: Χρόνος Εκτέλεσης Προγράμματος = (Κύκλοι Εκτέλεσης CPU + Εντολές /Πρόγραμμα * Αστοχία/Εντολή * Ποινή αστοχίας σε κύκλους ) * Περίοδος Ρολογιού Χρόνος Εκτέλεσης Προγράμματος = Εντολές /Πρόγραμμα * (CPIex + Αστοχία/Εντολή * Ποινή αστοχίας σε κύκλους ) * Περίοδος Ρολογιού 4

Παράδειγμα απόδοσης του συστήματος Έστω ένας επεξεργαστής A για τον οποίο ισχύουν τα εξής: I-cache miss rate = 2% D-cache miss rate = 4% Ποινή αστοχίας= κύκλοι CPIex = 2 36% των εκτελούμενων εντολών είναι load & stores Πόσο αργότερος είναι ο παραπάνω επεξεργαστής σε σχέση με κάποιον επεξεργαστή B που έχει τέλεια cache και τρέχει το ίδιο πρόγραμμα; Χρόνος Εκτέλεσης Προγράμματος A = Εντολές /Πρόγραμμα * (CPIex + Αστοχία/Εντολή * Ποινή αστοχίας σε κύκλους ) * Περίοδος Ρολογιού Χρόνος Εκτέλεσης Προγράμματος B = Εντολές /Πρόγραμμα * (CPIex) * Περίοδος Ρολογιού Επειδή ο αριθμός των εντολών και η περίοδος του ρολογιού είναι οι ίδιες, συγκρίνουμε μόνο τα CPI. Για τον A: 2 + (.2 +.4*.36)* = 5.44 Για τον Β: 2 Συνεπώς ο Β είναι 5.44 / 2 = 2.72 φορές πιο γρήγορος από τον Α! 5

Μέσος Χρόνος Προσπέλασης Μνήμης Average Memory Access Time Μια σημαντική μετρική για το σύστημα ιεραρχίας μνήμης είναι ο μέσος χρόνος προσπέλασης δεδομένων στην μνήμη (average memory access time, AMAT). Μέσος χρόνος προσπέλασης στην μνήμη : Average memory access time Χρόνος Ευστοχίας : Hit Time Ρυθμός αστοχίας: Miss Rate Ποινή αστοχίας : Miss Penalty AMAT = Χρόνος ευστοχίας + Ρυθμός Αστοχίας * Ποινή Αστοχίας σε Κύκλους = Hit Time (L) + Miss Rate * Miss Penalty Παράδειγμα: CPU με περίοδο ρολογιού ns clock, hit time = κύκλος, miss penalty = 2 κύκλοι, I-cache miss rate = 5% AMAT = +.5 2 = 2ns 2 κύκλοι χρειάζονται ανά εντολή ΜΟΝΟ για να διαβάσουμε την εντολή από την μνήμη 6

Συμπεράσματα από την μελέτη της απόδοσης της μνήμης Απόδοση CPU Απόδοση εξωτερικής μνήμης DRAM Αν και η απόδοση της κύριας μνήμης DRAM αυξάνεται με τα χρόνια, εν τούτοις αυξάνεται πολύ πιο αργά σε σχέση με την απόδοση του επεξεργαστή. Αυτό σημαίνει ότι η ποινή αστοχίας από μερικούς κύκλους την δεκαετία του 8, έχει φτάσει να είναι εκατοντάδες κύκλους τα τελευταία χρόνια. Η εξίσωση για το ΑΜΑΤ, μας δείχνει την σημασία να μειωθεί o Ρυθμός Αστοχίας και Ποινή Αστοχίας σε Κύκλους 7

Οργάνωση της μνήμης cache Από εδώ και πέρα θα εξετάσουμε τρόπους μείωσης αυτών των δύο παραγόντων (miss rate, miss penalty) μέσω διαφορετικών τεχνικών οργάνωσης της cache Μέχρι στιγμής έχουμε εξετάσει μια απλή οργάνωση της cache, δηλ. θεωρούμε cache άμεσης απεικόνισης (direct mapped) και με μέγεθος του cache block ίσο με ένα byte. Ας δούμε σήμερα πως μπορούμε να επεκτείνουμε την αρχιτεκτονική της μνήμης cache για να βελτιώσουμε την απόδοσή της (να μειώσουμε τον ρυθμό αστοχίας, miss rate). Υπάρχουν 2 βασικοί τρόποι Βελτίωση της χωρικής τοπικότητας Βελτίωση της χρονικής τοπικότητας 8

Βελτίωση της χωρικής τοπικότητας Η μνήμη cache με byte block δεν εκμεταλλεύεται την χωρική τοπικότητα (spatial locality) των δεδομένων. Όχι μόνο αυτό το byte, αλλά και τα άλλα δίπλα του μπορεί να προσπελαστούν σύντομα από την CPU 9

Βελτίωση της χωρικής τοπικότητας Ας κάνουμε το cache block να είναι μεγαλύτερο του ενός byte. Παράδειγμα block των 2 bytes Εάν θέλουμε να προσπελάσουμε την διεύθυνση 2 της μνήμης, η cache θα διαβάσει από την μνήμη την 2 και την 3 Αυτός είναι και ο ορισμός των cache blocks: το μέγεθος των δεδομένων που μεταφέρονται από την κύρια μνήμη όταν έχουμε cache miss. Memory Address 2 3 4 5 6 7 8 9 2 3 4 5 Index 2 3

Πως βρίσκουμε διευθύνσεις στην cache Θεωρείστε μια μνήμη cache direct-mapped με 2 k blocks, και κάθε block να έχει 2 n bytes. Θεωρείστε επίσης μια m-bit διεύθυνση. Μπορούμε να καθορίσουμε που τοποθετείται κάθε byte της κυρίας μνήμης στην cache εξετάζοντας την διεύθυνση και τα πεδία από τα οποία αποτελείται. k bits από την διεύθυνση επιλέγουν ένα από τα 2 k cache blocks. Τα n LS bits είναι το block offset και καθορίζει ποιο από τα 2 n bytes στο cache block θα προσπελασθούν. Τα υπόλοιπα (m-k-n) bits της m-bit διεύθυνσης είναι το tag. m-bit Address (m-k-n) bits Tag k bits Index n-bit Block Offset

Έστω μια direct-mapped μνήμη cache με 64 blocks, 6 bytes/block Σε ποιο block θα αποθηκευθούν τα δεδομένα της διεύθυνσης 2? 2 =.. Block number = Block offset = Παράδειγμα 3 9 4 3 Tag Index Offset 22 bits 6 bits 4 bits 2

Μικρο-αρχιτεκτονική cache Tag Index (2 bits) Address (4 bits) Block offset 2 Index Valid Tag Data 2 3 = 8 8 Mux 8 Hit Data 3

Παράδειγμα 2 Address (4 bits) Index Valid Tag Data 2 3 Tag n 2 = xca xde xbe xfe Index (2 bits) nn 8 8 xfe xad xef xed n Block offset Ποιο byte διαβάζεται για κάθε μία από τις παρακάτω διευθύνσεις; (xde) (miss, invalid) (xfe) (miss, tag mismatch Mux 8 Hit Data 4

Παράδειγμα 3 Address (32 bits)... 2 2 Tag Index Valid Tag Data 2... 52... 22 23 = 8 8 8 8 Mux 8 Hit Data 5

Λειτουργία cache block Tα υπόλοιπα 3 bytes του cache block προέρχονται από τις γειτονικές διευθύνσεις. Δηλ. τις 3 διευθύνσεις με το ίδιο index () και το ίδιο tag (...). Στο παράδειγμά μας, h CPU ζητάει να προσπελάσει την διεύθυνση 646 (.. ). Ο cache controller θα φέρει στην cache όλο το block (644-647) Tag Address (32 bits) Index Valid... Tag Data 52... =... 2 Mux 8 8 8 8 Hit 8 Data 6

Miss rate Μέγεθος του block και ρυθμός αστοχίας Γραφική παράσταση που δείχνει τον ρυθμό αστοχίας συναρτήσει του μεγέθους του block για μνήμες cache διαφορετικών μεγεθών Μικρά blocks δεν εκμεταλλεύονται την χωρική τοπικότητα όπως έχουμε πει. Αλλά και πολύ μεγάλα blocks δημιουργούν το πρόβλημα ότι δεν υπάρχουν πολλά blocks στην cache, με αποτέλεσμα να δημιουργούνται επιπλέον αστοχίες. 4% 35% 3% 25% 2% 5% % 5% KB 8 KB 6 KB 64 KB % 4 6 64 256 Block size (bytes) 7

Βελτίωση της χρονικής τοπικότητας Οι direct-mapped caches είναι εύκολες να υλοποιηθούν σε hardware, και είναι απλό να υπολογίσουμε το (μοναδικό) block που αντιστοιχεί σε κάθε διεύθυνση. Πλην όμως είναι περιοριστικές στην λειτουργία τους γιατί κάθε διεύθυνση της μνήμης μπορεί να αποθηκευθεί σε ένα και μοναδικό σημείο της cache. Για παράδειγμα, εάν ένα πρόγραμμα προσπελαύνει τις διευθύνσεις 2, 6, 2, 6, 2,..., κάθε προσπέλαση θα είναι miss, αν και η cache είναι κατά τα άλλα άδεια! Θα πρέπει λοιπόν να κάνουμε κάτι για να αλλάξουμε τον περιορισμό της μοναδικής απεικόνισης της direct-mapped cache. Memory Address Index 8

Πλήρως συσχετιστική μνήμη cache (fully-associative cache) H πλήρως συσχετιστική (fully-associative) cache ακολουθεί την ακριβώς αντίθετη στρατηγική: τα δεδομένα από την μνήμη επιτρέπεται να αποθηκευθούν σε ΟΠΟΙΟΔΗΠΟΤΕ block της cache. Με αυτόν τον τρόπο δεν θα υπάρχει ποτέ σύγκρουση μεταξύ δύο η περισσότερων διευθύνσεων που αποθηκεύονται στο ίδιο cache block. Στο προηγούμενο παράδειγμα, η διεύθυνση 2 μπορεί να τοποθετηθεί στο block 2, και η διεύθυνση 6 στο block 3. Από εκεί και πέρα θα έχουμε συνέχεια hits και όχι misses. To ενδιαφέρον ερώτημα που θα δούμε σύντομα είναι ποιο block αντικαθιστούμε όταν γεμίσει η cache. 9

Fully-associative cache Οι fully-associative caches είναι όμως ακριβές γιατί πιάνει πολύ χρόνο το να διαπιστώσουμε εάν έχουμε Hit OR Miss. Δεν υπάρχει πεδίο index στην διεύθυνση Τα δεδομένα μπορούν να είναι παντού στην cache, το οποίο σημαίνει ότι θα πρέπει να ελέγξουμε τα tags κάθε block για να δούμε εάν δεδομένα είναι στην cache. Αυτό χρειάζεται πολλούς συγκριτές και παίρνει πολύ χρόνο. Address (32 bits) 32 Tag Index Valid Tag (32 bits) Data......... = = Hit = 2

Συσχετιστική μνήμη συνόλου (set-associative cache) Μια ενδιάμεση λύση είναι η συσχετιστική μνήμη συνόλου (setassociative cache). Η cache χωρίζεται σε groups από blocks, που ονομάζονται σύνολα (sets). Κάθε διεύθυνση μνήμης μπορεί να τοποθετηθεί σε ένα και μόνο σύνολο στην cache, αλλά σε οποιοδήποτε block μέσα στο σύνολο. Εάν ένα σύνολο αποτελείται από X blocks, η cache ονομάζεται συσχετιστική μνήμη συνόλου X δρόμων (Χ-way set associative cache). -way 8 sets, block each Set 2 3 4 5 6 7 direct mapped 2-way 4 sets, 2 blocks each Set 2 3 4-way 2 sets, 4 blocks each Set Set 8-way set, 8 blocks fully associative 2

Πως βρίσκουμε διευθύνσεις στην set Address (m bits) associative cache (m-s-n) Tag Διαίρεση διεύθυνσης μνήμης με 2 s σύνολα, και μέγεθος block 2 n bytes s Set index n Block offset Block Offset = Memory Address mod 2 n Block Address = Memory Address / 2 n Set Index = Block Address mod 2 s 22

Υλοποίηση συσχετιστική μνήμη συνόλου 4-way set associative 256 σύνολα cache block έχει 4 bytes Μέγεθος cache 256*4*4 = 4KB 23

Παράδειγμα Associativity Έστω μια μνήμη cache με 4 blocks Direct mapped, 2-way set associative, fully associative Αλληλουχία διευθύνσεων που προσπελαύνουμε:, 8,, 6, 8 Direct mapped Block address Cache index Hit/miss Cache content after access 2 3 miss Mem[] 8 miss Mem[8] miss Mem[] 6 2 miss Mem[] Mem[6] 8 miss Mem[8] Mem[6] 24

Παράδειγμα Associativity 2-way set associative Block address Cache index Hit/miss miss Mem[] 8 miss Mem[] Mem[8] hit Mem[] Mem[8] 6 miss Mem[] Mem[6] 8 miss Mem[8] Mem[6] Fully associative Cache content after access Set Set Block address Hit/miss Cache content after access miss Mem[] 8 miss Mem[] Mem[8] hit Mem[] Mem[8] 6 miss Mem[] Mem[8] Mem[6] 8 hit Mem[] Mem[8] Mem[6] 25

Παράδειγμα Associativity Υποθέστε ότι έχουμε μια μνήμη cache με 8 blocks, 6 bytes/blocks. Σε ποιο cache block θα τοποθετηθούν τα δεδομένα που βρίσκονται στην διεύθυνση 695, για κάθε μία από τις 3 περιπτώσεις οργάνωσης της cache; Το 695 στο δυαδικό σύστημα είναι... Κάθε block έχει 6 bytes, άρα τα 4 LSB είναι το Block offset. Η direct mapped cache έχει 8 sets, και άρα τα επόμενα 3 bits () είναι ο set index. Η 2-way set associative cache έχει 4 sets, και άρα τα επόμενα 2 bits () είναι ο set index. Η 4-way set associative cache έχει 2 sets, και άρα τo επόμενα bit () είναι ο set index. Tα δεδομένα μπορούν να μπουν σε κάθε block από τα πράσινα στην cache. direct mapped 8 sets, block each 2-way associativity 4 sets, 2 blocks each 4-way associativity 2 sets, 4 blocks each Set 2 3 4 5 6 7 Set 2 3 Set 26

Αντικατάσταση blocks Εάν δεν υπάρχουν άδεια blocks σε ένα σύνολο (set) όταν προσπαθούμε να φέρουμε ένα νέο block στην cache, o ελεγκτής της cache (cache controller) θα αντικαταστήσει το block που έχει να χρησιμοποιηθεί τον περισσότερο χρόνο (Least Recently Used, LRU). Αυτός είναι ο πιο συνηθισμένος αλγόριθμος, αλλά δεν είναι και ο μόνος Direct mapped 8 sets, block each Set 2 3 4 5 6 7 2-way associativity 4 sets, 2 blocks each Set 2 3 4-way associativity 2 sets, 4 blocks each Set 27

Υποθέστε ότι έχουμε μια fully-associative cache με μόνο 2 blocks, και μια σειρά από διευθύνσεις από την CPU Πως λειτουργεί ο αλγόριθμος LRU; Αντικαθιστούμε το LRU block, όταν υπάρχει miss. Ανανεώνουμε το LRU, όταν υπάρχει hit. Παράδειγμα αλγόριθμου LRU miss miss hit miss miss miss hit addresses A B A C B A B Tags LRU -- -- A -- A B A B A C B C B A B A 28

Miss rate Associativity και ρυθμός αστοχίας Μεγαλύτερη cache και μεγαλύτερος βαθμός associativity βελτιώνουν την ευστοχία της cache(δηλ. μειώνουν το miss rate) Όμως μεγαλύτερος βαθμός associativity απαιτεί και μεγαλύτερο χρόνο εκτέλεσης. Άρα είναι πιθανόν να μειώνει και το Hit Time (=bad!!) 5% 2% 9% 6% KB 2 KB 4 KB 8 KB 3% % One-way Two-way Four-way Eight-way Associativity 29

Cache organizations (II) Είδαμε δύο βασικές τεχνικές μείωσης του ρυθμού αστοχίας Πως μπορούμε να μειώσουμε την ποινή αστοχίας (miss penalty); 3

Μνήμες cache πολλαπλών επιπέδων Μπορούμε να μειώσουμε την ποινή αστοχίας με το τοποθετήσουμε ακόμα μία μνήμη cache για να εξυπηρετεί όλες τις αστοχίες που προέρχονται από την αρχική μας cache. H αρχική cache είναι μικρή (L Cache) και γρήγορη Μία L cache για εντολές (I-Cache), και μία για δεδομένα (D-Cache) H L2 Cache είναι μεγαλύτερη και πιο αργή από την L Cache. Αλλά είναι πολύ πιο γρήγορη από την κύρια μνήμη Τα περισσότερα επεξεργαστικά συστήματα έχουν και τρίτο επίπεδο μνήμης cache (L3 Cache) Η L3 Cache εξυπηρετεί όλες τις αστοχίες της L2 Cache Οι αστοχίες της L3 Cache εξυπηρετούνται από την κύρια μνήμη Δεν υπάρχει L4 Cache (!) σε κανένα σύστημα από ότι ξέρω. Η L2 και L3 Caches είναι unified, δηλ. αποθηκεύουν και εντολές και δεδομένα στον ίδιο χώρο. Επίσης έχουν μεγαλύτερο βαθμό συσχετιστικότητας (associativity) 3

Μνήμες cache πολλαπλών επιπέδων Για την L Cache το σημαντικό είναι το χαμηλό Hit time. Πρέπει δηλ. να μπορούμε να τις προσπελαύνουμε σε -2 κύκλους ρολογιού Έχουν μικρό μέγεθος (6-64 KB) και είναι συνήθως directmapped. Για τις L2 και L3 Cache το σημαντικό είναι να έχουν χαμηλό miss rate, για να αποφύγουμε προσπέλαση στην κύρια μνήμη Έχουν μεγάλο μέγεθος (L2 Cache ~ 256KB, L3 Cache 2-3 MB) Έχουν μεγάλα cache blocks Έχουν υψηλό associativity. 32

Παράδειγμα μνημών cache πολλαπλών επιπέδων (I) ΑΜΑΤ = Average Memory Access Time = Hit Time (L) + Miss Rate (L) * Miss Penalty (L->L2) + Miss Rate (L) * Local Miss Rate (L2) * Miss Penalty (L2-> Main Mem) Local Miss Rate (L2) : ο ρυθμός αστοχίας της L2 Cache από τις προσπελάσεις που έρχονται από την L Cache. Global Miss Rate (L2) = Miss Rate (L) * Local Miss Rate (L2): ο ρυθμός αστοχίας της L2 Cache από τις συνολικές προσπελάσεις που έρχονται από την CPU 33

Παράδειγμα μνημών cache πολλαπλών επιπέδων (I) Έστω ένα σύστημα με τις παρακάτω προδιαγραφές CPU base CPI =, clock rate = 4GHz Miss rate/instruction = 2% Χρόνος προσπέλασης κύριας μνήμης = ns Με μόνο L Cache: Ποινή αστοχίας σε κύκλους μηχανής = ns/.25ns = 4 cycles CPI = +.2 4 = 9 34

Παράδειγμα μνημών cache πολλαπλών επιπέδων (II) Έστω ότι βάζουμε μια L2 Cache στο σύστημά μας Χρόνος προσπέλασης της L2 Cache = 5ns L2 Global miss rate =.5% Τα 5ns αντιστοιχούν σε 5ns/.25ns = 2 cycles. Κάθε φορά που υπάρχει miss στην L Cache, πληρώνουμε 2 κύκλους να προσπελάσουμε την L2 Cache. CPI = +.2 2 +.5 4 = 3.4 Performance ratio = 9/3.4 = 2.6 35

Γιατί είναι σημαντική η ιεραρχία της μνήμης Η ιεραρχία της μνήμης είναι πάρα πολύ σημαντική στους σύγχρονους επεξεργαστές με πολλούς πυρήνες. Συνολικό maximum bandwidth που απαιτείται από την CPU. O Intel Core i7 μπορεί να εκτελέσει μέχρι 2 εντολές load/store σε κάθε κύκλο μηχανής Έχει 4 πυρήνες με ρολόι στα 3.2 GHz 2*4*3,2 = 25,6 δισ. 64-bit προσπελάσεις δεδομένων/second + 2.8 δισ. 28-bit προσπελάσεις εντολών/second = 49.6 GB/s! To bandwidth της DRAM είναι μόλις 25GB/s (6% αυτού που απαιτείται!!). Δεν μπορεί να ικανοποιήσει από μόνη της την CPU. Η ιεραρχία της μνήμης λοιπόν είναι πολύ σημαντική. 36

Που οφείλονται οι αστοχίες της cache; Μοντέλο των 3C Υποχρεωτικές αστοχίες (Compulsory or Cold misses) Πρώτη πρόσβαση σε ένα block. Δεν μπορεί να αποφευχθεί. Αστοχίες Χωρητικότητας(Capacity misses) Οφείλονται στο ότι η cache δεν είναι αρκετά μεγάλη για να περιέχει όλα τα blocks που χρειάζονται από την CPU σε κάθε χρονική περίοδο. Ένα block αντικαθίσταται και μετά το επαναφέρουμε στην cache Είναι ο σημαντικότερος λόγος για αστοχίες cache εκτός εάν η cache είναι πολύ μεγάλη Αστοχίες διένεξης (Conflict misses) Συμβαίνουν σε μνήμες cache που δεν είναι fully-associative Πολλά blocks ανταγωνίζονται να μπουν στο ίδιο σύνολο της cache Δεν θα συνέβαιναν εάν η cache ήταν fully-associative 37