一、流水线基本概念

在学习流水线之前,必须掌握 并行 的概念,即明白什么是 并行

其中,并行和我们常说的并发是不同的,需要理解这两个概念。

并行指的是:两个或两个以上的事件在同一时刻发生。

并发指的是:两个或两个以上的事件在同一时间间隔发生。

一条计算机指令在执行时,可以分为以下三个步骤:

  • 取址:根据控制器的要求,从存储器中取出某条指令送到指令寄存器。
  • 分析:对指令进行译码,和取操作数操作。
  • 执行:把操作结果写到通用寄存器中。

如果不使用流水线,执行三条指令,则需要 9 个单位的执行时间,如下图所示。

如果使用了流水线,则只需要 5 个单位的时间,如下图所示。

这就是流水线的魅力。

流水线的概念,就是在程序执行时,多条指令重叠进行操作的一种准并行处理技术,可以提高各部件的利用率

比如一个软件公司接了 10 个外包项目,这些项目需要有前端、后端、算法、UI、软件测试、需求调研、项目经理等等。

如果按顺序做下来,必定有工人是空着的,如项目在前期调研阶段,前端开发就处于空闲状态,这就造成了资源浪费。

如果流水线投入使用,在 A 项目的前期调研阶段完成后,马上开启 B 项目的前期调研阶段;同理对于前端开发人员来说,A 项目的前端开发完成后,马上开启 B 项目的前端开发阶段,这样就可以提高工人的利用率,降低人力成本。


二、 流水线周期和执行时间的计算

流水线固然优秀,但不同的流水线的提速情况也不一样,所以需要认真评估每一条流水线,确保将其完善到极致。

首先是 流水线周期,指的是流水线执行过程中最长的一段

比如一条指令取值 3 纳秒,分析 4 纳秒,执行 1 纳秒,那么这条指令的流水线周期为 4 纳秒。


接下来是流水线执行时间的计算问题,如果有 100 条执行需要执行,每条指令取值 3 纳秒,分析 4 纳秒,执行 1 纳秒,那么使用流水线后需要多少时间?

流水线执行时间有两个计算公式,分别是理论公式实践公式

首先可以确定流水线周期为 4 纳秒。


理论公式的计算方法为:指令全部的执行时间 + (n - 1)x 流水线周期

也就是 (3 + 4 + 1) * (100 - 1) * 4,算出来答案为 404


实践公式的计算方法为:(K + N - 1) x 流水线周期,其中 k 指的是工序数,题目中工序为取址、分析、执行,工序数为 3

那么答案就是:(3 + 100 - 1)* 4 ,算出来答案为 408


在软考中优先使用理论公式,若没有理论公式答案的选项,则使用实践公式替代。


三、流水线吞吐率计算

流水线 吞吐率,指的是单位时间内,流水线所完成的指令数量

也就是说,吞吐率 = 指令条数 / 流水线执行时间


另外对于流水线的最前、最后资源浪费情况,只要流水线足够长,就可以忽略,所以还有一个 最大吞吐率 的概念。

最大吞吐率 = 1 / 流水线周期


还是以之前样例作为演示,如下图所示。

如果有 100 条执行需要执行,每条指令取值 3 纳秒,分析 4 纳秒,执行 1 纳秒,那么流水线吞吐率为多少?

流水线吞吐率 = 100 / 404

最大流水线吞吐率 = 1 / 4


四、流水线加速比

不同的流水线会给生产带来不同的加速比例,所以有一个 流水线加速比 的概念,计算公式如下:

流水线加速比 = 不使用流水线执行时间 / 使用流水线执行时间

还是之前的这个例子,有 100 条执行需要执行,每条指令取值 3 纳秒,分析 4 纳秒,执行 1 纳秒。

如果不使用流水线,所用时间为单条指令周期(3 + 4 + 1) x 指令条数(100) = 800

使用流水线答案是 404,在第二章节已做计算。

所以流水线加速比800 / 404


五、流水线效率计算

流水线还有一个效率的概念,流水线效率指的是 流水线效率

在时空图上,流水线的效率 = 被占用的时空格 / 总的时空格

还是之前的这个例子,有 100 条执行需要执行,每条指令取值 3 纳秒,分析 4 纳秒,执行 1 纳秒。


总的时空格 = 指令工序数 x 指令全部的执行时间 = 3 x 404 = 1212。

被占用的时空格 = (3 + 4 + 1) * 100 = 800。

所以流水线效率 = 800 / 1212。


