
1.Memoria cache - Aspetti Generali
Il tempo di accesso per la memoria cache è almeno 10 volte più piccolo di quello della memoria principale. A causa della sua tecnologia molto costosa, le sue dimensioni sono limitate. Per raggiungere alte prestazioni gli indirizzi hanno bisogno di essere allocate il più delle volte nella cache. La terminologia utilizzata per l’efficienza della cache è “Hit rate” (l’hit rate rappresenta il rapporto tra il numero di indirizzi ai quali la cache accede e il numero totale di indirizzamenti durante un determinato tempo). L’opposto dell’hit rate è chiamato “Miss Rate” che può essere determinato dalla formula Miss Rate = 1 – Hit Rate.

Fig.1 Cache Data Transfer
Fig.2 Speed Access
2.Come valutare le prestazioni della memoria cache?
Accesso -> operazioni di lettura/scrittura
Hit -> il dato si trova nella cache
Miss -> il dato no si trova nella cache, accesso ad una memoria più lenta
Miss_Rate -> n. di miss / n. di accessi
Hit_Rate -> n. di hit / n. di accessi
Cache Esempio:
Tempo di accesso (cache) = 1ns
Tempo di accesso (memoria principale) = 10ns
Hit_Rate = 90% ( su 100 accessi, 90 sono nella cache)
Tempo di accesso (con la cache) = 90*1+10*1 = 100ns
Tempo di accesso (senza la cache) = 100*10 = 1000ns
Incremento di velocità = 100/10 = 10
Aumenta l’hit rate -> aumentano le prestazioni della cache -> diminuisce il consumo di energia -> aumenta la velocità di esecuzione.
3. Tipi di Miss
Compulsory miss – inizialmente la memoria cache è vuota e il primo accesso è sempre un miss. Il programma ha bisogno di eseguire alcuni cicli fino a che la cache sarà piena e questo tipo di miss non si verificherà più.
Conflict miss – questo tipo si verifica solo sulle cache di tipo direct-map e solitamente avviene perché il dato si trova in diverse locazioni della memoria cache.
Capacity miss – avviene perché la cache è piena e necessira di fare spazio per i dati attuali eliminando altri dati dalla cache; nella maggior parte dei casi sono dati vecchi.

Fig.3 CPU Die
4.Architetture della memoria cache
La cache è suddivisa in “linee” che hanno 4 componenti:
- Valid bit: è posto a 1 quando dati validi sono memorizzati nella cache.
- Dirty Bit: è posto a 1 quando i dati vengono modificati e non avviene un aggiornamento nella memoria principale allo stesso tempo.
- Tag: questo campo indica quale indirizzo è presente in quella linea.
- Data: i dati prelevati dalla memoria principale.
Direct Mapped – ogni blocco dalla memoria principale può occupare solo un particolare blocco nella cache, non importa se quel blocco è vuoto o meno. Questo modello di organizzazione della cache non richiede una politica di sostituzione.
Fully Associative – ogni blocco dalla memoria principale può occupare qualunque blocco della cache. Se la cache è piena allora una politica di sostituzione ha bisogno di decidere quali dati devono essere rimossi dalla cache per fare spazio a questo nuovo blocco di dati.
Set Associative – la cache è divisa in vari insiemi. Il nuovo dato può occupare solo i blocchi di un particolare insieme, determinato da alcuni bit dell’indirizzo. In pratica è la più usata a causa di un ottimo rapporto tra implementazione ed efficienza.
5.Gestione della memoria cache
La memoria cache ha piccole dimensioni comparata alla memoria principale di un qualunque sistema. Sapendo che il tempo di accesso della cache è 10 volte più piccolo della memoria esterna, prelevare dati dalla cache è un enorme vantaggio. Il processo di eliminare dati dalla cache per farne spazio a nuovi è chiamato “Algoritmo di sostituzione della cache”.
Oggi ci sono molti tipi di algoritmi che sono implementati nei controller delle cache. Alcuni di essi sono:
-LRU (Least Recently Used – usati meno recentemente) – Sostituisce i dati che non sono stati utilizzati per il periodo più lungo. LRU è implementato con una lista linkata.
-LFU (Least Frequently Used – usati meno frequentemente) – Ogni linea della cache ha un contatore che è incrementato ogni volta che il dato viene richiesto dalla cache.
- FIFO (First In First Out – il primo ad entrare è l primo ad uscire) – E’ molto semplice da implementare, ma ha un problema quando la memoria fisica è maggiore (Anomalia di Belady).
ARC (Adaptive Replacement Cache – Rimpiazzamento adattativo della cache) – combina le soluzioni LRU e LFU e dinamicamente si regola tramite queste due.
6.Ottimizzazione della cache
Usare un algoritmo per la gestione delle prestazioni della cache può essere significativamente incrementata usando i vantaggi di altri due princìpi:
-Località spaziale – Il dato richiesto dalla cache è posizionato vicino il dato precedente usato nella memoria fisica.
-Località temporale – I dati richiesti dalla cache sono recentemente usati o riutilizzati.
Alcune soluzioni molto spesso usano questi due metodi sono il prefetching, il loop blocking e la fusione, l’array pudding e l’array merging.
Leggi la versione Inglese: Memory Cache - Overview by RarCod

