第四章超标量技术Word文档格式.docx

上传人:b****1 文档编号:13925316 上传时间:2022-10-15 格式:DOCX 页数:39 大小:66.46KB
下载 相关 举报
第四章超标量技术Word文档格式.docx_第1页
第1页 / 共39页
第四章超标量技术Word文档格式.docx_第2页
第2页 / 共39页
第四章超标量技术Word文档格式.docx_第3页
第3页 / 共39页
第四章超标量技术Word文档格式.docx_第4页
第4页 / 共39页
第四章超标量技术Word文档格式.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

第四章超标量技术Word文档格式.docx

《第四章超标量技术Word文档格式.docx》由会员分享,可在线阅读,更多相关《第四章超标量技术Word文档格式.docx(39页珍藏版)》请在冰豆网上搜索。

第四章超标量技术Word文档格式.docx

三种流路径粗略地对应于三种主要的指令类型的执行,它们分别为:

分支指令、ALU指令、和读写指令。

因此,增加三种流路径的吞吐量对应于降低分支、ALU、和读写指令的等待。

1.指令流:

分支指令处理。

2.寄存器数据流:

ALU指令处理。

3.存储器数据流:

读写指令处理。

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

我们先介绍指令流技术是因为这与超标量流水线的早期步骤,如取指令和译码,相关早期的流水线步骤的吞吐量将影响所有后续步骤的吞吐量的上限。

对于当代的流水处理器,传统的将处理器分为控制路径和数据路径的分割方法已经不明确或不十分有效了。

然而,早期的流水线步骤和分支执行部件可以被视为与以加强程序的控制流语义为首要目地的传统控制路径相对应。

所有指令流技术的首要目地是要使对超标量流水线的指令供给尽量的大,而这种供给是受到程序的控制流语义相关性!

的影响。

图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条空操作指令。

指令流技术的首要目标就是将这种取指令停滞周期数降到最低,和/或利用这些周期做可能的有用的工作。

目前要完成这一目标的主要是通过转移预测,这就是下一小节的主题。

4.1.3转移预测技术

实验性研究表明转移指令的表现是经常是可以预测的。

要降低转移等待增加指令流吞吐量的关键就是推测转移指令的转移目标地址和转移条件。

由于一个静态的转移指令执行时是重复的执行的,所以其动态行为很容易跟踪。

根据它以前的行为,以后的行为则可以很有效地预测。

转移预测可以分为两个基本的部分,转移目标地址推测和转移条件推测。

而不管使用任何的预测技术都要包括确认预测和误预测时的安全恢复机制。

转移误预测的恢复问题将在下一小节中介绍。

转移目标推测会使用转移目标缓冲(BTB),用来存储以前的转移目标地址。

BTB是一个小的cache存储器,它将在取指令步骤通过要取指令的地址(PC)来使用。

每一个BTB的记录包括两部分:

转移指令地址(BIA)和转移目标地址(BTA)。

当一个静态转移指令第一次执行是,将在BTB中分配一个记录。

这条指令的地址存入BIA段,转移目标地址存入BTA段。

假如BTB是全相联cache,BIA段将作为BTB的相联访问段。

BTB和指令cache的访问是并发的。

当当前PC符合BTB中一条记录的BIA段,就成为BTB的一次命中结果。

这就意味着从指令cache中取出的当前指令是一条转移指令,而且以前执行过。

当BTB命中时,命中的记录的BTA段就被访问并作为下一条指令的地址,如果这条转移指令被预测会转移。

(如图4-5)

图4-5使用转移目标缓冲进行转移目标推测

在取指令步骤通过用转移指令地址访问BTB检索出转移目标地址,推测的转移地址在下一个周期已经准备好用作新的要取指令的地址,如果预测这条指令会发生转移。

如果这条转移指令被预测会发生转移而且这个预测确认是正确的,则转移指令在取指令步骤中就已经有效地执行了,因此也没有转移等待。

而转移指令的非预测执行仍然需要,以便确认预测执行的结果。

转移指令仍然会从指令cache中取出执行。

由此得出的目标地址和转移条件和推测的值相比较。

如果相同,说明预测是正确的;

