前言

流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各部件同时处理是针对不同指令而言的,比如说,指令流水线把一条指令分为取指、分析和执行3部分,可以同时处理取指和分析,但是不能同时处理一个部分,如不能同时处理取指操作。

指令流水线是将指令执行分成几个子过程,每一个子过程对应一个工位,我们称之为流水级或流水节拍,如下图所示。该工位在计算机中就是可以重叠工作(相同时间同时工作)的功能部件,称为流水部件。流水线要求所有指令在每个部件上执行的时间是一样的。在流水线中,机器周期的长度由最慢的流水级部件处理子过程所需的时间来决定

IF部件、ID部件、EX部件、WD部件可同时都执行有操作,每条指令按图中一步步执行。在部件执行操作的过程中,允许上一个指令进入,它只能等待当前指令操作执行完成后方可进入此部件。

流水线这种可同时为多条指令的不同部件进行工作的方式,提高了各部件的利用率和指令的平均执行速度。它是怎么提高利用率的呢?下面看两个图来分析。

从图2可以看到,任意一个系统时间都有大量的设备处于空闲状态,例如第一个时间段有ID、EX、WB空闲,则第二个时间段有IF、EX、WB空闲。

从图3可以看到,系统空闲的时间只是执行第一条指令的时候有,后面就都没有了,大大提升系统资源的利用率及整个系统的吞吐量。

计算流水线执行时间: Nt+(k-1)*▲t。

假定有某种类型的任务,共分成N个子任务,执行每个子任务需要时间t,则完成该任务所需时间为Nt。若以传统的串行方式,则完成K个任务所需时间为KNt;而使用流水线技术执行,时间是Nt+(k-1)t。我们可以根据图3加以理解,第一个任务需要完整的时间,余下任务开始周期执行,然后根据最慢的流水部件得出周期,再乘以(总指令数-1)就得到任务的执行总时间了。

两个术语

流水线的吞吐率:任务数/完成时间。如:在流水线执行方式下,完成3个任务花费了6s,则此流水线的吞吐率为3/6,等于0.5。

加速比:不采用流水线的执行时间/采用流水线的执行时间。如:图2和图3,执行两个任务,采用流水线的执行时间为5s,不采用流水线的执行时间为8s,则加速比为8/5。

影响流水线的主要因素

流水线的关键在于同一时间轴,多个部件同时执行,因此如果这个条件不能得到满足,则流水线就会被破坏。这种破坏主要来自以下3种情况:转移指令、共享资源访问的冲突、响应中断。

思考

在学习流水线的时候,不太明白为什么是最慢的那一个决定流水线的周期,所以我做了一个假设来判断周期,步骤如下:

我们先假设t2所需时间最长,第一条指令用F表示,第二条指令用S表示,则有:

①F执行完A阶段后,S开始执行A阶段,此时历时为t1 秒。

②F执行B阶段执行了t1秒后,S等待。F执行完B阶段后,S开始执行B阶段,此时已经历时t1+t2秒。

③F执行完C阶段后,S执行了在B阶段执行了t3秒,此时已经历时t1+t2+t3秒。

④S执行又执行了(t2-t3)+ t3 = t2秒后,完成整个过程。

可知,因为流水线是同一时间轴的,S执行完后的时间点减去F执行完后的时间点就是周期,也就是我们得出来的t2。所以说,周期还得看最慢的流水部件。

总结

计算时间的时候要清楚一点,就是时间轴就同一个,就能看明白计算的过程了。注意两个术语的意思,吞吐率和加速比。
————————————————
版权声明:本文为CSDN博主「琚建飞」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gnd15732625435/article/details/53034354

