Προηγμένοι Μικροεπεξεργαστές. Υποσύστημα Μνήμης

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

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

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

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

Cach O p i timisati tions

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

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

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

Ασκήσεις Caches

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

Ασκήσεις Caches

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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Ο ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

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

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

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

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

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

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

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

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

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

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

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

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

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

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

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

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

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

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

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

Διαχείριση Κύριας Μνήμης

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

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

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

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

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

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

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

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

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

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

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

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

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

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

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

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

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

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

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

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

Transcript:

Προηγμένοι Μικροεπεξεργαστές Υποσύστημα Μνήμης

An unbalanced system CPU Memory 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 2

Memory Wall Στους πρώτους μικροεπεξεργαστές: Η μνήμη τόσο γρήγορη όσο και ο επεξεργαστής Η προσπέλαση μνήμης 1-2 κύκλους ρολογιού πιο αργή από μία πράξη της ALU 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 3

Memory Wall Η ταχύτητα του επεξεργαστή αυξάνει πολυ πιο γρήγορα από ότι της μνήμης Χάσμα μνήμης (Memory Wall) Το χάσμα αυξάνεται 50% ανά χρόνο CPU 2x/ 2 χρόνια Mem 2x/ 10 χρόνια 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 4

Memory Wall Κεντρικό πρόβλημα της αρχιτεκτονικής υπολογιστών Αν δεν αντιμετωπιστεί, κάθε mov θα στοιχίζει εκατοντάδες κύκλους ρολογιού Οι περισσότερες εξελίξεις στην μικροαρχιτεκτονική των x86 αντιμετωπίζουν άμεσα ή έμμεσα το memory wall 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 5

Memory Wall Παράδειγμα: Συμπεριφορά ενός επεξεργαστή χωρίς να αντιμετωπίσουμε το memory wall 300Μ εντολές του gcc Για επεξεργαστή με δυνατότητες κοντά σε αυτές του 8086 Για αυξανόμενες ταχύτητες ρολογιού 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 6

Memory Wall Για μικρές αυξήσεις της ταχύτητας του ρολογιού, το κέρδος είναι σημαντικό Από ένα σημείο και μετά, όμως το σύστημα περνά την περισσότερη ώρα περιμένοντας δεδομένα από την μνήμη Η αύξηση της ταχύτητας του ρολογιού παράγει ασήμαντα ωφέλη Execution time vs CPU clock speedup (linear-log) 1985 1990 1995 2000 Execution time vs CPU clock speedup (log-log) 1985 1990 1995 2000 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 7

Memory Wall Η αύξηση της ταχύτητας του ρολογιού, δεν αρκεί από μόνη της Χρειάζεται απομόνωση του γρήγορου επεξεργαστή από την αργή μνήμη Πως όμως θα γίνει αυτό; 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 8

Λύση? Βασικό χαρακτηριστικό της μνήμης: Η μνήμη μπορεί να είναι μεγάλη ή γρήγορη ( vast or fast ) Αλλά ποτέ και τα δύο μαζί! Ιεραρχία Μνήμης: L2 DRAM Μέγεθος registers L1 Ταχύτητα 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 9

CPU Caches Static RAM (SRAM) μνήμες συνήθως μέσα στο ολοκληρωμένο Μικρότερες από την κύρια μνήμη, αλλά μεγαλύτερες από το register file Ενώνονται με τον επεξεργαστή με γρήγορους δίαυλους Χρόνοι απόκρισης: 1 έως 10-20 κύκλοι Κάνουν την φαινομενική ταχύτητα των MOV εντολών, πολύ μεγαλύτερη της ταχύτητας της μνήμης Δουλεύουν εξαιτίας του temporal και του spatial locality 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 10

CPU Caches - Λειτουργία Σε κάθε προσπέλαση κοιτάμε αν τα δεδομένα μας βρίσκονται στην cache Ναι Cache hit Τα δεδομένα διαβάζονται σε μερικούς κύκλους ρολογιού Όχι Cache miss Ta δεδομένα πρέπει να έρθουν από την μνήμη και να τοποθετηθούν στην cache miss rate: ποσοστό αποτυχημένων προσπελάσεων Αν δεν υπάρχει κενός χώρος cache replacement αδειάζουμε μία θέση, γράφοντας (ίσως) τα δεδομένα της πίσω στην μνήμη 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 11

CPU Caches - Κατηγορίες Ανάλογα με το είδος δεδομένων: Εντολών Δεδομένων Ενοποιημένες Ανάλογα με την θέση τους ως προς τον επεξεργαστή: Εσωτερική Εξωτερική Level 1 (L1) κολλητά στον επεξεργαστή Level 2 (L2) κάτω από την L1 Level 3 (L3) 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 12

CPU Caches Σχεδιαστικές Επιλογές 1) Πως βρίσκουμε αν το block βρίσκεται στην cache; tag, block... 2) Που επιτρέπεται να τοποθετήσουμε ένα block; fully-associative, set-associative, direct-mapped 3) Ποιο block αντικαθιστούμε σε περίπτωση miss; random, NRU, LRU, FIFO 4) Πως χειριζόμαστε τα writes; write-back, write-through 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 13

Block Identification Πως βρίσκουμε αν ένα block υπάρχει στην cache ή όχι; Η ζητούμενη διεύθυνση χωρίζεται σε τρία κομμάτια: block, index, tag Μνήμη 01 11 00 TAG INDEX BLOCK Διεύθυνση = 011100b Cache 00 01 10 11 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 14

Block Identification Πως βρίσκουμε αν ένα block υπάρχει στην cache ή όχι; Η ζητούμενη διεύθυνση χωρίζεται σε 3 κομμάτια: block, index, tag Το index δίνει την θέση όπου θα ψάξουμε Μνήμη 01 11 00 TAG INDEX BLOCK Διεύθυνση = 011100b Cache 00 01 10 11 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 15

Block Identification Πως βρίσκουμε αν ένα block υπάρχει στην cache ή όχι; Η ζητούμενη διεύθυνση χωρίζεται σε 3 κομμάτια: block, index, tag Το index δίνει την θέση όπου θα ψάξουμε Το tag συγκρίνεται με το tag που είναι αποθηκευμένο μαζί με τα δεδομένα Μνήμη TAG Ισότητα? DATA 4 bytes 01 11 00 TAG INDEX BLOCK Διεύθυνση = 011100b Cache 00 01 10 11 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 16

