计算机毕业论文-CPU中指令流水线技术研究(4)

2018-12-20 23:07

16

CPU中指令流水线技术研究

设总的延迟为500ns,流水线分3段,每一段的延迟分别为200ns,100ns,200ns.显然,总的延迟并没有均匀的分布到流水线的三段当中。由于流水线的时钟周期决定于延迟最长的那一段,因此延迟较短的段会有一些无效或者失效的时间。比如浮点加法器的第二段,它就有100ns的无效时间,我们可以把它称之为“内部碎片”。由于内部碎片的存在,完成同样的运算的延迟将会增加。

还有一个内在的假设,即流水段之间引入的缓冲不会带来额外的延迟,并且流水线的时钟信号也不会引入额外的延迟。同样,这一假设在实际当中也是不能成立的。在相应的例子中,为了保证信号的时钟信号的准确建立,设置了暂存器,因此总的时钟周期又延长了,从而导致了实际性能不可能提高3倍。

第一条流水线理想假设主要包含了以下两种观点:在将以前的运算分量分成若干分量是时,没有引入无效时间;段间缓冲的引入及时钟没有带来额外的延迟。在芯片级的设计中,可以采用一些锁存器,比如Earle锁存器可以使流水线时钟产生的延迟尽可能地小。因此如何将总的运算量均匀的分到各流水段中构成了流水线设计的第一个挑战。我们的目标是,尽可能使各个流水段保持均衡,以减少内部碎片。由于各个流水段不能完全均衡内部碎片是不满足第一条流水线理想假设的主要原因,这将成为一种开销,并导致k级流水线设计的吞吐率提高达不到理想的k倍。

3.1.2 重复的运算

第二条流水线理想假设说明,流水线不断地重复执行相同的运算。这意味着在多组输入数据中,有些运算是相同的并且这些运算要反复执行。每次执行时,流水线提供的分量执行顺序都是一样的。对于浮点加法器的例子,将包含大量的浮点数对要进行相加,每一对操作数都要通过相同的3级流水线。这以一设说明,每一次的重复运算都会 使用流水线中的所有段。对于我们的例子这显然是成立的。

浮点加法器满足这条假设,是因为该流水线只完成了一个功能,即浮点加法运算。如果你要设计的流水线要完成多个功能,这一假设就不满足了。例如,设计一条既可以计算加法又可以计算乘法的算术流水线。在多功能流水线中,单独一项功能可能并不需要所有的流水段,而可能由流水段的不同子集来完成不同功

第三章 指令流水线设计

17

能。由于输入数据以同步方式通过流水线,有些数据可能不需要某些流水段,当他们通过这些段的时候,将什么也不执行。这种没有使用或者空闲的流水段带来了另一种形式的流水线失效,可以称之为“外部碎片”。与内部碎片相似,外部碎片也是一种流水线开销,应该尽量减小。

第二条流水线理想假设认为所有的流水段总是被充分利用。除了说明不存在外部碎片之外,这条假设还说明要处理的数据是大量的。第一个数据达到流水线的最后一个段需要k个周期,这k个周期称为流水线的“填充时间”。最后一个数据进入流水线的第一个段后,还需要k个周期排空流水线。在填充合排空过程中,不是所有的流水段都处于工作状态。如果有大量的输入数据要进行处理,可以使流水线的填充和排空时间只占总时间的很小一部分。因此,多有流水段都可以认为总是处于工作状态的。

3.1.3 独立的运算

第三条流水线假设说明,流水线要处理的运算是彼此独立的。这意味着,所有同时间驻留在流水线中的运算是不相关的,也就是说,任何两个运算之间不存在数据或者是控制相关。这一假设保证流水线处于“流动”的工作方式,即后面的运算不会因为存在相关性而等待前面运算的完成。对于浮点加法器的例子中,这一假设是成立的。如果有多对操作数要进行相加,一对操作数的相加不会以来另一个加法的结果。这些操作数可以按照“流动”的方式进行处理。

这一条假设对于一些流水线可能不成立。后面的运算可能需要前面的结果,而这两条运算可能同时驻留流水线中。如果后面的运算已经进入到需要结果的流水段,而这时候前面的运算还没有到达产生结果的流水段,哪么后面的运算必须在那一段等待。这种等待称为“流水线停顿”。如果某一运算停顿在流水线的某一段,所有后续的运算可能都要被迫停顿。流水线停顿不可避免地导致某些段处于空闲状态,这可以看作是一种动态的外部碎片,因此会导致流水线吞吐率降低。如果相关是不可避免的,那么再设计流水线的时候,就要尽量减少流水线的停顿次数。

18

CPU中指令流水线技术研究

3.2 指令流水线

前面三条流水线是流水线的理想假设。在大多数情况下,算术流水线的实际情况与理想假设相差不是太大。然而,对于指令流水线,实际情况与理想假设之间的差距就要大一些。而连接这一差距的桥梁正式指令流水线设计的趣味性合挑战性所在。在设计流水线处理器时,这三条假设成为三个主要的挑战。这三大挑战同时也提供了一条探索流水线处理器设计技术的思路。

3.2.1 指令流水线设计

在设计指令流水线时,三条流水线假设成为设计的目标。一条指令的处理过程就是要流水化的运算,它必须被划分成多个尽量一只的子运算,以获得尽量均衡的流水线。处理一条指令的时间延迟成为“指令周期”,每一段的时间延迟决定了“机器周期”。指令周期是一个逻辑概念,它是指指令的执行周期。一个程序包含多条指令,程序的执行相当于相应运算的反复执行。机器周期是一个物理的概念,它包含数字逻辑电路中存储单元的时钟等,同时它也是流水线的时钟周期。

