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 主题)要求授权