用最近条目队列补充分支目标缓冲器的方法和系统技术方案

技术编号:2859708 阅读:180 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种提供了用最近条目队列补充分支目标缓冲器的能力的方法和装置。最近条目队列阻止为另外一个条目不必要地将多条目的有用分支目标缓冲器数据的移除。另外,最近条目队列检测何时分支目标缓冲器的启动迟延正在阻止其按设计协助微处理器流水线,并从而在需要的情况下延迟流水线,因而启动时分支目标缓冲器的迟延能被克服。最后,最近条目队列提供了对在紧循环模式中被访问的分支目标缓冲器条目的快速访问,在这种紧循环模式中单独的分支目标缓冲器的吞吐量不能跟上微处理器执行流水线的吞吐量。通过使用最近条目队列,被修改的分支目标缓冲器能够以执行流水线的速度处理信息,从而加速执行流水线。

【技术实现步骤摘要】

本专利技术涉及计算机处理系统,并特别涉及通过一队列结构来控制条目插入到分支目标缓冲器(Branch Target Buffer)内,该队列结构也用于在计算机处理系统中在异步的分支预测和指令译码之间产生同步以克服启动迟延效应。
技术介绍
微处理器的基本流水线微体系结构每次处理一条指令。一条指令的基本数据流遵循下列步骤指令取、译码、地址计算、数据读、执行和写回。流水线或管道中的每个阶段按顺序发生,因此,除非一个给定阶段前面的那个阶段进行,否则该给定阶段不会进行。为了对给定的基(base)获得最高的性能,每个周期将有一条指令进入流水线。每当流水线必须被延迟或清除,这都会增加迟延,而该迟延又能通过微处理器执行一个任务的性能监视到。尽管有很多复杂细节可以添加到这种管道设计中,它却建立了与所述本专利技术相关的分支预测理论的基础。在指令之间有许多相关性,这阻止了在每一循环新指令都进入管道的最优情形。这些相关性向管道增加了迟延。一种类别的造成迟延的因素涉及分支。当分支被译码时,它可以“被采取”也可以“不被采取”。分支是这样一种指令,它可以或者进行到下一个相继的指令,这是“不被采取”,或者分支到另一个指令地址,就是“被采取”,并在一个不同的代码序列上执行。在译码期间,分支被检测,并且必须等待被解决,以便知道指令流正确的行进方向。由于等待可能多个流水线阶段以便分支解决行进的方向,迟延被加进流水线。为了克服等待分支解决的迟延,可预测分支的方向,从而流水线沿着“被采取”或者“不被采取”的路径开始译码。在分支解决时,将被预测的方向和分支实际将采取的方向相比较。如果实际方向和预测的方向相同,那么在这种情况下,等待分支解决的迟延就被从流水线中去出。如果实际方向和预测的方向不同,则译码是沿着不正确路径行进的,并且该路径上位于不正确预测分支方向的指令后面的所有指令都必须被清出流水线,并且该流水线必须在正确的指令地址处重新开始,以开始对给定分支的实际路径进行译码。由于清空流水线和从头开始所涉及的控制,会存在一个与不正确的预测相关的惩罚,并且与在更进一步译码之前简单地等待分支去解决相比,迟延被加入流水线。通过拥有适当高比率的正确猜测路径,由于猜测出正确的方向从流水线中消除迟延的能力胜过了由于不正确地猜测方向增加到流水线中的迟延。为了提高与分支预测相关的预测的准确度,可实现一个分支历史表(BHT),它允许根据分支以前行进的方向的过去行为来猜测该分支的方向。如果分支总是被采取,如子程序返回的情形那样,那么该分支将总被预测为被采取。IF/THEN/ELSE结构在它们的行为中变得更复杂。一分支可能总是“被采取”,有时“被采取”而有时“不被采取”,或者总是“不被采取”。根据一动态分支预测器的实现,将确定分支历史表预测分支的方向做得如何好。当分支被预测为被采取时,分支的目标将被译码。通过向指令高速缓存做出对于作为给定分支目标的地址的取请求来获得该分支目标。如果目标地址在第一级高速缓存中被找到,则向高速缓存做出的取请求需要最少的迟延。如果在第一级高速缓存中没有命中,则将继续在计算机的存储器和存储设备的整个层级结构中索取,直到得到目标分支的指令文本。因此,任何给定的在译码时检测到的被采取的分支有和它相关的最小迟延,该迟延被添加到流水线处理给定指令所需要的时间量。当取请求在存储器层级结构的第一级中没有成功时,流水线所要付出的迟延惩罚会随着取请求直到命中为止所必须沿该层级结构行进的深度而变得越来越高。为了隐藏与取分支目标相关的迟延的一部分或全部,一分支目标缓冲器(BTB)可以和一个分支历史表并行地工作。给定一个目前正在从中译码的当前地址,分支目标缓冲器可以从这一点向前寻找包含一个分支的下一个指令地址。随着把分支的指令地址存入分支目标缓冲器,分支的目标也与每个条目一起被存储。由于目标已经被存储,目标的地址在分支被译码之前就可取到。通过在译码之前取目标地址,和高速缓存未命中相关的迟延将被最小化到在取请求和分支目标的译码之间所耗费的时间的程度。在设计分支目标缓冲器时,可以被存储于其中的分支的数量是确定这种结构有多大益处的方程式的一部分。一般来说,分支目标缓冲器是由处理器中一指令地址的一部分所索引的,并且标记位被存储在分支目标缓冲器中,从而标志位必须匹配没有用来索引的剩下的地址位。为了提高分支目标缓冲器的效率,可以使创建的分支目标缓冲器具有大于1的结合性(associativity)。通过生成大于1的结合性,对于一给定的索引可以有多个分支/目标对被存入该阵列。为了确定哪个为正确的条目(如果有这样的条目的话),使用标志位来从为一给定索引存储的多个条目中选择至多一个条目。当分支在译码时被确定并且没有被异步的分支目标缓冲器/分支历史表机制提前发现时,这个分支被判定为一个意外分支。意外分支是没有被动态分支预测逻辑在译码之前发现的任何分支。一个分支没有被分支预测逻辑预测到是因为它没有被在分支目标缓冲器/分支历史表中找到。一个分支没有被在分支目标缓冲器/分支历史表找到有两个原因。如果一个分支没有被装入分支目标缓冲器/分支历史表,就不能找到它,因为没有地方找到它。第二种情况是当一个分支存在于分支目标缓冲器/分支历史表中,然而,没有出现充足的处理时间来使搜索在它被译码之前找到它。一般来说,分支预测搜索算法可以有很高的吞吐量,然而,相对于指令译码的时间段,开始一搜索所要求的迟延时间可能相当长,比在流水线中启动指令更长。每当在译码时检测到一个分支,如果该分支是个意外分支,则在随后的时间知道它的目标和方向后,可将它写入分支目标缓冲器和分支历史表。在把该条目写入表中后,下次在所指定的分支的区域搜索时就能很快地找到该条目。当一个分支存在于分支目标缓冲器/分支历史表中,但迟延效应使该分支不能被及时找到,这个分支就被当作一个意外分支,因为这个分支和没有在表中的分支没有什么区别。在确定分支的目标和方向后,它将被写入表中。把分支输入表中的一个标准方法是把其放入到最近最少使用的给定列中(结合性);从而,那些最近被访问的分支就会保留在表中。写之前不读取列以检查重复,因为大量的除了正常操作之外不得不执行的读操作将会足以导致额外的迟延,这种迟延进一步阻止了分支被发现进而被预测;因此这将增加在一系列的代码中意外分支的数量。增加意外分支的数量导致性能降低。为了绕开提高的迟延问题,设计了一个最近条目队列来跟踪进入分支目标缓冲器中的最近条目。通过这个队列的过程,不需要从分支目标缓冲器的额外读操作。此外,这种队列的尺寸与一重复阵列或该给定阵列上的一额外读端口相比在尺寸上有很大不同。第二个全尺寸阵列或额外读端口的空间可被认为是这样的,即这种操作所使用的区域可以更好地被使用于其他地方,以获得更高的性能增益。通过增加一个小的最近条目队列,将该区域保持适中,而同时在一队列和额外读端口之间的性能差别是最小的,如果不是前者更好的话。在一个分支条目有多个实例的情况下,分支目标缓冲器遇到的一个问题是该分支条目的多个实例可能基于代码循环模式以很高的频率被写入分支目标缓冲器(BTB)中。然而,这却通过为另一个分支的重复条目移除有效条目,妨碍了分支目标缓冲器的性能。因此,显然需要一种防止分支目标缓冲器中一个分支条目的多个实例本文档来自技高网...

