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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...