Block Identification Πως βρίσκουμε αν ένα block υπάρχει στην cache ή όχι; Η ζητούμενη διεύθυνση χωρίζεται σε 3 κομμάτια: block, index, tag Το index δίνει την θέση όπου θα ψάξουμε Το tag συγκρίνεται με το tag που είναι αποθηκευμένο μαζί με τα δεδομένα Το block δίνει το offset μέσα στο block, που θέλουμε να διαβάσουμε Μνήμη Cache TAG Ισότητα? DATA 4 bytes 01 11 00 TAG INDEX BLOCK Διεύθυνση = 011100b 00 01 10 11 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 17

Block Placement: Direct-Mapped Direct-mapped caches: το δεδομένο μπορεί να βρίσκεται σε αποκλειστικά μία προκαθορισμένη θέση που επιλέγεται από το index Trade-off: Πολύ απλή και γρήγορη αναζήτηση, αλλά μεγάλη πιθανότητα 2 χρήσιμα δεδομένα να πέφτουν στην ίδια θέση Μνήμη 01 11 00 TAG INDEX BLOCK Διεύθυνση = 011100b Cache 00 01 10 11? 11 11 00 TAG INDEX BLOCK Διεύθυνση = 111100b 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 18

Block Placement: Set-Associative n-way set-associative: 1-προς-n αντιστοιχία block μνήμης σε πιθανές θέσεις στην cache To index διαλέγει ολόκληρο set (σύνολο από n θέσεις) Για αναζήτηση: κοιτάμε τα tags σε όλο το set Trade-off: Μικρότερο miss-rate, αλλά πιο αργή αναζήτηση Μνήμη 2-way set-associative Cache 01 11 00 TAG INDEX BLOCK Διεύθυνση = 011100b 00 01 10 11 11 11 00 TAG INDEX BLOCK Διεύθυνση = 111100b 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 19

Block Placement: Fully-Associative Fully-associative: 1 μόνο set ένα block μπορεί να βρίσκεται σε οποιαδήποτε θέση Δεν υπάρχει index Trade-off: η πιο ευέλικτη δομή, αλλά με τεράστιο κόστος για την αναζήτηση Μνήμη fully-associative Cache 0111 00 1111 00 TAG BLOCK TAG BLOCK Διεύθυνση = 011100b Διεύθυνση = 111100b 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 20

Block Replacement Στις direct-mapped: μόνο μία θέση για να μπει το δεδομένο την αδειάζουμε και γράφουμε το νέο δεδομένο Στις associative: πολλαπλές θέσεις, σε ποια θα τοποθετήσουμε το δεδομένο; Ιδανικά σε αυτήν που κρατά το λιγότερο χρήσιμο δεδομένο δυστυχώς δεν ξέρουμε πόσο χρήσιμα θα είναι τα δεδομένα μας 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 21

Block Replacement Πιο απλή μέθοδος: random Διαλέγουμε τυχαία το way που θα αντικαταστήσουμε Trade-off: Πολύ απλή υλοποίηση, αποδεκτή αλλά όχι σπουδαία απόδοση Πιο κοντινή στην ιδανική μέθοδο: LRU(Least Recently Used) Αντικαθιστούμε το block που έχει να χρησιμοποιηθεί τον περισσότερο καιρό Trade-off: Συλλαμβάνει καλύτερα το temporal locality (μικρότερο miss rate), αλλά είναι πολύ σύνθετη και ακριβή υλοποίηση (n*log(n) bits για κάθε set με n ways, βαρύς αλγόριθμος) 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 22

Block Replacement - Συμβιβασμοί Pseudo-LRU Ξέρει με ακρίβεια μόνο το MRU block, διαλέγει προσεγγιστικά το LRU Trade-off: Ελαφρώς χαμηλότερη απόδοση, πολύ πιο απλή υλοποίηση (n-1 bits για κάθε set με n ways, επιλογή block με lookup table) FIFO: First-In First-Out Κρατάει την σειρά με την οποία μπήκαν τα blocks στην cache Trade-off: Απόδοση ελαφρώς καλύτερη ή χειρότερη ανάλογα με το πρόγραμμα, ίδιος όγκος πληροφορίας με το LRU, πιο απλός αλγόριθμος 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 23

Block Replacement - Συμβιβασμοί NRU: Not Recently Used Ξέρει μόνο ποια blocks δεν έχουν χρησιμοποιηθεί πρόσφατα, διαλέγει τυχαία ένα από αυτά Trade-off: n bits ανά set, πολύ απλός αλγόριθμος, απόδοση όμως κάπου ανάμεσα στο random και στο LRU 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 24

Block Replacement - Συμβιβασμοί Ο αριθμός των ways έχει αρνητική επίδραση: και στην κυκλωματική πολυπλοκότητα και στο κόστος των μεθόδων αντικατάστασης Πχ για 32 ways: η αναζήτηση απαιτεί διάβασμα 32 tags και 32 συγκρίσεις το LRU απαιτεί αποθήκευση & διαρκή ανανέωση 160 bits ανά set Για 4 ways: συγκρίνουμε μόνο 4 tags για αναζήτηση για το LRU συντηρούμε μονο 8 bits ανά set Το καλύτερο trade-off είναι στα 2 έως 4 ways Λίγο καλύτερη απόδοση με περισσότερα ways, αλλά δυσανάλογη αύξηση του κόστους Για μεγαλύτερες, πιο αργές caches (L2, L3) περισσότερα ways είναι ΟΚ 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 25

Write Strategy Πρόβλημα όταν κάνουμε write τα αντίγραφα στην cache έχουν διαφορετικές τιμές από ότι τα δεδομένα στην μνήμη Δύο τακτικές: Write-through Write-back 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 26

Write Strategy Write-through: Σε κάθε write στέλνουμε τα δεδομένα και στην μνήμη Αντιμετωπίζουμε απλά το πρόβλημα των writes Χρειαζόμαστε buffer, για να μην καθυστερούμε τον επεξεργαστή μέχρι να ολοκληρωθεί η εγγραφή Κάθε mov προς την μνήμη, προκαλεί χρήση του bus χρειαζόμαστε υψηλότερο bandwidth προς την μνήμη 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 27

Write Strategy Write-back: Δεν στέλνουμε writes στην μνήμη Όταν διώχνουμε block με αλλαγμένα δεδομένα, μόνο τότε τα στέλνουμε και στην μνήμη Πολλαπλές εγγραφές στο ίδιο block προκαλούν μόνο μία εγγραφή στην μνήμη λιγότερο bandwidth Ta δεδομένα της μνήμης και της cache ΔΕΝ είναι τα ίδια Cache inconsistency problem για Ι/Ο & multiprocessing Χρειάζεται έξτρα μηχανισμούς για να αποφευχθούν σφάλματα Χρειάζεται ένα extra bit, το dirty bit, για να θυμόμαστε ποια blocks έχουν αλλάξει 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 28