【技术保护点】
一种运行具有带有分支目标缓冲器的流水线处理器的计算机的方法,包括生成与分支目标缓冲器并行的最近条目队列。

【技术特征摘要】
US 2004-3-9 10/796,4261.一种运行具有带有分支目标缓冲器的流水线处理器的计算机的方法,包括生成与分支目标缓冲器并行的最近条目队列。2.如权利要求1所述的方法,其中最近条目队列包括一组分支目标缓冲器条目。3.如权利要求2所述的方法,包括把最近条目队列设置为先进先出队列。4.如权利要求3所述的方法,其中最近条目队列对于读取是全相联的(full associative)。5.如权利要求1所述的方法,包括把将被写入分支目标缓冲器的条目和最近条目队列中的有效条目相比较。6.如权利要求5所述的方法,其包括阻止与最近条目队列中的条目相匹配的条目被写入分支目标缓冲器。7.如权利要求5所述的方法,其中当一条目被写入分支目标缓冲器时,它也被写入最近条目队列。8.如权利要求1所述的方法,其包括在分支目标缓冲器中搜索下一个被预测的分支,并在分支目标缓冲器正在被索引时评估最近条目队列。9.如权利要求8所述的方法,其中最近条目队列保持高达分支目标缓冲器的结合性的深度,从而当分支目标缓冲器被索引时,最近条目队列位置被输入到比较逻辑。10.如权利要求8所述的方法,包括对于匹配分支与在分支目标缓冲器输出中搜索并行地搜索最近条目队列的深度。11.如权利要求10所述的方法,包括生成命中检测逻辑以支持分支目标缓冲器的结合性。12.如权利要求8所述的方法,包括使用最近条目队列的子集作为分支目标缓冲器的子集。13.如权利要求12所述的方法,包括快速索引最近遇到的分支。14.如权利要求12所述的方法,包括搜索整个最近条目队列以阻止重复的分支目标缓冲器写入。15.如权利要求1所述的方法,包括搜索最近条目队列以检测循环分支。16.如权利要求15所述的方法,包括比较分支以确定其是否最近被写入队列。17.如权利要求16所述的方法,包括确定分支是否是向后分支,借此检测到循环分支。18.如权利要求17所述的方法,包括首先检测到没有被预测的循环分支,然后延迟译码。19.如权利要求18所述的方法,包括延迟译码直到一固定数量的周期。20.如权利要求19所述的方法,包括延迟译码直到分支目标缓冲器预测到一分支。21.如权利要求1所述的方法,其包括将对分支目标缓冲器的写入存放到最近条目队列。22.如权利要求21所述的方法,包括迟延写入和把写入放入最近条目队列。23.如权利要求22所述的方法,包括当其分支目标缓冲器写入暂时存放在最近条目队列中时检测一预测的分支。24.一种具有包括分支目标缓冲器的流水线处理器的计算机,其包括与分支目标缓冲器并行的最近条目队列。25.如权利要求24所述的计算机,其中最近条目队列包括一组分支目标缓冲器条目。26.如权利要求25所述的计算机,其中最近条目队列是先进先出队列。27.如权利要求26所述的计...

【专利技术属性】
技术研发人员:BR普拉斯克TR普扎克AM哈特斯泰因
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1