【计算机系统】指令流水线相关推荐

  1. 计算机系统流水线方面的基础知识,软件设计师重点难点——流水线.doc

    文档介绍: 流水线这个知识点在软件设计师考试中是个重点也是个难点,考查的频率比较高.之所以说流水线是个难点,有两方面的原因:一方面是需要理解流水线的理论,了解其工作原理,计算方式;另一方面是在软考当中 ...

  2. 中级软件设计师考试---流水线详解

    流水线这个知识点在软件设计师考试中是个重点也是个难点,考查的频率比较高.之所以 说流水线是个难点,有两方面的原因:一方面是需要理解流水线的理论,了解其工作原理,计 算方式:另一方面是在软考当中,对于流 ...

  3. 计算机指令要素,【计算机系统】CPU指令执行流程与指令流水线原理

    [计算机系统]CPU指令执行流程与指令流水线原理 一.指令执行流程 冯诺依曼架构CPU指令执行的五个阶段: 阶段 涉及的功能部件 IF 指令寄存器IR.程序计数器PC ID 指令译码器ID EXE C ...

  4. 【计算机系统】CPU指令执行流程与指令流水线原理

    [计算机系统]CPU指令执行流程与指令流水线原理 一.指令执行流程 冯诺依曼架构CPU指令执行的五个阶段: 阶段 涉及的功能部件 IF 指令寄存器IR.程序计数器PC ID 指令译码器ID EXE C ...

  5. 《深入理解计算机系统-程序结构》读书笔记

    1.计算机系统漫游 计算机系统是由硬件和系统软件组成的,他们共同工作来运行应用程序.在<深入理解计算机系统>一书中将会学到很多实践的技巧.例如:了解编译器是如何实现过程调用的.避免缓冲区溢 ...

  6. 湖南大学计算机考研考什么,2017年湖南大学计算机系统考研大纲

    <计算机系统>考试大纲 [考查目标] 1.从程序员的视角全面了解计算机系统的基本概念,包括汇编语言,底层的内存中的数据表示及常用运算方法.虚拟存储器.编译系统.动态加载库等.了解如何将高级 ...

  7. 在配有通道的计算机系统中,用户程序需要输出时,引起的中断是,计算机系统结构自考2009年7月真题...

    计算机系统结构自考2009年7月真题及答案解析 本试卷为选择题型,填空题,简答题,应用题等题型. 一.单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内.错选. ...

  8. 在配有通道的计算机系统中,用户程序需要输出时,引起的中断是,自考计算机系统结构试题_全国2009年7月自考试卷...

    全国2009年7月自考计算机系统结构试题 课程代码:02325 一.单项选择题(本大题共10小题,每小题1分,共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号 ...

  9. 深入理解计算机系统CSAPP复习

    目录 第一章 计算机系统漫游 基本概念 1.2 编译系统 1.4.2 运行hello程序 1.6 存储设备层次结构 1.7.3 虚拟内存 1.9.1 Amdahl定律 第二章 信息表示和处理 基本概念 ...

最新文章

  1. python3实用编程技巧_适合Python初学者的一些编程技巧
  2. Java自带的线程池Executors.newFixedThreadPool
  3. 为什么中国的程序员技术偏低
  4. 手把手教你刷新BACKUP Bios
  5. Angular如何响应DOM event
  6. 2017.7.31 征途 失败总结
  7. 链表 -- 2.2.1 Add Two Numbers -- 图解
  8. D3D学习摘记(I)上
  9. winform通过restsharp调用api接口登录及其它接口
  10. DoIP诊断概念入门
  11. 【5G系列】Network Slicing学习总结(4)
  12. nrf52832 comp for sdk 15.2.0
  13. Pycharm中运行yolov5-pytorch出现错误:AttributeError: ‘Hardswish‘ object has no attribute ‘inplace‘
  14. Esp8266学习之旅① 搭建开发环境,开始一个“hellow world”串口打印。
  15. SONM DWH组件介绍
  16. 《AR与VR开发实战》导读
  17. iOS 花式二维码生成和二维码识别
  18. idea 设置某个单词不显示下划线
  19. OpenGL ES总结(一)OpenGL 初识
  20. a1502配置 macbook_a1502的macbook pro 苹果系统和… - Apple 社区

热门文章

  1. wifi信号手机测试软件,专业的WiFi检测工具有哪些?如何解决wifi信号不好?
  2. [转载] Java 中字符串转整型和整型转字符串
  3. [转载] Java中变量与常量
  4. mcq 队列_MCQ | 软件工程基础知识/简介(1)
  5. Java ObjectInputStream readByte()方法与示例
  6. 交际过程的两个基本环节_跨文化交际学概论笔记(二)
  7. 数组重复次数最多的元素递归_在不使用递归的情况下计算链接列表中元素的出现次数...
  8. 芭比扣了!Nacos中服务删除不了,肿么办?
  9. 看故事学知识,这篇Java代理的文章妙啊!
  10. switch 的性能提升了 3 倍,我只用了这一招!