将数据预取至X86-64的缓存[英] Prefetching data to cache for x86-64

本文是小编为大家收集整理的关于将数据预取至X86-64的缓存的处理方法,想解了将数据预取至X86-64的缓存的问题怎么解决?将数据预取至X86-64的缓存问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

在我的应用程序中,我需要在一个大的连续存储器数据(100s MB)上执行计算.我想的是,我的程序将来会触摸我的程序的部分,以便当我对该部分进行计算时,数据已经在缓存中.

有人可以给我一个简单的例子,说明如何使用GCC实现这一目标?我在某个地方阅读_mm_prefetch,但不知道如何正确使用它.另请注意,我有一个多核心系统,但是每个核心都将并行处理不同的内存区域.

推荐答案

gcc使用内置函数作为Lowlevel指令的接口.特别是您的情况 __builtin_prefetch __builtin_prefetch __builtin_prefetch .但是,如果在访问模式不容易自动预测的情况下,您只应看到可测量的差异.

其他推荐答案

现代CPU具有很好的自动预摘要,您很可能会发现,如果您尝试启动软件预取,弊大于利.如果您发现自己确实存在性能问题,则很可能有更多的"低悬挂水果"来优化.当您迫切希望再吞噬几百分之几时,预摘要往往是您可能尝试的最后一件事.

本文地址:https://www.itbaoku.cn/post/359151.html