假设我使用 malloc 分配一些空间。 我可以在运行时检查此连续内存是否保留在 CPU 的缓存中(或者更好的是在缓存级别 L1、L2、L3 等中)吗?
最佳答案
不可以,但是您可以使用预取指令在使用前将其从内存移动到缓存。如果数据已经在缓存中,这些指令应该很快(有一些特定于体系结构的警告,但我不知道您使用的是哪个平台)。
之所以可以查询内存是否在高速缓存中,是因为硬件将其管理在您可以轻松观察到的级别之下。在具有硬件管理的 TLB 的架构上,内存将在任何地方被虚拟地址跟踪。
关于c++ - 我可以检查缓存中是否有一 block 内存(例如,使用 malloc 分配)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34822932/