循环展开和数据缓存性能

时间:2011-04-23 20:40:34

标签: caching compiler-optimization

loop unrolling会以任何方式影响数据缓存性能吗? 这与我的家庭作业有关,它需要我在简单标准sim-cache上模拟代码来测试循环平铺,内循环中的内存访问等对缓存访问和缓存未命中率的影响。该任务特别要求我们进行循环展开,但我不明白它如何影响数据缓存?

1 个答案:

答案 0 :(得分:3)

循环展开一般不会影响L1数据缓存,只会影响指令缓存。因为这两者在大多数架构中是不同的。 但是,如果您具有多级缓存架构,则大多数体系结构中的级别2缓存充当指令缓存和数据缓存的级别2缓存。因此,如果您将展开太多指令,可能会对L2缓存产生影响,从而实质上降低了L2作为数据缓存的性能。

这是核心i7架构的图片,它具有单独的icache和dcache,但L2缓存对于两者都是相同的。 http://upload.wikimedia.org/wikipedia/commons/6/64/Intel_Nehalem_arch.svg