我希望编写的软件本质上可以分析CPU缓存(L2,L3,可能是L1)和内存,以分析性能.
我认为这是不可行的,因为软件无法访问缓存内容吗?
另一种措辞我的问:有什么方法可以从操作系统/应用程序级别知道哪些数据已加载到缓存/内存中?
编辑:操作系统Windows或Linux和CPU Intel Desktop / Xeon
解决方法:
您可能希望查看英特尔的PMU,即性能监控单元.有些处理器有一个.它是一组专用寄存器(英特尔称之为模型特定寄存器或MSR),您可以使用RDMSR和WRMSR指令对其进行编程以计算事件,如缓存未命中.
这是一份关于Performance Analysis on i7 and Xeon 5500的文件.
您可能需要查看英特尔Performance Counter Monitor,它基本上是一些抽象PMU的例程,您可以在C应用程序中使用它来实时测量多个性能指标,包括缓存未命中.它还有一些用于独立使用的GUI / Commandline工具.
显然,the Linux kernel has a facility for manipulating MSRs.
还有其他实用程序/ API也使用PMU:perf,PAPI.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!