学习目标

  • 理解性能指标
  • 计算 CPI 和 IPC
  • 评估处理器性能

1.1 思考:什么是”快”?

你的五级流水线处理器”快”吗?

问题:如何量化”快”?

  • 时钟频率?
  • 执行时间?
  • 吞吐量?

1.2 性能指标

CPU 时间

CPU Time = 指令数 × CPI × 时钟周期

CPI(Cycles Per Instruction):每条指令的平均周期数

IPC(Instructions Per Cycle):每周期执行的指令数

IPC = 1 / CPI

例子

假设程序有 1000 条指令:

  • 理想流水线:CPI = 1,需要 1000 周期
  • 有冒险的流水线:CPI = 1.5,需要 1500 周期

思考:你的处理器 CPI 是多少?

1.3 性能损失来源

  1. 结构冒险:资源冲突
  2. 数据冒险:需要等待数据
  3. 控制冒险:分支预测失败
CPI = 1 + 结构停顿 + 数据停顿 + 控制停顿

1.4 测量方法

reg [31:0] cycle_count;
reg [31:0] inst_count;

always @(posedge clk) begin
    cycle_count <= cycle_count + 1;
    if (inst_valid) 
        inst_count <= inst_count + 1;
end

wire [31:0] cpi = cycle_count / inst_count;

问题:如何统计各类停顿?

下一步

第 2 章:性能瓶颈分析

更新时间: