c - 是否可以绕过多核处理器中的 L1 缓存

标签 c caching x86-64 multicore

在现代多核处理器中,我们通常有一个本地 L1 缓存,但有一个共享 L2 缓存。是否可以绕过部分内存的 L1 缓存,同时仍然使用 L2 缓存?我想这样做是为了提高时序的可预测性,但可能会以性能为代价。

最佳答案

据我所知,在主流CPU上是没有办法绕过L1缓存的。

但是,为了实现您的目标(即避免可能导致时序测量变化的缓存未命中),您可以尝试让编译器将数据预取到缓存中。

如果您使用 GCC 或 LLVM,请参阅 __builtin_prefetch .

但是,您的问题很含糊,我不确定您的建议是否符合您的需要。

关于c - 是否可以绕过多核处理器中的 L1 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17067145/

相关文章:

ruby-on-rails - 如何将 caches_action 配置为适用于多种格式?

c - 如何在没有调用或跳转的情况下调用ASM中的函数?

linux - 程序集 'Segmentation Fault' 尝试打印十进制数时

linux - 使用 x64 汇编代码的基本输入

c++ - 我如何告诉 cmake 在哪里输出它的构建数据?

c - 匿名管道和 Grep 命令

android - 无法将条目添加到缓存 fileSnapshots.bin

javascript - Less.js 主动缓存导入的 LESS 文件

c - MingW 编译简单 C 程序时出现意外语法错误

c++ - gcc 带进位旋转