【计算机系统】指令流水线

前言       

        流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各部件同时处理是针对不同指令而言的,比如说,指令流水线把一条指令分为取指、分析和执行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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win7系统蓝屏代码0x0000003b怎么修复

蓝屏问题是操作系统无法从错误中恢复时,为保护电脑数据文件而强制显示的屏幕图像。并且给用户提供错误代码方便排查,那win7系统蓝屏代码0x0000003b怎么修复呢?就此问题,下面小编介绍win7系统蓝屏代码0x0000003b的修复方法。 win7系统蓝屏代…

计算机系统存储器分类和总线分类

计算机系统存储器分类 1、按存储介质 半导体存储器:用半导体器件组成的存储器。磁表面存储器:用磁性材料做成的存储器。光存储器 2、按存储方式 随机存储器:任何存储单元的内容都能被随机存取,且存取时间和存储单元的物理位置无…

win7看视频卡顿或声音画面不同步的解决步骤

win7看视频卡顿或声音画面不同步怎么办?相信大家在使用电脑观看视频的时候,都有遇到视频卡顿或声画不同步的情况吧,非常影响观看体验。发生这个问题的原因可能是视频本身有问题或者声卡出现问题了。接下来就让小编给大家讲讲win7看视频卡顿或声音画面不…

win7系统怎么打开屏幕键盘

win7系统怎么打开屏幕键盘?我们在电脑没有接入键盘或者键盘失灵等情况下,如果想要输入内容,可以使用系统自带的屏幕键盘。只需要在控制面板中打开屏幕键盘就可以使用了,下面就让我们一起看看win7系统屏幕键盘打开教程吧。 win7系统怎么打开…

Gantt(甘特图)与PERT(项目计划评审技术)图,项目关键路径和松弛时间

甘特图也叫做进度管理图。 他是一种简单的水平条形图,它以日历为基准描述项目任务,水平轴表示日历时间线,每一个线条表示一个任务,任务名称垂直的列在左边列中,图中的线条的起点和终点对应水平轴上的时间,…

win7系统更改密码策略的设置方法

win7的密码策略关系着我们的密码格式、密码需要的字符等,如果我们设置的密码策略太过复杂,可能会让我们在使用密码时非常麻烦,但是也会让我们的密码更难被入侵,那么win7系统如何更改密码策略呢?就此问题,下面一起来看…

软件风险基础知识

在软件开发和实际应用过程中,都会存在一定的风险,而对于该种风险的规避则已经成为软件测试工作开展过程中的核心所在。 软件风险管理的概念: 在软件开发过程中所遭遇到的预算和进度问题以及部分对软件项目会产生影响的因素,都被称…

U盘出现拒绝访问怎么解决

使用U盘启动盘安装系统时需要用到U盘,但是当我们将U盘插上电脑,结果出现拒绝访问的情形,别说是使用U盘启动盘重装系统了,连U盘基础的文件存储功能都无法使用。当U盘出现拒绝访问怎么解决呢?就此问题,下面小编分享u盘拒…

学习阮一峰Javascript模块化编程,requireJS使用

使用背景NOW: 网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式。 项目需要一个团队分工协作、进度管理、单元测试等等......开发者不得不使用软件工程的…

猎豹浏览器禁止跟踪怎么开启 禁止跟踪功能开启方法

为了防止第三方网站跟踪用户活动,包括猎豹浏览器在内的多款浏览器产品都上线了“禁止追踪”功能。不过,需要注意的是,“禁止追踪”功能是需要手动开启的!那么,该怎么操作呢?下面小编就以“猎豹浏览器”为例,分享一下禁…

阮一峰的学习Javascript闭包(Closure)

闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 下面就是我的学习笔记,对于Javascript初学者应该是很有用的。 一、变量的作用域 要理解闭包,首先必须理解Javas…

IE浏览器打不开网页有什么解决的方法

IE浏览器打不开网页有什么解决的方法 更新时间:2021-06-06 15:35:38   IE浏览器是Windows电脑自带的浏览器,兼容性强,受到很多用户的喜欢,但是在使用的过程中难免会出现一些问题,比如就有用户发现自己的IE浏览器打不…

阮一峰的JavaScript 的 this 原理

一、问题的由来 学懂 JavaScript 语言,一个标志就是理解下面两种写法,可能有不一样的结果。 var obj {foo: function () {} };var foo obj.foo;// 写法一 obj.foo()// 写法二 foo()上面代码中,虽然obj.foo和foo指向同一个函数,…

win7系统5分钟自动注销的解决方法

我们在电脑使用的过程中,有时候会遇到过5分钟就自动注销的情况。一般来说都是因为电脑中了病毒,启动程序遭到了恶意修改,或者系统启动文件因为某些操作删除或损坏了,我们可以用下面的方法尝试解决。 win7系统5分钟自动注销的解决…

计算机基础:IP地址,子网掩码,默认网关,DNS服务器

如图各项IP地址、子网掩码、默认网关、DNS服务器分别都代表什么意思 (一)IP地址 IP是32位二进制数据,通常以十进制表示,并以“.”分隔。IP地址是一种逻辑地地址,用来标识网络中一个个主机,IP有唯一性&#…

win7系统如何更改密码策略

win7的密码策略关系着我们的密码格式、密码需要的字符等,如果我们设置的密码策略太过复杂,可能会让我们在使用密码时非常麻烦,但是也会让我们的密码更难被入侵,那么win7系统如何更改密码策略呢?就此问题,下面一起来看…

js基础中Null、undefined、NaN、false、0、{}的理解及使用

数据类型: 值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。 引用数据类型:对象(Object)、数组(Array)、函数…

解决vue的{__ob__: observer}取值问题

vue编码中经常出现获取到的数据是:{__ob__: Observer} 格式的,详细如下 可能导致后续数据操作错误,如何获取其中的数值呢 解决方法如下: 将返回的数据data先转换为JSON字符串形式,然后再从字符串形式转换成JSON格式JS…

Js数组去重的多种方法

方法一 原理&#xff1a;利用双层循环将相邻元素 arr[i]和arr[i1] 进行比较&#xff0c;相等则数组删除arr[i1] 下标元素 var arr [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; function removeDuplicatedItem(arr) {for(var i 0; i < arr.length-1; i){for(var j i1; j < ar…

qq浏览器网站禁止访问怎么办 qq浏览器网站禁止访问如何解决

打开手机的QQ浏览器说访问网页被禁止&#xff0c;是设置错误造成的&#xff0c;解决方法如下&#xff1a; 1、首先在手机屏幕上左右滑动&#xff0c;找到安装好的QQ浏览器的图标。 <a styleqq浏览器网站禁止访问怎么办 qq浏览器网站禁止访问如何解决"> 2、接下来…