Organizzazione cache
Home Come funziona il Computer Organizzazione cache

Organizzazione cache PDF Stampa
Venerdì 29 Novembre 2013 16:34

Sappiamo che la cache immagazzina copie di dati da vari indirizzi nella memoria principale. Dato che la cache non può mantenere copie del dato da tutti gli indirizzi nella memoria principale simultaneamente, dovrebbe esserci un modo per sapere quali indirizzi sono attualmente copiati nella cache così che, se c'è bisogno del dato da quegli indirizzi, può leggere dalla cache piuttosto che dalla memoria principale.

Questa funzione è realizzata attraverso la Tag RAM, una memoria aggiuntiva nella cache che mantiene un indice degli indirizzi che sono stati copiati nella cache. Ogni linea di memoria cache ha un corrispondente address tag che immagazzina il main memory address del dato attualmente copiato all'interno della particolare linea cache. Se il dato di un particolare main memory address è necessario, il controller della cache può velocemente ricercare gli address tag per vedere se l'indirizzo richiesto è stato attualmente immagazzinato nella cache (hit) o no (miss). Se il dato è lì, può leggerlo dalla cache più veloce; se non c'è, deve leggerlo dalla più lenta memoria principale.

Le varie strade per organizzare o mappare i tag influenzano il funzionamento della cache, che si può mappare come completamente associativa, direct mapped (o anche a mappatura diretta) o set associative (o anche parzialmente associativa).

In una cache mappata completamente associativa, quando si fa una richieta per un dato da uno specifico main memory address, l'indirizzo è confrontato tra tutti gli entries address tag nella cache tag RAM. Se il main memory address richiesto si trova nel tag (hit) la corrispondente locazione nella cache viene restituita. Se l'indirizzo richiesto non si trova nelle entries dell'address tag, c'è un miss, e il dato deve essere recuperato nel memory address principale anziché nella cache.

In una cache a mappatura diretta specifici indirizzi nella memoria principale sono stati preassegnati verso linee localizzate nella cache dove saranno immagazzinati. Perciò la tag RAM può usare meno bit dato che solo un address tag va controllato, e ogni tag ha bisogno di archiviare solo i possibili indirizzi che una certa linea può contenere. Questo risulta anche anche in un'operatività superiore dato che solo un tag address deve essere controllato per un dato memory address.

Una cache parzialmente associativa è una cache a mappatura diretta modificata. Una cache a mappatura diretta ha solo un set di associazioni di memoria, il che significa che un dato memory address si può mappare all'interno o associare a una specifica locazione cache line determinata.

Una cache parzialmente associativa two-way ha due set, così che una data locazione di memoria si può in una delle due posizioni. Una four-way può immagazzinare un determinato memory address in quattro differenti locazioni cache line (o set).

Aumentanto questa capacità cresce la possibilità di trovare un valore, ma i tag adress vanno tag address controllati quando si cerca una specifica locazione nella cache. In sostanza, ogni set in una cache parzialmente associativa n-way è una sottocache che ha associazioni con ogni main memory address. Aumentando il numero di sottocache o set, la cache diventa completamente associativa – una situazione nella quale ogni memory address si può immagazzinare in ogni cache line location. In quel caso una cache parzialmente associativa n-way è un compromesso tra una cache completamente associativa e una cache a mappatura diretta.

In generale la cache a mappatura diretta è la più veloce nel localizzare e recuperare un dato perché deve guardare a solo uno specifico tag address per un certp memory address. Tuttavia risulta anche in più errori (miss) generali rispetto ad altri approcci. Una cache totalmente associativa offre l'hit radio più alto ma è più lenta nel localizzare e recuperare il dato che ha molti più address tag da controllare. Una cache parzialmente associativa n-way è infine un compromesso tra l'ottimizzare la velocità e l'hit ratio, ma più associatività c'è e più hardware (tag bit, circuiti di comparazione, e così via) è necessario, rendendo la cache molto più costosa.

