2011-04-23 45 views
1

是否loop unrolling以任何方式影响数据高速缓存性能? 这与我有一个作业有关,它需要我模拟simplescalar sim-cache上的代码来测试循环平铺,内部循环中的内存访问等对缓存访问和缓存缺失率的影响。该任务特别要求我们做循环展开,但我不明白它是如何影响数据缓存的?循环展开和数据高速缓存性能

回答

3

循环展开通常不会影响L1数据高速缓存,只是指令高速缓存。由于这两者在大多数架构中都不相同。但是,如果您有多级缓存体系结构,则大多数体系结构中的二级缓存可用作指令缓存和数据缓存的二级缓存。因此,如果你将展开太多的指令,你可能会对L2缓存产生影响,从而实质上降低L2作为数据缓存的性能。

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