COD作业3

1

  1. PC: 取出PC,更新
    Inst Memory: 取指令
    Decode: 译码
    regfile: 取出rs1,写入rd
    ALU: 计算加法
    control: 译码
    MUX: 选择数据
  2. PC: 取出PC,更新
    Inst Memory: 取指令
    Decode: 译码
    regfile: 取出rs1, rs2
    ALU: 计算加法
    control: 译码
    Branch: 比较大小
    MUX: 选择数据
  3. (1) beq,bne,bge,blt,bgeu,bltu
    (2) lb,lh,lw,lbu,lhu
    (3) sb,sw,sh

2

  1. T(流水线)=250ps, T(单周期)=1020ps

  2. t(流水线)= 1004\times250ps=251ns
    t(单周期)= 1000\times1020ps=1020ns
    加速比为 4.06

3.

Inst\cycle 1 2 3 4 5 6 7 8 9
add x1, x1, x3 IF ID EX MEM WB
add x2, x1, x4 IF ID EX MEM WB
lw x3, 0(x2) IF ID EX MEM WB
add x5, x3, x6 IF ID ID EX MEM WB

3

  1. Inst\cycle 1 2 3 4 5 6 7 8 9 (10)
    ld x10, 0(x13) IF ID EX MEM WB IF ID
    ld x11, 8(x13) IF ID EX MEM WB IF
    add x12, x10, x11 IF ID ID EX MEM WB
    subi x13, x13, 16 IF IF ID EX MEM WB
    bnez x12, LOOP IF ID EX MEM WB
    nop IF ID
    nop IF

每次 8 周期。

  1. 假设分支预测可以在 IF 阶段预测下一条跳转指令的位置
Inst\cycle 1 2 3 4 5 6 7 8 9 (10)
ld x10, 0(x13) IF ID EX MEM WB IF ID
ld x11, 8(x13) IF ID EX MEM WB IF
add x12, x10, x11 IF ID ID EX MEM WB
subi x13, x13, 16 IF IF ID EX MEM WB
bnez x12, LOOP IF ID EX MEM WB

节约 2 个周期。

4

  • 静态预测:向后不跳向前跳
  • 1-bit predictor: 和上一次一样
  • 2-bit Saturating Counter: 2-bit state,跳+1,不跳-1,>=2时跳,很常见
  • 对不同位置的分支分别保存几次历史
  • 保存全局的分支跳转历史,并和上一条并用
  • 对函数返回的专门优化
  • etc.

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注