学习目标

  • 识别性能瓶颈
  • 分析停顿原因
  • 优化关键路径

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 优化策略

根据瓶颈选择优化方向:

  1. 控制停顿多 → 分支预测
  2. 数据停顿多 → 数据转发
  3. 访存停顿多 → Cache

思考:你的处理器最大瓶颈是什么?

下一步

第 3 章:性能计数器

更新时间: