例1:MIPS 流水线,后半拍写 GPRs。求阻塞法处理 RAW 冒险时的执行时间。
ADD R4,R5,R6
SUB R7,R4,R6
OR R8,R4,R6
SW R6,20(R4)
LW R9,20(R8)
I1-I2 冒险,停 3 拍。此时 I1-I3, I1-I4 均已消除。
I3-I5 冒险,停 2 拍。
故执行时间为 5+4+3+2=14 拍。
例2:MIPS 流水线,前半拍写 GPRs。求转发法处理 RAW 冒险时的执行时间。假设存在 EX-EX,MEM-EX 的转发线路。
ADD R4,R5,R6
SUB R7,R4,R6
OR R8,R4,R6
SW R6,20(R4)
LW R9,20(R8)
I1-I2 冒险,利用 EX-EX 线路转发,停 0 拍。
I1-I3 冒险,利用 MEM-EX 线路转发,停 0 拍。
I1-I4 冒险,同拍内 GPRs 先写后读,停 0 拍。
I3-I5 冒险,利用 MEM-EX 线路转发,停 0 拍。
故执行时间为 5+4=9 拍。
例3:MIPS 流水线,前半拍写 GPRs。求转发法处理 RAW 冒险时的执行时间。假设仅存在 EX-EX 的转发线路。
ADD R4,R5,R6
SUB R7,R4,R6
OR R8,R4,R6
SW R6,20(R4)
LW R9,20(R8)
I1-I2 冒险,利用 EX-EX 线路转发,停 0 拍。
I1-I3 冒险,无法转发,停 1 拍(注意不是 2 拍!)。此时 I1-I4 冒险已经消除。
I3-I5 冒险,无法转发,停 1 拍。
故执行时间为 5+4+1+1=11 拍。
例4:MIPS 流水线,后半拍写 GPRs。求转发法处理 RAW 冒险时的执行时间。假设仅存在 EX-EX 的转发线路。
ADD R4,R5,R6
SUB R7,R4,R6
OR R8,R4,R6
SW R6,20(R4)
LW R9,20(R8)
I1-I2 冒险,利用 EX-EX 线路转发,停 0 拍。
I1-I3 冒险,无法转发,停 2 拍。此时 I1-I4 冒险已经消除。
I3-I5 冒险,无法转发,停 2 拍。
故执行时间为 5+4+2+2=13 拍。
例5:MIPS 流水线,前半拍写 GPRs。求转发法处理 RAW 冒险时的执行时间。假设仅存在 EX-EX 的转发线路。
ADD R4,R5,R6
SUB R7,R4,R6
OR R8,R4,R7
SW R6,20(R4)
LW R9,20(R8)
I1-I2 冒险,利用 EX-EX 线路转发,停 0 拍。
I1-I3 冒险,无法转发,必须要等待数据都可读才能运算。因为 R4 停 1 拍后,I3 错过了 R7 的转发时机,因此需要再停一拍到 R7 可读,总共停 2 拍。此时 I1-I4 冒险已经消除。
I3-I5 冒险,无法转发,停 1 拍。
故执行时间为 5+4+2+1=12 拍。
例6:MIPS 流水线,后半拍写 GPRs。求转发法处理 RAW 冒险、阻塞法处理 load-use 冒险时的执行时间。假设仅存在 EX-EX 的转发线路。
ADD R4,R5,R6
SUB R7,R4,R6
OR R8,R4,R6
LW R6,20(R8)
SW R6,20(R4)
I1-I2 冒险,利用 EX-EX 线路转发,停 0 拍。
I1-I3 冒险,无法转发,停 2 拍。此时 I1-I4 冒险已经消除。
I3-I5 冒险,无法转发,停 2 拍。I4-I5 存在 load-use 冒险,需要停 3 拍。故 I5 延迟 3 拍。
故执行时间为 5+4+2+3=14 拍。
例7:MIPS 流水线,后半拍写 GPRs。求转发法处理 RAW 冒险、阻塞法处理控制冒险时的执行时间。假设仅存在 EX-EX 的转发线路,分支指令在 MEM 段写 PC。
ADDI R4,R5,100
L1: ADD R8,R6,R7
SW R8,20($6)
ADDI R5,R5,1
BNE R5,R4,L1
ADDI R9,R9,10
所有数据冒险都被转发法处理掉了,只考虑控制冒险。
阻塞法处理,I5 每次使流水线停顿 3 拍(原本 ID 时下条指令 IF,现在 MEM 段写 PC,即 WB 时下条指令才可 IF)。
循环体执行了 100 次,故执行时间为 5+402-1+300=706 拍。
例8:MIPS 流水线,后半拍写 GPRs。求转发法处理 RAW 冒险、阻塞法处理控制冒险时的执行时间。假设仅存在 EX-EX 的转发线路,分支指令在 EX 段写 PC。
ADDI R4,R5,100
L1: ADD R8,R6,R7
SW R8,20($6)
ADDI R5,R5,1
BNE R5,R4,L1
ADDI R9,R9,10
所有数据冒险都被转发法处理掉了,只考虑控制冒险。
阻塞法处理,I5 每次使流水线停顿 2 拍(原本 ID 时下条指令 IF,现在 EX 段写 PC,即 MEM 时下条指令才可 IF)。
循环体执行了 100 次,故执行时间为 5+402-1+200=606 拍。
我知道这个例子很傻,只是提醒一定要看清是在 EX/MEM/WB 写 PC 的,写完 PC 后下一拍下条指令才可以 IF。
例9:MIPS 流水线,后半拍写 GPRs。求转发法处理 RAW 冒险、分支预测法处理控制冒险时的执行时间。假设仅存在 EX-EX 的转发线路,分支指令在 MEM 段写 PC,分支预测始终猜测转移,预测在 IF 段进行。
ADDI R4,R5,100
L1: ADD R8,R6,R7
SW R8,20($6)
ADDI R5,R5,1
BNE R5,R4,L1
ADDI R9,R9,10
所有数据冒险都被转发法处理掉了,只考虑控制冒险。
分支预测在 IF 段进行,意味着预测正确时停 0 拍,预测错误时停 4 拍。
循环体执行了 100 次,预测成功 99 次,预测失败一次。
故执行时间为 5+402-1+4=410 拍。