gpt4 book ai didi

c - 适用于 Windows 的硬件性能计数器 API

转载 作者:行者123 更新时间:2023-11-30 17:59:35 24 4
gpt4 key购买 nike

我想使用hardware performance counter ,特别是 x86 CPU 来获取缓存未命中或分支错误预测。性能计数器在 Intel 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在评论中提到的)编写一个内核模块来为你执行这条指令(你将招致用户->内核调用惩罚)并在您的计算机上启用测试签名,以便可以加载您可能的自签名“驱动程序”。这意味着您无法轻松分发此应用程序,但这适用于内部调整。

关于c - 适用于 Windows 的硬件性能计数器 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11284812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com