1. Arm Neoverse V2 PMU架构解析
Arm Neoverse V2作为面向基础设施的高性能处理器核心,其性能监控单元(PMU)的设计体现了现代处理器性能分析的典型范式。PMU通过硬件计数器实现对处理器内部事件的精确采集,为系统级性能分析提供了数据基础。
1.1 PMU寄存器分类与功能
Neoverse V2的PMU寄存器可分为三大类:
-
事件计数器寄存器(PMEVCNTRn_EL0):共31个64位寄存器(编号0-30),每个计数器可独立配置为监控特定硬件事件。例如:
- PMEVCNTR0_EL0 (0x0): 事件计数器0
- PMEVCNTR1_EL0 (0x8): 事件计数器1
- ...
- PMEVCNTR30_EL0 (0xF0): 事件计数器30
-
事件类型寄存器(PMEVTYPERn_EL0):与计数器一一对应,用于配置监控的事件类型。关键字段包括:
- 事件类型(Event Type): 指定监控的具体硬件事件
- 过滤条件(Filter): 设置事件触发的条件限制
- 中断使能(INT): 控制计数器溢出时是否触发中断
-
控制与状态寄存器:
- PMCR_EL0 (0xE04): 全局控制寄存器
- PMCNTENSET_EL0 (0xC00): 计数器使能设置
- PMOVSCLR_EL0 (0xC80): 溢出状态清除
- PMCCFILTR_EL0 (0x47C): 周期计数器过滤设置
注意:访问PMU寄存器时需确保处理器处于运行状态(IsCorePowered)且未锁定(!DoubleLockStatus && !OSLockStatus),否则会产生访问错误。
1.2 性能监控工作原理
PMU的工作流程可分为三个主要阶段:
-
配置阶段:
- 通过PMEVTYPERn_EL0选择监控事件
- 设置PMCCFILTR_EL0定义过滤条件
- 使用PMCNTENSET_EL0启用所需计数器
-
数据采集阶段:
- 硬件自动将事件发生次数记录到PMEVCNTRn_EL0
- 周期计数器PMCCNTR_EL0持续记录时钟周期
