ConfigureNBPMC

在 North Bridge(北桥)内配置四个硬件性能监视器计数器 (PMC),以使一个游戏能够直接从游戏代码读取这些计数器。

语法

HRESULT ConfigureNBPMCs(  
         unsigned int eventIndex6,  
         unsigned int eventIndex7,  
         unsigned int eventIndex8,  
         unsigned int eventIndex9  
)  

参数

eventIndex6   
类型:unsigned int

要计数的事件的索引。

eventIndex7   
类型:unsigned int

要计数的事件的索引。

eventIndex8   
类型:unsigned int

要计数的事件的索引。

eventIndex9   
类型:unsigned int

要计数的事件的索引。

返回值

类型:HRESULT

成功或错误代码。

代码 说明
S_OK 成功。
E_INVALIDARG 一个或多个索引超出范围。
E_ACCESS_DENIED 拒绝对该驱动程序的访问。

备注

north bridge 具有可对事件进行计数的 4 个性能计数器。 可以从任何内核读取 NB PMC 值。 North bridge 内存事务是 64 字节。

用 * 标记的事件是从 DRAM 控制器 (DCT) 记录的。 仅在配置这些事件时设置 eventIndex6,因为需要为 Xbox One 上的每个 DRAM 控制器设置相同的事件。我们有 4 个 DRAM 控制器和 4 个计数器,因此您计算 PMC6-PMC9 的总和以便获得总数结果。
例如:针对 NBAllReadWrites 的总内存流量 = (PCM6+PMC7+PCM8+PMC9) * 64

在 Xbox One X 上,我们有 12 个 DRAM 控制器和 4 个计数器,因此,我们仅对每第 3 个 DCT 上的流量进行计数。 内存流量大多数是对称的,因此可以合理地假定事件的总数是 PMC6-PMC9 的三倍。
例如:针对 NBAllReadWrites 的总内存流量 = (PCM6+PMC7+PCM8+PMC9) * 3 * 64

索引 事件 说明
0 保留
1 NBGarlicReads* Garlic 总线读取的次数
2 NBGarlicWrites* Garlic 总线写入的次数
3 NBGarlicReadsWrites* Garlic 总线读取和写入的次数
4 NBOnionReads* onion 总线读取的次数
5 NBOnionWrites* onion 总线写入的次数
6 NBOnionReadsWrites* onion 总线读取和写入的次数
7 NBAllReadWrites* 所有 NB 读取和写入的次数
8 NBCPUToMemory 到内存的 CPU 事务的数目
9 NBIOToMemory 到内存的 IO 事务的数目

要求

头文件:pix3.h

库:pixevt.lib

支持的平台:Xbox One 系列主机和 Xbox Series 主机

另请参阅

GetPMCValue
ConfigurePMC
ConfigureL2IPMC
Xbox 上的 PIX3
PIX(NDA 主题)要求授权