Ho una domanda riguardante la relazione tra mancanze della cache dei livelli della cache delle differenze in un'architettura x86 (dire Xeon X5660).Cosa causa una mancanza di cache L3 nella CPU?
Ho eseguito alcuni profili su un'applicazione OpenCL (Blackscholes), su alcuni contatori delle prestazioni. Per ogni contatore, ho riassumere tutti i valori superiori a tutti i core e ottenere questo risultato:
instructions #: 493167746502.000000
L3_MISS #: 1967809.000000
L1_MISS #: 2344383795.000000
L2_DATA_MISS #: 901131.000000
L2_MISS #: 1397931.000000
memory loads #: 151559373227.000000
La domanda è perché il numero di L3 manca è più grande del numero di incidenti L2? (Continuo a ripetere la profilazione molte volte e la varianza non è significativa). Quello che ho pensato in fondo è:
miss L2 = L3 colpisce + L3 manca
Qualcuno mi potrebbe spiegare che cosa va male qui, mi sono perso qualcosa?
Mettendo un po 'oltre, cosa causa una lettura cache per l'ultima cache di livello (CPU) della CPU? È semplicemente una mancanza di dati da L2?
Grazie
Potrebbe essere che si sta misurando questo su un'architettura con cache L2 separate e un L3 unificato? In tal caso, potresti semplicemente leggere i messaggi di errore della cache da un L2 e i numeri L3 potrebbero provenire da un L3 unificato. – boiler96
Sì, l'ho notato. Ma sono sicuro di aver riassunto tutti i core. Quindi non dovrebbe importare se sia unificato o no, giusto? – Zk1001
Un'altra cosa è, quando faccio questo: "cat/sys/devices/system/cpu/cpu0/cache/index2/type", quello che ho ottenuto è "unified". È noto che la cache L2 è privata e 256K per core per tutte le architetture di Westmere, no? – Zk1001