> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ConfigurePMCs

> ConfigurePMCs

# ConfigurePMCs

配置四个硬件性能监视计数器 (PMC)，以便游戏能够直接为游戏代码读取这些计数器。

## 语法

```cpp theme={null}
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](/reference/tools/pix3/functions/getpmcvalue) 检索计数。

| 索引 | 事件                         | 描述                                                             |
| -- | -------------------------- | -------------------------------------------------------------- |
| 0  | Reserved                   | 保留。                                                            |
| 1  | RetiredSseAvx              | 已引退的 SSE/AVX 操作数。                                              |
| 2  | DCacheAccesses             | 用于加载和存储引用的 L1 数据缓存的访问次数。                                       |
| 3  | DCacheMisses               | 未命中数据缓存的 L1 数据缓存引用数。                                           |
| 4  | DCacheRefills              | 从 L2 缓存（和/或北桥）从不可缓存内存满足的 L1 数据缓存重新填充次数。                        |
| 5  | L1DTLBMissL2DTLBHit        | 在 L1 DTLB 中未命中而在 L2 DTLB 中命中的 L1 数据缓存访问次数。                     |
| 6  | DtlbMiss                   | 在 L1 和 L2 DTLB 中均未命中的 L1 数据缓存访问次数。                             |
| 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 主机

## 另请参阅

[ConfigureL2IPMCs](/reference/tools/pix3/functions/configurel2ipmcs)\
[ConfigureNBPMCs](/reference/tools/pix3/functions/configurenbpmcs)\
[GetPMCValue](/reference/tools/pix3/functions/getpmcvalue)\
[PIX（NDA 主题）](/tools/tools-console/pix/pix)\
[XBOX 上的 PIX3](/reference/tools/pix3/pix3_members)


## Related topics

- [ConfigureNBPMCs](/zh-CN/reference/tools/pix3/functions/configurenbpmcs.md)
- [ConfigureL2IPMCs](/zh-CN/reference/tools/pix3/functions/configurel2ipmcs.md)
- [GetPMCValue](/zh-CN/reference/tools/pix3/functions/getpmcvalue.md)
- [PIX3](/zh-CN/reference/tools/pix3/pix3_members.md)
- [PartyChatControl::ConfigureAudioManipulationVoiceStream](/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyChatControl/methods/partychatcontrol_configureaudiomanipulationvoicestream.md)
