软件预取提示会禁用硬件预取器吗?

时间:2019-01-04 07:31:56

标签: caching memory cpu-architecture micro-optimization prefetch

此问题的动机是了解软件内存预取如何影响我的程序。

我正在构建一个多线程数据分区程序。每个线程依次读取本地源数组,然后随机写入另一个本地目标数组。由于源数组的内容将在不久的将来不使用,因此我想使用prefetchtnta指令来避免它们在缓存内增长。另一方面,每个线程都有一个本地写合并器,该合并器使用_mm_stream_si64将写入和提交合并到本地目标数组。直觉和目标是确保每个线程都具有固定大小的数据缓存以供使用,并且永远不会被未使用的位占用。

此设计合理吗?我不了解CPU的工作原理,也无法确定该策略是否实际上禁用了可能使该方法无效的硬件预取器。如果只是我天真,那么实现此目标的正确方法是什么?

0 个答案:

没有答案