流水线—你理解多少?

2023-05-16

流水线:

流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。概念我们说那么多,我们现在深入去理解,光有概念都是一些比较抽象的东西,我们看图:我们有三个步骤。


然后我们来看一下一般情况下我们的指令是一条一条的来处理,第一条指令处理完,再处理第二条,再处理第三条,这种顺序来处理机器里边的设备的利用情况是怎样的呢?我们来看这图:


若我们每个指令的执行时间是1ms,


那么三条指令执行完需要9ms的时间,我们还可以看得出来的是:取值这个设备只有在1ms,4ms,7ms的时候工作,第一条指令只有三分之一的时间进行工作,别的时间就空闲了,对于这样子中间就产生了很多设备的空闲。所以我们引入了流水线。

用流水线所用的时间:


取值设备只要完成第一条指令的取值,就立即进入第二条指令的取值,第二条指令完成之后,就马上执行第三条;分析这个操作也是一样,我们看的出来,在5ms的时间就完成了。

当然我们也能观察的出,单个指令的运行时间都是3ms。所以流水线对单条指令的执行是无效的。

流水线除了指令流水线,还有一种就是运算操作流水线,运算操作流水线就是计算机在执行各种运算操作时也可以应用流水线来提高运算速度,这是操作都是分阶段运行的,所以我们用流水线来提高运算速度。


流水线指令运行时间的计算:



我们光看公式就几个变量,不好理解,我们来看例题:


很简单的一道题目,我们看的出来,很容易我们就计算的出来:(2+2+1)+(100-1)*2

我们接下来看一个图,来深刻的理解一下:

从这个图中我们假设:取值5ns,分析 2ns,执行 5ns;那么我们执行完一条指令应该是:  


若分析在取值之后执行的话,只需要7ns就能完成分析阶段,那么执行完成只需要12ns,而不需要15ns。

我们为什么说分析能在取值之后马上执行呢?我们再来看一下这个执行步骤:


第一条指令的取值完成之后,这两条线就去掉了,就是说阻碍I2和C1发展的线就断了,他们就能运行:


我们很清楚的看到分析就和下一条指令的取值就能进行了。

我们接下来继续看一个有点反常的题目,有点意思:

我们要是按照之前的那个公式,能很快的算出来:周期=100ns(时间最长的),然后得到第一条指令的结果是:60ns+100ns+50ns+70ns=280ns。然后完成这段程序需:280+(20-1)*100=2180。我们按照这个公式来算,一点问题都没有。但是我们看一下答案:

但是当我们的选项里边没有这个答案,我们应该怎么办?想想,我们没有错,我们是按照公式来的,肯定错不了。但是有时候我们为了得分,所以我们必须要向另一种方向转变,就是我们的周期是100ns,那么我们都按照周期来算,那么我们第一条指令的完成时间就是:4*100=400,然后完成100条指令的时间就是:100*4+(20-1)*100=2300。那么这个题目我们就能拿分了。

流水线的吞吐率

 n是任务数,Tk是执行的总时间。


我们回头看看这个吞吐率应该是:100/(2+2+1)+(100-1)*2=100/203

流水线的加速比

完成同样的任务,不使用流水线所用的时间与使用流水线所用的时间之比。


我们来看一个例题:


我们按照公式计算得到:

S=(6+7+8+9+6)n/[(6+7+8+9+6)+9(n-1)]=36n/[36+9(n-1)]=4n/(4+n-1)

我们用一个极限的思想来求一个加速比: 


流水线的效率

流水线的设备利用率,公式是:


效率和吞吐率的关系:


和加速比的关系:


效率的计算,我们根据吞吐率和加速比都能直接的计算出来,所以在这里就不再举例了。原来流水线的东西还蛮多的嘛,但是不难,慢慢理解,变成自己的知识。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

