Nul*_*ptr 8 c performance x86 profiling x86-64
我想使用硬件性能计数器,特别是x86 CPU来获取缓存未命中或分支错误预测.性能计数器在英特尔VTune等高级分析器中大量使用.请不要在Windows操作系统上混淆性能计数器.
为了在C/C++程序中使用这些计数器,可以使用PAPI:http://icl.cs.utk.edu/papi/
这使您可以轻松使用性能计数器,但仅限于Linux.PAPI曾经支持Windows,但现在不支持.
是否有人最近尝试使用PAPI或其他API在Windows上使用硬件性能计数器?
您可以使用RDPMC指令或__readpmc MSVC编译器固有的,这是同一回事。
但是,Windows通过将CR4.PCE设置为0来禁止用户模式应用程序执行此指令。大概是因为每个计数器的含义由MSR寄存器确定的,而MSR寄存器只能在内核模式下访问,因此可以这样做。换句话说,除非您是内核模式模块(例如,设备驱动程序),否则如果尝试执行此指令,将获得“特权指令”陷阱。
如果您正在编写用户模式应用程序,则唯一的选择是(如注释中的@Christopher所述)编写一个内核模块,该模块将为您执行该指令(您将承担用户->内核调用惩罚)并启用测试在您的计算机上签名,以便可以加载您自己签名的“驱动程序”。这意味着您无法轻松分发此应用,但可以在内部进行调整。
归档时间: |
|
查看次数: |
2961 次 |
最近记录: |