INFORMAZIONI TECNICHE Cache

Copyright © elma srl. Tutti i diritti riservati.
Aggiornato il 18/03/02.

SOMMARIO


Che cos'è la cache ?
Cache, in generale,  è un blocco di memoria che serve di supporto allo scambio di dati tra unitá che hanno diverse velocitá. 
Per intenderci, ricorriamo ad un esempio : pensiamo di riempire una bottiglia con un imbuto. Quando versiamo in un imbuto, se la quantitá di liquido che versiamo é minore della portata del condotto di uscita dell'imbuto, tutto il liquido passa direttamente nella bottiglia; se versiamo rapidamente il liquido in quantitá  superiore a quella che puó uscire dall'imbuto, questo, poco per volta si riempie.
Avendo in mente questa immagine possiamo farne un parallelo : lo scambio dati tra due unitá é il flusso di liquido che stiamo versando; la cache é l'imbuto, che costituisce il passaggio da un contenitore all'altro. Se la velocitá con cui il ricevitore (bottiglia) é in grado di accettare dati (liquido) é minore o uguale alla quantitá di dati (liquido) che arriva dal trasmettitore (noi che stiamo versando), nell'imbuto (cache)  non resta liquido (dati) in attesa. Se, come spesso capita, la possibilitá del ricevitore di trattare i dati é inferiore alla quantitá  ricevuta, si richiede , per evitare la perdita dei dati no accettabili che il trasmettitore arresti per un certo tempo la trasmissione in modo da dare la possibilitá al ricevitore di smaltire il carico. (nel nostro esempio idrico, se mi accorgo di stare versando il liquido troppo in fretta, devo rallentare o sospendere, altrimenti una parte traboccherá).
Se uso un imbuto, posso, entro certi limiti dati dalla grandezza dell'imbuto stesso, continuare a versare il liquido anche se il passaggio nella bottiglia é completamente impegnato : il liquido riempirá l'imbuto e non andrá perduto .
Similmente la cache accoglie quella parte di dati che il ricevitore non riesce ad accettare e con questi si riempie in attesa di rilasciarli appena possibile. La presenza della cache permette al trasmettitore di liberarsi dell'operazione in corso senza essere dipendente dai tempi del ricevitore, in modo da poter svolgere immediatamente un'altra attivitá.
Come per l'imbuto, la capacitá della cache di "parcheggiare"dati non puó essere illimitata; raggiunto un certo livello di riempimento l'operazione di versamento deve essere sospesa in attesa della fuoriuscita di quanto giá immesso.  
É ovvio che una cache molto grande potrá fornire risultati migliori, ma nel contempo costerá di piú e non é detto che venga sempre impegnata al 100%. Quindi si dimensiona la grandezza della cache in modo da coprire le esigenze mediamente presentate dal processo a cui si applica, in un bilanciamento tra costo e prestazioni.
Cache sono contenute in moltissimi dispositivi elettronici, ad esempio nei processori, nei dischi, nei masterizzatori, nelle schede video, nelle schede di acquisizione dati, nelle unitá di trasmissione ed in generale dovunque ci sia un interscambio di dati veloci, critico o di grandi dimensioni.
La cache puó essere realizzata anche in modo virtuale, con l'impiego di routine software ed il parcheggio dei dati su diversi supporti, ad esempi su disco. In questi casi, piú che di cache, é corretto parlare di buffer.

