在运行Linux且采用C/C++的Intel x86平台上,如何告诉操作系统和硬件将值(例如uint32)存储在L1/L2缓存中而不是系统内存中?例如,出于安全性或性能方面的原因,我不想在DRAM中存储32位 key (32位无符号int),而是仅将其存储在处理器的缓存中。我怎样才能做到这一点?我在Intel Xeon处理器上使用Fedora 16(Linux 3.1和gcc 4.6.2)。
在此先感谢您的帮助!
最佳答案
我认为您不能强制将变量存储在处理器的缓存中,但是您可以使用register
关键字向编译器建议应将给定的变量分配给CPU寄存器,如下所示:
register int i;