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

2018-12-20 23:07

26

CPU中指令流水线技术研究

水线第4段,成为ALU段并包含一个ALU功能单元,完成算术逻辑运算或者有效地址的生成。

ALU和load指令都需要想寄存器写回结果,这是他们的最后一个运算分量。ALU指令将寄存器操作的结果写回寄存器,load将访存的数据写入到目标寄存器。ALU指令不需要访存,因此,理论上向目标寄存器回写这一过程可以在ALU段之后立即进行。然而为了load指令回写分量统一起来,ALU指令的寄存器回写分量向后推迟了一段,在流水线的第6段进行,成为WB段。这将导致ALU指令在MEM段产生一个空闲周期。这是一种外部碎片并将给流水线带来一些效率损失。

通过对不同指令类型的整合,可以得到一条6级流水线,如图3.3右侧所示。

3.3.3 减少流水线停顿

第三条流水线理想假设则认为流水线执行的运算是相互独立的。在一个k级流水线中,可能有k个不同运算同时进行处理。对于指令流水线,最多可能有k条不同指令同时存在于流水线中。这些指令可能不是彼此独立的。实际上,这些指令之间通常都存在着相关。如果流水线中的指令不相关,将有助于流水线的流动,或者说,指令流过流水线而不会产生任何流水线停顿。如果指令间存在相关,则必须检测并化解相关。相关的化解可能要求流水线停顿。设计的挑战和目标就是减少流尽量减少流水线停顿,防止吞吐率下降。

关于具体怎样判断各种相关并且将其化解,将在下一章中进行讨论。

第四章 流水线中各种相关及其处理

27

第四章 流水线中各种相关及其处理

我们知道级数为n的流水线,在理想情况下可以提高处理性能n倍。但是,在实际中,有一些情况会阻止指令流中的下一条指令在预定的时钟周期内执行,这些情况就称为“相关冒险”或者“相关”。这一章,我们详细的讨论流水线中各种相关产生的原因及其处理方法。

4.1 流水线中相关

流水线相关阻止了流水线以理想的加速比改进处理器的性能。在流水线设计中,我们需要考虑以下三种相关:

资源相关:当硬件不能支持所有可能出现的、同时重叠执行的指令组合时,就会出现资源冲突,从而导致资源相关,又称为“结构相关”。

数据相关:在流水线中重叠执行的指令中,如果一条指令依赖于前面另一条指令的执行结果,从而导致流水线停顿,此时即发生数据相关。

控制相关:这种相关主要是由于转移指令和其他能够改变PC内容的指令,在流水线进行处理时产生的。

在接下来几节中我们将对这三种相关分别进行讨论。

4.2 资源相关

通常,一些功能部件没有完全流水化是产生资源相关的基本原因。这时,当一个指令序列中的许多指令都要使用这样的功能部件时,指令就不能在流水线中连续启动处理了。另外一个导致流水线冲突的主要原因是,在系统中没有针对流水线中的所有指令组合情况,设置足够多的硬件资源。例如,一台机器可能只设了一个寄存器写口,然而在一些情况下,流水线可能需要在一个周期内向寄存器

28

CPU中指令流水线技术研究

进行两次写动作,于是导致了资源相关。当一个指令序列遇到资源相关时,流水线将暂停一条指令的执行知道需要的资源空闲为止。

许多采用流水线技术的处理机对于指令和数据的存取仅使用一条存储器流水线。这样,当一条指令需要对操作数存储器访问操作时,数据访问将占用存储器口,于是处理器就不能及时进行下一条指令的存取了,也就是说流水线不得不暂停一个时钟周期,才能对后续指令进行取指。

我们在设计时是完全可以避免发生资源冲突的。而且,在其他因素相同的情况下,没有资源冲突的处理器总是比允许资源冲突存在的处理器具有更小的CPI。尽管如此,在具体设计时,很多情况下我们还是允许资源冲突的存在的,这主要有两个原因,一是降低成本,另外,就是减小部件的延迟。流水化所有部件可能会使机器的成本超出人们的承受能力。如果在实际中,某些资源的冲突出现的不太频繁,可能就不值得我们为了完全避免他们的出现而付出很高的代价了。而且,设置一个非流水化的部件或者没有完全流水化的部件,有可能会比一个完全流水化的部件产生的总延迟更小。例如通过权衡,CDC 7600和MIPS 2012的浮点部件放弃了完全流水化的设计,而选取了具有较小延迟(每个操作几个周期)的方案。允许某些资源冲突的存在可以减小部件的等待时间,于是,设计人员就可以在其他一些方面对机器的性能进行改进,从而弥补资源冲突产生的不利。

