gpt4 book ai didi

c - 预取对齐内存

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:33 24 4
gpt4 key购买 nike

我有一些线程化的 C 代码,需要对已处理的数据结构进行 64 字节对齐。这种对齐将如何与 gcc __builtin_prefetch 等预取指令交互?预取的效果是否与使用非对齐数组相同?

请注意,我正在使用 memalign 来获取对齐的数组。

谢谢。

最佳答案

这个问题的答案高度依赖于实现。

但是,在 x86 和 x86_64 上,GCC 将 __builtin_prefetch 实现为单个 PREFETCH 汇编指令。

根据 Intel's documentation (搜索“PREFETCH”):

Fetches the line of data from memory that contains the byte specified with the source operand to a location in the cache hierarchy specified by a locality hint:

我 99% 确定 AMD 版本的行为方式相同,但我太忙了无法检查...

因此,如果内存操作数未对齐,它将有效地向下舍入为 64 字节的倍数,并且该缓存行将被预取。 (嗯,在我所知道的所有当前 CPU 上都是 64 字节。指令集引用只保证“至少 32 字节”。不知道他们为什么这么说;在任何使用这个小工具有意义的情况下,您必须已经对特定的 CPU 做出很多假设。)

关于c - 预取对齐内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6473796/

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