Αποτελέσματα μίας απλής L1 cache Perfect Memory No Cache L1 Cache 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 29

Cache Performance CPUtime = Instruction Count x CPI total x Clock cycle time CPI total = CPI non_memory + (Mem accesses per instruction x miss_rate x miss_penalty) 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 30

Improving Cache Performance 1) Μείωσε το miss rate, 2) Μείωσε το κόστος του miss, ή 3) Μείωσε το χρόνο που χρειάζεται για το hit 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 31

Improving Cache Performance 1) Μείωσε το miss rate, 2) Μείωσε το κόστος του miss, ή 3) Μείωσε το χρόνο που χρειάζεται για το hit 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 32

Μείωση των misses Κατηγοριοποίηση των misses: 3 C Compulsory ή Cold: Κατά την πρώτη ανάγνωση ενός block, αυτό δεν μπορεί να είναι στην cache και προκαλεί αναγκαστικά miss. Capacity: Misses που προκαλούνται γιατί τα blocks που χρειάζεται το πρόγραμμα υπερβαίνουν τα blocks που μπορούν να χωρέσουν στην cache. Conflict: Extra misses που προκαλούνται σε directmapped και set-associative caches, επειδή ο αριθμός των blocks που πέφτουν σε ένα set υπερβαίνει το μέγεθος του set Extra C: Coherency... 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 33

Μέσο απόλυτο miss rate (SPEC92) 0.14 0.12 0.1 0.08 0.06 0.04 0.02 0 1 1-way 2-way 4-way 8-way Capacity 2 4 8 16 32 Cache Size (KB) 64 128 Compulsory 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 34

Πως μειώνουμε τα misses; 3 Cs: Compulsory, Capacity, Conflict Πως μεταβάλεται κάθε C όταν αλλάζουμε: Το μέγεθος του block; Το associativity; Το πως λειτουργεί ο compiler; 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 35

1. Μείωση των misses με μεγαλύτερο μέγεθος block 25% Miss Rate 20% 15% 10% 5% 0% 16 32 64 128 Block Size (bytes) 256 1K 4K 16K 64K 256K 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 36

2. Μείωση των misses με μεγαλύτερο associativity Πρακτικός κανόνας 2:1 Μία direct-mapped cache μεγέθους Ν έχει το ίδιο miss rate με μία 2-way set-associative cache μεγέθους Ν/2 Αλλά προσοχή! Το σημαντικό μέγεθος είναι ο χρόνος εκτέλεσης Όσο αυξάνεται το associativity, αυξάνεται και ο χρόνος εξυπηρέτησης του hit Ο Hill [1988] πρότεινε σαν κανόνα για την αύξηση του hit time ανάμεσα σε μία 2-way και μία 1-way: external cache +10%, internal + 2% 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 37

3. Μείωση των misses με μία victim cache Πως να συνδυάσουμε το γρήγορο hit time της direct-mapped με τα λιγότερα conflict misses της set-associative; Victim Cache! Μικρός fully-associative buffer Τα δεδομένα που φεύγουν από την κυρίως cache μπαίνουν στην victim cache Αν χώραγαν σε μία set-associative cache, αλλά έφυγαν μόνο και μόνο λόγω του περιορισμένου associativity, τότε υπάρχει πολύ καλή πιθανότητα να χρησιμοποιηθούν όσο είναι στην victim cache Jouppi [1990]: Με μία victim cache 4 εγγραφών μειώθηκαν κάτα 20% εώς 95% τα conflict misses μίας 4KB DM cache Χρησιμοποιούνται σε επεξεργαστές Alpha & επεξεργαστές HP 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 38

4. Μείωση των misses με φαινομενική αύξηση του associativity Κάποιος άλλος τρόπος να μειώσουμε τα conflict misses, χωρίς ζημιά στο hit time; Pseudo-associativity Μοιράζουμε την cache σε δύο μισά Στο ένα μισό ελέγχουμε για hit όπως σε μία direct-mapped Στο άλλο μισό ελέγχουμε αν κάνουμε miss στο πρώτο μισό Hit στο δεύτερο μισό: slow-hit Μειονέκτημα: περιπλέκεται πολύ το pipeline του επεξεργαστή, αν το hit παίρνει είτε 1 είτε 2 κύκλους Χρησιμεύει κυρίως για caches μακριά από τον επεξεργαστή, πχ L2 ή L3 Υπάρχει στον MIPS R1000 και στον UltraSPARC 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 39

5. Μείωση των misses με prefetching Prefetching: μεταφορά block από την μνήμη στην cache πριν αυτά ζητηθούν Σωστές έγκαιρες μεταφορές: Μείωση των misses Σωστές αλλά καθυστερημένες μεταφορές: Μείωση του χρόνου του miss Σωστές αλλά πρόωρες μεταφορές: Ίσως διώξουν χρήσιμα δεδομένα Ίσως να μην καταφέρουν να μείνουν στην cache μέχρι να χρησιμοποιηθούν...αλλά θα έχουμε κάποιο κέρδος Λάθος μεταφορές: διπλή ζημιά! Αχρείαστη αύξηση του απαιτούμενου bandwidth Εκτόπιση χρήσιμων δεδομένων από την cache 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 40

5. Μείωση των misses με prefetching Πως γίνεται; Software: Εντολές μέσα στον κώδικα, λένε στον επεξεργαστή ποια δεδομένα να φέρει Hardware: πάρα πολλά σχήματα 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 41

5. Μείωση των misses με hardware prefetching Συνηθισμένοι μηχανισμοί: Sequential prefetcher Αν κάνουμε miss στο block i, φέρνουμε το i+1 Πολύ καλό για instruction caches το instruction stream είναι sequential από την φύση του Σχετικά καλό για data caches One Block Lookahead Αν κάνουμε access στο block i, φέρνουμε το i+1 Μοιάζει με το να έχουμε διπλάσιο block size, ενίοτε δημιουργεί προβλήματα Stride Prefetcher Αν κάνουμε access το block i και το block i+n και το block i+2n, φέρε το i+3n History Based Αν δεις patterns από accesses να επαναλαμβάνονται, φέρε το επόμενο block του pattern 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 42

