1. Arm Cortex-M85 PMU架构解析
Cortex-M85处理器的性能监控单元(PMU)是其调试与性能分析子系统的核心组件。作为Armv8-M架构中的标准配置,该PMU实现了两类事件监控能力:
- 架构定义事件:编号0-120,遵循Arm架构规范,在Cortex-M系列中保持兼容性
- 微架构特定事件:编号121-140,针对M85管线特性定制开发
1.1 硬件计数器配置
M85的PMU包含8个32位事件计数器(PMU_EVCNTR0-7)和1个独立的周期计数器(PMU_CCNTR)。每个事件计数器可通过PMU_EVTYPER寄存器配置为监控特定事件,其关键特性包括:
- 计数器溢出可触发中断(需配置PMU_INTENSET)
- 支持事件链式计数(CHAIN事件)
- 计数器使能/禁用独立控制(PMU_CNTENSET/CNTENCLR)
重要提示:使用PMU前必须设置DEMCR.TRCENA=1来启用调试组件,否则所有计数器将保持禁用状态。
1.2 事件分类体系
M85的PMU事件可划分为以下几大类:
| 事件类别 | 典型事件 | 应用场景 |
|---|---|---|
| 指令执行 | INST_RETIRED, EXC_TAKEN | 代码覆盖率分析 |
| 内存访问 | L1D_CACHE_REFILL, DTCM_ACCESS | 内存子系统优化 |
| 分支预测 | BR_MIS_PRED, BR_PRED | 分支密集型代码优化 |
| 流水线停滞 | STALL_FRONTEND, STALL_BACKEND | 指令调度优化 |
| 总线活动 | BUS_ACCESS, AXI_READ_ACCESS | 总线带宽分析 |
| 安全扩展 | SE_CALL_S, SE_CALL_NS | 安全 |
