caching - 软件预取提示是否会禁用硬件预取器?
问题描述
这个问题的动机是了解软件内存预取如何影响我的程序。
我正在构建一个多线程数据分区器。每个线程顺序读取本地源数组并随机写入另一个本地目标数组。由于源数组的内容在不久的将来不会被使用,我想使用prefetchtnta
指令来避免它们在缓存中增长。另一方面,每个线程都有一个本地写入组合器,它使用 .将写入和提交组合到本地目标数组_mm_stream_si64
。直觉和目标是确保每个线程都有固定大小的数据缓存可供使用,并且永远不会被未使用的位占用。
这种设计合理吗?我不熟悉 CPU 的工作原理,也无法确定这种策略是否真的禁用了可能使这种方法无效的硬件预取器。如果这只是我天真,那么实现这个目标的正确方法是什么?
解决方案
推荐阅读
- php - PHP - 将命令行输出发送到动态命名的文件
- php - PHP - 如何获取数字数组
- vb.net - 从 VB.Net 将文本值作为参数传递给 Crystal Report 公式字段时出错
- apache-kafka - 使用 Jmx Exporter for Prometheus 缺少 Confluent Kafka Connect 指标
- javascript - 带有聚光灯的 phong 材料的平面阴影
- authentication - Hazelcast NTLM 身份验证
- javascript - 如何在“纯”JS中选择没有父类的元素?
- mysql - MySql在数据库中迭代
- sql - 如何结合 BigQuery LAST_VALUE() 和 ARRAY_AGG()
- javascript - 调整 iframe 的大小以适应内容?