Cache: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Wikificazione
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Wikificazione |
||
Riga 9:
"Cache" è un [[prestito linguistico|prestito]] del [[lingua francese|francese]]. In particolare è un [[Adattamento (linguistica)|adattamento]] del termine francese "<nowiki>caché</nowiki>" (in [[lingua italiana|italiano]] "nascosto"). Solitamente viene pronunciato come l'[[lingua inglese|inglese]] "cash" ({{IPA|/ˈkæʃ/}})<ref>[http://it.forvo.com/word/cache/] o [http://it.dicios.com/enit/cache]</ref> o, in alternativa, {{IPA|/ˈkeɪʃ/}}<ref>[http://languor.us/pronunciation-cache Pronunciation of 'cache' | languor.us<!-- Titolo generato automaticamente -->]</ref> o {{IPA|/ˈkaːʃ/}}.<ref>[http://www.wordreference.com/definizione/cache Yahoo! Italia<!-- Titolo generato automaticamente -->]</ref>
==
La prima cache (a diodi) nella storia dei calcolatori era una CPU cache, ed è stata descritta in un articolo di Wilkes nel 1965, e realizzata all'università di Cambridge da Scarrott. Questa speciale memoria, allora, veniva chiamata slave perché serviva la memoria a nuclei di ferrite. Solo con la presentazione del primo calcolatore commerciale dotato di questa speciale memoria, IBM 360/85, il termine slave viene sostituito con il termine cache.▼
== Caratteristiche e funzionamento ==
Una cache è associata ad una memoria "principale", in cui risiedono i dati. Essa è 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'''.
Line 16 ⟶ 19:
La memoria principale può essere qualcosa di semplice come un [[disco rigido]], ma anche un complesso [[database distribuito]], come il [[Domain Name System|DNS]] o il [[web]]. In questi casi, la memoria principale può essere modificata senza passare dalla cache, il che comporta problemi di '''coerenza''' tra i dati "originali" e quelli nella cache.
In alcuni casi è possibile validare i dati contenuti nella cache interrogando la memoria principale per verificare se sono ancora attuali. Questo è quello che fanno i server [[proxy]]: chiedono al server [[Hyper Text Transfer Protocol|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]].▼
▲possibile validare i dati contenuti nella cache interrogando la memoria principale per verificare se sono ancora attuali. Questo è quello che fanno i server [[proxy]]: chiedono al server [[Hyper Text Transfer Protocol|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]].
In altri casi, si utilizza un meccanismo di '''scadenza''' a tempo dei dati memorizzati, e fino a quando un dato presente nella cache non è scaduto questo viene utilizzato, anche se non corrisponde a quanto presente nella memoria principale. Questo è il meccanismo adottato dal DNS.
Line 30 ⟶ 32:
== Tipologie ==
{{vedi anche|CPU cache|Domain Name System#Caching|web cache}}▼
Esistono vari tipi di cache, che si distinguono tra loro per il contesto dove vengono utilizzate.
* La '''[[CPU cache]]''' viene utilizzata per accelerare l'accesso alle posizioni di memoria RAM usate più frequentemente. Si tratta di una piccola quantità di memoria veloce installata direttamente sul processore o nelle sue immediate vicinanze. Viene utilizzata memoria di tipo [[SRAM]], grazie al suo ridotto consumo e alla notevole velocità.
* La '''page cache''' consiste nell'avere una parte della [[RAM]] usata dal [[sistema operativo]] in cui si copiano dall'hard disk i dati correntemente in uso. In questo caso, l'accesso alla RAM è più veloce dell'accesso al disco. Poiché la memoria disponibile è generalmente limitata, il sistema operativo cerca di mantenere il più possibile in memoria una pagina, mantenendo una tabella delle pagine che non sono usate correntemente ma lo sono state in passato. Quando occorre caricare una pagina nuova, verrà sovrascritta la più vecchia non ancora in uso.
Line 39 ⟶ 42:
* la '''[[Domain Name System#Caching|DNS cache]]''' è un server [[Domain Name System|DNS]] che non possiede informazioni autoritative, ma è in grado di chiederle ai server autoritativi e memorizzare le risposte. I server DNS utilizzati dagli utenti di [[Internet]] sono normalmente dei server cache. Il DNS usa un meccanismo di scadenza, per cui ogni record recuperato da un server autoritativo è valido per un certo tempo, dopo il quale deve essere scartato.
▲{{vedi anche|Domain Name System#Caching}}
* la '''[[web cache]]''' è una parte di hard disk dedicata da un server [[proxy]] http, oppure dal [[browser]] di un utente, a salvare le pagine man mano caricate durante la navigazione, che potranno pertanto essere riproposte senza doverle chiedere di nuovo al sistema remoto. In questo caso, il collo di bottiglia che si vuole eliminare è quello della larghezza di [[banda (elettronica)|banda]]. Non sempre è però lecita l'operazione di mettere una pagina in cache: si pensi ad esempio a quando si fa un'operazione bancaria on line. Generalmente è la stessa pagina web che viene inviata insieme alle istruzioni sul suo possibile utilizzo in una cache; in certi casi si può forzare il proprio browser a ricaricare la pagina, tenendo schiacciato il tasto "ctrl" oppure "shift" mentre si clicca sull'icona di ricarica.
* la '''Google cache''', o più propriamente cache dei [[motore di ricerca|motori di ricerca]], consiste in copie delle pagine web salvate presso i server di un motore di ricerca. Queste vengono utilizzate per due motivi: eseguire ricerche locali all'interno delle pagine ed offrire la possibilità di vedere una copia, per quanto non aggiornata, di una pagina non disponibile, per problemi momentanei o perché è stata rimossa dal server originale.
== Problemi legati all'utilizzo ==
L'avere una memoria cache può complicare notevolmente la progettazione di un dispositivo elettronico o del software di gestione, dato che bisogna mantenere la coerenza tra le memorie cache e la memoria principale. Ciò si vede specialmente nelle macchine [[Multiprocessore simmetrico|multiprocessore]] dove lo sviluppo dei processori e delle [[scheda madre|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.
Il software di gestione di una memoria cache, inoltre, deve essere altamente sofisticato sia nella realizzazione sia nella strategia di recupero dei dati (algoritmo) in modo da evitare il cosiddetto [[overhead]] da recupero. In sostanza non deve mai capitare che la ricerca o la memorizzazione di un dato di cache memory impieghi risorse (in special modo il tempo) tali da appesantire troppo il recupero stesso che, paradossalmente, diventerebbe più conveniente da memoria RAM. In generale gli algoritmi di gestione dei dati di cache sono legati a due concetti fondamentali:
Line 52 ⟶ 58:
Il primo aspetto è legato direttamente alla redazione di codice che interessi pagine di memoria ben definite in ogni fase di elaborazione: una volta terminata l'elaborazione di una certa parte di codice le pagine di memoria utilizzate non dovrebbero più essere referenziate in modo tale da cambiare la località del codice ma anche dei dati che si utilizzeranno da quel momento in poi.
Il secondo aspetto, quindi, prevede che un dato presente in cache e appartenente ad una pagina di memoria referenziata quando la località del codice era diversa può essere eliminato dalla cache per far posto ai dati relativi alla corrente località del codice.
▲La prima cache (a diodi) nella storia dei calcolatori era una CPU cache, ed è stata descritta in un articolo di Wilkes nel 1965, e realizzata all'università di Cambridge da Scarrott. Questa speciale memoria, allora, veniva chiamata slave perché serviva la memoria a nuclei di ferrite. Solo con la presentazione del primo calcolatore commerciale dotato di questa speciale memoria, IBM 360/85, il termine slave viene sostituito con il termine cache.
== Note ==
Line 62 ⟶ 66:
== Voci correlate ==
* [[Buffer]]
* [[CPU cache]] Domain Name System#Caching|
* [[Web cache]]
{{Portale|informatica}}
|