Развертка цикла и производительность кэша данных

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


person Anupam    schedule 23.04.2011    source источник


Ответы (1)


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

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

person zviadm    schedule 23.04.2011