第四章超标量技术

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章超标量技术

4.1指令流技术

4.2寄存器数据流技术

4.3存储器数据流技术

4.4小结

4.5习题

在第三章里,我们着重讨论了超标量流水线的结构(或组织)设计,并处理了与执行的指令类型不太相关的问题。在这一章里,我们将更多的着重讨论超标量处理器的动态特性,并考虑涉及指令类型特殊性的技术。超标量流水线性能的最终目标是获得指令处理的最大吞吐量。为了方便起见,可以将指令处理视为三种流(指令流和/或数据流),分别称为:指令流、寄存器数据流、存储器数据流。这种分为三种流的方法与Mike Johnson1991年的教材《超标量微处理器设计》中所用的方法是类似的。总体性能目标是将三种流路径的容量尽量扩大。当然,使这一任务变得有趣的是三种流路径并不是互不相关的,而且它们之间的相互作用相当的复杂。这一章就是按照三种流路径之间的联系来分类阐述超标量微体系结构技术的。

三种流路径粗略地对应于三种主要的指令类型的执行,它们分别为:分支指令、ALU指令、和读写指令。因此,增加三种流路径的吞吐量对应于降低分支、ALU、和读写指令的等待。

1.指令流:分支指令处理。

2.寄存器数据流:ALU指令处理。

3.存储器数据流:读写指令处理。

这一章将这三种流路径用作阐述众多的对现代超标量处理器性能优化的微体系结构技术一种方便的框架。

4.1指令流技术

我们先介绍指令流技术是因为这与超标量流水线的早期步骤,如取指令和译码,相关早期的流水线步骤的吞吐量将影响所有后续步骤的吞吐量的上限。对于当代的流水处理器,传统的将处理器分为控制路径和数据路径的分割方法已经不明确或不十分有效了。然而,早期的流水线步骤和分支执行部件可以被视为与以加强程序的控制流语义为首要目地的传统控制路径相对应。所有指令流技术的首要目地是要使对超标量流水线的指令供给尽量的大,而这种供给是受到程序的控制流语义相关性!!的影响。

图4-1程序控制流:(a)控制流图(CFG);(b)将CFG排布成顺序内存位置。

4.1.1程序控制流和控制依赖

程序的控制流语义可以用控制流图的形式来描述。在控制流图中,结点表示基本块,边表示基本块之间的控制流传输。图4-1(a)举例说明了一个有4个基本块(虚线的矩形)的CFG,每一个基本块包含若干条指令(椭圆形)。有向边表示基本块之间的控制流。这些边是由于分支指令(菱形)导致的。程序的实时执行则成为了它的CFG的结点和边的动态遍历。实际的遍历路径受到分支指令和它们的分支条件的支配,而分支条件则可以由实时数据决定。

CFG中的基本块,以及组成它们的指令,在程序的内存中必须以顺序的位置存放。因此,CFG中的局部有序的基本块在程序内存中必须排成一个整体的顺序。为了将CFG排布成线性连续的内存位置,必须加入无条件转移指令,如图4-1(b)。排成线性程序内存的CFG 排布方式暗示着一种程序执行时在顺序内存位置中的顺序控制流。然而,有条件和无条件转移的同时出现导致与暗示的顺序控制流的背离,以及随之而来,破坏顺序取指令。这种破坏引起流水线中取指令步骤的停滞,并降低了总体上取指令的带宽。子程序跳转和返回指令也能够导致相似的对顺序取指令的破坏。

4.1.2分支导致的性能退化

当一个流水计算机成流动状态时它就能够发挥最大的吞吐量。对于取指令步骤,出于流动状态就意味着从程序内存中顺序位置连续地取指令。一旦程序的控制流背离了顺序路径,就可能破坏流动状态。对于无条件转移,直到转移的目标地址定下来后,才能够取它的后继指令。对于有条件转移,计算机必须等待转移条件的解析,如果决定转移,还要等待目标地址的决定。图4-2表明了分支指令对于流动状态的破坏。分支指令是由分支功能部件执行的。对于有条件转移,直到退出分支部件,也就是转移条件和目标地址都知道之后,取指令步骤才能正确地取得下一条指令。

如图4-2所示,这种执行有条件转移所造成的延迟导致了取得下一条指令有三个周期的等待,分别对应条件转移的译码、分派、和执行步骤。实际的丧失时机的三个周期停滞的代价不仅仅标量流水线中三个空指令位置,而且必须对于计算机流水线的宽度加倍。例如,对于一台4路流水计算机,总停滞为超标量流水线中的12个指令“泡泡”。同时回忆一下第三章,这种流水线停滞周期非常符合Amdahl法则的顺序瓶颈,与可能的峰值性能相比实际性能快速地明显地降低了。

图4-2分支指令对于顺序控制流的破坏

对于有条件转移,实际停滞或等待周期可以由目标地址的产生或条件解析决定。图4-3表明了潜在的周期可以由目标地址的产生所导致。实际的等待周期是由分支指令的地址寻址方式决定的。对于相对寻址方式,转移目标地址可以在取指令步骤中产生,从而造成一个周期的等待。如果使用的是寄存器间接寻址方式,分支指令必须经过译码步骤来访问寄存器。这种情况下有两个周期的等待。对于寄存器变值寻址方式,偏移量必须在访问寄存器后才能加上去,所以共有3个周期的等待。对于无条件转移,只要目标地址产生就可以决定等待。而对于有条件转移,转移条件解析的延迟也是必须考虑的。

图4-3转移目标地址产生等待

完成条件解析的不同的方式也能够导致不同的等待。图4-4表明了两种可能的等待。如果使用条件码寄存器,并假设有关的条件码寄存器可以在分派步骤获得,那么可以导致两个周期的等待。如果ISA允许两个通用寄存器来产生转移条件,那么还需要一个周期来完成两个寄存器的ALU操作。这将导致三个周期的等待。对于有条件转移,由寻址方式和条件解析方式决定的两中等待中有一个可能是至关重要的。例如,即使使用相对寻址方式,一个有条件转移必须获得条件码寄存器,因而仍然导致两个周期的等待,而不是由目标地址产生决定的一个周期的等待。

图4-4转移条件解析等待

增大指令流路径的容量等价于增加持续不变的取指令带宽。要做到这一点,取指令步骤的停滞周期数必须降到最低。回忆一下总丧失时机代价等于等待周期和计算机流水线宽度的乘积。对于一个n流水计算机来说,每一个停滞周期等于取得n条空操作指令。指令流技术

相关文档
最新文档