各位学员大家好,相信大家在学习计算机系统构成及硬件基础知识时,感觉指令流水线这部分比较难,其实只要大家掌握了解题方法,很快就可以定位出正确答案,接下来就带领大家一起来学习一下!
1、例题:某指令流水线由4段组成,各段所需的时间如下图所示。连续输入8条指令时的吞吐率(单位时间内流水线所完成的任务数或输出的结果数)为( )?
例题1A、8/56Δt
B、8/32Δt
C、8/28Δt
D、8/24Δt
【昊洋详解】:这道题目是在2013年软件评测师考试真题的第4题,是一道典型的指令流水线类型题目。流水线是指在程序执行时,多条指令重叠进行操作的一种准并行处理实现技术。一般情况下有固定的三个步骤:取值—>分析—>执行,而本题显然没有那么复杂,只需要大家记住一个公式就可以快速地计算出流水线方式所需总时间。该公式为:
指令流水线计算公式其中n表示有n条指令,m表示流水线一共有m段组成,△ti表示指令流中组成的每一段所用的时间,其中i从1开始,最大值为m,△tj表示指令流中最长耗时的一段。简而言之,n条指令使用流水线方式所需的总时间就是:一条指令使用流水线方式执行完m段所需的完整时间+(n-1)乘以指令流m段中耗时最长的那段的耗时。
该题目中提到的流水线的吞吐率指的是计算机中的流水线在特定的时间内可以处理的任务或输出的数据的结果的数量。流水线的吞吐率可以进一步分为最大吞吐率和实际吞吐率。该题目中要求解的是实际吞吐率,计算方式就是输入的指令条数除以总耗时。
以流水方式执行8条指令的执行时间套用上面的公式可以快速得出8条指令所需总时间为:(1Δt+2Δt+3Δt+1Δt)+(8-1)*3Δt =28Δt,因此吞吐率为8/28Δt,故正确答案为C。
理解了以上的解析之后,我们还需要融会贯通,接下来就通过几种指令流水线题目的变种练习,来检验一下大家学习的效果。
1.3.3 巩固练习题
(1)某指令流水线由4段组成,各段所需的时间分别为2ms、1ms、5ms和2ms。则连续输入10条指令时所需的总耗时为为( )?
A、55ms
B、110ms
C、100ms
D、50ms
(2)假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为10μs,由缓冲区送至用户区的时间是5μs,系统对每个磁盘块数据的处理时间为2μs。若用户需要将大小为10个磁盘块的Doc文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用单缓冲区需要花费的时间为(1 )μs;采用双缓冲区需要花费的时间为(2 )μs。
1、A、100 B、107 C、152 D、170
2、A、100 B、107 C、152 D、170
1.3.4 练习题参考答案
(1)解析:本题考察的知识点和例题基本上一模一样,相信只要大家把例题搞明白了,这道题很容易就能够得出答案。首先确定有10条指令,流水线的四段组成,耗时最长的是第三段,耗时5ms,最后我们套用公式,总耗时为:(2ms+1ms +5ms +2ms)+(10-1)*5ms =55ms,故正确答案为A。
(2)解析:本题同样是考察指令流水线的知识,只不过增加了迷惑性,但是只要大家认真思考,就可以拨云见日,快速掌握其精髓。这道题的主要难点在于单缓冲区和双缓冲区的区别,首先我们能够确定的是,采用双缓冲区时,计算方法和我们例题中的情景是一样的,我们可以确定的是有10个磁盘块,一条完整的流水线分为三部分,耗时分别为10μs、5μs和2μs,所以总耗时套用公式为:(10μs+5μs+2μs)+(10-1)*10μs=107μs,故第二问的正确答案为B。
接下来我们再回头看一下第一问,我们知道通过题干知道采用流水线进行处理时,每个数据要经过3个步骤:读入缓冲区—>由缓冲区送至用户区—>系统处理。这刚好对应了我们例题1中提到的三个固定步骤:取值—>分析—>执行。在这三个步骤中,前两个步骤是需要用到缓冲区的,所以这两个步骤执行时,缓冲区都不可以开始下一个磁盘区的处理工作,这就是单缓冲区的限制,所以三个步骤可合并为两个:读入缓冲区并送用户区、处理。此时,仍然可应用流水线的方式来提升效率,只不过我们将其浓缩成了两个步骤。此时我们再次确定基础数据,有10个磁盘块,一条完整的流水线分为两个部分,耗时分别为15μs和2μs,所以总耗时套用公式为:(15μs+2μs)+(10-1)*15μs=152μs,故第一问的正确答案为C。
该题目相对例题来说,增加了难度,但是大家如果在考试的时候遇到了相同的知识点,但是形式不同时,不用紧张,只需要根据自己掌握的知识和题干中的提示,大胆推理即可。在此,昊洋老师送给大家一句话:遇到问题,分析问题,解决问题。
写于2020年6月5日
作者:昊洋讲师
版权所有,侵权必究
网友评论