由于上课的时候老师讲的很快,很多细节没有听到,练习题也不会做,因此在这里总结一下自己学习和做题过程中的知识点。【后续如有补充会继续更新】
什么是流水线
如果你看过工厂批量生产产品(或者宰猪场)的流程,就不难理解流水线是什么:
流水线是指将一个重复的时序过程,分解成为若干个子过程,而每一个子过程都可以有效地在其专用功能段上与其他子过程同时执行。
流水线的特点
- 流水线是由多个相连的子过程组成的,每个过程成为流水线的“段”。一条流水线的段数,也称为流水线的“流水深度”。
- 每个子过程由专用的功能段实现。
- 各个功能段所需的时间应尽量相等,否则,较长的段将成为流水线的瓶颈。这个时间一般为一个时钟周期或机器周期。
- 流水线的通过时间是指第一个任务从输入到完成所需的时间,在此之后流水过程才会进入稳定的工作状态,每一个时钟周期或机器周期会流出一个结果;流水线的排空时间是最后一个任务从输入到完成所需的时间。
- 流水线技术适合大量重复的时序过程,只有在输入端能连续地提供任务的,流水线的效率才能充分发挥。
流水线分类
如果按照功能、连接方式、流水的级别、处理的数据或是否有反馈回路来对流水线进行分类,,有将近11种的流水线。我就不一一列举,大家可以自行参考《计算机体系结构(第2版)》书中的内容,我在这里也附上一个思维导图。
流水线的分类MindMap
在这些流水线中,重点需要区分和掌握的是单功能流水线和多功能流水线、静态流水线和动态流水线。为什么要掌握这些,我会在介绍完流水线时空图后再做具体解释。
流水线的性能分析
吞吐率(TP)
加速比(S)
流水线效率(E)
其实分析一个流水线最好的方法是画时空图
时空图
不同流水线的时空图的画法
多功能静态流水线
多功能流水线:是指该流水线可以切换多个功能,整个流水线处理下来实际上只有一条流水线在不停的变换功能形态。(属于是既当爹又当妈)
静态流水线:是指流水线在同一时间内只能按照一种连接方式工作。即虽然流水线可以变换功能形态,但是同一时间只能处于一种状态。(比如只能在算完浮点加后再切换为定乘连接状态)
对于这种流水线的画法,要注意以下几点:
1、不管是什么算法,建议先完成一类计算后,再切换另一种计算。避免切换连接方式导致的资源浪费。(比如求几个数相乘再相加,正确的画法是先算完全部乘法再算加法)
2、由于是静态流水线,所以必须先等前一个功能的计算结束后才能切换状态。
多功能动态流水线
动态流水线:和静态流水线相反,流水线在同一时间内按多种连接方式工作。像上边这图和前一个图对比,可以明显发现定乘这个工作和浮点加法重叠工作了。也就是说,可以在前一个计算功能没有完成的时候同时开始下一种功能的计算。
对于这种流水线的画法,要注意以下几点:
1、考虑相关问题。由于这种流水线的重叠性更强,所以就特别需要考虑数据相关的问题。(当然静态的也需要考虑)比如,先计算浮点加法,然后再计算乘法。如果前一步的加法结果尚为完成,而后一步的乘法还需要用到加法,则需要通过等待来避免数据相关的问题。