流水线—你理解多少? 的相关文章

  • VMware 虚拟机怎么识别不了ISO文件

    1 安装 a class baidu highlight href https www baidu com s wd 61 E8 99 9A E6 8B 9F E5 85 89 E9 A9 B1 amp tn 61 44039180 cpr
  • hadoop集群查看路径

    管理界面 xff1a http master 8088 HDFS 主界面 xff1a http master 50070 HDFS 文件界面 xff1a http master 50070 explorer html
  • Ubuntu20.04 通过VNC实现远程桌面连接

    前提 xff1a 工控机上预留至少三个以太网口 xff0c 一个接路由器 xff0c 一个接上位机 一 通过无线进行远程连接 1 了解被连接电脑的信息并设置无线连接的网络地址 优先连接无线网络 xff1a 网络地址 xff1a 192 16
  • 结束也是开始

    到昨天为止 精通ORACLE 10G 备份与恢复 算是告一段落了 xff0c 接下来准备学习一下性能调优方面的 xff0c 然后再回过来复习一下 精通ORACLE 10G 备份与恢复
  • TX2小结之CAN通信

    TX2上有2个CAN控制器 xff0c CAN控制器需要通过CAN收发器连接到物理总线上 具体参阅原理图和相关技术参考手册 下载地址 xff1a https developer nvidia com embedded downloads 1
  • ROS中启用CAN

    1 源码安装canopen 从官网下载canopen至Ubuntu xff0c 下载地址 xff1a https github com ros industrial ros canopen tree kinetic devel 终端输入 x
  • ROS节点中的CAN命令

    前言 xff1a 由于在使用TX2的过程中 xff0c 需要使用CAN通讯的方式使我的机器人底盘与TX2进行命令收发 xff0c 而我的其他传感器都建立在ROS框架下 xff0c 为了以后能使数据交互我希望把底盘数据也放到我的ROS框架里面
  • ROS学习总结十一:Gazebo物理仿真环境搭建二:自己搭建一个机器人在gazebo中运动。

    之前使用的是shenlan的源码实现了一系列的功能 xff0c 那么根据之前所学习是否可以使用一个自己的机器人实现gazebo仿真 这里我们尝试一下 xff1a 1 按照之前的方式我们给自己的机器人添加碰撞属性以及惯性属性 xff0c 机器
  • ROS学习总结十六:订阅一个话题同时发布一个话题(subscriber and publisher)

    在使用ROS的时候 xff0c 我们会用到很多节点 xff0c 例如之前的gazebo仿真 hector建图 键盘控制等 xff0c 这些节点的消息传递主要靠的是话题与订阅 在很多程序中 xff0c 我们可能需要订阅一些数据 xff0c 同
  • 从ORB_SLAM中发布ROS位姿话题(stereo)

    之前调试了ORB SLAM2的gazebo仿真 xff0c 现在需要在ROS中使用到ORB SLAM2的位姿 xff0c 但是ORB SLAM2本身是没有位姿的ROS话题输出的 xff0c 参考了github上相关问题的探讨 xff1a G
  • 1.3如何配置launch与lua文件

    第一步 了解bag文件 播放bag文件需要在bag的文件夹内启动五个终端 1 第一个终端执行roscore 2 第二个终端执行rosbag info rslidar outdoor gps bag了解bag中topic的名称与类型 3 第三
  • ROS学习总结十七:自定义消息的使用

    在初学ROS时 xff0c 一般都是使用的ROS标准库 xff0c 包括激光电云laserscan 位姿posestamp等 这些库基本满足了我们的日常使用 xff0c 但是在开发时 xff0c 难免会遇到一些情况使用标准库不太合适 xff
  • [stm32]UART串口利用空闲中断接收一帧不定长数据

    查阅网上的方法有很多 xff0c 这里记录一下自己用的一种方式 xff0c 默认开启UART串口中断 xff0c cubemx生成工程代码 1 定义发送和接收全局数组 xff0c 用于缓存数据 RX frame size xff1a 接收到
  • JavaScript入门笔记(一)

    目录 一 JavaScript xff08 一 xff09 特点 xff08 二 xff09 作用 xff08 三 xff09 网页中插入JavaScript脚本的方法 1 行内式 2 嵌入式 3 链接式 一 JavaScript xff0
  • 面向对象学习笔记(一)——C++构造函数后加冒号

    目录 一 初始化常量数据成员和引用数据成员 二 调用拥有一组参数的基类的构造函数 构造函数后加冒号是初始化表达式 xff0c 有四种情况下应该使用初始化表达式来初始化成员 xff1a 1 xff1a 初始化const成员 xff1b 2 x
  • XML入门笔记(二)——关于ASP网站中文乱码问题

    目录 问题的发现 问题原因 原因 常用编码 解决方法 1 UTF 8编码打开 xff0c 插入如下代码 xff1a 2 GB2312编码打开 xff0c 插入如下代码 xff1a 问题的发现 在编写 ASP 代码 xff0c 利用服务器端完
  • 和×××的历史qq

    2002 12 04 17 45 42 去看小娜没有啊 没事给我来个电话 2002 12 05 22 40 46 单身浪人 老子在上海呢 通过服务器中转 2003 05 30 05 05 43 xff09 2003 05 30 06 36
  • hexo注意事项和常用命令

    hexo注意事项和常用命令 我的博客网站 xff1a Gitee xff1a 一丈青 gitee io GitHub xff1a 一丈青 1zhangqing github io 自己手写front matter就是写 然后回车就能出现写f

