Contesto
Leggi articoli sulla ottimizzazioni di cache (associazione con una linea di cache in loop ..)C - linee di cache e di associazione
La domanda è legata a questo contesto: matrice di 1024 numeri interi.
Dimensioni: cpu cache 64k, riga cache 32 byte, dimensioni integer: 4 byte.
intel core 2 duo
Domanda
Secondo la mia cpu, 8 interi stare in una linea di cache.
[0,1,2,3,4,5,6,7,8,9,10,...,1023]
^
If I want to access 4 and go downward, 3,2,1 and 0 will be loaded already. 5,6,7 are loaded uselessly.
[0,1,2,3,4,5,6,7,8,..,1023]
^
If I want to access 7 and go downward, all the next elements will be in cache already. if I want to go upward, according to my cpu I will have to load another cache line immediatly after the arr[7] read.
Sono corretto?
Proseguendo
Ma quello che mi dice che arr [4] Non è a un indirizzo che causerà un carico lineare cache invece di arr [7]? Se la mia affermazione è vera, non dovremmo considerare solo l'allineamento in-array, ma l'intero allineamento della memoria del programma per minimizzare lo spreco di cache, giusto?
Grazie. +1 per fuori controllo – Larry