gpt4 book ai didi

c++ - 如何分配内存块并将其放入Cache?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:27:09 25 4
gpt4 key购买 nike

我想在C/C++中为一个数组动态分配内存块,而这个数组会被高频率访问。所以我希望这个数组保留在芯片上,即在缓存中。我如何使用 C/C++ 中的代码显式执行此操作?

最佳答案

没有允许您执行此操作的标准 C++ 语言功能。

根据您的编译器和 CPU,您可以在 asm block 中使用 arch-specific CPU 指令:

T* p = new T(...);
size_t n = sizeof(T);
asm {
"CACHE n bytes at address p"
}

...或执行此操作的一些内置编译器函数(“内部”)。

您需要查阅 CPU 手册和/或编译器手册。

例如,x86 CPU 有一组以 PREFETCH 开头的指令。

另一个例子,GCC 有一个名为 __builtin_prefetch 的函数。参见 GCC Data Prefetch Support

关于c++ - 如何分配内存块并将其放入Cache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16132698/

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