5. Μείωση των misses με hardware prefetching Ο δικός μας: Hu,Καξίρας,Martonosi, ISCA 2002 Βελτιώσεις από τον Γ. Κεραμίδα Correlating prefetcher με πρόβλεψη χρόνου Διατηρεί ιστορία από ακολουθείες tag που εμφανίζονται στη cache: Μνήμη Cache Αν δούμε A,B κάνουμε prefetch to C Προβλέπουμε επίσης πόσο θα μείνει το B στην cache ώστε να κάνουμε prefetch το C μετά τη ζωή του B Με 8ΚΒ ιστορία ελαχιστοποιούμε το miss rate μιας 32KB L1D σχεδόν όσο είναι θεωρητικά δυνατό Ακολουθίες TAG...,A,B,C,.....,D,B,C,.....,C,A,B,C....,E,F,G,.. Πίνακας Ιστορίας ABC DBC CAB EFG 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 43

6. Μείωση των misses με software Data Prefetch prefetching Εντολές μέσα στο πρόγραμμα προκαλούν φόρτωση των δεδομένων στον επεξεργαστή πριν ζητηθούν Register prefetch Φόρτωσε τα δεδομένα σε register (HP PA-RISC loads) Cache prefetch Φόρτωσε τα δεδομένα στην cache (MIPS IV, PowerPC, SPARC v. 9, Intel & AMD x86) Οι ειδικές prefetching εντολές δεν προκαλούν faults 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 44

Πχ: 6. Μείωση των misses με software prefetching for (i = 0; i < N; i++) { sum += a[i]*b[i]; } // Δύο misses ανά 16 iterations 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 45

Πχ: 6. Μείωση των misses με software prefetching for (i = 0; i < N; i++) { prefetch( &a[i + P] ); prefetch( &b[i + P] ); sum += a[i]*b[i]; // κανένα miss } 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 46

Πχ: 6. Μείωση των misses με software prefetching for (i = 0; i < N; i++) { prefetch( &a[i + P] ); prefetch( &b[i + P] ); sum += a[i]*b[i]; // κανένα miss } Δύο θέματα: Timing: το P πρέπει να είναι τέτοιο ώστε να δεδομένα να προλάβουν να έρθουν πριν χρησιμοποιηθούν, αλλά να μην έρθουν πολύ νωρίτερα για να μην μολύνουν την cache Κόστος εντολων: οι prefetch τρώνε κύκλους ρολογιού το κόστος εκτέλεσής τους < από τα κέρδη σε μείωση των misses Το παραπάνω παράδειγμα σε έναν σύγχρονο επεξεργαστή θα έτρεχε πιο αργά με εντολές prefetch 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 47

7. Μείωση των misses με optimizations από τον compiler Στο McFarling [1989] μειώθηκαν τα misses μίας 8KB direct mapped cache κατά 75% Πως; 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 48

7. Μείωση των misses με optimizations από τον compiler - Εντολές Τοποθέτηση ρουτινών στην μνήμη ώστε να μειωθούν τα conflict misses Profiling ώστε να εντοπιστούν οι σημαντικότερες πηγές conflict misses 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 49

7. Μείωση των misses με optimizations από τον compiler - Δεδομένα Ένωση πινάκων: αύξηση του spatial locality μέσω της χρήσης ενός πίνακα δομών (με δύο μέλη ανά εγγραφή) αντί για δύο ξεχωριστούς πίνακες (ένας για κάθε μέλος) Α B for(i=0;i<1024;i++) A[i] = A[i] + B[i]; for(i=0;i<1024;i++) A[i] = A[i] * B[i]; C for(i=0;i<1024;i++) C[i].a = C[i].a + C[i].b; for(i=0;i<1024;i++) C[i].a = C[i].a * C[i].b; 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 50

7. Μείωση των misses με optimizations από τον compiler - Δεδομένα Αλλαγή της σειράς ενθυλακωμένων loops: αλλαγή της σειρά ενθυλάκωσης ώστε οι προσπελάσεις στη μνήμη να γίνονται με τη σειρά που βρίσκονται τα δεδομένα στη μνήμη Α for(j=0;j<2;j++) for(i=0;i<1024;i++) A[i][j] = 2 * A[i][j]; Α for(i=0;i<1024;i++) for(j=0;j<2;j++) A[i][j] = 2 * A[i][j]; 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 51

7. Μείωση των misses με optimizations από τον compiler - Δεδομένα Ένωση loops: συνδυασμός δύο ανεξάρτητων loops των οποίων Α πολλά δεδομένα συμπίπτουν for(i=0;i<1024;i++) A[i] = A[i] + 1024; for(i=0;i<1024;i++) A[i] = log(a[i]); Α for(i=0;i<1024;i++) { A[i] = A[i] + 1024; A[i] = log(a[i]); } 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 52

7. Μείωση των misses με optimizations Blocking: από τον compiler - Δεδομένα αύξηση του temporal locality με το να περιορίζούμε την επεξεργασία σε τμήματα των δεδομένων, πριν προχωρήσουμε στο επόμενο τμήμα δεδομένων Dark color: last 16 accessed data (in cache) Α for(i=0;i<8;i++) for(j=0;j<8;j++) B[i][j] = (A[i-1][j] + A[i+1][j] + A[i][j-1] + A[i][j+1])/4; B Each iteration: 3 read misses, 1 write misses 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 53

7. Μείωση των misses με optimizations Blocking: από τον compiler - Δεδομένα αύξηση του temporal locality με το να περιορίζούμε την επεξεργασία σε τμήματα των δεδομένων, πριν προχωρήσουμε στο επόμενο τμήμα δεδομένων Dark color: last 16 accessed data (in cache) Α for(k = 0; k < 2; k++) for(l = 0; l < 2; l++) for(i = 4*k; i < 4*(k+1); i++) for(j = 4*l; j < 4*(l+1); j++) B[i][j] = (A[i-1][j] + A[i+1][j] + A[i][j-1] + A[i][j+1])/4; B Each iteration:1 read miss, 1 write misses 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 54

7. Μείωση των misses με optimizations από τον compiler vpenta (nasa7) gmty (nasa7) tomcatv btrix (nasa7) mxm (nasa7) spice cholesky (nasa7) compress merged arrays 1 1.5 2 2.5 3 Performance Improvement loop interchange loop fusion blocking 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 55

7. Μείωση των misses με optimizations από τον compiler Δεδομένα Έξτρα Τεχνικές: Δεδομένα που δεν έχουν τοπικότητα δεν μπαίνουν στην cache Εφικτό μέσω: του cache controller για system-level δεδομένα ειδικών memory moves για δεδομένα της εφαρμογής Δεδομένα που έχουν spatial αλλά όχι temporal locality (πχ streaming δεδομένα), μπαίνουν: σε ειδικές streaming caches σε συγκεκριμένα λίγα sets, για να μην μολύνουν την υπόλοιπη cache 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 56

Σύνοψη 3 Cs: Compulsory, Capacity, Conflict Reduce Misses via Larger Block Size Reduce Misses via Higher Associativity Reducing Misses via Victim Cache Reducing Misses via Pseudo-Associativity Reducing Misses by HW Prefetching Instr, Data Reducing Misses by SW Prefetching Data Reducing Misses by Compiler Optimizations Προσοχή πάντα στον κίνδυνο του να επιμείνουμε στην μείωση των misses χωρίς να νοιαστούμε για τις άλλες παραμέτρους 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 57

Improving Cache Performance 1) Μείωσε το miss rate, 2) Μείωσε το κόστος του miss, ή 3) Μείωσε το χρόνο που χρειάζεται για το hit 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 58

