码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 1.14 - 流水线


    目录

    一、流水线的概念

    二、流水线工作流程

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

    1、执行过程

    2、结论

    四、使用流水线执行指令

    1、执行过程

    2、结论

    五、流水线周期

    六、流水线计算公式

    七、流水线的吞吐率

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


    一、流水线的概念

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

    二、流水线工作流程

    • 一条指令在执行的时候,通常可以分为多个阶段进行,每个阶段由不同的部件来实现;
    • 以分为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:流水线的相关计算

  • 相关阅读:
    开发vue3 UI组件库,并且发布到NPM
    关于根据动态数量的对象的某属性的数组数量呈乘机式增长的数据处理
    一个简单的WEB网页制作作业——黑色的山河旅行社网站(5个页面)HTML+CSS+JavaScript
    Spring事务传播机制
    【C#】Mapster对象映射的使用
    2-网络架构和Netty系列-Java和IO网络模型
    leetcode 263. Ugly Number(丑数)
    阿里8年测试老鸟教你软件测试工程师简历,技术栈,项目经验怎么写
    python 学习积累
    《最新出炉》系列入门篇-Python+Playwright自动化测试-8-上下文(Context)
  • 原文地址:https://blog.csdn.net/qq_46071165/article/details/125608512
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号