指令流水线设计的主要任务可以看作是将逻辑指令周期映射到物理机器周期。换句话说,就是将指令周期所对应的运算分成一个子运算的序列,由流水线的各段运行。要有效的进行这种分割或者映射,必须考虑三条流水线的理想假设。

一致的运算分量 我们将指令周期分解成多个机器周期的过程称为“量化流水段”。在进行量化流水段时,要尽量减少内部碎片。如果在量化流水段时考虑不充分,就会引入内部碎片,从而影响流水线的利用率。第一条流水线理想假设带来了指令流水线设计的第一个挑战,称之为流水线的均衡。流水线越均衡,内部碎片越少。

重复的运算 与单一功能的算术流水线不一样的是,指令流水线天生就是多功能流水线,即它必须能处理多种不同的指令类型。不同的指令类型需要子运算序列稍微不同,所对应的硬件资源也有所不同。指令流水线设计的第二个挑战就是,连接或者整合不同指令类型对不同资源的需求。流水线应能够支持所有的

第三章 指令流水线设计

19

指令类型;同时应该尽量减少每种指令类型的无效或者空闲的机器周期,也就是减少外部碎片。

独立的运算 算术流水线处理的是数组数据,他们一般都不相关。与算术流水线不同的是,指令流水线所处理的指令彼此不是完全独立的。因此,指令流水线必须要有一套内部机制,用来检测指令间发生的相关并保证指令相关不会导致错误。指令相关可能会导致流水线停顿,从而引起失效。前面提到过,流水线停顿是是一种动态的外部碎片,它会降低流水线的吞吐率。因此,指令流水线设计的第三个挑战就是尽量减少流水线停顿。

3.2.2 指令集体系结构的影响

在正式讨论指令流水线设计的三个主要挑战之前,简单的考虑一下指令集体系结构对于指令流水线的影响,将很有启发意义。下面将一次考虑三条流水线理想假设。

一致的运算分量 使流水段保持均衡的第一个挑战说明,必须保证分量的延迟是一致的。考察一条指令处理过程中的所有运算分量,其中一定有一个分量的延迟最长,并且这个分量不容易再分解成细的运算分量。在流水线处理器设计中,这样的关键分量是对存储器的访问。由于处理器和存储器的速度差异,存储器访问将成为关键的运算分量。为了近况使指令流水线效率更高,应该对寻址模式进行优化,并且应该采用能够跟上处理器速度的快速cache。

重复的运算 第一个挑战是将不同的指令类型对资源的要求统一起来,这是RISC体系结构的主要目的之一。降低指令类型的复杂性和多样性可以降低整合不同指令类型任务的难度。复杂的寻址模式不仅需要额外的访存,而且增加了资源需求的多样性。将所有这些资源需求整合到一条指令流水线当中是意见相当困难的事情,并且所得到的流水线对于很多指令其效率很低。这些指令将会产生外部碎片,从而降低了流水线的利用率。对于一个RISC体系结构的流水线而言,资源整合要简单一些并且得到的流水线效率更高,外部碎片更少。

独立的运算 第三个挑战是尽量减少由于指令的相关而引起的流水线停顿,这可能是流水线处理器设计中最吸引人的地方。要正确地完成操作,指令流水线必须检测并化解指令相关。复杂寻址模式,尤其是与存储器访问有关的模式,会

20

CPU中指令流水线技术研究

因为存储器地址标识符的问题而导致相关检测非常困难。一般来说,寄存器相关比较容易检测,因为寄存器在指令中是明确指出来的。简单而且堆成的指令合适便于进行译码和相关检测。相关的检测和化解可以由编译器静态完成,也可以在运行时由硬件动态完成。在编译和运行时分别进行怎样的处理决定于动态静态界面(DSI)的定义。DSI的定义将导致许多有趣而微妙的权衡。在进行权衡时,必须将编译器、(微)体系结构和微处理器设计紧密结合起来。

3.2.3 流水线分级的考虑

理想流水化设计所获得的性能与流水线的深度(即流水线的段数)是成正比的,因此似乎最好的设计就是尽量增加流水线的段数。但是,由于时钟的限制,流水线划分的段数总是有一个物理局限的。流水线的每一个段可以看作一个组合逻辑F加上一个锁存器L,信号通过F之后在L出锁存。定义TM为通过F的最大传输延迟,即通过最长信号路径的延迟;Tm为通过F的最小传输延迟,即通过最短信号路径的延迟;TL为正确建立时钟信号所需要的额外时间,包括必要的建立和保持时间,以保证正确的锁存,同时还包括可能的时钟扭曲,即达到不同锁存器的时钟沿的最大时间差。假设第一组信号X1在T1时刻作用在某一级的输入端,那么F的输出最迟将在T1?Tm时刻有效。当第二组信号X2在T2时刻作用的F的输入端时,最快只要T2?Tm时刻就能传到锁存器L。要保证第二组信号不覆盖第一组信号,必须满足:

T2?Tm?T1?TM?TL(式3.1)

该公式说明,信号X2可能到达的最早时刻不能早于信号X1正确锁存的时刻。该不等式可以重写为:

T2?T1?TM?Tm?TL(式3.2)

其中T2?T1就是最短时钟周期T。因此,时钟周期T必须比TM?Tm?TL大,而最大

时钟频率不能超过1/T。


计算机毕业论文-CPU中指令流水线技术研究(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:弹簧操作机构

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: