2013-02-05 19 views
5

Ho una domanda di base sulla politica seguita dal sistema di memoria.Eliminazione della cache dalla cache L1 su sfratto L2

Considerare un core con cache L1 e L2 private. Dopo la cache L2 abbiamo un bus su cui gira il traffico di coerenza. Ora, se una riga di cache per l'indirizzo (X) è sfrattata dalla cache L2, è necessario rimuovere l'indirizzo dalla cache L1 ??

Il motivo dello sfratto può essere che aiuta a mantenere l'invariante del protocollo di coerenza [se una riga in 12 mostra che questo core non contiene questo indirizzo].

risposta

10

Ci sono three different designs e tutti sono usati.

  1. Esclusivo: i dati nella cache L1 non si trovano mai nella cache L2. I dati nella cache L2 non sono mai nella cache L1.

  2. Inclusive: anche i dati nella cache L1 devono essere nella cache L2.

  3. Nessuno dei due: i dati nella cache L1 possono essere o meno nella cache L2.

Ognuno di questi ha vantaggi e svantaggi. Lo schema inclusivo consente al protocollo di coerenza della cache di ignorare la cache L1 - se i dati non si trovano nella cache L2, non si trova nella cache L1. Ma lo schema esclusivo rende l'uso più efficace della memoria cache preziosa.

I progetti inclusi stanno diventando più popolari perché la sincronizzazione inter-core più rapida sta diventando più importante rispetto a dimensioni della cache effettive leggermente più grandi.

+0

ho un dubbio sulla dimensione della linea. puoi chiarire le stesse http://stackoverflow.com/questions/14707803/line-size-of-l1-and-l2-caches –

+0

Potresti fornire ulteriori letture riguardo a questo: "I progetti inclusivi stanno diventando più popolari perché più veloci la sincronizzazione inter-core sta diventando più importante di avere dimensioni della cache efficaci leggermente più grandi "? – rkioji

Problemi correlati