Che cosa é la cache della CPU ?
In questo caso si tratta di una area di memoria ad alta velocità di accesso e di dimensioni piuttosto piccole , rispetto alla memoria primaria , situato tra questa e il microprocessore . In genere si tratta di memoria di tipo statico , ovvero senza la necessità di refresh , assai più costosa di quella dinamica , ma con tempi di accesso molto ridotti , dell’ ordine di pochi nanosecondi . Puó essere sia esterna che interna al chip del processore e puó essere situata a diversi livelli logico/fisici, a seconda delle funzioni svolte.
La cache contiene i dati utilizzati con maggior frequenza dal microprocessore nelle operazioni correnti e questo contribuisce all' incremento delle prestazioni , poiché tali dati non devono essere richiamati ogni volta dalla più lenta memoria RAM . Le cache possono contenere istruzioni (codici), dati o entrambi i tipi di informazione. Ad esempio , se la CPU deve cercare un dato o una istruzione , la ricerca per primo nella cache; se non è presente , la preleva dalla RAM o dalla ROM e ne fa anche una copia nella cache (se l’area da cui è stato prelevato questo elemento è dichiarata ‘cacheable’ dal BIOS o dal software del sistema ).
Anche se sembrerebbe che quanto più grande è la cache , tanto più grande è il numero di informazioni che possono essere gestiti con efficienza,  questa affermazione è vera relativamente, in quanto, aumentando la cache oltre certi limiti , il rapporto prezzo/prestazioni diventa non conveniente. 
Per aumentare ulteriormente le prestazioni , la cache può essere incorporata nel microprocessore allo scopo di accrescerne piú la velocitá di accesso che la dimensione : la cache nel chip, data la riduzione delle distanze di interconnessione e la maggior possibilitá di integrazione delle funzioni di scambio, comunica più rapidamente con il microprocessore, solitamente lavorando alla stessa velocitá della CPU, mentre le cache esterne funzionano con clock ridotti.
In genere sono definiti due tipi di cache, dette L1, interna al chip del processore , e L2 , spesso esterna, mentre sono state realizzate anche strutture con piú livelli (ad esempio L3 di AMD K6-3). Sono stati realizzati anche chipset che permettono un sistema di cache virtuale, che utilizza dei registri FIFO (First In First Out) o altri sistemi semplificati per emulare le funzioni della cache, piú economici, ma comunque meno efficienti . La cache virtuale gestita in questo modo non è da confondersi con la cache fittizia (inesistente) di molti prodotti orientali . Poiché attualmente il costo della cache si è grandemente ridotto , non ha più alcun senso il piccolissimo risparmio dovuto alla cache  virtuale , mentre , per contro, conta alquanto la differenza di prestazione tra i due sistemi .
Un sistema senza cache ha prestazioni nettamente ridotte rispetto ad uno con cache; la differenza é rilevabile facilmente disabilitando le cache interne dal setup del BIOS : si noterá un rallentamento del sistema visibile ad occhio nudo.

Che cosa è il TAG?

L’area TAG della cache mantiene una traccia degli indirizzi residenti e dello stato dei dati nella cache . In genere si tratta di un chip separato , ma può anche essere integrato o semi integrato nel chipset .

 

Cosa si intende per WRITE BACK e WRITE THROUGH ?

Nell’architettura Write Back i dati nella memoria e nella cache non sono correlati simultaneamente ; il controller della cache mantiene una traccia della coerenza di questi dati . Questa struttura , abbastanza complessa , riduce il traffico sul bus e le operazioni di scrittura della memoria , con sensibili vantaggi di prestazione .Nel modo Write Thru , i dati scritti sono sempre passati attraverso (through) la cache verso la memoria principale ed è mantenuta una stretta coerenza tra queste . Questa struttura è più semplice da implementare , ma aumenta il traffico sulla memoria e riduce le prestazioni . Negli ultimi processori , in generale , la cache L1 è di tipo Write Back ; la cache L2 dipende dal chipset della mainboard , ma tutti i chipset più recenti hanno anche essi adottato questa modalità .

AVVERTENZA : alcuni costruttori orientali utilizzano la dizione Write Back per indicare una cache fittizia , non esistente , visualizzata da BIOS "compiacenti" nel prompt del boot .

 

Cosa sono cache sincrona e asincrona ?

