"C"以编程方式清除Linux机器上的L2缓存

Rob*_*ein 5 c linux caching

在"C"中编写的与清除Linux OS机器上的L2缓存相关的编程步骤是什么?

/ sys/devices/system/cpu/cpu0/cache/index2/size = 6144K x 8CPU

R..*_*R.. 2

您可以通过任何远程清洁/便携式方式获得的最接近的值:

char dummy[L2_CACHE_SIZE];
memset(dummy, 0, sizeof dummy);
Run Code Online (Sandbox Code Playgroud)

根据您的CPU,可能有可以清除缓存的特权操作码,但我不知道有关它们的任何信息或如何访问它们。如果它们存在,您可能仍然需要内核级代码来使用它们。

  • Memset() 历史上使用的指令不会费心读取目标缓存行并将写入行组合到要写入的缓存行上。然而,有些指令直接将数据流式传输到内存(它们在高速缓存之外有自己的专用高速缓存线)。智能编译器可能会使用此类指令来保护 L2 缓存不被此类 memset() 擦除。 (3认同)