Cache-gestione delle memorie
Quando trattiamo di memorie, dobbiamo specificare che non ne esiste una sola. Quando la CPU richiede un dato, non per forza bisognerà andarlo a chiedere sempre alla RAM poiché tra il processore e questo tipo di memoria esistono altri tre livelli di memoria. Questa suddivisione in livelli, tramite la dimensione e la velocità delle memorie (indirettamente proporzionale) viene chiamata gerarchie delle memorie, ed i principi che la "governano" vengono detti di località spaziale e località temporale.
Località spaziale
Parliamo di località spaziale nel momento in cui andiamo ad accedere ad una risorsa x in posizione i e nel momento successivo andiamo ad accedere ad una risorsa y (magari uguale ad x+1) in posizione i+1 o comunque adiacente a quella del suo predecessore. Un esempio può essere lo scorrimento di elementi in un array.
Località temporale
Parliamo di località temporale nel momento in cui andiamo ad accedere ad una risorsa x in un tempo t e poi al tempo t+1 accediamo sempre alla stessa risorsa. Nel caso di scorrimento di elementi all'interno di un array, la località temporale lo ha l'array stesso.
La più piccola quantità di informazione che può essere presente in questa gerarchia delle memorie viene chiamata blocco o linea.
Processo di accesso ai dati
Quando la CPU richiede un dato, come detto prima, non controlla direttamente la memoria di livello inferiore (RAM) ma quella di livello superiore. Nel caso che tale memoria non abbia il dato richiesto, allora accediamo nella memoria RAM e carichiamo all'interno di quella superiore un intero blocco nel quale è presente anche il dato. Una volta caricata, la CPU prenderà il dato richiesto. In questo caso si dice che la ricerca ha prodotto un MISS. Una volta caricato il blocco, quello rimarrà in memoria e se in caso la CPU dovesse richiedere un'informazione presente in quella posizione allora essa non accederà nei livelli inferiori, in quanto non necessita di andare a caricare il blocco, essendo questo già presente nei "piani alti", e quindi si dice che la ricerca ha prodotto un HIT.
Hit Rate e Miss Rate
La frequenza di hit viene detta Hit Rate, come quella di miss, Miss Rate. Questa memoria di livello superiore viene detta CACHE.
Mappatura diretta
Ora, una volta caricato il blocco abbiamo il dato nella cache, ma non sappiamo precisamente dove esso si trovi. Fortunatamente per noi, ogni dato in questa memoria può avere una ed una sola posizione. Questa organizzazione della memoria viene detta a mappatura diretta (direct mapped), dato che ogni locazione della memoria principale corrisponde, in modo univoco, a una locazione della cache. Ovviamente il "puntatore" che mi indirizza al blocco nel quale è contenuto il dato è l'indirizzo di questo che solitamente si trova con una semplice operazione: (indirizzo del blocco in memoria) modulo (numeri di blocchi nella cache).
Poiché ogni elemento della cache può contenere dati provenienti da più locazioni della memoria principale, quindi quello che ci chiediamo è se il dato si trovi davvero nella cache oppure no.
-
DOC Appunto: Architettura degli elaboratori - Memorie: cache, interna, esterna, Input/Output, linguaggi macchina: c…
-
architettura degli elaboratori
-
Esercitazioni Architettura degli Elaboratori
-
Architettura degli elaboratori