La cache asincrona è economica , ma meno performante della cache sincrona . La non sincronicitá tra il processore e la risposta della ram portano alla necessità di più cicli di clock per esaurire una richiesta di informazioni . Tipicamente , per leggere il blocco di 4 bytes=64bit con cui lavorano le CPU pentium , sono impegnati 9 cicli di clock e questo da origine alla indicazione 3-2-2-2 . L'accesso alla cache é quindi piú veloce di quello alla RAM (ved. Bollettino Tecnico Memoria) .
La cache sincrona richiede un numero minore di clock per esaurire una richiesta . Il tipo piú performante , e piú costoso , é quella detta "flow-through " o SyncSRAM (Synchronous Burst Static RAM ) che ha un ciclo di 2-1-1-1 . ( il ciclo ideale della CPU sarebbe 1-1-1-1)
Altro tipo di cache sincrona é quella detta Pipelined Burst ed è attualmente la più diffusa . Con riferimento all’ esempio precedente , il ciclo diventa 3-1-1-1 , ottimo risultato , anche perché , in ogni caso , i chipset Triton non possono gestire tempi minori di questo .

Si può distinguere la cache asincrona perché è costituita da più chip nel comune package DIL (Dual In Line) , installati su zoccoli , mentre la cache sincrona è realizzata con pochi chip a montaggio superficiale , senza zoccolo oppure su modulo (ved. paragrafo successivo) . Attualmente il costo della cache sincrona é tale da permetterne l' uso su tutte le mainboard .

 

COAST , CELP , cosa sono ?

COASt è l’acronimo di Cache On A Stick e indica lo standard del modulo cache L2 , principalmente riferito alla Pipelined Burst Ram . CELP deriva da Card Edge Low Profile ed è il connettore posto sulla mainboard  per ricevere il modulo . Differenti formati del profilo delle estremità del modulo dovrebbero garantire la possibilità di inserire il modulo stesso solo nel corrispondente ed adeguato zoccolo .

 

Quali sono le differenze tra COAST 1.3 e COAST 2.1?

COAST 1.3 é supportato solo da PCIset Intel 430FX . COAST 2.1 é supportato da PCIset Intel 430HX , VX , FX o chipset compatibile puó essere anche di tipo Global Burst ( solo per chipset HX e VX ) . I due moduli si distinguono per la differente sagomatura delle estremitá , che impediscono l' inserzione in uno zoccolo non adeguato .

Che caratteristiche deve avere la cache ?

In genere la cache ha tempi di accesso molto brevi . Ad es. il PCIset Intel 430HX supporta la cache pipelined burst che deve essere da almeno 15nsec per il clock a 66MHz . La cache delle mainboard SUPERMICRO e EPOX è da 7 nsec .

 

Quanta cache c’e’sulle mainboard Pentium Pro  ?

Niente = 0kB . E’ caratteristica particolare del Pentium Pro l’avere la cache L2 integrata nel chip . Questa struttura consente di avere notevoli benefici prestazionali , sia per l’aumento della velocitá di accesso alla cache , sia per la struttura della cache stessa , di tipo non-blocking , che puó supportare fino a 4 transazioni contemporanee . Pertanto , a livello di L2 , non è possibile , né ha senso , aggiungere altra cache

 

Le mainboard di ultima generazione non hanno piú il modulo per l'espansione della cache ?

Le prime versioni di mainboard per Pentium adottavano la cache di tipo asincrono , costituita da chip in contenitore DIL , montati su zoccolo , retaggio delle strutture 486 . Quasi subito , peró , lo sviluppo tecnologico ha prodotto la cache di tipo sincrono/pipeline burst , con elevati benefici , e i costruttori hanno iniziato ad offrire la possibilitá di installare anche questo tipo di cache , ben piú costosa della asincrona . Guidata principalmente dal punto di vista economico , si é stabilito lo standard COAST per la cache su modulo , in modo da permettere una certa flessibilitá di configurazione . Attualmente l'incremento della produzionea di cache sincrona ne ha ridotto grandemente il costo , tanto da portarlo al livello della vecchia cache asincrona , che é sparita dal mercato . Inoltre , la richiesta di prestazioni elevate porta alla necessitá di una progettazione molto critica delle strutture hardware , ivi compreso il circuito stampato ; sarebbe quindi impensabile rinunciare oggi al miglioramento delle temporizzazioni che si ottiene fissando direttamente i chip di cache sul circuito principale , senza i problemi di capacitá disperse , lunghezza di piste , problemi dei contatti del modulo COAST , del suo zoccolo , ecc. Pertanto , una mainboard di qualitá della generazione attuale é dotata di 512kB di cache direttamente on board . Solo prodotti vecchi , decisamente da scartare , hanno ancora COAST o usano cache asincrona .

