Scenari Alpini by Frank  

Torna indietro   Volovirtuale.com - il Portale dedicato al volo simulato > Angolo della Tecnica > Sezione hardware
Registrazione Donate FAQ Lista utenti Calendario Gallery Segna forums come letti

Notices

Rispondi
 
LinkBack Strumenti discussione
Vecchio 29-11-2007, 20.13.44   #1 (permalink)
VV.com Aficionados
 
L'avatar di MarcoGT
 
Data registrazione: 27-11-2007
Residenza: near COD NDB
Messaggi: 687
MarcoGT is on a distinguished road
Predefinito Guide: Cache

(recuperato dalla cache di S.Google)

La cache è un memoria (anzi due) che risiede all'interno del processore (CPU); le caratteristiche della cache sono sostanzialmente due:

1) E' di piccole dimensioni (se paragonata alla memoria centrale, ossia alla RAM ed alla memoria di massa, ossia all'Hard Disk), siamo intorno ai 2/4 MB nei processori di fascia alta

2) Ha una velocità di accesso in lettura/scrittura altissima (sempre confrontata con le altre due memorie)

Quando alla CPU serve un certo dato, questo viene prima cercato all'interno della cache, se lo trova (in gergo si parla di HIT), legge da lì, se non lo trova (si parla di MISS), leggerà in RAM, dove può esserci (e quindi lo legge da qui) o dove può anche non esserci (e quindi legge dall'hard disk).

Semplificando un pò, si può vedere la cache come una tabella con tre colonne; nella prima colonna è presente un indice che indica, appunto, univocamente la riga della tabella, ossia la cella della cache; nel secondo campo è presente il campo TAG che indica in quale cella di memoria RAM si trova il dato presente in quell'indirizzo di memoria cache. Nel terzo campo è presente il dato vero e proprio.

Come detto, quando la CPU necessita di un dato, controlla se esso sia presente in cache; questo compito viene eseguito comparando l'indirizzo della locazione della RAM con i campi TAG della cache;

ESEMPIO: nel cache sono presenti 2 dati:

(INDIRIZZO - TAG - DATO)

1) 0 - 2 - dato0
2) 1 - 0 - dato1

La RAM, in questo momento, contiene questi tre dati

(INDIRIZZO - DATO)

1) 0 - dato0
2) 1 - dato1
3) 2 - dato2

Come vedete, il campo TAG nella cache si riferisce al campo INDIRIZZO della RAM.
Come detto sopra, se la CPU trova il dato in cache, avviene un HIT (=colpito); in caso di HIT la CPU legge/scrive immediatamente il dato in cache; in caso di un MISS (=mancanza), la maggior parte delle cache allocano un nuovo dato che comprende, oltre al dato stesso ovviamente, il TAG corrispondente (letto dalla RAM). Se avviene un MISS la routine rallenta perché si ha la necessità di leggere il dato dalla memoria (RAM/HD).

Ci sono però diversi problemi:

1) supponiamo che la cache sia piena, ma ho un MISS, devo cancellare un dato per far posto a quello nuovo; si parla quindi di politica di rimpiazzamento; esistono diversi algoritmi per stabilire quale dato cancellare; uno, ad esempio, si chiama LRU; LRU sta per Least Recently Used; secondo questo algoritmo, si cancella il dato che è stato usato MENO recentemente.

2) in cache è presente un dato (dato0) che è, come detto, una copia del dato presente in RAM; la CPU legge il dato dalla cache (HIT)...ma nel frattempo il dato in RAM è stato modificato; questo significa che la CPU sta utilizzando un dato "vecchio"; esistono diversi protocolli di coerenza per ovviare al problema

3) come detto, nel caso di un MISS, il dato va letto dalla memoria (RAM o hard disk); quindi la CPU si blocca e NON può (diciamo potrebbe) fare nient'altro fino a quando arriva quel dato; si parla di STALLO della CPU; le CPU odierne in caso di stallo si comportano in questo modo: continuano ad eseguire le operazioni successive a quella che ha causato lo stallo SOLO SE queste sono indipendenti dal dato che la CPU sta aspettando.
Questo problema dello stallo viene risolto comunque con l'uso delle PIPELINE (se volete posso scrivere qualcosa anche su questo).

Questo che ho descritto è il funzionamento a grandi linee delle cache; esistono poi diversi tipi di cache; per differenziarle l'una dall'altra si parla di associatività:

L'algoritmo utilizzato per eliminare un dato in caso di MISS dipende anche dal tipo di cache;

1) COMPLETAMENTE ASSOCIATIVA: il dato che deve essere scritto può essere messo in qualunque locazione di memoria della cache.

2) A MAPPATURA DIRETTA: il dato può essere scritto SOLO in una locazione di memoria FISSA e STABILITA.

3) PARZIALMENTE ASSOCIATIVA: significa che una particolare locazione di memoria può essere caricata in cache in due distinte locazioni; ok...ma in quali? Ci sono degli algoritmi che controllano i bit meno significavi dell'indice della locazione di memoria (ma qui si entra troppo nel particolare).
MarcoGT non è connesso   Rispondi citando
Rispondi

Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Attivato
Trackbacks are Attivato
Pingbacks are Attivato
Refbacks are Attivato

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Guide: Reti di PC Filippo1974 Sezione hardware 3 07-12-2007 12.33.58
Guide: Memoria MarcoGT Sezione hardware 7 06-12-2007 15.01.31
Guide: Audio nei PC Filippo1974 Sezione hardware 2 03-12-2007 11.44.33
Guide: GPU MarcoGT Sezione hardware 1 29-11-2007 20.25.45
Guide: Pipeline MarcoGT Sezione hardware 0 29-11-2007 20.08.29


Tutti gli orari sono GMT +2. Adesso sono le 08.59.21.


Powered by vBulletin versione 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Traduzione italiana : www.vbulletin.it
Advertisement System V2.6 By   Branden
Copyright ©2005-2008, Volovirtuale.com