第二章 流水线基础
11
按照流水线使用的不同级别,可以把流水线分为功能部件级、处理器级以及处理机之间等多种类型。
处理机级流水线即指令流水线,他把一条指令执行过程分解为多个子过程,每一个子过程在一个独立的功能部件中完成。
功能部件级流水线也称为运算操作流水线,如浮点加法器流水线、浮点乘法器流水线等。
接起来,每一个处理机对一个数据流的不同部分分别进行处理。
处理机间流水线又称为宏流水线,一般是两台以上处理机通过存储器串行连
图2.6 指令流水线
流水线又可分为单功能流水线和多功能流水线。顾名思义,单功能流水线只能完成固定的单一功能,多流水线通过各个段间进行不同的连接,在不同的时间内或者统一时间内通过不同的连接方式完成不同的功能。 在多功能流水线中,根据同一时间内是否可以连接成多种方式,同时执行多种任务,可以把多功能流水线分为静态流水线合动态流水线。所谓静态流水线指的是在同一时间段内,多功能流水线各段只能按照一定固定的方式连接,实现一种固定的功能。只有当按照这种连接方式工作的所有任务都流出流水线之后,才能重新进行连接,完成其他功能。动态流水线则在同一时间段内,可以按照不同的连接方式,完成多种不同的功能。这个时候要求流水线中个功能部件之间不能发生冲突。
除了以上几种分类方法外,还可以根据其他标准,从不同角度对流水线进行分类。
2.2 流水线的主要性能
12
CPU中指令流水线技术研究
衡量流水线主要性能的指标主要有吞吐率,加速比和效率。
2.2.1 吞吐率
吞吐率是指在单位时间内流水线所完成的任务数量或者输出的结果数量。即: TP?nTK(式2.1)
式(2.1)中,n为任务数,Tk是处理完成n个任务做用的时间。本式为计算吞吐率最基本的公式。有的时候我们还需要求一条流水线的最大吞吐率: TPmax?1max{?t1,?t2,...?tk,...}(式2.2)
式(2.2)中?tk为第k个子过程所花费的时间。最大吞吐率受限于流水线中最慢子过程即瓶颈子过程所需要的时间。为了提高流水线的最大吞吐率,首先要找出瓶颈,然后设法消除此瓶颈。消除瓶颈有两种办法,一是将瓶颈子过程再细分,另一种办法是通过重复设置多套瓶颈段并联,让他们交叉进行。后一种方法需要解决好在各并行子过程之间的任务分配合同步控制,比起瓶颈子过程再细分控制要复杂、设备量要多一些。
2.2.2 加速比和效率
完成一批任务,不使用流水线所花的时间与使用流水线所用时间直比即为流水线的加速比。如果不使用流水线,即顺序执行所用时间为T0,使用流水线的执行时间为TK,则流水线的加速比为:
S?T0TK(式2.3)
这是计算流水线加速比的基本公式。
流水线的效率是指流水线的设备利用率。在时空图上,流水线的效率定义为n个任务所占的时空区域与k个功能区域所占时空区域之比。因此,流水线的效率包含有时间和空间两方面的因素。实际上,n个任务所占的时空区域就是顺序执行
第二章 流水线基础
13
n个任务所用的总的时间T0。而一条k段流水线完成n个任务总的时空区域为kTk,
其中Tk是流水线完成n个任务所用的总时间。则一条k段流水线的效率可表示为:
E?n个任务占用的时空区k个流水段的总的时空区?(式2.4)
k?TkT0此式是计算流水线效率的一般公式。
如果流水线各段执行时间均相等,且输入的n个任务是连续的,则一条k段流水线的效率为:
E?k?n??tk?(k?n?1)??t?nk?n?1(式2.5)
从流水线的时空图上来看,上式分母部分是完成n个任务所用时间与k个功能段所围成的总面积,而分子部分则是k个功能段实际所占有的面积。因此,利用时空图来计算流水线的效率十分方便。
14
CPU中指令流水线技术研究
第三章 指令流水线设计
15
第三章 指令流水线设计
我们做任何事情,都希望能够达到理想状态,但这往往是不现实的,我们研究理想状态的意义就在于给出一个衡量的标准,并且努力向这个标准靠近,这在指令流水线的设计过程中也不例外。
3.1 流水线理想假设
对于指令流水线的目的,我们是希望能最大限度的提高系统的性能。然而在实际中却往往做不到,因为只有在理想状态下,k级流水线的设计才能将提高k倍的吞吐率,理想状况主要基于3条假设,我们称之为“流水线理想假设”,他是正确评估流水线设计的关键。设计各种方案解决实际流水线与流水线理想假设之间的矛盾,这就组成了流水线设计的主要技术。流水线理想假设包括:
1.
一致的运算分量:要完成的整个运算量可以均匀的分成延迟一只的若干分量。
2. 3.
3.1.1 一致的运算分量
第一条流水线的理想假设说明,将要进行流水化的运算分量均匀的分成k个延迟相同的分量。这意味着以前的设计可以均匀的分成k个均衡的流水段。如果以前总的运算延迟,也就是非流水设计的式中周期为T,那么k级流水线的设计式中周期就是T/k,也就是流水段中每一段的延迟。基于这个理想假设,时钟频率能够提高k倍,并且吞吐率也提高了k倍。
在实际的流水线设计中,这个理想假设可能并不成立。将总的运算分量完全均匀的分成若干分量是不可能的。在一个具有3级流水线的浮点加法器的例子中,
重复的运算:输入数据有大量相同的、重复的运算。 独立的运算:所有相同的重复运算之间没有相关性。