微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

L1缓存-x86 / x64可以从同一缓存行同时执行多少次加载?

如何解决L1缓存-x86 / x64可以从同一缓存行同时执行多少次加载?

我有一些从数组读取的代码。阵列较大。我希望它能大量存在于L2缓存中。叫这个旧。

我写了一个替代方法,它从主要适合单个高速缓存行的数组中读取(我不希望被逐出)。称为TNew。

他们应该产生相同的结果,而且确实如此。 TOld对其数组进行一次读取以获取其结果。 TNew进行6次读取(以及一些可以忽略的简单算术运算)。在两种情况下,我都希望阅读占主导地位。

Lold高速缓存读取的二级缓存的成本约为15个周期。 LNew缓存读取的成本约为TNew 5个周期,但我执行了6个周期,因此预计总共需要30个周期。因此,我希望TNew的速度大约是TOld的一半。相反,只有几个百分点的差异。

这表明L1高速缓存能够同时从同一高速缓存行执行2次读取。在x86 / x64中可以吗?

另一种选择是我没有正确对齐TNew的数组以使其位于单个高速缓存行中,而是跨2条高速缓存行,也许允许2次同时读取,每行一次。有可能吗?

坦率地说,两者似乎都不可信,但欢迎意见。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。