1. Μείωση του κόστους του miss: Subblock Placement Δεν φορτώνουμε αναγκαστικά ολόκληρο το block όταν κάνουμε miss Valid bits σε κάθε subblock μας λένε αν το συγκεκριμένο subblock έχει φορτωθεί 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 59

2. Μείωση του κόστους του miss: Early Restart και Critical Word First Φόρτωσε ολόκληρο το block, αλλά ο επεξεργαστής δεν περιμένει να φορτωθεί ολόκληρο Early restart Με το που φορτωθεί το word που ζητήθηκε, το στέλνουμε στον επεξεργαστή Critical Word First Φέρε από την μνήμη πρώτο το word που ζητήθηκε και στείλτο άμεσα στον επεξεργαστή Περισσότερο χρήσιμο αν έχουμε μεγάλα cache blocks Αν υπάρχει υψηλό spatial locality, δεν κερδίζουμε πολύ Ούτως ή άλλως περιμένουμε και για τα γειτονικά words 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 60

2. Μείωση του κόστους του miss: Nonblocking caches Για superscalar και out-of-order επεξεργαστές χρειάζεται να εκτελούμε πολλά loads ταυτόχρονα Superscalar Πολλαπλές εντολές ανά κύκλο Out-of-order Εκτελούμε εντολές ακόμη & αν δεν τέλειωσαν οι παλιότερες Οι σύγχρονες cache έχουν πολλαπλά ports και μπορούν να εξυπηρετήσουν πολλά hits ταυτόχρονα Τι γίνεται όμως όταν έχουμε πολλαπλά miss; Εάν η cache μπορεί να εξυπηρετήσει 1 miss τη φορά (blocking), τα load εκτελούνται το ένα μετά το άλλο με μεγάλη καθυστέρηση Load A Load B Load C Load D Load E miss miss miss miss miss time 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 61

2. Μείωση του κόστους του miss: Nonblocking caches Λύση: Non-Blocking Caches Εξυπηρετούν ταυτόχρονα πολλαπλά misses Παραλληλισμός στην χρήση της μνήμης (Memory-Level Parallelism) Κρατάμε σε ειδικούς registers το status του κάθε miss (miss-handling registers - MSHR) Load A Load B Load C Load D Load E time 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 62

2. Μείωση του κόστους του miss: Nonblocking caches Το hit under miss μειώνει το φαινομενικό κόστος των misses, λόγω του ότι ο επεξεργαστής μπορεί και συνεχίζει να λειτουργεί Το hit under multiple miss or miss under miss μειώνει ακόμη περισσότερο το φαινομενικό κόστος των misses Από την πλευρά του επεξεργαστή: πολλαπλά παράλληλα misses στοιχίζουν περίπου όσο ένα μόνο miss μέσο κόστος miss = προσπέλαση μνήμης / # παράλληλων misses Αρνητικά: Αυξάνεται σημαντικά η πολυπλοκότητα του ελεγκτή της cache Απαιτούνται πολλαπλά memory banks Από τους pentium pro, υποστηρίζεται σε όλους τους x86 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 63

3. Μείωση του κόστους του miss: L2 cache Προσθέτοντας ένα δεύτερο επίπεδο cache, μειώνουμε το φαινομενικό κόστος του L1 miss Κόστος L1 miss = L2_hit_latency * hit_rate + memory_latency * miss_rate Μα παρόμοια μεθοδολογία, μπορούμε να βελτιστοποιήσουμε το miss rate της L2 και τον χρόνο εξυπηρέτησης των hits 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 64

4. Μείωση του κόστους του miss: Προτεραιότητα στα read misses Το bus προς το memory subsystem είναι πεπερασμένος πόρος Bandwidth προς τις caches και την μνήμη πεπερασμένο Ανά πάσα στιγμή, ο αριθμός των memory εντολών εν πτήση πεπερασμένος Μας συμφέρει να δίνουμε προτεραιότητα στις πιο κρίσιμες εντολές Κρισιμότητα αριθμός εντολών που περιμένουν το αποτέλεσμα της τρέχουσας εντολής Το πιο απλό κριτήριο κρισιμότητας: αν η εντολή προκαλεί read ή write Ta write δεν παράγουν καινούργιο αποτέλεσμα κρισιμότητα 0 Τα read έχουν αποτέλεσμα και σχεδόν πάντα χρησιμοποιείται άμεσα κρισιμότητα > 0 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 65

4. Μείωση του κόστους του miss: Προτεραιότητα στα read misses Write (ή Store) Buffer: FIFO δομή που αποθηκεύει τα writes προς το επόμενο επίπεδο της ιεραρχίας Μας επιτρέπει να καθυστερούμε τo γράψιμο των writes, προς όφελος των reads Ta δεδομένα γράφονται όταν υπάρχει διαθέσιμο bandwidth ή αν δεν μπορούμε να τα καθυστερήσουμε άλλο Για τον επεξεργαστή ή την cache που προκαλεί το write, το φαινομενικό κόστος του write είναι ένας κύκλος Πρόβλημα: πιθανότητα RAW hazard! 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 66

4. Μείωση του κόστους του miss: Προτεραιότητα στα read misses Read After Write hazard: Όταν μία εντολή πρέπει να χρησιμοποιήσει δεδομένα που θα έπρεπε να είχε γράψει μία προηγούμενη εντολή, αλλά αυτό δεν έχει γίνει. Πχ: mov [data],ax add bx,[data] Αν το write στο data μπει στον write buffer, μπορεί το γράψιμο του data να γίνει μετά την πρόσθεσή του στο bx Πρώτη λύση: τα reads δεν εκτελούνται πριν αδειάσει ο write buffer από writes προς τις διευθύνσεις που χρησιμοποιούν τα reads Πραγματική λύση: Ta reads ψάχνουν στον write buffer για τα δεδομένα τους. Αν τα βρουν τα παίρνουν από εκεί, αν όχι το read προχωρά κανονικά 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 67

