venerdì 1 agosto 2008

Memoria cache

Immaginate la memoria come un insieme di celle, ciascuna contraddistinta da un numero.Ogni volta che il processore ha bisogno di prelevare un dato dalla memoria, deve contattare la cella di memoria esatta in cui è memorizzato il dato da prelevare. Ma se il processore non ha occhi, né bocca né dita come fa a chiamare la memoria ossia a comporre il numero della cella giusta? Si serve di un apposito bus, denominato bus degli indirizzi. Ogni volta che il processore deve prelevare un dato dalla memoria, imposta il bus degli indirizzi in modo da ottenere proprio l’indirizzo della cella che gli interessa. A questo punto la cella di memoria si accorge di essere stata interpellata e mette a disposizione il proprio contenuto. Ma quest’operazione richiede un po’ di tempo, detto tempo di accesso: avete presente un batter di ciglia? Ecco, 100 volte più breve, ma comunque un tempo troppo lungo per il processore, che così è costretto a attendere ossia perdere tempo. Per ridurre questa attesa si usa un tipo di memoria particolarmente veloce, chiamata cache. Il funzionamento della memoria cache è semplice: ogni volta che il processore preleva dati dalla memoria ‘normale’, non si limita a prendere quello che gli serve: già che c’è, prende anche una certa quantità di dati adiacenti a quello che gli interessa e li deposita nella memoria cache. Statisticamente i dati elaborati da un computer sono vicini fra loro: perciò il dato successivo da elaborare con molta probabilità è proprio quello, supplementare, che aveva prelevato dalla memoria normale per metterlo nella cache e quindi lo troverà già ‘caldo’ nella memoria cache. Come si può capire, questo procedimento accelera notevolmente il lavoro del processore, che va a prelevare il dato nella memoria ‘normale’ solo se esso non dovesse trovarsi nella memoria cache. Anche in quest’ultimo caso non si limiterà a prendere solo il dato che gli interessa ma preleverà altri dati in più, fino a riempire la memoria cache.

Facciamo un paragone: state svolgendo una ricerca in biblioteca per la quale già sapete che avrete bisogno di consultare numerosi libri. Avete a disposizione grandi scaffali stracolmi di libri (la RAM normale). Avete due possibilità. O vi mettete seduti e vi alzate ogni volta che avete bisogno di prendere dei libri dagli scaffali. Oppure, invece di prendere un libro alla volta, ogni volta che vi alzate ne prendete un certo numero prevedendo che forse vi serviranno. Ogni volta che vi alzate prendete quindi libri in più ma senza superare lo spazio disponibile sulla vostra scrivania (la memoria cache). Così facendo, avete a disposizione più rapidamente i libri che vi servono, senza dovervi alzare ogni volta per prelevare il libro successivo. Vi alzerete solo quando vi accorgete che quello che cercate non si trova fra i libri della scrivania: in tal caso andrete a prendere il libro che vi interessa dagli scaffali e già che siete in piedi ne approfitterete per prendere anche altri libri che prevedibilmente vi serviranno subito dopo aver letto quello per il quale vi siete alzato