循环展开对 dl1 缓存未命中的影响
我知道循环展开有时会增加指令级缓存未命中,但我注意到(在简单的标量模拟缓存中),循环展开正在减少 dl1 缓存未命中(我将其他缓存用作 none ,因此不存在其他缓存) ,但我没有得到这背后的逻辑,为什么循环展开可以减少数据级缓存未命中?
循环展开将导致与没有展开情况下相同数量的加载字。
I know that loop unrolling can sometimes increase the Instruction level cache miss, but i have noticed (in simple scalar sim-cache), that loop unrolling is decreasing dl1 cache miss( i am using other cache as none , so no other cache exists) , but i did not get the logic behind this, how come loop unrolling can reduce data level cache miss ?
Loop unrolling will cause the same number of load words as in without unroll case right.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我遇到了一些情况,比如访问受到列专业形式的限制(我们不能在行专业中这样做),并且列大小很大,所以每次未命中,一个缓存行被带入缓存,但只使用一个元素,因此,如果我们可以通过展开它(矩阵转置)来使用该缓存行的另一个元素,将降低丢失率。
I got some situation , like access is restricted in form of column major( we can not do that in row major), and have large column size, so one each miss, one cache line is brought into the cache but only one element is used, So if we can use another element of that cache line by unrolling it ( matrix transpose ), will reduce miss rate.