gpt4 book ai didi

c++ - 我应该忽略 __builtin_prefetch() 函数还是替换它?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:39:19 33 4
gpt4 key购买 nike

当我将代码从 linux 移植到 win32 时,它涉及到 __builtin_prefetch() 函数。

然后我发现,它的业务是预取缓存数据。作为 gcc onlinedoc says : 如果目标不支持数据预取,如果地址表达式包含副作用但不生成其他代码并且 GCC 不发出警告,则计算地址表达式。

这意味着该函数实际上可能什么都不做?所以如果我不考虑开销,我可以忽略这个功能吗?而且,vs2008中有没有类似的功能,所以我可以用它来代替它?

void __builtin_prefetch (const void *addr, ...);

谢谢。

最佳答案

预取是为了性能,可以忽略。

http://gcc.gnu.org/projects/prefetch.html

大多数时候,现代处理器会在预期使用(硬件预取)之前检测内存访问模式并推测性地预取数据。预取的原因是 CPU 比内存快得多,缓存未命中需要很多周期才能转到 DRAM 并获取数据。 _builtin_prefetch 是一种软件预取(如果您正在编译的目标机器支持它),它只是向硬件提示您稍后可能需要该地址的数据,以便它获得内存请求并隐藏长延迟.

关于c++ - 我应该忽略 __builtin_prefetch() 函数还是替换它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9628028/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com