预测间接分支目标地址的方法、装置和编译器制造方法及图纸

技术编号:2870213 阅读:285 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种用于预测程序的分支目标的方法、处理器和编译器。在程序中提供一个提示操作来提示关于即将出现的间接分支的分支预测。可以用一个包含各个间接分支的分支目标的表来改善间接分支的预测精度。分支目标是根据从提示操作中导出的关键码信息确定的。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种用于在动态分支预测中预测分支地址的方法、处理器和编译器。
技术介绍
随着高性能超级标量处理器的发布速率(issue rate)和流水线深度的增加,所发布的(issued)推测工作的量也增加。因为在分支失败预测的情况下必须抛弃预测工作,深度流水线的处理器必须采用精确的分支预测器(predictors)来有效地发挥它们的性能潜力。程序的分支可以分类为有条件的或无条件的分支和直接的或间接的分支。有条件分支有条件地将指令流重定向到目标,而无条件分支则总是将指令流重定向到目标。直接分支有一个静态规定的目标,它指向程序中单一的位置,而间接分支则有一个动态规定的目标,它可能指向程序中任何数量的位置。由于现代命令式程序设计语言,间接分支可以划分成四种类型。这四种类型是功能返回(function returns)、开关指令(switches)产生的表跳转、虚拟功能调用(function calls)和通过功能指针的功能调用。动态分支预测普遍被用来在出现分支的情况下向指令流水线提供稳定的指令流。为此,处理其中的取指(fetch)阶段必须检测分支、预测分支方向(采取或不采取)并提供分支目标。通常用分支目标缓冲器(BTB)来提供分支目标。每当解析出一个分支,即知道其方向和分支目标时,就将其分支目标放入BTB,BTB实质上是一个按指令地址索引化的分支目标的高速缓存。在流水线的取指阶段,用与用于访问指令高速缓存的相同的地址访问BTB。如果BTB命中,则从指令高速缓存中提取的指令必定是个分支,且由BTB返回的分支目标就被预测是该指令的目标。这个预测对目标地址是静态的直接分支--即具有由直接操作数规定的分支--来说是正确的。然而,BTB做出的目标预测对于分支目标地址是动态的间接分支即由寄存器规定的目标的分支来说经常是不正确的。尽管间接分支比直接分支不常使用,但间接分支很重要,因为他们更难以预测。模拟结果显示,对间接分支的更好的预测能显著地提高准确性。Po-Yung Chang等人在“Target Prediction for IndirectJumps”(间接跳转的目标预测)(第24届计算机体系结构年会论文集,美国丹佛,1997年6月)和Karen Driesen等人在“AccurateIndirect Branch Prediction”(准确的间接分支预测)(第25届计算机体系结构年会论文集,西班牙巴塞罗那,1998年6月)中提出了用于间接预测的目标预测器。这些预测器根据分支的地址和导向分支的执行路径提供目标,而BTB则仅仅根据分支的地址提供目标。这些预测器背后的思想是利用导向间接分支的路径与其目标之间存在的相关性。这个技术的后果是要为每个间接分支存储许多目标。此外,美国专利US5,857,104披露了综合了编译器的动态分支预测(CS-DBP)过程,其中编译器动态地将计算值传送给分支预测器,使分支预测器能改进其预测。然而,该已知的CS-DBP过程提供的是一种概率方法,只预测分支方向或分支方向相关联的值。因此,本专利技术的一个目的是通过一种用于分支预测的方法、处理器和编译器,利用它们能提高间接分支的预测精确性。该目的由权利要求1中所定义的预测方法、权利要求11中所定义的处理器以及权利要求14中所定义的编译器实现。按照本专利技术,提供一个操作来提示关于将要出现的间接分支的分支预测,其中可以或者用一个间接分支的分支目标表或者用一个编译器确定来改善间接分支的预测精确性。特别地,向硬件提供关于将要出现的间接分支的提示,其中导出与分支的目标有关的关键码(key)信息。这个技术的应用显著地改善间接分支的目标预测精确性,但第一次执行某个方向上的分支除外。因此,如果有足够大的分支目标缓冲器或表,几乎所有的目标预测都导致一个正确的目标。编译器对预测由功能指针产生的间接分支是有用的。在这种情况下,能及时得到由编译器确定的分支目标。关键码信息可以从产生分支的开关(switch)语句的开关值导出。此外,关键码信息还可以从产生分支的虚拟功能调用的虚拟功能表的地址导出。事实上几乎所有间接分支都是由功能返回和开关语句产生的,因此能提供有效的和精确的分支预测。如果将处理器(例如VLIW处理器)的加载延迟选择得等于前段流水线阶段的段数,则可以与加载操作并行地调度提示操作。最好在程序的预定位置提供提示操作,该预定位置被选择成使得当对应的分支指令位于指令执行周期的取指阶段时提示操作正是指令执行周期的一个执行阶段。这样,当间接分支在取指时提示操作将到达处理器的执行阶段。由此,就能给出对取指阶段中的分支预测的直接反馈。可以将关键码信息与分支指令或包含提示操作的指令的地址混编(hash),以获得用来访问分支目标表的变址(index)。分支目标表可以是一个包含对间接分支的分支目标的间接分支目标缓冲器。在分支目标表中存储的分支目标可以是跳转表和/或虚拟功能表的最近使用的表目。由此,在访问数据高速缓存的时间长的情况下能获得时间优势。处理器的访问装置可以包含用于将键码信息与处理器的执行阶段或取指阶段的地址混编的混编装置。由此,就能简单而迅速地生成用来访问间接分支目标缓冲器的变址。以下将结合各附图更详细地说明本专利技术的最佳实施例。附图说明图1表示按照最佳实施例的处理器的示意框图;图2表示按照最佳实施例的分支预测器的示意框图;图3表示包含一个提示操作的开关语句的一个实现;图4表示包含一个提示操作的虚拟功能调用的一个实现;图5表示包含提示操作的加载操作和间接分支操作的流水线执行。现在将如图1中所示的VLIW(甚长指令字)处理器的体系结构为基础说明最佳实施例。从图1中可见,分支解析功能50在处理器的执行阶段被提供,并被安排得向程序计数器生成阶段的多路转换器10提供正确的分支目标。多路转换器10具有由下一个程序计数器功能70生成的下一个顺序程序计数器以及由分支预测器100生成的预测分支目标。此外,可以将中断向量或其它例外向量加到多路转换器10,后者然后输出一个要被提供给取指阶段的指令高速缓冲存储器20的经选择的程序计数器。将当前程序计数器进一步提供到分支预测器100。根据当前程序计数器,指令高速缓存20输出一个压缩指令,压缩指令被提供到解压阶段的解压器300,以生成当前指令字。注意,在VLIW处理器中不一定非要提供解压阶段,仅当要使用压缩指令时才提供。该指令字然后被提供到译码阶段的指令译码器40,VLIW指令在那里被解码后提供分支解析单元50。此外,执行阶段包含一个更新队列单元60,用于更新在分支预测器100中提供的分支目标缓冲器。这个更新是根据分支预测器100的预测器更新信息输出而执行的。此外,分支预测器100向执行阶段的分支解析单元50输出预测采取(predict taken)信息。按照最佳实施例,将一个提示操作加入或纳入一个指令中,以向处理器硬件传送关于即将出现的间接分支的键码信息。然后,当该间接分支被提取并且其目标要被预测时,在执行阶段就能得到该提示操作,使得键码信息能被提供到分支预测器100。如图1中所示,解码的指令的一部分被提供到分支预测器100,如从解码的指令指向分支预测器100的输入端的箭头所表示的那样。这样,分支预测器100就能注意到有一个对间接本文档来自技高网...

【技术保护点】
一种用于预测程序的分支目标的方法,所述方法包含下述步骤:    a)提供一个包含多个分支目标的分支目标表(104);    b)用所述程序中的一个提示操作来导出关键码信息;    c)根据所述关键码信息从所述分支目标表(104)中选择所述分支目标。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:J霍格尔布鲁格
申请(专利权)人:皇家菲利浦电子有限公司
类型:发明
国别省市:NL[荷兰]

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

1