首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于Windows的硬件性能计数器API

问用于Windows的硬件性能计数器API
EN

Stack Overflow用户
提问于 2012-01-07 05:17:10
回答 2查看 3.6K关注 0票数 10

我想使用hardware performance counter,特别是x86 CPU来获取缓存未命中或分支错误预测。性能计数器在诸如英特尔VTune之类的高级性能分析器中大量使用。请不要混淆Windows操作系统上的性能计数器。

为了在C/C++程序中使用这些计数器,可以使用PAPI:http://icl.cs.utk.edu/papi/

这使您可以轻松地使用性能计数器,但仅限于Linux。PAPI曾经支持Windows,但现在不支持。

有没有人最近在Windows上尝试过PAPI或其他API来使用硬件性能计数器?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-10 16:14:16

您可以使用RDPMC指令或__readpmc MSVC编译器内部,这是相同的事情。

但是,Windows通过将CR4.PCE设置为0来禁止用户模式应用程序执行此指令。据推测,这样做是因为每个计数器的含义由MSR寄存器确定,这些寄存器只能在内核模式下访问。换句话说,除非你是一个内核模式模块(例如设备驱动程序),否则如果你试图执行这条指令,你将会得到“特权指令”陷阱。

如果你正在编写一个用户模式的应用程序,你唯一的选择就是(正如@Christopher在评论中提到的)编写一个内核模块,它将为你执行这条指令(你将招致user->内核调用惩罚),并在你的机器上启用测试签名,这样你可能自签名的“驱动程序”就可以加载了。这意味着你不能很容易地发布这个应用程序,但这将适用于内部调整。

票数 6
EN

Stack Overflow用户

发布于 2013-09-03 16:24:58

这个HCP Reference怎么样?它不能提供你想要的东西吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8764639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档