否则,说明发生了误预测并应当开始恢复工作。

非预测执行的结果也被用来更新BTB的内容,如BTA段的值。

要进行转移条件预测有很多种方法。

最简单的形式就是将取指硬件设计成倾向于不转移的情况,也就是,总是预测不发生转移。

每当遇到一条转移指令,取指令步骤将按其决定继续向下取指令而没有停滞。

这种最小转移预测策略很容易实现但是却不很有效。

例如,很多的用于循环的转移指令,在循环时大部分情况是要发生转移的。

另一种转移预测策略要求软件支持并要求ISA改造。

例如,在转移指令格式中分配一个附加位,这一位是由编译器设定的。

这个位是用来给硬件一个提示,根据这一位的值提示硬件应当倾向于预测发生转移还是不发生。

编译器可以使用转移指令类型和上下文信息决定这一位的最近似的值。

这就使得每一条静态转移指令都有自己特定的预测。

然而,这种预测是静态的,也就是说对于所有动态执行过程中的同一个转移都会做出相同的预测。

这种静态软件预测技术被应用于MotorolaM88110中。

一种更激进和动态的预测策略是基于转移目标地址的偏移量做出预测的。

这种预测策略首先计算转移指令和转移目标地址之间的相对偏移量。

正偏移量将使得硬件预测不转移,负偏移量将使得硬件预测发生转移,以为负的偏移量更像是一条循环指令。

在这种基于偏移量的转移预测技术被用于最初的IBMRS/6000的设计中,并也被很多其他的计算机所采用。

在当代的超标量计算机中最常用的转移条件预测技术是基于转移指令执行历史来进行预测的。

基于历史的转移预测是基于转移指令以前执行的方向来预测转移指令的方向是发生转移(T)还是不发生(N)的。

这里作出了一个假设,那就是静态转移指令以前执行的方向的历史信息是对将来执行可能发生的方向的有力提示。

这种转移预测的设计应当决定跟踪多少执行历史和根据观察到的执行历史应当做出什么样的预测。

一种基于历史的转移方向预测算法能够用一个有限状态机(FSM)来描述,如图4-6。

其中n个状态变量代表了前n次执行的方向。

因此,每一个状态代表一种特定的历史样式,它形式上是T和N的一个序列。

输出逻辑根据FSM的当前状态产生一种预测。

本质上说,预测就是根据前n次执行结果所作出的。

当一个被预测的转移指令最后执行时,就产生了一个实际的输出,它又被用作FSM的一输入来触发一次状态转换。

产生下一个状态的逻辑是微不足道的,它只要简单的将状态变量放到一个记录着该转移指令前n次执行结果的移位寄存器中就可以了。

图4-6基于历史的转移方向预测机的FSM模型

图4-7(a)中是两位转移预测机的FSM表。

所谓两位转移预测,就是使用了两位历史信息表示前2次的执行结果。

两个历史位组成了FSM的状态变量。

预测机有4种状态:

NN、NT、TT和TN,分别为上两次执行的结果。

可以指定状态NN为初始状态。

每个状态有一个T或者N的输出值,代表在这个状态下将会作出的预测结果。

当一条转移指令执行时,实际的执行方向将被当作FSM的输入,并发生状态转移来更新转移历史以便进行下一次预测。

在图4-7(a)使用的算法是倾向于预测发生转移的,注意到4个状态中有3个预测发生转移。

此算法会预测总是N(在状态NN下)或者总是T(在状态TT下)。

只要前两次执行中至少一次发生转移,算法就会预测发生转移。

只有在两次连续的N的状态预测结果才是不发生转移。

这就说明了一种转移方向预测算法,当然这种基于历史的预测机有很多设计可能,而且研究者已经对于很多种算法进行了评价。

基于历史的转移方向预测机需要一个每个记录包括历史域的BTB的支持。

这个域的宽度,也就是其位数,是由要跟踪的历史的位数决定的。

当PC地址在BTB中找到时,除了要预测转移目标地址外,还要检索历史位。

这些历史位被填充到实现状态转移和输出函数FSM的逻辑单元中。

检索到的历史位用作FSM的状态变量。

基于

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1