gpt4 book ai didi

assembly - x86-64:缓存加载和驱逐指令

转载 作者:行者123 更新时间:2023-12-01 06:31:28 26 4
gpt4 key购买 nike

对于 x86-64 架构,是否有可以将给定内存地址的数据加载到缓存的指令?同样,是否有一条指令可以在给定与该缓存行对应的内存地址(或类似于缓存行标识符)的情况下驱逐该缓存行?

最佳答案

预取数据到缓存中(不加载到寄存器中):

PREFETCHT0 [address]
PREFETCHT1 [address]
PREFETCHT2 [address]

内在:void _mm_prefetch (char const* p, int hint)

insn ref manual和其他指南,了解不同接近提示的含义。 ( 标签 wiki 上的其他链接)。

著名的What Every Programmer Should Know About Memory文章是在 P4 时写的。当前的 CPU 具有更智能的硬件预取器,超线程不仅仅用于运行预取线程。预取线程是一个死主意。除此之外,关于缓存的优秀文章;我用 a modern review 写了一个 SO 答案Ulrich 的原作中发生了哪些变化以及哪些内容仍然相关。搜索其他 SO 帖子和内容以决定何时实际预取。

不要不要过度使用英特尔 IvyBridge 上的软件预取。该特定微架构存在性能错误,只能停用 one prefetch per 43 clocks .


刷新包含给定地址的缓存行:

clflush [address]
clflushopt [address] ; Newer CPUs only. Weakly ordered, with higher throughput.

内在:void _mm_clflushopt(void const * p)

有一个 recent question about its performance .

关于assembly - x86-64:缓存加载和驱逐指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36563277/

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