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