一般来说,我不认为这是可能的.它适用于DRAM和页面文件,因为它是操作系统管理的资源,缓存由CPU本身管理.
操作系统可以执行内存读取的紧密计时循环,并尝试查看它是否足够快地完成缓存,或者是否必须转到主内存 - 这将非常容易出错.
在多核/多进程系统上,在处理器之间使用缓存一致性协议来确定何时需要使彼此的缓存无效,我想你可能有一个自定义设备可以窥探操作系统将查询的协议.
你想做什么?如果你想强迫某些内存进入内存,当前的x86处理器支持以非阻塞方式将内存预取到缓存中,例如使用Visual C++可以_mm_prefetch用来获取缓存中的一行.
编辑:我自己没有这样做,所以使用风险自负.要确定用于分析的高速缓存未命中,您可以使用一些特定于体系结构的寄存器. http://download.intel.com/design/processor/manuals/253669.pdf,附录A给出了"性能调优事件".这不能用于确定单个地址是在缓存中还是在缓存中加载,而是可以用于整体统计.我相信这就是vTune(这个级别的现象分析器)所使用的.
| 归档时间: |
|
| 查看次数: |
1993 次 |
| 最近记录: |