Μείωση του κόστους του miss: Σύνοψη CPI total = CPI non_memory + (Mem accesses per instruction x miss_rate x miss_penalty) Πέντε τεχνικές: Subblock Placement Early restart και Critical Word First Non-blocking caches L2 Cache Prioritize read misses 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 68

Cache Optimization Technique MR MP HT Complexity Larger Block Size + 0 Higher Associativity + 1 Victim Caches + 2 Pseudo-Associative Caches + 2 HW Prefetching of Instr/Data + 2 Compiler Controlled Prefetching + 3 Compiler Reduce Misses + 0 Priority to Read Misses + 1 Subblock Placement + 1 Early Restart & Critical Word 1st + 2 Non-Blocking Caches + 3 Second Level Caches + 2 Targeting Miss Rate Targeting Miss Penalty 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 69

Improving Cache Performance 1) Μείωσε το miss rate, 2) Μείωσε το κόστος του miss, ή 3) Μείωσε το χρόνο που χρειάζεται για το hit 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 70

1. Μείωση του κόστους του hit: Μικρές και γρήγορες caches Οι L1 βρίσκονται σχεδόν αποκλειστικά on-chip On-chip access πολύ πιο γρήγορα από τα off-chip Συνήθως αποτελούν κομμάτι του ίδιου του core Γρήγορα και μικρά buses, το ίδιο ρολόι με τον επεξεργαστή Τα μεγέθη τους είναι σχετικά μικρά και δίνουν χαμηλό associativity Alpha 21164: 8KB DL1 + 8KB IL1, Direct-mapped Intel Xeon E5410: 32KB DL1 + 32KB IL1, 8-way 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 71

1. Μείωση του κόστους του hit: Μικρές και γρήγορες caches 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 72

2. Μείωση του κόστους του hit: Αποφυγή της μετάφρασης της virtual address Ο επεξεργαστής παράγει virtual addresses, η μνήμη όμως λειτουργεί με physical διευθύνσεις Με ποιες διευθύνσεις θα λειτουργεί η cache; Πιο απλός και παραδοσιακός τρόπος: με physical Αλλά: Αν η cache λειτουργεί με physical addressing, πρέπει να μεταφράσουμε τη διεύθυνση πριν τη ζητήσουμε από την cache Μεγάλο hit time CPU TB $ MEM VA PA PA Conventional Organization 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 73

2. Μείωση του κόστους του hit: Αποφυγή της μετάφρασης της virtual address Λύση: Οι διευθύνσεις της cache να είναι virtual Virtually Addressed Cache Πρόβλημα: Ίδιες virtual διευθύνσεις διαφορετικών processes, δείχνουν σε διαφορετικά δεδομένα Αν δεν αδειάσουμε την cache μετά από κάθε αλλαγή process, θα έχουμε λάθος hits Χρόνος που χρειάζεται για να αδειάσει η cache υπερβολικά μεγάλος Αύξηση του miss rate από το συχνό άδειασμα της cache Λύση: Γράφουμε στα tags της cache ένα αναγνωριστικό για το process στο οποίο ανήκει η γραμμή VA Tags CPU $ TB MEM VA VA PA Virtually Addressed Cache Translate only on miss Synonym Problem 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 74

2. Μείωση του κόστους του hit: Αποφυγή της μετάφρασης της virtual address 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 75

2. Μείωση του κόστους του hit: Αποφυγή της μετάφρασης της virtual address Πρόβλημα: Διαφορετικές virtual διευθύνσεις ίσως δείχνουν στις ίδιες θέσεις μνήμης (aliases ή synonyms) Πχ: Frame 0x00000 0x00000010 0x00001010 Frame 0x00001 0xFFF00 0xFFF00 + + 0xFFF00010 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 76

2. Μείωση του κόστους του hit: Αποφυγή της μετάφρασης της virtual address Πρώτη λύση: ειδικό hardware ελέγχει τις μεταφράσεις όλων των πιθανών blocks που μπορεί να είναι synonyms Αν βρεθεί synonym, το διώχνουμε από την cache tag index block 0x00000010 0x0000 0 000000 010000 12 lsb part of page offset don't change through translation Possible Synonyms in: Set 0 (index 0000000) Set 64 (index 1000000) 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 77

2. Μείωση του κόστους του hit: Αποφυγή της μετάφρασης της virtual address Δεύτερη λύση: Ταυτόσημο page coloring + direct mapped Page coloring: bits της διεύθυνσης του page που καθορίζουν σε ποια περιοχή της cache πέφτει μία σελίδα Στο προηγούμενο παράδειγμα, το bit 12 καθορίζει αν η σελίδα πέφτει στο πρώτο ή στο δεύτερο μισό Ταυτόσημο page coloring: Το OS μπορεί να θέσει τις ίδιες τιμές στα page coloring bits δύο pages που δείχνουν στα ίδια δεδομένα Τα δύο τότε pages πέφτουν στις ίδιες περιοχές της cache Οι διευθύνσεις τους που δείχνουν στα ίδια data πέφτουν στο ίδιο set Αν έχουμε και direct mapped, τότε τα synonyms πέφτουν στο ίδιο block μόνο ένα αντίγραφο της ίδιας μεταβλητής μπορεί να βρίσκεται στην cache 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 78

2. Μείωση του κόστους του hit: Αποφυγή της μετάφρασης της virtual address Best of two worlds: virtual index + physical tagging Αν κρατήσουμε το index μικρό, τότε όλα τα bits του index είναι bits του page offset Το page offset δεν αλλάζει με την μετάφραση Η επιλογή του set αρχίζει άμεσα με τα bits της virtual address Η μετάφραση αρχίζει παράλληλα Το tag match γίνεται με την μεταφρασμένη διεύθυνση Βελτίωση: vhints tag index block 0x00000010 0x0000 000000 010000 VA PA Tags CPU $ TB L2 $ MEM PA Overlap $ access with VA translation: requires $ index to remain invariant across translation Set 0 (index 000000) 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 79

Virtual address translation Η μεταφρασμένη διεύθυνση χρειάζεται Πριν πάμε στην L1, για physically tagged/indexed συστήματα Στο τέλος του L1 cache access, για virtually tagged συστήματα ή physically tagged-virtually indexed συστήματα Μία μετάφραση για κάθε instruction fetch και memory move Το address translation είναι στο critical path του συστήματος! 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 80

Virtual address translation Τυπικό σχήμα: 31 Page Directory Base Address 22 21 12 Page Directory Off Page Table Offset Directory Entry 0 Directory Entry 1 Directory Entry 2 Directory Entry 3 Directory Entry 4... Directory Entry 1021 Directory Entry 1022 Directory Entry 1023 11 Page Entry 0 Page Entry 1 Page Entry 2 Page Entry 3 Page Entry 4... Page Entry 1021 Page Entry 1022 Page Entry 1023 Page offset 0 PAGE 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 81

