Я правильно понимаю что…
$lscpu
$...
L1d cache: 384 KiB
L1i cache: 384 KiB
$cat /proc/cpuinfo
cache_alignment : 64
- L1d - кэш данных 384 KiB *2^10 == 393216 байт
- L1i - кэш инструкций 384 KiB *2^10 == 393216 байт
- L1 - общий объём 768 KiB *2^10 == 786432 байт
Меня интересовать должно только L1d
- Итого ((384 * 2^10)/64) == 6144 кэш линии в L1 кеше
Если я теперь в цикле буду крутить многократно эти два массива и они будут друг в друга что-то вычислять и писать
тут оба займут 50% L1d кеша?
uint64_t A[1536]; // 6144÷4
uint64_t B[1536]; // 6144÷4
То как бы я могу надеяться что они оба на втором полном проходе окажутся целиком в L1? Или я вообще сейчас херню спорол как ебобо?
P.S. Кто у нас вандалит теги? ECS стёрли, cpu cashe стёрли и кучу всего другого. Ничего точно указать нельзя. Одну банальщину в тегах оставили. Теги на то и теги что-бы точечно указывать. Вот я указал «память» и чё? Толи про оперативную пишу то ли про склероз свой.