c++ - 我可以检查缓存中是否有一 block 内存(例如,使用 malloc 分配)吗?

标签 c++ c caching memory-management malloc

假设我使用 malloc 分配一些空间。 我可以在运行时检查此连续内存是否保留在 CPU 的缓存中(或者更好的是在缓存级别 L1、L2、L3 等中)吗?

最佳答案

不可以,但是您可以使用预取指令在使用前将其从内存移动到缓存。如果数据已经在缓存中,这些指令应该很快(有一些特定于体系结构的警告,但我不知道您使用的是哪个平台)。

之所以可以查询内存是否在高速缓存中,是因为硬件将其管理在您可以轻松观察到的级别之下。在具有硬件管理的 TLB 的架构上,内存将在任何地方被虚拟地址跟踪。

关于c++ - 我可以检查缓存中是否有一 block 内存(例如,使用 malloc 分配)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34822932/

相关文章:

Java:我应该每次构造轻量级对象还是缓存实例?

php - 如何在没有脚本 (PHP) 或服务器配置 (Nginx) 的情况下检测移动设备(和/或移动 cookie)?

c++ - 库达错误 : unexpected launch failure

c++ - 让用户决定在 C++ 中运行哪个函数的最佳方法?

c - 为什么在写入使用字符串文字初始化的 "char *s"而不是 "char s[]"时出现段错误?

c - 为什么我收到未定义的 sleep 引用错误?

caching - 客户端文件缓存

c++ - 根据文件读取条件初始化struct中char的大小

c++ - 如何使进程忽略某些信号(如 SIGHUP、SIGABRT、SIGABORT、SIGINT 等)

javascript - 将 Javascript UUID 函数翻译成 C