Virtual address translation Τυπικό σχήμα: 31 Page Directory Base Address 1o Access 22 21 12 Page Directory Off Page Table Offset Directory Entry 0 Directory Entry 1 Directory Entry 2 Directory Entry 3 Directory Entry 4... Directory Entry 1021 Directory Entry 1022 Directory Entry 1023 11 Page Entry 0 Page Entry 1 Page Entry 2 Page Entry 3 Page Entry 4... Page Entry 1021 Page Entry 1022 Page Entry 1023 Page offset 0 PAGE 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 82

Virtual address translation Τυπικό σχήμα: 31 Page Directory Base Address 1o Access 22 21 Page Directory Off Page Table Offset Directory Entry 0 Directory Entry 1 Directory Entry 2 Directory Entry 3 Directory Entry 4... Directory Entry 1021 Directory Entry 1022 Directory Entry 1023 2o Access Page offset 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 83 12 11 Page Entry 0 Page Entry 1 Page Entry 2 Page Entry 3 Page Entry 4... Page Entry 1021 Page Entry 1022 Page Entry 1023 0 PAGE

Virtual address translation Τυπικό σχήμα: 31 Page Directory Base Address 2 Accesses για κάθε Adress Translation!!! 1o Access 22 21 Page Directory Off Page Table Offset Directory Entry 0 Directory Entry 1 Directory Entry 2 Directory Entry 3 Directory Entry 4... Directory Entry 1021 Directory Entry 1022 Directory Entry 1023 2o Access Page offset 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 84 12 11 Page Entry 0 Page Entry 1 Page Entry 2 Page Entry 3 Page Entry 4... Page Entry 1021 Page Entry 1022 Page Entry 1023 0 PAGE

Virtual address translation Ακόμη και σε σύστημα όπου η μνήμη προσπελαύνεται σε έναν κύκλο: Instruction Fetch 2 κύκλοι για translation, 1 για το fetch Memory Access 2 κύκλοι για translation, 1 για το access Το address translation προσθέτει 2-4 κύκλους στην εκτέλεση κάθε εντολής! Σε συστήματα με memory wall χωρίς caches: Address translation εκατοντάδες έξτρα κύκλοι Με L1 cache: Αν κάνουμε hit, 4-20 έξτρα κύκλοι Όμως, το πιθανότερο είναι το miss 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 85

Virtual address translation Σε τέτοια συστήματα το virtual memory είναι απαγορευτικά αργό Ακόμη και 4 κύκλοι καθυστέρηση πριν ξεκινήσουμε ένα access είναι πολλοί Πως λύνεται το πρόβλημα; 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 86

Translation Look-aside Buffer Αν το πρόγραμμα έχει locality στα addesses, θα έχει locality και στα pages που χρησιμοποιεί! Μπορούμε να κάνουμε caching στις μεταφράσεις Translation Lookaside Buffer (TLB): Cache για την μετάφραση Αποθηκεύει αντιστοιχίες virtual physical Tag 20 high order bits της virtual address Data 20 high order bits της physical address + page control, page access rights κτλ 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 87

Translation Look-aside Buffer Παράλληλα με το instruction fetch ή memory access: Search το TLB με address το virtual address Αν κάνουμε hit η μετάφραση είναι δωρεάν! Αν κάνουμε miss κλασική διαδικασία 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 88

Translation Look-aside Buffer Τα TLBs πρέπει να είναι γρήγορα: Αποτέλεσμα πριν αρχίσει το access ή πριν το tag match στην L1 Χρειαζόμαστε χαμηλό miss rate: Το translation είναι στο critical path και είναι πολύ ακριβό όταν κάνουμε miss Τα TLBs συνήθως είναι μικρά και highly-associative Αλλά οι λεπτομέρειες διαφέρουν από επεξεργαστή σε επεξεργαστή 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 89

TLBs στους x86 Instruction TLB Core/Core2 128 Entries, 4-way set associative Pentium 4/Xeon 128 Entries, 4-way set associative Pentium Pro/II/III 32 Entries, 4-way set associative Pentium+MMX 32 Entries, fully associative Pentium 32 Entries, 4-way set associative Data TLB Core2 DTLB0: 16 Entries FA, DTLB1: 256 Entries 4-ways Pentium 4/Xeon 64 Entries FA, shared with large page data TLB Core 128 Entries 4 ways Pentium - PentiumIII 64 Entries 4-ways 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 90

Έλεγχος των TLBs στους x86 Τα περιεχόμενα των TLBs είναι προσπελάσιμα μέσω των test registers TR6 και TR7 Physical Address 0 0 0 0 0 0 0 H T REP 0 0 Linear Address V D D 0 0 0 0 C # U U W # # TR7 TR6 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 91

Έλεγχος των TLBs στους x86 TR6: Bit 0: Δηλώνει αν θέλουμε να αναζητήσουμε (1) ή να γράψουμε (0) ένα TLB Bit 1: Δηλώνει αν θέλουμε να ενεργήσουμε στο instruction (0) ή στο data (1) TLB Bits 31:12 : Το page που ψάχνουμε να δούμε αν περιέχεται στο TLB ή που θέλουμε να προσθέσουμε Physical Address 0 0 0 0 0 0 0 H T REP 0 0 Linear Address V D D 0 0 0 0 C # U U W # # TR7 TR6 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 92

Έλεγχος των TLBs στους x86 TR7: Bit 4: Δείχνει αν κατά την αναζήτηση page είχαμε hit Bits 31:12 : Αν αναζητούσαμε και είχαμε hit περιέχουν την physical address που αντιστοιχεί στο page που αναζητήσαμε Αν γράφουμε στο TLB, θέτουμε εδώ το physical address που θέλουμε να αντιστοιχεί στο page που ορίσαμε στο TR6 Physical Address 0 0 0 0 0 0 0 H T REP 0 0 Linear Address V D D 0 0 0 0 C # U U W # # TR7 TR6 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 93

Έλεγχος των TLBs στους x86 Μετά τους Pentium οι TR6 και TR7 μετατράπηκαν σε Model Specific Registers που διαβάζονται με την εντολή RDMSR και γράφονται με την εντολή WRMSR RDMSR: Διαβάζει τον MSR που καθορίζεται από τον ECX στους καταχωρητές EDX:EAX WRMSR: Γράφει τα περιεχόμενα των καταχωρητών EDX:EAX στον MSR που καθορίζεται από τον ΕCX Ο TR6 χρησιμοποιείται με ECX=8 και ο TR7 με ECX=9 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 94

