Apple M1性能计数器MAP_DISPATCH_BUBBLE等含义解读及理论验证
M1芯片MAP系列性能计数器分析验证
此前的问题涉及性能计数器异常增长,现聚焦Apple M1芯片的三个性能计数器:MAP_DISPATCH_BUBBLE、MAP_STALL、MAP_STALL_DISPATCH,明确其测量含义后提出以下分析理论,现请求验证该分析是否合理,并指出其中的假设或结论漏洞。
Instruments给出的计数器描述
| 性能计数器 | 描述 |
|---|---|
| MAP_DISPATCH_BUBBLE | 调度阶段检测到气泡 |
| MAP_STALL | Map单元因任意原因停滞的周期数 |
| MAP_STALL_DISPATCH | Map单元因调度回压导致停滞的周期数 |
相关参考信息来自某推文及Dougall Johnson的Firestorm架构网站,基于此提出的分析理论如下:
- Map单元对应架构图中的"Rename/Allocate"模块,理论上每秒可处理8个µops;
- Map单元处于空闲的时钟周期会触发
MAP_STALL计数,可能原因包括:- I-cache缺失(伴随大量
L1I_CACHE_MISS_DEMAND事件); - 指令无法送入已满的调度队列(因子调度器全满,执行单元繁忙或操作数缺失),该场景同时会触发
MAP_STALL_DISPATCH计数;
- I-cache缺失(伴随大量
MAP_DISPATCH_BUBBLE指调度阶段出现气泡,即某时钟周期无指令送入调度器,原因包括:- 所有调度单元为空(如长延迟I-cache缺失);
- 调度单元非空但子调度器全满无法执行。
场景汇总表
| I-cache缺失 | STALL | STALL_DISPATCH | DISPATCH_BUBBLE | 调度队列 | 子调度器 | 原因 |
|---|---|---|---|---|---|---|
| 大量 | 大量 | 任意 | 少量 | 非空 | 未满 | 短期缓存缺失 |
| 大量 | 大量 | 少量 | 大量 | 空 | 任意 | 长期缓存缺失 |
| 少量 | 少量 | 少量 | 少量 | 未满 | 未满 | 前端受限(?) |
| 少量 | 少量 | 少量 | 大量 | 半满 | 已满 | 后端受限(3.2) |
| 少量 | 大量 | 大量 | 大量 | 已满 | 已满 | 后端受限(2.2) |
现正式问询:该分析理论是否合理?能否指出其中假设或结论的漏洞?
内容的提问来源于stack exchange,提问作者swineone
相关产品推荐
相关产品推荐

