2015-10-24 16 views
17

La mancanza di capacità si verifica perché i blocchi vengono eliminati dalla cache perché la cache non può contenere tutti i blocchi necessari per l'esecuzione del programma (il working set del programma è molto più grande della capacità della cache).Qual è la differenza tra miss di conflitto e mancanza di capacità

La mancanza di conflitto si verifica nel caso di strategie di posizionamento di blocco associativo o mappato diretto, i conflitti di conflitto si verificano quando più blocchi sono mappati allo stesso set o frame di blocco; chiamato anche errori di collisione o mancate interferenze.

Sono in realtà strettamente correlati?

Per esempio, se tutte le linee di cache vengono riempiti e abbiamo una richiesta di lettura della memoria B, per il quale abbiamo a sfrattare la memoria A.

Così dovrebbe essere considerato come una miss capacità dal momento che don' t avere abbastanza spazio? E più tardi, se vogliamo accedere alla memoria A, e dal momento che è stato espulso prima, è considerato come una mancanza di conflitto.

Sto comprendendo questo correttamente? Grazie

risposta

33

L'importante distinzione qui è tra i problemi di cache causati dalla dimensione del set di dati e i problemi di cache causati dal modo in cui la cache e l'allineamento dei dati sono organizzati.

Consente suppone che si abbia una cache mappata diretta 32k, e prendere in considerazione i seguenti 2 casi:

  1. È ripetutamente iterazioni su un array di 128k. Non c'è modo in cui i dati possano essere contenuti in quella cache, quindi tutti i miss sono quelli di capacità (eccetto il primo accesso di ogni riga che è un errore obbligatorio, e rimarrebbero anche se si potesse aumentare la cache all'infinito).

  2. Hai 2 piccoli array di 8k, ma sfortunatamente sono entrambi allineati e mappati agli stessi set. Ciò significa che mentre potrebbero teoricamente adattarsi alla cache (se si corregge l'allineamento), non utilizzeranno la dimensione della cache completa e competeranno invece per lo stesso gruppo di set e si confronteranno a vicenda. Questi sono errori di conflitto, dal momento che i dati potrebbero adattarsi, ma continuano a collidere a causa dell'organizzazione. Lo stesso problema può verificarsi con le cache associative impostate, anche se meno frequentemente (diciamo che la cache è a 2 vie, ma hai 4 set di dati allineati ...).

I 2 tipi sono correlati, si potrebbe dire che dato un alto livello di associatività, insieme, gli allineamenti di dati adeguati inclinazione e altre tecniche, si potrebbe ridurre i conflitti, finché non si è in gran parte lasciato con miss capacità veri che sono inevitabili.

+0

Es esempio cellulare, grazie – AhmedWas

+0

@Lorione, tu sei l'uomo! ;) – eran

9

La mia definizione preferita per miss conflitto da riduzione della capacità obbligatoria e manca da Norman P. Jouppi:

miss conflitto sono miss che non si verificano se la cache fosse completamente associativo con la sostituzione LRU.

Diamo un'occhiata a un esempio. Abbiamo una cache di dimensione diretta di 4.Le sequenze di accesso sono

0 (mancanza obbligatorio), 1 (miss obbligatorio), 2 (miss obbligatorio), 3 (miss obbligatorio), 4 (obbligatoria spreca), 1 (hit), 2 (hit) , 3 (hit), 0 (capacità spreca), 4 (conflitto spreca), 0 (miss conflitto)

la penultima 0 è una mancanza di capacità perché anche se la cache fosse completamente associativo con la cache LRU, sarebbe ancora causare una miss perché 4,1,2,3 sono accessibili prima dell'ultimo 0. Tuttavia l'ultima 0 è una miss conflitto, perché in una cache completamente associativa l'ultimo 4 avrebbe dovuto sostituire 1 nella cache invece di 0.

+0

signore, perché hai considerato 4 come miss obbligatorio? non è che si tratti di una miss conflitto perché c'è un concorso per stesso blocco? Voglio dire 0 è nel blocco 0 e 4 troppo vogliono essere in 0a blocco – laura

+0

@laura, perché anche se 0 non c'era, 4 sarebbe ancora una Perdere. Facciamolo passo dopo passo: una cache completamente associativa infinitamente grande ha solo fallimenti obbligatori; ora fissiamo un limite sulla dimensione della cache e le nuove miss sono considerate come mancanza di capacità; infine, lascia che la cache sia una cache associativa impostata e i nuovi miss sono considerati come errori di conflitto. –

+0

@RafaelJ Ho avuto un piccolo malinteso sulla risposta e ho controllato con un simulatore di cache. http://www.ecs.umass.edu/ece/koren/architecture/Cache/frame1.htm Trovato questa risposta, che è poco diversa da urs: 0 (miss obbligatorio), 1 (miss obbligatorio), 2 (miss obbligatorio), 3 (miss obbligatorio), 4 (capacità perdere), 1 (hit), 2 (hit), 3 (hit), 0 (capacità perdere), 4 (capacità perdere), 0 (hit) Non ho visto la mancanza di conflitto qui, puoi spiegare, per favore, il conflitto miss? –

Problemi correlati