Leggendo le caratteristiche tecniche dei microprocessori installati a bordo dei recenti personal computer, vi sara’ capitato di sentire parlare di cache di livello 1, 2 o anche 3. Cosa significano questi termini?
La cache di livello 1 e’ quella realizzata il piu’ vicino possibile al processore, anzi normalmente viene realizzata all’interno dello stesso chip. Ne consegue che questa risulta essere la memoria cache piu’ veloce, e gli accessi possono essere effettuati alla velocita’ del micro anziche’ a quella del bus. Questa cache e’ la piu’ veloce ma anche la piu’ piccola. Esiste poi un’altra cache realizzata sulla motherboard, la cache di livello 2, realizzata con piccoli banchi ad accesso molto veloce. Alcuni micro hanno poi due cache interne on-chip: in questo caso L1 e L2 sono riferiti alle cache del micro, mentre L3 fa riferimento alla cache sulla motherboard.
pensiamo che fino al 10 15 anni fa non si utilizzava nemmeno questo sistema,
il futuro sicuramente ci preparerà altri livelli tra i registri interni del processore e la memoria RAM
il mio prof di informatica mi faceva l’esempio dicendo che la cache è un pò come il frigorifero, ti evita di andare sempre al market :DD
Hihi… bella questa! 😀
Questo era capace di fare tutto e al contempo di venire a scuola senza lavarsi per una settimana ! Avevo una compagna che gli faceva la danza della pioggia spruzzandogli l’ax 🙂 Il prof gorilla
Comunque, se non sbaglio tutti i device hanno della memoria cache anche i masterizzatori infatti dovrebbe essere rappresentata dalla voce buffer quando masterizzo giusto ???
l’ottimizzazione della memoria cache risulta molto importante per l’ottimizzazione del sistema poichè utilizzata in quasi tutti i pc di ultima generazione.
Credo che all’articolo manchi qualche schema di funzionamento. Continuo a trovare difficile questo argomento anche se in passato qualcuno ha tentato di spiegarmelo. Avete qualche link da suggerire?
Io toglierei pure il “quasi”…tutti i PC di ultima generazione!
l’utilizzo in futuro in maniera industriale degli HD a stato solido renderà questa componente obsoleta, data la velocità elevata dei nuovi hard disk
Potrebbe essere, anche se gli HD allo stato solido non sono costruiti con la tecnologia scalata dei microprocessori, mentre le cache si ed è il motivo per cui non si costruiscono memorie cache da GByte…i costi di produzione e di vendita degli HD sarebbero mostruosi! Però mai dire mai!
…alla richiesta di Cosimo.
Sarebbe interessante per ogni livello di cache vedere, anche in forma semplificata, come è realizzata circuitalmente la singola cella di memoria per capire dove si giustificano i tempi diversi e quant’altro esposto nell’articolo.
Io non sopporto quelle persone che vengono a chiederti un computer solo per utilizzo di documenti e internet e ti chiedono che cache abbia quel computer!Sapessero almeno cosa vuol dire ma non lo sanno lo chiedono per sentito dire!
Io ti consiglio di andare a leggere l’articolo sulle cpu cache di wikipedia
http://it.wikipedia.org/wiki/CPU_cache che molto più approfondito e sopratutto
può essere un buon punto di partenza per altre ricerche sulle cache.
La tecnica di costruzione è molto costosa, ma nell’ultimo periodo le case costruttrici fanno quasi a gara a chi produce un processore con più memoria cache.
Sì ma non ha senso mettere su tutti i computer di ultima generazione una ottimizzazione di cache!Perchè non tutti la utilizzerebbero,io la metterei solo su prodotti di fascia alta…
Bello questo esempio!!! 🙂 in un certo senso è anche vero!