Corso di Architettura La memoria (2° parte) (1) Altri problemi con le cache °Ampiezza del blocco Tradeoff °Tipi di Cache Misses °Fully Associative Cache °N-Way Associative Cache °Politiche di rimpiazzamento dei blocchi (2) Block Size Tradeoff (1/3) °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. (3) Block Size Tradeoff (2/3) • 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. °In generale, bisogna minimizzare: Average Access Time = Hit Time + Miss Penalty x Miss Rate (4) Block Size Tradeoff (3/3) °Hit Time = tempo per cercare e recuperare dati dal corrente livello di cache. °Miss Penalty = tempo per trovare dati nel corrente livello di cache (incluso la possibilità di misses nei successivi livelli della gerarchia della memoria) °Hit Rate = % di richieste andate a buon fine nel corrente livello di memoria. °Miss Rate = 1 - Hit Rate (5) Block Size Tradeoff Conclusions Miss Rate Exploits Spatial Locality Miss Penalty Fewer blocks: compromises temporal locality Block Size Average Access Time Block Size Increased Miss Penalty & Miss Rate Block Size (6) Tipi di Cache Misses (1/2) Miss certi • Quando un programma è all’inizio. • La cache non contiene ancora nessun dato di quel programma, e quindi trovare miss è inevitabile. • Non sono facilmente evitabili, quindi non saranno materia di questo corso. (7) Types of Cache Misses (2/2) °Miss per conflitti • Miss che avvengono quando più blocchi competono per lo stesso insieme. • Problemi con le cache ad accesso diretto • come diminuire questo effetto? (8) Miss per conflitti °Soluzione 1: aumentare le dimensioni della cache ma è comunque caro. °Soluzione 2: è obbligatorio che ciascun blocco possa andare in una sola posizione della cache, come nelle cache a corrispondenza diretta? (9) Fully Associative Cache (1/3) °Campi: • Tag: lo stesso • Offset: lo stesso • Index: non ne ho bisogno °Ogni blocco può essere posto in qualsiasi locazione della cache: è detta completamente associativa perchè un blocco della memoria può essere associato a qualsiasi cella della cache. (10) Fully Associative Cache (2/3) °Fully Associative Cache (e.g., 32 B block) • Per ritrovare un dato blocco di una cache completamente occorre cercarlo in tutte le celle; la ricerca viene compiuta in parallelo. 4 31 0 Byte Offset Cache Tag (27 bits long) = = : = (11) Cache Data Valid B 31 B1 B 0 : = Cache Tag = : : : Fully Associative Cache (3/3) °Aspetti positivi della Fully Assoc Cache • Non ci sono miss per conflitto (dato che i dati possono andare ovunque) °Aspetti negativi della Fully Assoc Cache • Ha bisogno di hardware per ogni singola entrata: se abbiamo 64KB di dati in una cache con 4B, abbiamo bisogno di 16 KB di comparatori: very expensive. Altrimenti aumenta il tempo di accesso, portando a prestazioni complessive inferiori. (12) Terzo tipo di Cache Miss °Miss per capacità • I miss che sorgono quando la cache non può contenere tutti I blocchi necessari all’esecuzione del programma. • I miss per capacità avvengono perchè alcuni blocchi vengono sostituiti e devono essere prelevati più tardi. °Sono le miss più frequenti nella Fully associative cache. (13) N-Way Set Associative Cache (1/4) °Campi: • Tag: come prima • Offset: come prima • Index: indicano la riga corretta (chiamata set) °Vi è un numero fisso di posizioni (almeno 2) in cui si può porre ciascun blocco; una cache con n possibili collocazioni per ciascun blocco è detta ad n vie (N-way) • Ogni set contiene più blocchi • Una volta trovato il set corretto bisogna guardare tutti i tag per cercare il dato cercato. • indirizzo blocco = (indirizzo memoria) modulo (numero insiemi) (14) N-Way Set Associative Cache (2/4) °Osservazioni: • Rispetto ai set è a corrispondenza diretta. • Ogni set è fully associative • Praticamente corrispondenza parallelo. (15) sono diretta N che cache lavorano a in N-Way Set Associative Cache (3/4) °Dato un indirizzo di memoria: • Trovare l’insieme corretto. • Confrontare il tag con tutti I tag del set. • Se c’è un match è un hit altrimenti un miss. • Infine usare il campo offset per cercare il dato. (16) N-Way Set Associative Cache (4/4) • Anche le 2-way set associative cache evitano molte miss per conflitto. • I costi dell’hardware non sono male: ho bisogno solo di N comparatori °In effetti una cache a M blocchi ha queste caratteristiche: • E’ una cache a corrispondenza diretta se è una cache 1-way set assoc • E’ una cache completamente associativa se è una cache M-way set assoc (17) Cache a confronto °Cache contenente 8 blocchi tag dati tag dati tag dati tag dati tag dati tag dati tag dati 4 vie 2 vie tag dati tag dati tag dati tag dati tag dati tag dati tag dati tag dati mappa diretta (18) completamente associativa Esempio: mappa diretta °Cache da 4 parole °Sequenza di accessi: 0,8,0,6,8 Indirizzo blocco 0 6 8 Blocco da accedere 0 8 0 6 8 (19) H/M M M M M M Blocco 0 Mem[0] Mem[8] Mem[0] Mem[0] Mem[8] Blocco cache 0 2 0 Blocco 1 Blocco 2 Mem[6] Mem[6] Blocco 2 Associativa a 2 vie °Cache da 4 parole °Sequenza di accessi: 0,8,0,6,8 Indirizzo blocco 0 6 8 Blocco da accedere 0 8 0 6 8 (20) H/M M M H M M Insieme 0 Mem[0] Mem[0] Mem[0] Mem[0] Mem[8] Blocco cache 0 0 0 Insieme 0 Mem[8] Mem[8] Mem[6] Mem[6] Insieme 1 Insieme 1 Completamente associativa °Cache da 4 parole °Sequenza di accessi: 0,8,0,6,8 Blocco da accedere 0 8 0 6 8 (21) H/M M M H M H Blocco 0 Mem[0] Mem[0] Mem[0] Mem[0] Mem[0] Blocco 1 Blocco 2 Mem[8] Mem[8] Mem[8] Mem[8] Mem[6] Mem[6] Blocco 3 Block Replacement Policy (1/2) °Se abbiamo scelta dove andiamo a mettere un nuovo blocco? (22) 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 rimpiazzamento. (23) 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 Dimensione LRU Random 16 KB 5.2% 5.7% 64 KB 1.9% 2.0% 256 KB 1.15% 1.17% (24) 4 vie LRU Random 4.7% 5.3% 1.5% 1.7% 1.13% 1.13% 8 vie LRU Random 4.4% 5.0% 1.4% 1.5% 1.12% 1.12% Block Replacement Example °We have a 2-way set associative cache with a four word total capacity and one word blocks. We perform the following word accesses (ignore bytes for this problem): 0, 2, 0, 1, 4, 0, 2, 3, 5, 4 How many hits and how many misses will there for the LRU block replacement policy? (25) Block Replacement Example: LRU °Addresses 0, 2, 0, 1, 4, 0, ... • 0: miss, bring into set 0 (loc 0) • 2: miss, bring into set 0 (loc 1) • 0: hit • 1: miss, bring into set 1 (loc 0) loc 0 loc 1 lru set 0 0 set 1 set 0 lru 0 lru 2 set 1 set 0 lru 0 lru 0 1 lru 2 set 1 set 0 set 1 2 lru • 4: miss, bring into set 0 (loc 1, replace 2) set 0 lru0 lru2 4 lru set 1 • 0: hit set 0 lru0 lru4 lru set 1 (26) 1 1 Operazioni di scrittura °Write-through • Scrivere I dati sia nella memoria che nella cache. (adozione di un buffer che memorizza I dati in attesa di essere scritti nella memoria) °Write-back Il nuovo valore viene scritto solamente nel blocco della cache. Il blocco modificato dovrà essere copiato nel livello inferiore solo quando dovrà essere sostituito (27)