首页 > 解决方案 > 软件预取提示是否会禁用硬件预取器?

问题描述

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

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

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

标签: cachingmemorycpu-architecturemicro-optimizationprefetch

解决方案


推荐阅读