Home
Accesso / Registrazione
 di 

Uno sguardo alla memoria cache

Uno sguardo alla memoria cache

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.

Data Transfer Cache
Fig.1 Cache Data Transfer

Speed Access Cache
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.

CPU DIE
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

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di Fabrizio87

pensiamo che fino al 10 15

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

ritratto di slovati

Cache di livello 1, 2, e 3

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.

ritratto di giuskina

similitudini

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

ritratto di stewe

Hihi... bella questa! :-D

Hihi... bella questa! :-D

ritratto di mingoweb

Bello questo esempio!!! :-)

Bello questo esempio!!! :-) in un certo senso è anche vero!

ritratto di giuskina

:D che tipo il prof Bonzi

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 ???

ritratto di linus

cache

l'ottimizzazione della memoria cache risulta molto importante per l'ottimizzazione del sistema poichè utilizzata in quasi tutti i pc di ultima generazione.

ritratto di Alex87ai

Io toglierei pure il

Io toglierei pure il "quasi"...tutti i PC di ultima generazione!

ritratto di Cosimo Candita

Credo che all'articolo

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?

ritratto di Cloud12363

Io ti consiglio di andare a

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.

ritratto di Dade

chissa se...

l'utilizzo in futuro in maniera industriale degli HD a stato solido renderà questa componente obsoleta, data la velocità elevata dei nuovi hard disk

ritratto di Alex87ai

Potrebbe essere, anche se

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!

ritratto di SuperG72

Darei seguito...

...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.

ritratto di giuskina

Io non sopporto

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!

ritratto di Francesco12-92

Interessante

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.

ritratto di giuskina

Una mia opinione

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...

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Ultimi Commenti