【软考学习5】流水线基本概念、周期执行时间、吞吐率、加速比和效率的计算相关推荐

  1. 【软考学习13】图解页面淘汰算法,先进先出算法、最近最少使用算法

    本文讲解了操作系统中进程读内存时,维护高速缓存的页面淘汰算法,其中重点讲解了先进先出算法和最近最少使用算法,学习高速缓存 Cache 提高程序执行效率的原理. 一.为什么要用页面淘汰算法 在计算机的存 ...

  2. 【软考学习2】数据表示——原码 反码 补码 移码

    原码 反码 补码 移码是软考必考的项目,所以需要对其概念.计算方式和取值范围进行总结. 零.使用场景 原码 反码 补码 移码都是计算机中表示数据的方式,各有所长,对于我们来说,都需要加以学习. 软考中 ...

  3. 【软考学习3】数据表示——浮点数计算 + 单精度浮点数IEEE754计算

    浮点数计算在软考中的考查形式一般为选择题,要求选择正确的或者错误的是什么,所以需要学习浮点数的基本运算流程. 另外在本科<计算机组成原理>中还学过 IEEE754单精度 浮点数运算,所以一 ...

  4. 【软考学习4】计算机构成——CPU 结构、Flynn 分类法、CISC和RISC

    CPU 结构.Flynn 分类法.CISC/RISC都是软考中较为常见的知识点,需要了解每种类型的特征.它们之间的区别. 一.CPU结构 数学家 冯·诺依曼 认为,计算机应当分为以下五个部分: 运算器 ...

  5. 关于cpu流水线的各阶段周期,吞吐率计算问题

    本人在复习计组流水线时,遇到了一些问题,再次记录,以备不时之需. 首先要弄明白一点,那就是cpu的各阶段是否具有相同的时钟周期,也就是说,每个阶段所花费的时间是否都是相同的? 为什么会想到这个问题,先 ...

  6. 网络工程师(软考)学习笔记8--数字调制技术及脉冲编码调制

    笔者在早些时候已经通过了软件考试的网络工程师,因为以前学习的时候比较赶,当时也是备考研究生入学考试,很多概念也是模糊不清的,现在想重新复习网络工程师的教程,理清概念,同时也是为了下一阶段网络规划师打好 ...

  7. 时间计算题100道_软考学习第20天-----软考综合考试的计算题

    国庆上班第一天,来点实打实的部分,真题中的计算题详细分析 简述 综合部分66-70题基本上是最近几年的计算题(至少5分) 案例分析中的第二题也基本上是最近几年的计算题(20分-30分) 两部分分值都不 ...

  8. 网络工程师(软考)学习笔记1--计算机网络简介及分类

    笔者在早些时候已经通过了软件考试的网络工程师,因为以前学习的时候比较赶,当时也是备考研究生入学考试,很多概念也是模糊不清的,现在想重新复习网络工程师的教程,理清概念,同时也是为了下一阶段网络规划师打好 ...

  9. 软考学习网络工程师-vlan

    一.vlan(Virtual Local Area Network)虚拟局域网 vlan是一种通过将局域网内的设备逻辑地而不是物理地划分成一个个网段从而实现虚拟工作组的技术. 二.vlan的作用 隔离 ...

最新文章

  1. EXECL导入(检查服务器版本.包括NPOI方式导入.可以通过配置文件信息导入EXECL)代码记录下....
  2. cygwin nginx php mysql_Windows 下 Nginx + PHP5 的安装与配置
  3. Vue开发跨端应用(六)添加onsenui组件库
  4. 在云服务器上持续运行springboot项目
  5. JAVA——基于HttpClient的全国大学英语四、六级考试(CET4CET6)[2019年下半年]查询DEMO
  6. Python学习笔记--数据类型
  7. Spring Boot之程序性能监控
  8. c语言中的printf函数_C语言中的printf()函数与示例
  9. 猫和老鼠服务器维护多久结束,猫和老鼠手游关服公告 告别是为了每次更好的遇见!...
  10. 在linux中,强行中断程序 kill命令
  11. 《机器视觉算法与应用》第3章 机器视觉算法之图像增强——学习笔记
  12. 计算机辅助设计与制造考试重点,2016计算机辅助设计与制造复习内容
  13. Linux删除所有文件之后的恢复快照恢复
  14. TortoiseSVN 如何去掉文件夹左下角的绿色对勾的方法
  15. 数据可视化什么意思?
  16. FFmpeg- 常用的滤镜命令
  17. Microsoft Windows 环境中NLS_LANG的正确设置 (文档 ID 1577370.1)
  18. 实践指南-网页生成PDF
  19. java+ssm+bootstrap+mysql出入库(进销存)管理系统
  20. 初级前端高频面试题之VUE

热门文章

  1. Ubuntu下让matplotlib显示中文字体
  2. 向量的点乘(内积、点积)
  3. npm install 报sha512
  4. 以绝望挥剑,化逝者为“凯”。凯哥中值定理每天小结(1)
  5. OSChina 周五乱弹 —— 我就和你们不一样了,我是长得很搞笑
  6. vlan的基本指令_CISCO交换机配置VLAN的具体命令
  7. 《关于我的同学被邪神附体这档事》
  8. sqlmap工具之参数使用
  9. 超过2t硬盘分区_大于2T的磁盘分区方法
  10. python数据清洗测试题