zoukankan      html  css  js  c++  java
  • 流水线分析例题

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

  • 相关阅读:
    《Effective C#》读书笔记——了解.NET内存管理机制<.NET资源管理>
    《Effective C#》读书笔记——条目13:正确地初始化静态成员变量<.NET资源管理>
    用创新和务实的精神开创反洗钱检查工作的新局面
    《谈谈具有中国特色的“全能型”程序员》(2009/12/11)
    EOM与程序员话题的开场白(2009/12/07)
    从事反洗钱工作要有一定的高度
    程序员漫谈(2009/12/08)
    怎样快速确定程序员编程的水平(2009/12/10)
    重视或应付!当前金融机构反洗钱面临的一个问题
    反洗钱法律法规
  • 原文地址:https://www.cnblogs.com/mollnn/p/14748217.html
Copyright © 2011-2022 走看看