第 2 章:性能瓶颈分析
学习目标
- 识别性能瓶颈
- 分析停顿原因
- 优化关键路径
2.1 思考:为什么慢?
运行一个程序,发现 CPI = 2.5,太慢了!
问题:瓶颈在哪里?
- 分支预测?
- 数据冒险?
- 访存延迟?
2.2 停顿分类统计
reg [31:0] data_stall;
reg [31:0] control_stall;
reg [31:0] mem_stall;
always @(posedge clk) begin
if (data_hazard) data_stall <= data_stall + 1;
if (branch_miss) control_stall <= control_stall + 1;
if (mem_wait) mem_stall <= mem_stall + 1;
end
2.3 分析实例
假设统计结果:
- 总周期:10000
- 指令数:5000
- 数据停顿:1000
- 控制停顿:3000
- 访存停顿:1000
CPI = 10000 / 5000 = 2.0
控制停顿占比 = 3000 / 5000 = 60%
结论:分支预测是最大瓶颈!
2.4 优化策略
根据瓶颈选择优化方向:
- 控制停顿多 → 分支预测
- 数据停顿多 → 数据转发
- 访存停顿多 → Cache
思考:你的处理器最大瓶颈是什么?