繁体   English   中英

缓存预取方案-电源架构

[英]Cache prefetching scenario - power architecture

我正在使用asm dcbt命令触摸一定范围的内存,我知道执行一定的计算将需要这些内存。 我的探查器显示了高速缓存未中的一种模式,这是因为零星访问了该范围内的元素(触摸了4个,跳过了5个,依此类推-每执行第5个操作都会产生高速缓存未命中)。

有一个函数A()可以访问确切的范围及其大小。 A()函数在另一节之前被调用,该节也将接触和使用A()范围内A()数据。 我可以只A()使用dcbt然后期望B()有所改善, 还是必须在利用该数据收集的同一函数中的范围上使用dcbt

假设A()使用的所有数据都适合高速缓存,那么B()也应有所改进。 但是,您还可能最终将没有使用的数据读入高速缓存,这对任何目的都没有任何作用,并且如果可以用来加载某些所需的ACTUAL数据,只会导致内存总线繁忙。您的模式像您所说的一样零星。 一定要尝试一下,但是不要指望它能有效地神奇地工作-它经常需要一些“调整”-特别是关于“您现在在读取数据的位置有多远”。

取决于A()B()的确切行为,例如,如果要在读和写之间切换,并从一个部分读取并写入一个完全不同的部分,则将写操作分批存放到“保存区域”,然后将其复制到RAM中通常是一个不错的计划-将保留区域设置为L1缓存的1 / 8-1 / 4。

[注意:我对PowerPC架构完全没有任何经验,但是在x86处理器上使用缓存预取和其他内存优化技术时,有时会取得一些成功,而在某些时候则不会那么成功。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM