• 1.14 - 流水线


    一、流水线的概念

    • 所谓流水线,是指程序在执行时, 多条指令重叠进行操作的一种准并行处理实现技术。

    二、流水线工作流程

    • 一条指令在执行的时候,通常可以分为多个阶段进行,每个阶段由不同的部件来实现;
    • 以分为3个阶段为例: 取指、分析、执行
    取指:由取指部件实现,负责内存把指令取到CPU中;
    分析:由分析部件进行分析指令;
    执行:由执行部件实现,负责将指令进行译码后,执行指令;

    三、未使用流水线执行指令

    1、执行过程

    • 没有使用流水线时,当第一条指令的取指部件进行取指时,分析部件和执行部件是空闲的;
    • 当取指部件取指完成后,分析部件开始分析指令,这时取指部件和执行部件是空闲的;
    • 当分析部件执行完成后,执行部件开始编译后执行指令,此时取指部件和分析部件又是空闲的;

    2、结论

    • 由此可知,不使用流水线执行指令时,取指部件,分析部件,执行部件的利用率并不高; 

    四、使用流水线执行指令

    1、执行过程

    • 当第一条指令开始执行时,取指部件开始工作,分析部件和执行部件空闲;
    • 当第一条指令取指完成后,分析部件开始工作;此时取指部件就空闲出来了,此时就可以去取第二条指令了;
    • 当第一条指令分析完成后,执行部件开始工作;此时分析部件就空闲出来了,此时就可以对刚取的第二条指令进行分析了;并且由于此时第二条指令取指完成了,所以此时取指部件又空闲出来了,所以此时可以去取第三条指令了;

    2、结论

    • 由此可见,使用流水线执行指令,能有效提高部件的使用率,也就有效的提高了指令的执行效率;

    五、流水线周期

    • 在指令中各个阶段, 执行时间最长的这一阶段的时间,就是流水线的周期;
    解析:
    (1)例如流水线上的工人,三个人合作完成一件物品;第一个人需要2秒,第二个人需要4秒,第三个人需要1秒;
    (2)如果此时将完成这件物品的周期定为1秒,那么第一、第二个人就无法完成自己的工作;
    (3)只有将周期定为4秒的时候,这三个人才都能完成自己的工作;
    (4)所以我们一般将 完成一件物品 执行所需时间最长的阶段的时间,定为周期,例子中的周期是4秒;

    六、流水线计算公式

    • 单条指令所需时间+(n-1)*(流水线周期
    (1)由图可知,执行第一条指令时,需要3个阶段;
    (2)执行完第一条指令时,第二条指令zh已经执行完分析阶段了,只需要有一个执行阶段就可完成第二条指令的执行;
    (3)当第二条指令执行完成时,第三条指令已经执行完分析阶段了,也只需要一个执行阶段就可以完成第三条指令的执行;
    (4)所以执行n条指令时,只需要用单条指令的时间(第一条指令的三个阶段的时间的和)+(n-1)条指令执行所需要的时间;
    • 注意:n表示指令的数量;

    七、流水线的吞吐率

    八、考法1:流水线的相关计算

  • 相关阅读:
    Unity ECS 内存分配器原理详解
    Linux安装Nexus3搭建maven私服超详细搭建上传步骤
    Compose学习-> Text()
    ant的Path-like结构
    基础到高级涵盖11个技术,Alibaba最新出品711页Java面试神册真香
    你知道电子招标最突出的5大好处有哪些吗?
    wireshark 流量抓包例题重现
    基于Python实现的快递管理系统源码+数据库,采用PyQt6实现GUI界面
    力扣(83.643)补8.29
    车载多源融合定位
  • 原文地址:https://blog.csdn.net/qq_46071165/article/details/125608512