流水线分析例题

例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 拍。

原文地址:https://www.cnblogs.com/mollnn/p/14748217.html