C’è differenza tra la cache saldata e quella su modulo ?

In linea di principio , nessuna differenza . La tendenza attuale per i prodotti di classe più elevata è quella di montare direttamente la cache sulla mainboard , anche perché al momento attuale , il costo dei chip della cache si è ridotto alquanto rispetto allo scorso anno . Tuttavia molti costruttori hanno  installato il connettore per il modulo COAST assieme ad un certo quantitativo di cache . Inoltre , i chip di cache sincrona sono studiati per essere saldati e non zoccolati . Inoltre la mancanza dello zoccolo e del modulo COAST garantisce l’assenza di problemi dovuti ai contatti tra le due parti e consente di migliorare i tempi di accesso alla cache.
Si possono verificare allora le seguenti possibilità :

  1. - nessuna cache a bordo : in tal caso occorre verificare che esista il connettore per il modulo COAST e che questo connettore possa accettare moduli standard fino a 512kB pipeline burst . La cache potrà allora essere aggiunta in un momento successivo
  2. - 256kB di cache asincrona a bordo : in questo caso può essere difficile espandere la cache a 512kB , per la difficoltà di reperimento dei chip o per la mancanza di zoccoli di espansione . Attualmente la cache asincrona non ha più molto senso ; si tratta di materiali , magari di ottima qualità , ma datati o molto economici .
  3. - 256kB di cache sincrona (pipeline burst ) senza zoccolo COAST : la cache non è espandibile , ma per gli impieghi più generali è più che adeguata .
  4. - 256kB di cache sincrona (pipeline burst) con zoccolo COAST : è la soluzione adottata dalla maggior parte dei produttori orientali , perché permette di mantenere basso il costo della mainboard e nel contempo lascia aperta la possibilità di un upgrade . Va segnalato che l’upgrade può essere fatto solo con appositi COAST senza chip di TAG , in quanto detto chip è già posto sulla mainboard . Assicurarsi della disponibilità del modulo addizionale da 256kB , onde evitare brutte sorprese al momento dell’upgrade .
  5. - 512kB di cache sincrona (pipeline burst) installata : le mainboard più recenti , sfruttando la riduzione dei costi delle ram statiche , montano direttamente questa quantità ; il costo è leggermente più elevato, ma le prestazioni sono le massime e non si pone il problema della impossibilità di un futuro upgrade .
  6. - 1MB o piú : il costo in discesa dei chip e la maggior integrazione permettono di installare sugli ultimi modelli per Socket 7 una quantitá di cache di 1MB o anche 2MB, con un aumento ulteriore delle prestazioni.

Il chipset puó fare cache di soli 64MB . E se installo piú ram ?

Alcuni chipset , ad es. PCIset Intel 430VX e TX possono contenere nella cache una estensione massima di 64MB di ram . Se é installata una quantitá superiore , questa ram oltre i 64MB sará ovviamente disponibile per il PC e quindi per i programmi , ma il contenuto di questa area non sfrutterá il beneficio della cache . Nella valutazione della mainboard , puó essere importante anche questo aspetto : non é detto che l' ultimo prodotto sia il piú adeguato alle proprie necessitá . Per un uso intensivo di grosse quantitá di ram é consigliabile poter disporre della cache , che accelera sensibilmente le prestazioni ; chipset come 430HX possono supportare fino a 512MB di ram e mantenere la cache attiva su tutta l' area .

 

Utilities e links

CacheCHK 6.0 cache test CACHCHK6.ZIP
NuCache 1.2a cache test NUCACHE.EXE
CCT386 cache & ram test http://www.rtfm.be/fpiette/index.html

 


Copyright © elma srl. Tutti i diritti riservati.
Aggiornato il 18/03/02.