Istruzione vs utilizzo della cache di dati

0

Dire che ho una memoria cache in cui le istruzioni e i dati hanno diverse memorie cache ("architettura di Harvard"). Quale cache, istruzione o dati sono usati più spesso? Intendo "il più delle volte" come nel tempo, non la quantità di dati poiché la memoria dati potrebbe essere utilizzata "di più" in termini di quantità di dati mentre la cache delle istruzioni potrebbe essere utilizzata "più spesso", in particolare a seconda del programma.

Ci sono risposte diverse a) in generale eb) per un programma specifico?

    
posta Niklas Rosencrantz 11.12.2012 - 13:10
fonte

3 risposte

6

Bene, ci sono istruzioni che non accedono alla cache dei dati, ma è impossibile accedere alla cache dei dati senza usare un'istruzione, quindi per definizione la cache delle istruzioni viene usata più spesso.

Se parli di quale ha meno cache manca , sarà molto specifico per il programma. Un loop stretto che accede a un gigabyte di memoria avrà zero errori di istruzione e una tonnellata di dati mancanti. Un ampio programma costituito interamente da operazioni di registro avrà un sacco di errori di istruzioni e nessun dato manca.

    
risposta data 11.12.2012 - 16:27
fonte
1

Questo sarà interamente specifico del programma. Da un lato, immagina un programma che non faccia altro che una serie di salti in giro; che è esattamente la dimensione della cache delle istruzioni. Uso della cache di dati zero, utilizzo della cache delle istruzioni più pesante possibile. Ora immagina un programma che non faccia altro che un mucchio di operazioni memcpy ovunque. Uso minimo della cache delle istruzioni (supponendo che la memcpy venga sottoposta a pipeline); uso più pesante possibile della cache dei dati.

Naturalmente, il software reale cade da qualche parte nel mezzo. Ma varia ancora da programma a programma.

Se i disegni recenti della CPU dei "Big Boy" sono indicativi, in genere utilizzano cache L1 della stessa dimensione per cache di dati e istruzioni; e hanno una cache L2 ampia e condivisa (e occasionalmente una cache L3).

    
risposta data 11.12.2012 - 16:24
fonte
0

Il tipo dipende da come si definisce "usato più spesso". Nelle moderne architetture multi-core di oggi, la coerenza della cache richiede che la cache dei dati guardi il bus degli indirizzi e verifichi se altri core stanno modificando gli stessi dati e, in tal caso, aggiornano le loro copie. Quindi le cache dei dati possono essere aggiornate (utilizzate) anche se il core a cui sono collegati è inattivo.

    
risposta data 11.12.2012 - 21:23
fonte

Leggi altre domande sui tag