Παράδειγμα ελέγχου των TLBs next: mov eax,page_no ;load eax with the page number or eax,01h ;we search for that page or eax,02h ;and we search in the D-TLB mov ecx,08h ;WRMSR refers to TR6 wrmsr ;so TR6 <= eax mov ecx,09h ;RDMSR refers to TR7 rdmsr ;so eax <= TR7 and al,10h ;leave only the hit bit jz miss ;if zero, page not in TLB hit: ;print that page PAGE_NO was found and ;to which physical page frame it corresponds miss: ;print that page PAGE_NO was not found 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 95

Ιεραρχία μνήμης στους x86 Μέχρι τον 80286 το memory wall μικρό, δεν υπήρχε ανάγκη για cache 80386: εξωτερική unified cache, direct-mapped, 32KB 80486: εξωτερική unified cache, direct-mapped, 64KB Pentium: πρώτος επεξεργαστής της intel με on-chip cache L1 Instruction 8KB, 2-way LRU, 32B/line L1 Data 8KB, 2-way LRU, 32B/line, 2-ports L2 Unified 64-256KB, direct mapped, 32B/line 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 96

Ιεραρχία μνήμης στους x86 Pentium Pro L1 Instruction 8KB, 4-way LRU, 32B/line L2 Unified 256KB-1MB, 4-way, 32B/line non-blocking εσωτερική/εξωτερική L1 Data 8KB, 2-way LRU, 32B/line, 2-ports, 8 banks 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 97

Ιεραρχία μνήμης στους x86 Pentium 4 L1 Instruction TRACE CACHE 12ΚμOP, 8-way LRU, 6-μOPs/line (across branches) L2 Unified 128KB 2-way, 256KB 4-way, 512 8-way Pseudo-LRU, 64B/line non-blocking 7/7 Cycle Latency (Integer/FP), 256 Bit Bus, Data on every Cycle L1 Data 8KB, 4-way LRU, 64B/line, 2-ports, Write-through Non-blocking (4 misses) 2/6 Cycle latency (Integer/FP) 16 byte bus to FP L3-Unified: 512KB, 4-Way, 1024KB, 8-Way, 64 Byte/Line 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 98

Ιεραρχία μνήμης στους x86 Core2 (Conroe) L1 Instruction 32KB, 8-way 64B/line L2 Unified & Shared 2MB, 8-way Pseudo-LRU, 64B/line non-blocking, non-inclusive 14/14 Cycle Latency (Integer/FP), L1 Data 32KB, 8-way, 64B/line Write-back 3/3 Cycle latency (Integer/FP) 16 byte bus to FP 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 99

Ιεραρχία μνήμης στους x86 i7 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 100

Ιεραρχία μνήμης στους x86 Extra Caches Store Buffer: Ουρά στην οποία μπαίνουν τα stores που προορίζονται να γραφτούν στην L1 Επιτρέπει στα stores να εκτελούνται χωρίς καθυστέρηση Γράφονται πραγματικά, όταν έρθει η σειρά τους και υπάρχει διαθέσιμο bandwidth Ενδεχομένως, προτίμηση για χρήση του bus από loads Write-combining buffer Επιτρέπει τον συνδυασμό ανεξάρτητων store εντολών, καθώς και stores που γράφουν στις ίδιες θέσεις μνήμης, ώστε να αξιοποιείται καλύτερα το bus του επεξεργαστή 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 101

Ιεραρχία μνήμης στους x86 Extra μηχανισμοί ελέγχου CR0: Bit 30: Caching Disable Flag (CD) απενεργοποιεί τις caches Bit 29: No-writeback Flag (NW) απενεργοποιεί το writeback Page directory και page table entries: Page Caching Disabled Flag (PCD) η σελίδα δεν μπαίνει σε caches Page Write-through Flag (PWT) η σελίδα γίνεται write-through Global bit: αν set, το TLB entry της σελίδας δεν αφαιρείται μετά από ένα task switch CR3: PCD & PWT Flags, ελέγχουν το page όπου βρίσκεται το Page Directory CR4: Page Global Enable Flag (PGE) ενεργοποιεί την χρήση του G Bit 4 Memory Type Range Registers (MTRRs) ελέγχουν τον τύπο caching που εφαρμόζεται σε μεγάλα κομμάτια της μνήμης Page Attribute Table Παρόμοια λειτουργικότητα με τους MTRRs, αλλά για μεμονωμένα pages 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 102

Ιεραρχία μνήμης στους x86 Τύποι caching Σε ένα πραγματικό σύστημα, το address space καλύπτει: Πραγματική μνήμη πλήρες caching επιθυμητό Memory-mapped I/O τα δεδομένα σε μία θέση μνήμης μπορεί να αλλάζουν από read σε read ή από write σε write caching ανεπιθύμητο, write combining προβληματικό Framebuffers Σπάνια διαβάζονται, συχνά γράφονται το caching δεν βοηθάει και μολύνει την cache, αλλά το write combining σώζει bandwidth Επιπλέον υπάρχουν δεδομένα που το λειτουργικό μπορεί να μην θέλει να μείνουν στην cache Πχ για να μην μολυνθεί η cache με μεγάλες, σπάνια χρησιμοποιούμενες δομές Δεν υπάρχει ένα configuration των caches που να καλύπτει όλες τις περιπτώσεις 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 103

Ιεραρχία μνήμης στους x86 Τύποι caching Μέσω των MTRR και του PAT, μπορούμε να ελέγξουμε πως θα χρησιμοποιηθεί το υποσύστημα μνήμης για διαφορετικά δεδομένα Strong Uncacheable: Τα δεδομένα δεν μπαίνουν σε caches, access προκαλείται μόνο αν το ζητήσει το πρόγραμμα και όλα τα transactions εκτελούνται ακριβώς με την σειρά του προγράμματος Uncacheable: Mόνο για PAT, το ιδιο με το strong uncacheable αλλά μπορεί να γίνει override από τους MTRRs Write-Combining: Tα δεδομένα δεν μπαίνουν σε caches, αλλά τα stores μπαίνουν στον WC Buffer. Τα speculative loads επιτρέπονται Write-Through: Τα δεδομένα μπαίνουν σε caches, αλλά τα writes στέλνονται και στην μνήμη Write-Back: Τα δεδομένα μπαίνουν σε caches και τα writes γράφονται άμεσα μόνο εκεί Write-Protected: Caching ενεργό, αλλά τα writes σβήνουν την αντίστοιχη γραμμή από όλες τις caches σε όλους τους επεξεργαστές πάνω στο bus 2011-01-17 Εργαστήριο Ηλεκτρονικών Εφαρμογών 104