Testo di rif.to: [Congiu] – 6.1 (pg. 193–199)
Memoria Cache 06.a
Memoria associativa Cache completamente associativa Cache a mappatura diretta Cache set-associativa a n-vie Cache nell’Xscale PXA-255
La memoria cache
1
Per rendere più efficienti (più rapidi) gli accessi alla RAM: si interpone nel bus di memoria una memoria cache, ossia un modulo costituito da memoria: più veloce della RAM (ad es. 7 ns, invece di 70 ns), più costosa della RAM, di estensione ridotta (ad es. 512 Kbyte).
37
● si copiano nella cache alcune porzioni della RAM e si “spera” che il processore acceda proprio a quelle porzioni della RAM: se va bene, l’accesso è 10 volte più veloce (ad es. 7ns anziché 70ns!)
Memoria centrale con memoria cache Architettura degli Elaboratori
© 2010
Principio di località
2
• Località temporale: se il processore accede a un elemento in memoria, probabilmente vi accederà di nuovo presto. 37 • Località spaziale: se il processore accede a un elemento in memoria, probabilmente in futuro accederà ad elementi ad esso vicini. • Il principio di località degli accessi alla memoria: – vale certamente per il fetch delle istruzioni (eccetto che per le istruzioni di salto; ma se i salti sono all’indietro, per cicli iterativi di lunghezza non eccessiva, si è fortunati!); – vale spesso anche nell’accesso ai dati (es. array, stack, buffer circolari, …);
• poiché le istruzioni e i dati si trovano in aree di memoria diverse, spesso esistono due cache distinte: – instruction cache, – data cache. Architettura degli Elaboratori
Cache unica per istruzioni e dati
© 2010
3
37
Architettura degli Elaboratori
© 2010
Cache separate per istruzioni e dati
4
37
Architettura degli Elaboratori
Organizzazioni della memoria cache Sono possibili diverse organizzazioni della memoria cache : ● cache completamente associative, ● cache a mappatura diretta, ● cache set-associative a n vie.
Architettura degli Elaboratori
© 2010
5
37
© 2010
Cache completamente associativa
6
La memoria cache è composta da un insieme di m blocchi o linee (cache line), ciascuno comprendente l byte, che contengono una copia del contenuto di altrettanti blocchi situati in RAM:
37
● L’estensione della cache è m × l byte (m ed l sono sempre potenze intere di 2: m = 2p e l = 2q, con p e q interi positivi). ● La cache comprende inoltre alcuni bit di controllo e una CAM. © 2010
Architettura degli Elaboratori
La memoria associativa o CAM (1 di 2) Con il termine memoria associativa, chiamata anche CAM (Content Addressable Memory), si intende una memoria in grado di effettuare, in parallelo, il confronto tra un dato cercato e tutti i dati in essa contenuti. La memoria restituisce gli indirizzi dei dati in essa contenuti che siano uguali al dato cercato. xyz Dato cercato
abc
0
xyz
1
bcd
0
• • •
xyz Architettura degli Elaboratori
1
7
37
Ad es. può restituire una stringa di bit: gli 1 indicano le posizioni in cui il dato è stato trovato. © 2010
La memoria associativa o CAM (2 di 2) • Nelle operazioni di lettura una memoria associativa ha un comportamento simmetrico rispetto alla RAM:
8
37
– la RAM riceve un indirizzo e restituisce il dato contenuto a quell’indirizzo; – la CAM riceve un dato e restituisce l’indirizzo (o gli indirizzi) delle celle che contengono quel dato.
• La ricerca del dato viene operata in parallelo su tutti i registri della CAM: per gli scopi per cui sono usate, le CAM devono essere molto veloci e sarebbe inaccettabilmente lungo il tempo necessario per una ricerca sequenziale. • Di conseguenza l’hardware che realizza una CAM è molto complesso e molto costoso.
© 2010
Architettura degli Elaboratori
Blocchi della cache e indirizzi di RAM
9
Ciascuna delle m linee della cache è destinata a contenere copia del contenuto di un blocco di l byte situato in RAM a partire da un indirizzo multiplo di l: in questo modo, se N è il numero di bit di un indirizzo di memoria, gli indirizzi degli l byte di ciascun blocco (l=2q) hanno gli N-q bit più significativi uguali (TAG), mentre i q bit meno significativi forniscono l’indice di byte all’interno del blocco
37
parte di indirizzo comune a tutti i byte di un blocco indice di byte TAG N-q bit N bit
q bit
INDIRIZZO DI MEMORIA Architettura degli Elaboratori
© 2010
Esempio RAM 0 0
10 Blocco di l=26 byte 0 1 2
CACHE
(m=29 blocchi di l byte) 0
......
......
63
64 1
37
1
511
128 2 192 3 256
. . .
l = 64 (16 long-word), q = 6 (l = 2q) m = 512, p = 9 (m = 2p) cache 64×512 = 32 Kbyte indirizzo di RAM da 32 bit: 26 bit: TAG, 6 bit: indice di byte (0÷63)
Architettura degli Elaboratori
© 2010
Gestione dei TAG: HIT/MISS
11
Quando un blocco di l byte viene copiato dalla RAM alla linea k della cache, il TAG del blocco viene scritto nell’elemento della CAM associato alla linea k; quando il processore genera un indirizzo di memoria, il campo TAG viene ricercato nella CAM della cache: ● se trovato (HIT ), l’accesso si risolve (rapido) nella cache, ● altrimenti (MISS ): ▪ viene fatto l’accesso alla RAM e, nello stesso tempo, ▪ il blocco di RAM comprendente l’indirizzo cercato viene trasferito in una linea della cache (e il suo TAG inserito nel corrispondente elemento della CAM);
37
Si sfrutta quindi il principio (empirico) di località degli accessi alla memoria: se il principio è vero, gli accessi successivi al primo si risolvono (rapidamente) nella cache. Architettura degli Elaboratori
© 2010
Vantaggi delle cache
12
Esempio: 37
● lo hit rate (% di hit su tutti gli accessi) sia 90%, ● il tempo di accesso alla cache sia 7 ns, ● il tempo di accesso alla RAM sia 70 ns, su 10 accessi, 9 durano 7 ns, uno 70 ns; il tempo di accesso medio risulta essere: (9×7ns + 70ns)/10 = 13.3 ns Con un costo aggiuntivo modesto, gli accessi alla memoria sono stati sveltiti di un fattore maggiore di 5! Una cache con un buon hit rate evita che il processore debba rallentare quando accede alla memoria. Architettura degli Elaboratori
HIT rate
© 2010
13
Lo HIT RATE è quindi un indice della efficienza della cache : ● lo hit rate aumenta se aumenta la dimensione della cache (il numero NB per la dimensione LB dei blocchi): a parità di37 area di silicio occupata, se cresce NB diminuisce LB; il progettista deve trovare un compromesso tra i due); ● costo_CAM = fCAM(NB); ● costo_cache = fcache(NB,LB)+fCAM (NB). A parità di NB e LB, lo hit rate dipende da come si comporta il programma: ● se fa tanti salti e se i dati cui accede non sono raggruppati in memoria, lo hit rate diminuisce; ● se fa tanti cicli iterativi e se accede a dati contigui, lo hit rate aumenta; ● un compilatore potrebbe far sì che il codice dei cicli iterativi abbia indirizzo iniziale e lunghezza tali da poter stare in un unico blocco della cache. Architettura degli Elaboratori
© 2010
MISS: scelta del blocco da rimpiazzare • Quando, in seguito a un miss, è necessario ricopiare nella cache un nuovo blocco, normalmente (esaurito un transitorio iniziale) è necessario sovrascriverne uno già presente. • La politica con cui si sceglie il blocco da sovrascrivere è molto importante per l’efficienza della cache. Due criteri comunemente usati sono: FIFO: si sovrascrive la linea contenente il blocco che sta nella cache da più tempo, LRU (Least Recently Used): si sovrascrive la linea che da più tempo non subisce accessi (si possono usare uno o più dei bit di controllo associati alla linea, per tener traccia del tempo trascorso dall’ultimo accesso). Architettura degli Elaboratori
37
© 2010
MISS: aggiornamento del blocco in RAM • Se il blocco selezionato per essere sovrascritto ha subito accessi per scrittura mentre si trovava nella cache (un bit di controllo, dirty bit, lo segnala), allora la sua copia in RAM è obsoleta: ● prima di sovrascriverlo, il contenuto del blocco va ricopiato in RAM (copy-back). • Un tecnica alternativa, usata per tenere aggiornate le copie in RAM dei blocchi, consiste nell’effettuare tutte le operazioni di scrittura sia nella cache sia anche in RAM (write-through). • Con entrambe le tecniche, la scrittura in RAM può avvenire tramite un write buffer, ad accesso veloce, in modo che il processore non debba attendere che il trasferimento in RAM sia completato. Architettura degli Elaboratori
14
15
37
© 2010
I bit di controllo della cache
16
Già visti: ● dirty bit (copy-back), ● bit indicanti il tempo trascorso dall’ultimo accesso (LRU). Un altro bit di controllo utile: ● bit di validità: indica se il blocco è una copia valida del corrispondente blocco in RAM (può essere invalidato in seguito a modifiche subite da quest’ultimo per trasferimenti DMA o in sistemi multiprocessore). Architettura degli Elaboratori
37
© 2010
Organizzazioni meno costose
17
● costo_CAM = fCAM(NB), ● costo_cache = fcache(NB,LB)+fCAM(NB),
37
▪ fcache e fCAM sono ovviamente funzioni crescenti;
● il costo_CAM incide molto sul costo complessivo della cache; ● riducendo la CAM si possono ottenere soluzioni meno costose (e, ovviamente, meno efficienti): ▪ cache a mappatura diretta, ▪ cache set-associative a n vie.
Architettura degli Elaboratori
© 2010
Cache a mappatura diretta
18
Quando un blocco dalla RAM viene copiato nella cache, la posizione in cui viene collocato, anziché essere scelta con tecniche più o meno “intelligenti” (FIFO o LRU) è predeterminata: ● la collocazione di un blocco nella cache è data da: - il suo indirizzo in RAM, modulo l’estensione della cache.
37
In sostanza è come se la RAM fosse divisa in pagine e ciascuna pagina in blocchi: ● le pagine di dimensione uguale a quella della cache, ● i blocchi di dimensione uguale a quelli della cache, ● l’indice di un blocco all’interno della propria pagina è l’indice della linea in cui sarà caricato nella cache. Architettura degli Elaboratori
Schema di cache a mappatura diretta
© 2010
19
37
Architettura degli Elaboratori
© 2010
Blocchi di cache e indirizzi di RAM
20
Gli indirizzi di memoria hanno ancora il seguente significato:
● i q bit meno significativi: indice del byte nel blocco; 37 ● i rimanenti N-q bit : comuni a tutti i byte del blocco. Questi ultimi sono ora così ripartiti: ● r bit meno significativi: indice k del blocco nella pagina, ● N-q-r bit: TAG = indice della pagina nella RAM. parte di indirizzo comune a tutti i byte del blocco k indice di pagina indice di blocco indice di byte k
TAG N-q-r bit
N bit
r bit
q bit
INDIRIZZO DI MEMORIA Architettura degli Elaboratori
© 2010
Gestione dei TAG: HIT/MISS Quando il blocco di indice k viene copiato dalla RAM nella k-esima linea della cache, l’indice della pagina di RAM cui il blocco appartiene (il TAG) viene scritto in un registro della cache associato al blocco k. Quando il processore genera un indirizzo di memoria: ●gli r bit che forniscono l’indice k del blocco, individuano la posizione nella cache in cui si trova il blocco, se è presente; ●gli N-q-r bit più significativi dell’indirizzo (TAG) vengono confrontati con il contenuto del registro della cache
21
37
associato alla linea k (1 solo confronto: niente CAM!) ▪se uguale (HIT), l’accesso si risolve nella cache, ▪altrimenti (MISS), il blocco k-esimo nella cache appartiene ad un’altra pagina, e allora:
– viene effettuato l’accesso alla RAM e, contemporaneamente, – il blocco di RAM cercato viene trasferito nella linea k della cache (e il suo TAG nel corrispondente registro)
Architettura degli Elaboratori
© 2010
Mappatura diretta: pro e contro
22
Pro: ●non richiede una CAM: 37 ¾organizzazione certamente meno costosa di quella completamente associativa. Contro: ●il blocco da sovrascrivere è predeterminato (non può essere scelto tra quelli che presumibilmente non servono più): ¾hit rate decisamente più basso (minore efficienza). È possibile un compromesso tra costo ed efficienza. Architettura degli Elaboratori
Cache set-associativa a n vie
© 2010
23
Un buon compromesso tra l’efficienza della organizzazione completamente associativa e il basso costo di quella a 37 mappatura diretta, si può ottenere replicando n volte quest’ultima: ●per ogni indice di blocco k, anziché esserci una sola linea nella cache, ve ne sono n; ●a ciascun set di n linee è associata una CAM (di n elementi) che contiene i TAG dei blocchi presenti nel set. Come nell’organizzazione a mappatura diretta, la RAM è ancora divisa in pagine e ciascuna pagina in blocchi: ●l’indice di blocco individua il set in cui sarà caricato ●un blocco, di indice k, può essere caricato in una qualsiasi delle n linee nel k-esimo set. Architettura degli Elaboratori
© 2010
Schema di cache set-associativa a n vie
24
Set-associativa a 2 vie 37
Architettura degli Elaboratori
© 2010
Gestione dei TAG: HIT/MISS Quando il blocco di indice k viene copiato dalla RAM nel k-esimo set della cache, il blocco da sovrascrivere, tra gli n del set, può essere scelto con politica FIFO o LRU; l’indice della
25
37
pagina di RAM cui il nuovo blocco appartiene (TAG) viene scritto nel corrispondente elemento della CAM.
Quando il processore genera un indirizzo di memoria: ● gli r bit che forniscono l’indice k del blocco, individuano il set nella cache in cui si trova il blocco, se è presente; ● gli N-q-r bit più significativi dell’indirizzo (TAG) vengono confrontati (in parallelo) con il contenuto della CAM: ▪ se trovato (HIT), l’accesso si risolve nella cache,
▪ altrimenti (MISS): – viene effettuato l’accesso alla RAM e, nello stesso tempo, – il blocco di RAM caricato viene trasferito in una delle n linee del set (scelta con modalità FIFO o LRU) e il suo TAG nel corrispondente elemento della CAM.
Architettura degli Elaboratori
© 2010
Confronti con le altre organizzazioni
26
La soluzione set-associativa,
rispetto alla organizzazione a mappatura diretta: 37 ● è più efficiente (hit rate maggiore): il blocco da rimpiazzare non è predeterminato, ma può essere scelto, tra quelli del set, con un criterio che renda meno probabili i miss; ● è più costosa: richiede una CAM per ciascun set; rispetto alla organizzazione completamente associativa: ● è meno efficiente (hit rate inferiore): la scelta del blocco da rimpiazzare non è fatta tra tutti i blocchi della cache, ma è limitata a quelli di un set; ● è meno costosa: tante (piccole) CAM per ciascun set costano meno di una CAM unica (grande). È un buon compromesso: è la soluzione più diffusa. Architettura degli Elaboratori
© 2010
Livelli di cache
27
Spesso sono presenti più livelli di cache: ● una cache di 1° livello, ormai sempre integrata nello stesso chip del processore, ad accesso rapidissimo; ● una cache di 2° livello, talvolta esterna al chip del processore, ad accesso rapido; ● a volte anche una cache di 3° livello. Lo scopo è di portare nella cache di 1° livello (più vicina al processore) ciò cui il processore accederà nell’immediato futuro, spostando in una cache meno veloce (e meno costosa), ma più veloce della RAM, ciò che forse servirà più avanti (in modo da limitare le conseguenze negative dei miss ). Architettura degli Elaboratori
37
© 2010
Gerarchia di memoria
28
Sfruttando il principio di località: si consente l’accesso alla velocità della tecnologia più cara, 37 si rende disponibile una grande memoria con tecnologia poco cara. Processor Control
On-Chip Cache
Registers
Datapath
Second Level Cache (SRAM)
Main Memory (DRAM)
Speed (ns): 1
10
100
Size (bytes): 100
K
M
Secondary Storage (Disk)
Tertiary Storage (Disk)
10,000,000 10,000,000,000 (10 ms) (10 sec) T G
Cost: Architettura degli Elaboratori
Cache nel chip Intel Xscale PXA 255 il chip contiene: ● una instruction cache da 32-Kbyte, ● una data cache da 32-Kbyte, ● una mini-data cache da 2-Kbyte,
Architettura degli Elaboratori
© 2010
29
37
© 2010
PXA 255: instruction cache - 1
30
• la instruction cache è da 32-Kbyte, • set associativa a 32-vie
37
(32-way set associative cache); • ci sono 32 set, ciascuno contenente 32 blocchi (vie) • ciascun blocco (line) contiene 8 word da 32-bit (32 byte) più un bit di validità. • la politica di rimpiazzo è di tipo FIFO (round-robin algorithm).
Architettura degli Elaboratori
PXA 255: instruction cache - 2
© 2010
31
37
Architettura degli Elaboratori
© 2010
PXA 255: data cache - 1
32
• ci sono 2 data cache:
37
– una data cache da 32 Kbyte – una mini-data cache da 2 Kbyte • associato alle 2 cache dati c’è inoltre:
– un write buffer da 8 elementi, ciascuno di 16 byte; che serve a disaccoppiare la velocità di esecuzione delle istruzioni dalla lentezza degli accessi alla memoria esterna.
Architettura degli Elaboratori
© 2010
PXA 255: data cache - 2
33
• la data cache è da 32-Kbyte, • set associativa a 32-vie
(32-way set associative cache); • 32 set, ciascuno contenente 32 blocchi (vie) • ciascun blocco (line) contiene 8 word da 32-bit (32 byte) più un bit di validità, • ci sono 2 dirty bit per ciascun blocco, uno associato ai primi 16 byte, l’altro agli altri 16
37
• la politica di rimpiazzo è di tipo FIFO (round-robin algorithm). • per l’aggiornamento dei blocchi in memoria, può essere impostata la politica copy-back oppure quella write-through. Architettura degli Elaboratori
© 2010
PXA 255: data cache - 3
34
37
Architettura degli Elaboratori
PXA 255: mini-data cache - 1
© 2010
35
• la mini-data cache è da 2-Kbyte, • set associativa a 2-vie 37 (2-way set associative cache); • ci sono 32 set, ciascuno contenente 2 blocchi (vie), • ciascun blocco (line) contiene 8 word da 32-bit (32 byte) più un bit di validità, • ci sono 2 dirty bit per ciascun blocco, uno associato ai primi 16 byte, l’altro agli altri 16 • la politica di rimpiazzo è di tipo FIFO (round-robin algorithm). • per l’aggiornamento dei blocchi in memoria, può essere impostata la politica copy-back oppure quella writethrough.
Architettura degli Elaboratori
© 2010
PXA 255: mini-data cache - 2
36
37
© 2010
Architettura degli Elaboratori
Cache nel chip Samsung S3C2440A Il chip contiene: ● una instruction cache da 16 Kbyte, ● una data cache da 16 Kbyte. Entrambe sono set-associative a n=64 vie. Politica di rimpiazzo: round robin (cioè FIFO). Lunghezza di linea: 8 word (l=32 byte). 8 set da 64 x 32 = 2 Kbyte ciascuno La D-cache supporta sia copy-back che write-through. Il write buffer può contenere fino a 16 word di dati e 4 distinti indirizzi. INDIRIZZO DI MEMORIA: indice di pagina
indice di byte
TAG
indice di set k
24 bit
3 bit
5 bit
Architettura degli Elaboratori
32 bit
37
37
© 2010
Ls sigla è PD32: 32 bit, 8 registri e 1 mouse
Sire, tra 6 mesi costerà la metà e sarà veloce il doppio
Fine 06.a
Memoria Cache