Ovviamente il progetto della cache è una serie di compromessi e ciò che funziona meglio in un caso potrebbe non essere il meglio in un altro: sistemi multitasking come Windows sono buoni esempi di ambienti nei quali il processore deve operare su differenti aree di memoria simultaneamente e nelle quali una cache n-way può migliorare le prestazioni.

I contenuti della cache infatti devono essere sempre in sincronia con quelli della memoria principale per assicurare che il processore funzioni con dati reali. Per questa ragione la cache interna nella famiglia 486 era una cache write-through: significa che quando il processore scrive un'informazione nella cache, è automaticamente scritta anche nella memoria principale.

Per confronto, i Pentium e i chip successivi hanno una cache write-back: letture e scritture sono entrambe in cache, così migliorano le prestazioni.

Un'altra caratteristica dei migliori progetti di cache è che sono "nonblocking": è una tecnica per ridurre o nascondere i ritardi della memoria sfruttando la sovrapposizione delle operazioni del processore con gli accessi dati. Una cache nonblocking permette all'esecuzione di un programma di procedere allo stesso tempo con gli errori (miss) purché siano rispettati determinati vincoli di dipendenza. In altre parole, si può gestire un cache miss molto meglio e consentire al processore di continuare a lavorare su attività slegate dai dati mancanti.

Il controller integrato nel processore è inoltre responsabile per il controllo del bus di memoria quando processi alternativi, noti come bus master, sono attivi nel sistema. Questo processo di osservazione del bus è noto come bus snooping: se un bus master device scrive in un'area della memoria che è archiviata nella cache del processore, i contenuti della cache e della memoria non concordano più. Il controller marca questo dato come invalido e ricarica la cache durante i successivi accessi di memoria, preservando l'integrità del sistema.

Tutti i design dei processori con cache memory includono una funzione nota come translation lookaside buffer (TLB) per migliorare il recupero dai cache miss. Il TLB è una tabella all'interno del processore che archivia l'informazione circa la posizione di memory address usati di recente. Il TLB velocizza la translazione di indirizzi virtuali in indirizzi di memoria fisica.

Aumentando la frequenza di clock il tempo dei cicli decresce. I sistemi più recenti non hanno più la cache sulla motherboard perché la memoria di sistema più veloce usata può tenere il passo della velocità della motherboard. I processori moderni integrano la cache L2 nel die del processore come la L1 e ci sono CPU anche con cache L3. Questo permette alla L2/L2 di lavorare alla massima velocità perché è ora parte del core.

Continua a leggere: Caratteristiche del processore

VIA

miglior sito

Ultimo aggiornamento Domenica 27 Aprile 2014 16:59
 
Altri Articoli :

» Architettura Dual Independant Bus

// // L'architettura Dual Independent Bus (DIB) è stata implementata per la prima volta nei processori di sesta generazione di Intel e AMD. DIB fu creata per migliorare il bandwidth e le prestazioni del bus del processore. Avendo due bus di I/O...

» Dynamic Execution

// // Usata per la prima volta nei processori P6 (o di sesta generazione) di Intel, l'esecuzione dinamica consentiva al processore di eseguire più istruzioni in parallelo, in modo da completare le operazioni più rapidamente. La tecnologia è...

» Tecnologia MMX: SSE e 3DNow!

// // La tecnologia MMX era originariamente nota come multimedia extensions o matrix math extensions. Intel afferma ufficialmente che non si tratta di un acronimo; una delle due definizioni precedenti potrebbe essere quella giusta. Questa tecnologia...

» Esecuzione superscalare

// // La quinta generazione di processori Pentium e le soluzioni successive hanno diverse pipeline interne per l'esecuzione di istruzioni, che consentono di far girare più istruzioni contemporaneamente. I chip 486 e precedenti possono eseguire una...

» Caratteristiche del processore

// // L'arrivo di nuovi microprocessori, la maggior parte delle volte, porta con sé nuove caratteristiche per migliorare le prestazioni con applicazioni specifiche o la stabilità complessiva del processore. Nelle prossime pagine daremo uno sguardo...

Aggiungi commento


Codice di sicurezza
Aggiorna