【发布时间】:2012-02-15 19:46:46
【问题描述】:
在运行 Linux 的 Intel x86 平台上,在 C/C++ 中,我如何告诉操作系统和硬件将值(例如 uint32)存储在 L1/L2 缓存中,而不是存储在系统内存中?例如,假设出于安全或性能原因,我不想将 32 位密钥(32 位无符号整数)存储在 DRAM 中,而是只想将其存储在处理器的缓存中。我怎样才能做到这一点?我在 Intel Xeon 处理器上使用 Fedora 16(Linux 3.1 和 gcc 4.6.2)。
非常感谢您的帮助!
【问题讨论】:
-
简短回答:你不能。您可以采取一些技巧来“帮助”数据保留在缓存中,但您不能将任何内容固定在缓存中。
-
如果出于安全原因,如果您的程序可以轻松反汇编,那么尝试将其“隐藏”在缓存中对您没有多大帮助。
-
即使你把它放在那里,它也不是永久的。以及您要从哪里读取密钥以将其放入缓存中?
标签: c caching cache-control