随机推荐

  • cmake-debug和release模式

    一般在工程中 xff0c 自动构建可能会编译两个版本的发布包 xff0c 一个debug版本 xff0c 一个release版本 那么通过cmake怎样来实现呢 xff1f 本文就以这个需求为例 xff0c 来介绍cmake中的逻辑控制 目
  • CSDN,你在忽悠谁?——社区用户数量大曝光

    根据 http hi csdn net 提供的好友搜索功能 xff0c 按地区搜索结果得出 xff0c csdn 社区用户数量是国内 66964 xff0c 国外用户总数不超过 1 千 详细清单请点击 根据 csdn 官方提供的数据 htt
  • vb.net中使用GetPrivateProfileString访问INI文件,解决中文路径问题

    在vb net2005 43 winxp中 xff0c 我使用GetPrivateProfileString读取一个ini文件 xff0c 如果文件路径中含有中文 xff0c 就会遇到一个奇怪的问题 xff1a 第一次读取正常 xff0c
  • CSDN史上最大的非法集资案

    短短 12 小时内发生了什么 xff1f 263231 分 xff0c 417 人次 xff0c 押宝游戏 疯狂大倒分 成为了 CSDN 历史上最大的非法集资 非法集资怎么操作的 xff1f 谁是幕后黑手 xff1f 集资的目的是什么 xf
  • 小帅和七个男友 ---第二章 一株含羞草

    第二章 一株含羞草 升入初三 xff0c 中考对我们这所国家重点中学来说 xff0c 只相当于一场普通的模拟考试 学习并不紧张 xff0c 我们还是该玩的玩 xff0c 该吃的吃 转瞬间就远去的椅子 xff0c 激起了我少女的情怀 我越来越
  • 20号你会黑屏吗?来验证一下你的正版XP和Office

    相当一部分企业都担心自己的电脑到时候会黑屏 这些企业并不是拿不出那几千块买套正版 xff0c 是没有习惯 其他社区也就罢了 xff0c 作为csdn xff0c 以软件开发人员集中的社区 xff0c 对使用正版软件这么抵触 xff0c 是不
  • 搜狗输入法 VS 拼音加加

    用了16年计算机 xff0c 一共用过四个输入法 xff1a 五笔 xff08 牌子忘记了 xff09 xff0c 智能ABC xff0c 拼音加加 xff0c 搜狗 放弃五笔的原因很简单 xff1a 我要学拼音 xff01 一说到高考 x
  • 苹果应用商店支持人民币信用卡(已验证,有图有真相)

    今日打开i4上的app store xff0c 惊奇发现货币单位已从 变为 xffe5 惊讶万分 xff0c 于是测试一下 xff0c 随机找了一个25元的航班追踪应用 屏幕弹出登录界面后 xff0c 输入appleid xff0c 随后出
  • 2011年终总结-DIY 苹果手机铃声

    一首 月亮之上 红遍中国南北 xff0c 只要这铃声响起 xff0c 100个人得有10个人掏出手机看看 xff0c 当之无愧的山寨歌王 当IPhone变成街机 xff0c 出厂铃声数量不多 xff0c 铃声总是撞车 xff0c DIY个性
  • CELF(Cost-Effective Lazy Forward selection)具有成本效益的惰性前向选择算法

    CELF Cost Effective Lazy Forward selection 算法解析 引言 xff1a 在社交网络影响力最大化问题的求解过程中 xff0c 我们往往需要去选择一些目标种子结点作为信息初始传播的源头 贪婪算法在传播效
  • 如何正确的报修

    先讲个故事 xff0c 今天接到一宗报修 xff0c 主题是 数据库连不上了 xff0c 我的天 xff0c 大事件啊 xff0c 习惯性地立即测试一下 xff0c 发现一切正常 随后开始追问谁说的 数据库连接不上 xff0c 原来是一个女
  • HTML5移动应用抓包

    有时候看到某个移动应用很不错 xff0c 想研究一下其HTML5源码 xff0c 样式表 xff0c 脚本什么的 xff0c 正常方法是不好得到的 通常可以用Safari伪造User Agent来欺骗目标网站 xff0c 让网站认为你是一个
  • #define和const的区别

    这个区别用从几个角度来说 xff1a 角度1 xff1a 就定义常量说的话 xff1a const 定义的常数是变量 也带类型 xff0c define 定义的只是个常数 不带类型 角度2 xff1a 就起作用的阶段而言 xff1a def
  • Vue.js 教程---菜鸟教程

    文章目录 Vue js 教程Vue js 安装Vue js 起步Vue js 模板语法插值指令用户输入过滤器缩写 Vue js 条件语句Vue js 循环语句Vue js 计算属性Vue js 监听属性Vue js 样式绑定Vue js 事
  • 我的2011 憧憬2012

    逝者如斯夫 不舍昼夜 2012已经向我们走来 xff0c 我们面对2011的离开 xff0c 稍有不舍 xff1b 但是人总得往前走 xff0c 微笑迎接2012 xff0c 注定我们在2012收获的更多 2011 xff0c 写给宿舍的哥
  • Microsoft Visual C++ Runtime Library Runtime Error的解决办法

    打开浏览器时 xff0c 出现Microsoft Visual C 43 43 Runtime Library Runtime Error错误 xff0c 初步估计是软件冲突 xff0c 可能有多种出错的方式 xff0c 我的是浏览器自动关
  • 你应该掌握的——树和二叉树

    我在上课的时候 xff0c 由于各种原因 xff0c 上课老师讲的自己总不爱听 xff0c 现在到火烧眉毛了 xff0c 才知道这些基础知识的重要性 xff0c 现在想想 xff0c 也没有那么的困难 重在理解这些底层的概念 xff0c 然
  • 把学习由复杂变简单(二叉树和树)

    现在发现二叉树和树讲起来真的是没完没了 xff0c 刚发表博客之后发现 xff0c 那还不足以表述这颗大树 我们继续完善 树与二叉树遍历确实很重要 xff0c 但是还有一些你也许忘记的重要知识点 xff0c 我们再来看一下还有什么好玩的 x
  • 原来编译原理可以这么学

    最近对数据结构的研究又有了进展 xff0c 挺好玩的 xff0c 总结这些内容的同时 xff0c 希望也能帮助到大家 xff0c 这样的话 xff0c 达到双赢 xff0c 这才是写博客的目的 xff0c 接下来我们来轻松学习编译原理 xf
  • 流水线—你理解多少?

    流水线 xff1a 流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术 各种部件同时处理是针对不同指令而言的 xff0c 它们可同时为多条指令的不同部分进行工作 xff0c 以提高各部件的利用率和指令的平均执行速度 概念我们