ConfigurePMC
配置四个硬件性能监视器计数器 (PMC),以使一个游戏能够直接从游戏代码读取这些计数器。
语法
HRESULT ConfigurePMCs(
unsigned int eventIndex0,
unsigned int eventIndex1,
unsigned int eventIndex2,
unsigned int eventIndex3
)
参数
eventIndex0
类型:unsigned int
要计数的事件的索引。
eventIndex1
类型:unsigned int
要计数的事件的索引。
eventIndex2
类型:unsigned int
要计数的事件的索引。
eventIndex3
类型:unsigned int
要计数的事件的索引。
返回值
类型:HRESULT
成功或错误代码。
代码 | 说明 |
---|---|
S_OK | 成功。 |
E_INVALIDARG | 一个或多个索引超出范围。 |
E_ACCESS_DENIED | 拒绝对该驱动程序的访问。 |
备注
有四个可以直接配置为对事件进行计数的硬件计数器。 下表中列出了这些事件。 该事件的索引既用于指定此方法的事件,也用于使用 GetPMCValue 检索计数。
索引 | 事件 | 说明 |
---|---|---|
0 | 保留 | 保留。 |
1 | RetiredSseAvx | 停用的 SSE/AVX 操作的数量。 |
2 | DCacheAccesses | 对 L1 数据缓存进行访问以用于加载和存储引用的次数。 |
3 | DCacheMisses | 错过数据缓存的 L1 数据缓存引用的次数。 |
4 | DCacheRefills | 从不可捕获内存的 L2 缓存(和/或 Nrthbridge)满足的 L1 数据缓存重新填充的次数。 |
5 | L1DTLBMissL2DTLBHit | 在 L1 DTLB 中错过和在 L2 DTLB 中命中的 L1 数据缓存访问的次数。 |
6 | DtlbMiss | 在 L1 和 L2 DTLB 中均错过的数据缓存访问的次数。 |
7 | L1DtlbHit | 在 L1 DTLB 中命中的 L1 数据缓存访问的次数。 |
8 | L1ITLBMissL2ITLBHit | 在 L1 ITLB 中错过、但在 L2 ITLB 中命中的指令获取的次数。 |
9 | ItlbMiss | 在 4K ITLB 和 2M ITLB 中错过的指令获取的次数。 |
10 | ItlbInstructionFetchHits | 在 4K ITLB 和 2M ITLB 中命中的指令获取的次数。 |
11 | MisalignedAccess | 不一致的 L1 数据缓存访问的次数。 不一致的访问在至少一个额外的缓存访问和一个额外的读取延迟周期中发生。 |
12 | IneffectiveSWPrefetches | 未导致实际 L1 数据缓存重新填充的软件预取的次数。 |
13 | CpuClkNotHalted | 未处于暂停状态的 CPU 的时钟数。 |
14 | RetiredInstructions | 已停用的指令数(执行已完成并且体系结构状态已更新)。 此计数包括例外和中断。 |
15 | BranchInstructions | 停用的分支指令的数目。 这包括所有类型的体系结构控制流更改,包括例外和中断。 |
16 | MispredictedBranch | 在目标或方向中未正确预测的任何类型的已停用分支指令的数目。 这包括未尝试预测的那些数目(远控制传输、例外和中断),但不包括重新同步。 |
17 | RetiredTakenBranch | 已停用的已获取分支的数量。 这包括所有类型的体系结构控制流更改,包括例外和中断,但不包括重新同步。 |
18 | RetiredFarSyscall | 已停用的远程系统调用的数量。 |
19 | RetiredNearReturns | 已停用的就近返回指令的数目。 |
20 | RetiredReturnsMispredicted | 已停用在目标或方向中错误预测的就近返回指令。 |
21 | MispredictedTakenBranch | 已停用在目标地址中(但不是在方向中)错误预测的已获取分支指令。 |
22 | MmxFPInstructions | 浮点数指令(x87、MMX 或 SSE)指令已停用。 |
23 | RetiredFPInstructions | 停用的 SSE/AVX 操作的数量。 |
24 | RetiredMmxInstructions | 停用的 MMX 操作的数量。 |
25 | RetiredSseInstructions | 停用的 SSE 操作的数量。 |
26 | InstructionFetchStalls | 停用了指令获取引擎的周期数目。 |
27 | DataCachePrefetches | L1 数据缓存预取。 |
28 | DataCacheReadSize | L1 数据缓存读取的次数。 |
29 | DataCacheWriteSize | L1 数据缓存写入的次数。 |
30 | ITLBReloadStalls | 为 ITLB 重新加载而停用获取引擎的周期数。 |
要求
头文件:pix3.h
库:pixevt.lib
支持的平台:Xbox One 系列主机和 Xbox Series 主机
另请参阅
ConfigureL2IPMC
ConfigureNBPMC
GetPMCValue
PIX(NDA 主题)要求授权
Xbox 上的 PIX3