La memoria cache Tecniche di rimpiazzo
Problemi con le cache Ampiezza del blocco Tipi di Cache Misses Fully Associative Cache N-Way Associative Cache Politiche di rimpiazzo dei blocchi
Benefici dalla località spaziale Block Size Benefici dalla località spaziale Località spaziale: è probabile che le parole che si trovano vicine ad una parola richiesta siano nuovamente richieste in tempi brevi. La località spaziale emerge spontaneamente nei programmi.
Block Size La frequenza di miss si riduce all’aumentare della dimensione dei blocchi. (miss rate) Ma attenzione se la dimensione dei blocchi è troppo grande la frequenza di miss aumenta perchè si ridurrebbe il numero di blocchi presenti nella cache. Il costo di una miss (miss penalty) aumenta al crescere della dimensione del blocco.
completamente associativa Cache a confronto Cache contenente 8 blocchi mappa diretta tag dati 2 vie tag dati 4 vie tag dati completamente associativa tag dati
Esempio: mappa diretta Cache da 4 parole Sequenza di accessi: 0,8,0,6,8 (dim. Blocco=1B)
Associativa a 2 vie Cache da 4 parole Sequenza di accessi: 0,8,0,6,8
Completamente associativa Cache da 4 parole Sequenza di accessi: 0,8,0,6,8
Block Replacement Policy (1/2) Se abbiamo scelta dove andiamo a mettere un nuovo blocco?
Block Replacement Policy (2/2) Se è tutto vuoto, generalmente scriviamo il nuovo blocco nel primo. Se tuttavia tutte le locazioni hanno già un blocco valido, possiamo usare una politica di rimpiazzo.
Block Replacement Policy: LRU LRU (Least Recently Used) Idea: buttare fuori blocchi con accesso meno recente. Pro: temporal locality => cose usate da poco potrebbero essere riusate a breve. Associatività: 2 vie 4 vie 8 vie Dimensione LRU Random LRU Random LRU Random 16 KB 5.2% 5.7% 4.7% 5.3% 4.4% 5.0% 64 KB 1.9% 2.0% 1.5% 1.7% 1.4% 1.5% 256 KB 1.15% 1.17% 1.13% 1.13% 1.12% 1.12%
Esempio Abbiamo una 2-way set associative cache con 4 word di capacità totale e blocchi da 1 word. Supponiamo di voler effettuare gli accessi in memoria ai blocchi: 0, 2, 0, 1, 4, 0, 2, 3, 5, 4 Che percentuale di miss e di hit otterremo applicando la tecnica LRU?
Example: LRU Addresses 0, 2, 0, 1, 4, 0, ... loc 0 loc 1 lru set 0 set 1 Addresses 0, 2, 0, 1, 4, 0, ... 0: miss, bring into set 0 (loc 0) set 0 set 1 lru lru 2 2: miss, bring into set 0 (loc 1) 2 set 0 set 1 lru lru 0: hit 2 lru set 0 set 1 1: miss, bring into set 1 (loc 0) lru 1 2 set 0 set 1 1 lru lru 4 4: miss, bring into set 0 (loc 1, replace 2) lru set 0 set 1 4 1 lru 0: hit