第四章 流水线技术
- 格式:doc
- 大小:1.52 MB
- 文档页数:88
流水时钟数
1
2
3
4
5
6
7
8
9
指令i
IF
ID
EX
MEM
WB
指令i+1
IF
ID
EX
MEM
WB
指令i+2
IF
ID
EX
MEM
WB
指令i+3
IF
ID
EX
MEM
WB
指令i+4
IF
ID
EX
MEM
WB
图4-7 MIPS R2000的整数流水线
其中:IF──取指ID──译码和取寄存器操作数
EX──执行或有效地址计算MEM──存储器访问
M1P1 M2 P2 M3 P3 M4
T1T2T3
图4-4处理器级流水M:存储器P:处理器T:任务
2.按完成的功能分类
有单功能流水线和多功能流水线。
单功能流水线只完成一种功能,如乘法或浮点运算;多功能流水线可以完成多种功能,其功能段可以按照不同功能的要求联接,当然功能段的种类比较多。如图4-5所示,流水线中包括了八个功能段,如果要完成浮点运算,可按图4-5(b)连接流水;如果完成乘法,则可按图4-5(c)方式连接流水。
4.1.2.1
简单的RISC处理器的指令集不是很复杂,我们可以来分析一下,处理器在工作时的硬件资源使用情况。图4-8显示了一个5级流水的简单处理器数据通路的流水工作过程。图中表明了主要功能单元在不同节拍中的使用情况和多指令重叠执行所带来的相应冲突。我们可以看出,图中时钟周期5(CC5)至少有如下几种冲突:
流水线设计最难的任务是确定每个流水级功能部件处理的时间长度,平衡每一流水各处理部件的处理时间。在理想条件下,流水线计算机每条指令的平均执行时间是:
每条指令平均执行时间=
其中流水线深度是指流水线中总的流水级的数目。在这种条件下,流水线计算机的加速比(Speedup)就等于流水级的深度。实际情况中,流水线中的各级功能部件处理子过程的时间之间是很难平衡的。此外,流水线还包含一些其它的开销。因此,流水线上每条指令的平均执行时间并不是理想情况下的最小值,只是一个接近值。
第四章流水线技术
计算机系统结构研究、分析的目的就是为了提高计算机性能,为此,我们采用了许多提高性能的设计思想和技术。流水线技术就是其中最重要的设计思想之一。流水线技术在现代的计算机系统结构中是最普遍的一种技术。
流水线技术的基本思想在冯·诺依曼(Von Neu mann)归纳的第一台存储程序计算机中已经提出。1946年Burks等人提出的运算与输入/输出重叠操作是当今计算机中广泛使用的流水线技术的原始雏形。尽管冯·诺依曼没有在他设计的第一台计算机中实现输入/输出功能,但当磁芯存储器第一次出现,并作为主要存储介质后,流水线设计思想迅速发展。磁芯存储器速度要比寄存器和控制单元中的晶体管器件慢10倍以上。为解决主存与CPU执行速度之间的瓶颈问题,设计者们研究了很多种方法,使CPU执行指令的同时,进行一个或多个并发存储器访问。INTEL8086的两级流水就是为了提高存储器及总线的使用效率而设计的。
3.每个流水功能部件的工作时间是不相同的,流水节拍时间由最长的流水功能部件处理时间决定。
4.流水线工作一般有三个阶段:建立、稳态和排空阶段。
5.理想情况下,在流水线处于稳态时,每一流水节拍时间都得到一条指令执行的结果,流水加速比(Speedup)就等于流水线的级数或流水深度。
6.流水线适用于大量重复性的、可分离的处理过程,顺序计算机的指令执行过程就是重复处理的过程。
1输入输入输入
2求阶差求阶差
3对阶对阶
4相加相加
5规格化规格化
6相乘相乘
7累加累加
8输出输出输出
(a)(b)(c)
图4-5美国TI-ASC多功能流水线
(a)流水线功能级(b)浮点加减时的流程(c)定点乘法时的流程
3.按联接的方式分类
在多功能流水线中,根据功能的连接方式不同,可分为静态流水线与动态流水线。静态流水是指在同一个时间内,多功能结构中只能按一种功能的连接方式工作,这对于大量数据进行相同处理来说,具有很好的效果。但是遇到不同功能的交替处理时(如在图4-5结构中进行乘法与浮点相加交替运算),流水线就失去其优点,运算速度与顺序处理方式没有什么区别。动态流水线是指在同一个时间内,可以有多种功能的连接方式同时工作。如图4-5中多个功能段,其中一些功能段正在实现乘法运算,同时其它功能块还可以进行浮点运算或完成别的功能,这种方式的流水工作效率最好,但是控制也变得很复杂。
为了方便流水线处理器结构的分析,我们采用时空图来描述,如图4-2,其中纵坐标为空间(即各流水级),横坐标为时间(流水节拍)。方格中的数字说明该时间、空间的任务号。
S4
1
2
3
4
5
n-1
n
S3
1
2
3
4
5
n-1
N
S2
1
2
3
4
5
n-1
n
S1
1
2
3
4
5
n-1
n
t1
t2
t3
t4
t5
···
tn
tn+3
时间
图4-2流水线处理的时空图
WB──写回
在这个简单的指令流水状态图中,我们首先来看一下,在一个流水节拍中机器到底做了些什么事情。我们发现:基本处理器进行流水处理时,无法要求数据通路(datapath)上的一个硬件单元在同一时刻做两个不同的操作。例如:单个ALU不能同时进行有效地址计算和加法运算操作。因此,要保证流水线顺利进行,必须消除指令重叠执行时的这种冲突。基本处理器要经过改进才能成为流水线处理器。
IF
ID
EX
MEM
WB
指令i+2
IF
ID
EX
MEM
WB
指令i+3
IF
ID
EX
MEM
WB
指令i+4
IF
ID
EX
MEM
WB
图4-3流水状态图
这里我们假定处理器分5个流水功能部件。如果用流水状态图表描述流水线指令执行过程引起误解或不能说明问题时,我们采用流水功能部件和流水寄存器来代替指令流水状态图表中的执行状态,如图4-10。
4.按处理的数据类型分类
可以分为标量流水线与向量流水线。所谓标量就是除向量数据表示之外的其它数据类型。标量流水线就是指所处理的数据类型中不包含向量数据的流水线。向量流水线,则是专用来处理向量数据的。
5.从流水线结构上分类
可以分为线性流水线与非线性流水线。所谓线性流水线,是指各功能块顺序串行连接,无反馈回路;前面所述各种流水线均属此类。非线性流水线是指带有反馈回路的流水线,在流水线上流动的数据流也是非线性的。如图4-6(a)所示,其正常流水顺序是S1→S2→S3,而在该结构中,每一个功能段都可以输出,而各功能段之间除了寄存器外,还增加了一个多路选择器,可以选择不同的输入。如果在该流水线中完成A、B两个功能,而A、B都需要反馈处理。其数据流的流向由图4-6(b)中两表给出.。可以看出,对于功能A,流水线的顺序为S1→S2→S3→S1→S3→S3→S1→S2,由S2得到输出。而功能B,其流水线的顺序为S1→S3→S2→S3→S1→S2→S3,由S3得到输出。非线性流水线,通常是一个多功能流水线,多用于递归处理,这种结构对控制的要求很高,也很复杂,除了以前所述需要进行多功能的不同连接外,其输入数据的时间也难以控制,既要发挥流水的优点,又要解决功能段可能冲突的问题。
4.1
流水线的作用是提高硬件功能部件的使用率,减少指令的平均执行时间。
4.1.1
4.1.1.1
流水线(pipelining)是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。今天,流水线是制造高性能CPU的关键技术。这种技术和并行处理有所区别,流水线是在顺序指令流计算机中实现处理时间重叠的技术,因此流水线的并行处理是指完成一条指令的各个部件在时间上是可以同时重叠工作。因此,各部件同时处理是针对不同指令而言的,各部件分别同时为多条指令的不同部分(step、stage)进行工作,以提高各部件的利用率来提高指令的平均执行速度。
但这种描述方法对流水线中指令执行过程的分析很不方便,因而在分析流水线指令执行过程中,我们用指令流水状态图表来描述,这样对指令执行过程情况一目了然。如图4-3所示,其中横向表示流水节拍,纵向表示指令序列,图中指令执行状态由符号表示。
指令序列
流水时钟数
1
2
3
4
5
6
7
8
9
指令i
IF
ID
EX
MEM
WB
指令i+1
S1S2S3
M1M2M3
L1L2L3
(a)非线性流水线
t0
t1
t2
t3
t4
t5
t6
t7
S1
A
A
A
S2
A
A
(A)
S3
A
A
A
S1
B
B
S2
B
B
(B)
S3
B
B
B
(b)调度预约表
图4-6 M:多路选择器L:锁存器S:功能部件
4.1.2
对于第三章介绍的处理器,只要略加改变就可成为一个简单的流水线处理器。我们将基本处理器的五个执行步骤改为5个流水节拍,就形成具有5级流水深度的流水线结构处理器,每个节拍为一个时钟,可以启动一条指令,如图4-7所示。每条指令需流过5个节拍,5个时钟才能完成。每个时钟期间硬件将启动一条新指令,流水线中5个硬件功能将执行5条不同指令的某些子过程。
60年代,硬件的价格相对较高。流水线技术都用于巨型计算机。IBM的STRETCH和CDC6600是早期大量应用流水线技术的计算机,它们对后来的计算机系统结构设计有深刻的影响。随着半导体技术的发展,到80年代硬件价格大幅度下降,流水线技术在计算机设计中广泛应用,即使在微处理芯片中也是很基本的性能提高措施。INTEL80i86系列的发展是很好的一个例子。这里要注意的是流水线技术在RISC设计思想产生前已有广泛使用,只是在RISC设计思想中流水线技术采用更广泛而已。