Cache

In informatica, la cache (nascondiglio, deposito segreto, in inglese) è un insieme di dati che viene raccolto in una locazione temporanea, dove possa essere recuperato velocemente su richiesta. Le parole chiave sono "temporanea" e "velocemente": in pratica, questo significa che non c'è nessuna certezza che i dati si trovino nella cache, ma che convenga comunque fare un tentativo per verificarne l'eventuale esistenza.

Tipologie di cache

Ci sono vari tipi di cache, che si distinguono tra loro per il luogo dove vengono utilizzate.

Funzionamento di una cache

Una cache è associata ad una memoria "principale", in cui risiedono i dati. La cache è tipicamente di capienza inferiore rispetto alla memoria principale, ma il suo utilizzo è più conveniente in termini di tempo di accesso e/o carico sul sistema. Quando è necessario l'accesso ad un dato, questo dato viene prima cercato nella cache. Se è presente e valido, viene utilizzata la copia presente nella cache. Viceversa, viene recuperato dalla memoria principale, e memorizzato nella cache, nel caso serva ancora successivamente.

La memoria principale può essere qualcosa di semplice come un disco rigido, ma anche un complesso database distribuito, come il DNS o il web. In questi casi, la memoria principale può essere modificata senza passare dalla cache, l'utilizzo di una cache comporta problemi di coerenza tra i dati "originali" e quelli presenti nella cache.

È quindi possibile che per validare i dati contenuti nella cache sia necessario interrogare la memoria principale. Questo è quello che fanno i server proxy: chiedono al server HTTP se la pagina che posseggono è stata modificata dopo la sua memorizzazione, e se non lo è evitano di trasferirla e la ripropongono direttamente al client.

Una cache riduce anche il carico di richieste che deve essere smaltito dalla memoria principale, e dal collegamenteo tra questa e l'utilizzatore dei dati. Anche questo può contribuire a migliorare le prestazioni del sistema. Si pensi per esempio ad un server proxy utilizzato da molti utenti: quando un utente richiede una pagina che era già stata richiesta da un altro, il proxy potrà rispondere senza doversi collegare al sito originale, ed eviterà così di caricare sia il sito originale che la rete.

Una cache utilizza un algoritmo per decidere quali dati mantenere e quali scartare, che tiene conto delle pagine utilizzate più di recente, della contiguità delle pagine, ...)

Una cache può indicizzare i dati memorizzati sulla base del loro indirizzo (un blocco di memoria o di dati su disco fisso) o del loro "nome" (cache associativa, ad esempio una pagina web o un nome DNS).

Problematiche

L'avere una memoria cache può complicare notevolmente la progettazione di un dispositivo elettronico dato che bisogna mantenere la coerenza tra le memorie cache e la memoria principale. Ciò si vede specialmente nelle macchine multiprocessore dove lo sviluppo dei processori e delle schede madri deve tenere conto dei potenziali problemi di coerenza delle cache e deve provvedere adeguati meccanismi che evitino corruzioni dei dati per problemi di mancata sincronizzazione tra cache e memoria principale.

See also: Cache, Algoritmo, Banda (elettronica), Browser, CPU, Client, DNS, Disco rigido, HTTP, Hard disk