4.3 数据相关

数据相关主要有3种,分别是指令相关、主存空间数相关和通用寄存器组相关。解决数据相关的方法主要有两种,一种是退后分析法,在遇到数据相关时,退后本条指令的分析,直至所需要的数据写入到相关的存储单元中。另一种方法是设置专用通路,即不必等待所需要的数据写入到相关的存储单元中,而是经专门设置的数据通路读取所需要的数据。

4.3.1 指令相关

第四章 流水线中各种相关及其处理

29

如果某一条指令的内容取决与前面一条指令的执行结果时,就会产生指令相关。之所以会出现指令相关,关键是由于Von Neumann型机器的指令允许修改所带来的。如果规定在程序运行过程中不允许修改指令,就不会出现指令相关。而且,不准修改指令还带来更重要的好处是可以实现程序的可再入性和程序的递归调用。然而,为了满足程序设计灵活性的需要,有时需要在程序运行过程中修改指令时,可以通过设置“执行”指令来解决。“执行”指令是IBM 370 机器为此设置的一条指令。由于被修改的指令是以“执行”指令的操作形式出现的,将指令相关转成了数相关,所以只需统一按照数相关进行处理就可以了。

4.3.2 主存空间操作数相关

由于操作数可能存放于主存,也可能存放在寄存器中,因此数相关可以分为主存空间操作数相关合通用寄存器组相关。

主存空间数相关就是相邻两条指令之间出现要求对主存同一单元先写入而后再读出的关联。如果让前面一条指令的“执行”与后面相邻指令的“分析”在时间上重叠,就会使得后一条指令“分析”读出的操作数不是程序要求的前一条指令执行完成应当写入的结果,从而造成错误。这种情况下要想避免错误,只有退后下一条指令“分析”的读操作。

为了推后读,常见的方法是由存控给读数、写数申请安排不同的访存优先级来解决。因为中央处理机和不止一个的通道都能直接访问主存,中央处理机的访存可能是取指令、读数或写数,通道访存可能是读、写数据,取通道控制字,存通道状态字等。这些访存申请如果同时发出,就会出现访存冲突,因此需要由存控按照预定的优先级别排队处理。只要让写数级别高于读数级别被响应,就自然解决了这种主存空间的数相关。

4.3.3 通用寄存器组相关

在寄存器-寄存器型(RR型)指令和寄存器-存储器型(RS)型指令的执行过程中可能发生通用寄存器组数相关。看下面两条指令:

30

CPU中指令流水线技术研究

k: OP R1, A2 ; R1 = (R1) OP (A2) K+1: OP R1 R2 ; R1 = (R1) OP (R2)

如果发生:

R1(k)称R1数相关。如果发生:

R1(k)称R2数相关。

发生通用寄存器数相关的情况与寄存器本身的结构合所采用的控制时序等也有关系。解决通用寄存器数相关主要有以下几种方法:

1.如果通用寄存器是用D触发器构成,而且在通用寄存器到运算器之间建立有直接数据通路,即不设置缓冲寄存器或者锁存器,则不会发生通用寄存器数据相关。因为D触发器允许在同一个节拍中实现寄存器之间的循环传递。这中情况下,实际上不需要分析周期,在一个节拍中就可以完成从通用寄存器中通过两个多路选择分别读两个操作数到运算器,操作数在运算器完成运算,并把结果写回到寄存器中。

如果构成通用寄存器的不是D触发器,或者在通用寄存器到运算器之间设有缓冲寄存器或者锁存器,则会发生寄存器数相关。

2.将分析指令推后一个周期执行。此方法跟前面处理主存空间数相关一样,完全可以解决问题。

3.将分析指令推后一个节拍。这种方法跟方法2相似,只是分的更细了。与方法2相比较,此方法在控制上稍嫌复杂,但是在速度上却要快一些。

4.设置“相关专用通路”。

推后“分析”和“设置专用通路”是解决流水线相关处理的2种基本方法。前者以降低速度为代价,使硬件设备基本不增加。后者则是以增加硬件设备为代价,而维持了流水线效率。在流水线的设计过程中,要权衡运行速度跟价格等因素,选择适当的方法。

?R2(k?1) ?R1(k?1)


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

下一篇:弹簧操作机构

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

马上注册会员

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