高频考点,计算较多
一.流水线概念
根据上图分析,当未使用流水线执行指令时,取指运行时,分析和执行暂停等待,分析运行时取指与执行暂停等待,
执行运行时,取指和分析暂停等待,如此循环,导致单一指令进行时,另外两个指令无事可做,浪费时间与空间。
因此我们引出流水线的概率
工厂里面组装一件东西时候,比如他需要组装ABC部件工3人,贴标签1人,如果按照上述方式
则组装A部件时,BC部件和贴标签的人在休息,这个时候,黑心老板一看,不对啊,你们居然可以休息这么久,
不行,我得想个办法,让你们跟生产队的驴一样。
于是呢,流水线方式便产生了,一个人负责一个部分,并只负责这个部分,你组装完部件A,完成后,继续去下一台的部件A,
部件BC的也只需要在一台台新的需要在组装的物件上组装对应的就行
同理,取指只管取指,不需要再等待分析和执行的完成,取指1完成后,直接到取指2,分析与执行也是如此,
由此便节约了大量的时间与空间。
(另外:这个黑心老板叫福特,对,就是那个造车的,记得吐口痰再走)
二.流水线计算
2.1.概念
没啥概念,纯粹为了格式好看,后面几点也是一样,图里都有,更多的是概括
2.2. 题目
例:若指令流水线把一条指令分为取指、分析和执行三部分,且三部分的时间分别是取指2ns,分析2ns,执行1ns。那么,流水线周期是多少?100条指令全部执行完毕需要的时间是多少?
根据上图可知,流水线周期为执行时间最长的一段,取指2ns,分析2ns,执行1ns为一个指令,时间最长的2为2ns
则流水线周期为2ns。
根据理论公式(t1+t2+..+tk)+(n-1)*🔺t。其中(t1+t2+..+tk)表示的是第一条指令周期时间之和。
可能你会问第一条指令周期时间之和是什么意思,根据上图可知当我们流水线启动的时候,第一部分运行时,后面的部分都处于暂停,无事可做的状态。
只有当第二条指令下来的时候,流水线才启动,因此根据上图可知第一条指令有三个周期。
而(n-1)中的n表示的是指令数,题目里面的指令数为100,而减去1是因为我们的第一条指令的时间是由我们单独运算出来,
因为它与后面n-1条流水线周期时间不同。
🔺t表示“流水线周期”
所以最后结果是(2+2+1)+ (100-1) * 2 = 203
根据实践公式 (k+n-1)*🔺t。其中k表示的是第一条指令运行的周期,根据上图可知,第一条指令完成时候
有三个周期,因此这里k为3,n-1与🔺t同理论公式,不多解释。
所以最后结果是(3+100-1) * 2 = 204
这里之所以会出现理论公式与实践公式根据视频里面的内容解释是,考试时百分之80的可能是考理论公式。而剩下的百分之20是实践公式,因此当答案里面没有理论公式算出的答案时就选择实践公式给出的答案,前提是你得算对!!!
上面有两个点可能会有点不理解,这里解释一下。
1.第一条指令周期时间之和
根据上面的题目图中的流水线图,我们知道当流水线第一条指令由取指运行时,分析与执行是等待状态的,因此第一列的周期为取指时间:2ns。
当分析运行时,取指执行的是指令2 ,执行部分此时还是等待状态,第二列的周期为分析时间:2ns。
当第一条指令到达执行时,流水线已经启动了,此时的取指执行的是指令3,分析执行的是指令2,此时第三列的周期为:1ns
所以第一条指令的周期时间为取指+分析+运行时间,第四列及其后面的周期没有等待时间,所以值是我们的流水线周期时间 2ns
2.理论公式与实践公式的区别
这两种公式最大的区别是对于第一条指令周期时间所取的值的不同,理论公式所取值是,各部分的周期时间相加,题目中的第一条指令是是三个周期,所以对于理论公式来说,第一条指令周期时间之和是2ns+2ns+1ns
而实践公式中将第一条指令执行的周期中的各部分时间都统一为流水线周期时间,(有点绕,多读几遍),题目中的流水线周期时间是2ns,所以对于实践公式来说,第一条指令周期时间之和是3x2ns
这也解释了为什么题目中的理论公式比实践公式少1ns
三.流水线吞吐率计算
3.1.概念
上图第一句,一般以年记,比如某某港口年吞吐率是多少,上面公式不详细解释反正看得懂就行,
最大吞吐率1/🔺t,🔺t你要是想问是什么意思,建议把上面的流水线计算抄一百遍,最大吞吐率是理想状态下的,了解就行。
3.2. 题目
还是这个图,只不过求吞吐率
根据公式TP=指令条数/流水线执行时间可知,指令条数为100,执行时间根据理论公式可知
(2+2+1)+ (100-1)* 2 = 203
所以TP = 100 / 203 = 0.49261(个人保存5位小数)
想一想最大吞吐率应该是多少。
四.流水线加速比
4.1.概念
完成一件事情,使用流水线和不使用流水线的所用时间之比。加速比是越高越好,说明使用流水线效果更好。
4.2.题目
对,还是这张图, 求加速比
依旧是理论公式,根据理论公式,我们知道执行一条指令的时间为2ns+2ns+1ns,所以不使用流水线执行时间是
(2+2+1)* 100 = 500
而使用流水线执行时间是
(2+2+1)+ (100-1) * 2 = 203
最后得出加速比为
500 / 203 = 2.46305(个人保存5位小数)
五.流水线效率
5.1.概念
在时空图上,使用到的区域与总的区域之比就是流水线的效率。
根据上图可以知道,s1和s3的时长是🔺t,s4的时长是3🔺t,所以我们知道流水线周期是3🔺t.
5.2 题目
根据上面时空图求流水线效率
由图中我们可以知道,使用到的时空区有四部分,每一部分的时长是🔺t+🔺t+🔺t+3🔺t。所以占用的时空区是
(🔺t+🔺t+🔺t+3🔺t)* 4
总的时空曲可以看到有四个区域,每个区域时长是15🔺t(其实就是数格子,搞不懂讲这么高大上干啥)所以总的时空区是
15🔺t * 4
根据公式算出
E = (🔺t+🔺t+🔺t+3🔺t)* 4 / 15🔺t * 4 = 0.4
所以流水线的效率是0,4。