Развертывание цикла и производительность кэширования данных - PullRequest
1 голос
/ 24 апреля 2011

Влияет ли развертывание цикла на производительность кеша данных? Это связано с домашним заданием, которое требует от меня симуляции кода в симлэскалярном сим-кеше, чтобы проверить влияние разбиения циклов, доступа к памяти во внутреннем цикле и т. Д. На доступ к кэшу и частоту его пропадания. Назначение специально просит нас развернуть цикл, но я не понимаю, как это может повлиять на кэш данных?

1 Ответ

3 голосов
/ 24 апреля 2011

Развертывание цикла в целом не повлияет на кэш данных L1, только на кэш команд. Так как эти два отличаются в большинстве архитектур. Однако если у вас многоуровневая архитектура кеша, кеш уровня 2 в большинстве архитектур служит кешем уровня 2 как для кеша команд, так и для кеша данных. Таким образом, если вы развернете слишком много инструкций, вы можете повлиять на кэш L2, что существенно снизит производительность L2 как кеша данных.

Вот изображение архитектуры ядра i7, которая имеет отдельные icache и dcache, но кэш L2 одинаков для обоих. http://upload.wikimedia.org/wikipedia/commons/6/64/Intel_Nehalem_arch.svg

...