Я узнал о линии кэша и эффекте шага цикла в кеше. Я наткнулся на страницу this, которая показывает время выполнения цикла против шага цикла. Согласно эталону, увеличение шага цикла уменьшает время выполнения, которое меня очень сбивает с толку. Насколько я понимаю, если строка кэша равна 64 байтам и позволяет предположить, что в первом случае шаг цикла равен 1, что означает, что цикл проходит через элемент массива последовательно, тогда это должно иметь наименьшее время выполнения, потому что 16 целых чисел (4 байта x 16 = 64 байта) загружаются в кеш. Время выполнения должно быть самым низким до шага 16, потому что все 16 элементов загружаются в одну и ту же строку кеша. Когда шаг увеличивается выше 16, это должно увеличить время выполнения, потому что элемент массива не будет в строке кэша, но график на странице полностью противоположный.Loop stride и строка кеша
2
A
ответ
3
В этом примере длина постоянна, поэтому чем больше шаг - тем меньше элементов, которые вы проходите.
Интересным явлением является то, что он не применяется под линией кэша, и это потому, что вы не можете принести части строки. Итак, ниже 16, вы платите одинаковое наказание за выборку всех строк кеша. Выше 16, вы начинаете пропускать некоторые строки. выше 32, например (128B), вы извлекаете каждую другую строку - следовательно, +/- половину времени (при условии, что время выполнения зависит от задержки памяти)
Итак, когда вы говорите «ниже 16, вы платите такое же наказание за получение всех кеш-строки "означает ли это, что весь массив (все элементы) загружается в кеш и когда в кеш загружается более 16 частей массива ?. У меня создалось впечатление, что количество загруженных элементов будет зависеть от шага – zer0c00l
. Кэширование выполняется с 64-разрядной детализацией. Если вы получаете доступ к одному элементу строки кэша, вам все равно нужно получить полную строку. Однако, если ваш шаг состоит из двух линий кэша, вам не нужно будет брать строки посередине. Если вы нарисуете его, вы увидите, что любой шаг над 64B позволит немного пропустить, и чем дольше будет больше шагов, тем больше вы получите – Leeor