是否有一种方法可以强制将变量存储在C中的缓存中?[英] Is there a way to force a variable to be stored in the cache in C?

本文是小编为大家收集整理的关于是否有一种方法可以强制将变量存储在C中的缓存中?的处理方法,想解了是否有一种方法可以强制将变量存储在C中的缓存中?的问题怎么解决?是否有一种方法可以强制将变量存储在C中的缓存中?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我刚刚接受了电话采访,我被问到这个问题.我知道将存储在寄存器,堆或堆栈中的方法,但专门用于缓存?

推荐答案

不是在C中作为一种语言.在GCC中作为编译器 - 寻找 __builtin_prefetch __builtin_prefetch . p>

您可能有兴趣阅读 每个程序员对内存的了解 .

编辑:

只是为了清除一些混乱 - 缓存在硬件中是物理上分开的记忆,而不是在机器的软件抽象中.缓存中的单词始终与主内存中的地址关联.这与CPU寄存器不同,CPU寄存器与RAM分开命名/地址.

其他推荐答案

在C中,如C标准所定义吗?否.

在C中,就像在特定平台上的某些特定实现一样?也许.

其他推荐答案

由于缓存是一个CPU概念,对于C语言是毫无意义的(C语言的目标是没有缓存的处理器,如今不太可能,但在过去很常见)绝对 no .

试图通过手工优化此类事物通常也是一个很糟糕的主意.

您可以做的是让编译器保持循环的工作轻松,仅执行一件事(适合指令缓存),以正确顺序迭代记忆块(更喜欢访问内存中的连续单元格而不是稀疏访问),避免重复使用不同用途的相同变量(它引入了读取后的依赖项)等.如果您专注于此类详细信息,则更可能通过编译器有效地优化程序,并将内存访问权限.

,但这仍然取决于实际硬件,甚至编译器也无法保证.

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