CN102156636B - 一种实现值关联间接跳转预测的装置 - Google Patents
一种实现值关联间接跳转预测的装置 Download PDFInfo
- Publication number
- CN102156636B CN102156636B CN2011101083027A CN201110108302A CN102156636B CN 102156636 B CN102156636 B CN 102156636B CN 2011101083027 A CN2011101083027 A CN 2011101083027A CN 201110108302 A CN201110108302 A CN 201110108302A CN 102156636 B CN102156636 B CN 102156636B
- Authority
- CN
- China
- Prior art keywords
- value
- instruction
- indirect jump
- classification
- historical pattern
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000008569 process Effects 0.000 claims description 32
- 238000006073 displacement reaction Methods 0.000 claims description 15
- 230000008878 coupling Effects 0.000 claims description 5
- 238000010168 coupling process Methods 0.000 claims description 5
- 238000005859 coupling reaction Methods 0.000 claims description 5
- 238000002474 experimental method Methods 0.000 claims description 4
- 238000000151 deposition Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 5
- 238000000034 method Methods 0.000 description 52
- 230000006870 function Effects 0.000 description 19
- 238000012546 transfer Methods 0.000 description 16
- 230000015572 biosynthetic process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
Abstract
本发明披露了一种实现值关联间接跳转预测的装置,可有效地提高预测准确率,包括:指令取指模块将取指到的引导指令输出给引导指令发射模块;引导指令发射模块在引导指令的发射阶段从寄存器堆读取间接跳转指令所对应的关联数据值,并向分类移位器输出携带该关联数据值的分类移位命令;分类移位器将据分类移位命令对关联数据值移位的关联信息输出给值历史模式寄存器;值历史模式寄存器将前一值历史模式移位,将移位的值历史模式与关联信息组合形成更新的值历史模式;目标地址缓冲区根据间接跳转指令的PC值和关联数据值作为索引,保存间接跳转指令所对应的目标地址。
Description
技术领域
本发明属于微处理器设计和应用微处理器的系统设计领域,尤其涉及现代处理器实现值关联间接跳转预测的装置。
背景技术
在现代处理器中,推测式执行是挖掘指令级并行性的重要手段之一。为了提高推测式执行的效率,减少错误的推测执行,准确的转移预测技术是至关重要的。
在现代的宽发射、深度流水的超标量处理器体系结构中,采用转移预测的主要目的是为了提高CPU的运算速度。推测执行是依托于转移预测基础之上的,即如果CPU能够在流水线执行的前条指令结果出来之前能够预测到是否程序转移,就可以提前执行相应的指令,由此可避免处理器中流水线的空闲等待,从而提高CPU的运行速度。另一方面,如果前一指令结果出来后证明转移预测错误,则必须将已装入流水线执行的指令和结果全部清除,然后再将正确的指令装入流水线重新处理,从而降低了处理器性能。
由此可见,准确的转移指令预测技术能够为处理器提供连续的指令流输入,弥补了在转移指令跳转方向和跳转目标地址尚未计算出来时处理器无法继续执行而造成的处理器时钟周期的浪费;而一旦发生转移指令误预测,处理器推测执行的错误步骤上的几十条甚至上百条指令将被丢弃,所有推测执行的工作将被取消,又会造成处理器时钟周期的浪费。因此,提高转移指令预测准确度是转移指令预测设计和应用的关键目标,对现代处理器挖掘指令级并行性具有重要意义。
转移指令根据转移的目标特性可以分为有条件转移与无条件转移,或者分为直接转移与间接转移。其中有条件直接转移(简称“条件转移”)和无条件间接转移(简称“间接跳转”)是两类最重要的转移指令。条件转移指 令通常与转移历史具有较强的关联性,因此基于历史的条件转移预测器能够达到较高的预测准确率;而间接跳转指令因具有多个目标地址而难以准确预测。
间接跳转指令被广泛应用于现代面向对象程序和虚拟机解释器程序中,由此而引发了大量间接跳转预测失效。据统计,约45%的转移预测失效是由间接跳转指令所引起的,因此,间接跳转指令的预测失效问题是影响现代处理器性能的重要因素之一,如何设计高效准确的间接跳转预测器是目前处理器设计中面临的一个难题。
在现有的间接跳转预测器中,关联预测器是目前使用最为广泛的一类预测器。为了提高关联预测器的预测准确率,先后有基于历史、基于数据值和基于提前计算等多种间接跳转预测器被提出。其中,基于历史的间接跳转预测器使用跳转方向历史和执行路径历史等信息,指导间接跳转目标地址的预测;基于数据值的间接跳转预测器使用某些数据值指导间接跳转预测;而基于提前计算的间接跳转预测器则使用特殊硬件对虚函数调用这一类特殊的间接跳转指令提前计算其跳转目标地址。
目前,最新研究表明,由于间接跳转指令与某些数据值必然存在较强的关联性,因此基于数据值的间接跳转预测器相对来说通常能够取得较高的预测准确率。尽管如此,现有的基于数据值的间接跳转预测器存在两个难以解决的问题:首先是寻找有效的关联数据值是非常困难的;其次,这些关联数据值很可能在间接跳转预测时是无法得到的。这两个问题导致了现有的基于数据值的间接跳转预测器难以取得理想的预测结果。
发明内容
本发明所要解决的技术问题是提供一种实现值关联间接跳转预测的装置,能够根据间接跳转指令的有效关联信息准确地进行间接跳转预测。
为了解决上述技术问题,本发明提供了一种在处理器运行可执行程序过程中实现值关联间接跳转预测的装置,包括一寄存器堆、一分类移位器、一值历史模式寄存器、一目标地址缓冲区、一指令取指模块以及一引导指令发射模块,其中:
指令取指模块,用于在指令的取指时刻将接收的引导指令输出给引导指令发射模块,该引导指令中的信息包含:用于指示本引导指令与相应的间接跳转指令之间距离的距离值,用于标识间接跳转指令所对应的关联数据值相应的寄存器编号,用于表示引导指令所对应的间接跳转指令相应的子程序结构的类别;
引导指令发射模块,用于在引导指令的发射阶段根据该引导指令从寄存器堆选取执行次数多于次数阈值和预测失效率高于失效率阈值的间接跳转指令作为难预测指令,将难预测指令对应的子程序结构和子程序结构中相应的参数值识别为间接跳转指令的子程序结构和关联数据值;并向分类移位器输出携带该关联数据值的分类移位命令;
寄存器堆,用于通过多个寄存器存放间接跳转指令所对应的关联数据值;
分类移位器,用于根据分类移位命令对关联数据值中的关联信息进行移位,并将移位的关联信息输出给值历史模式寄存器;
值历史模式寄存器,用于将前一值历史模式进行移位,将移位的值历史模式与分类移位器输出的关联信息组合形成更新的值历史模式;
目标地址缓冲区,用于根据所述间接跳转指令的程序计数器PC值和值历史模式作为索引,保存间接跳转指令所对应的目标地址。
进一步地,
引导指令发射模块根据引导指令所标识的寄存器编号,从寄存器堆中读取相应的寄存器中的值,并将其作为关联数据值与该引导指令所表示的间接跳转指令的类别一起携带在分类移位命令中,输出给分类移位器;
分类移位器根据该分类移位命令中携带的间接跳转指令的类别,将该命令中携带的关联数据值中的关联信息移位到值历史第一组合位置,并输出移位的关联信息;
值历史模式寄存器将前一值历史模式移位到值历史第二组合位置,将移位的值历史模式与分类移位器输出的关联信息组合形成更新的值历史模式。
进一步地,
分类移位器将收集的关联数据值中的关联信息移位到值历史第一组合位 置上,或者值历史模式寄存器将值历史模式寄存器中的前一值历史移位到值历史第二组合位置,均采用由实验确定的最佳固定移位位数。
进一步地,
指令取指模块还根据所述间接跳转指令的程序计数器PC值和值历史模式寄存器更新的值历史模式预测目标地址缓冲区中保存的目标地址。
进一步地,该装置还包括一过滤表,用于保存难预测指令的PC值;其中:
引导指令发射模块在引导指令的发射阶段还将该引导指令包含的距离值与该引导指令的PC值之和作为标签,若查询过滤表中没有匹配的项,则将该标签作为该难预测指令的PC值填入过滤表新分配的项中;
指令取指模块在间接跳转指令的取指阶段将该间接跳转指令的PC值作为标签,若查询该过滤表中有与该标签匹配的项,则标记该间接跳转指令是难预测指令;针对该难预测指令将从值历史模式寄存器读取的值历史模式与该难预测指令的PC值相异或,并以异或的结果作为索引读取目标地址缓冲区中的目标地址。
通过本发明的装置,编译器在编译时刻识别的典型子程序结构及其有效的关联数据值,并通过插入引导指令传递给处理器,使得处理器在执行程序过程中根据动态收集的多个关联数据值形成值历史模式,并作为有效的关联信息预测间接跳转指令,因而可有效地提高间接跳转指令的预测准确率,从而可提高处理器及其应用整体的系统性能。
将本发明的装置应用于现代超标量处理器中,实验结果表明能够有效地提高应用处理器系统的整体性能。
附图说明
图1是本发明的实现值关联间接跳转预测的方法实施例流程图;
图2是图1所示的方法实施例中编译器在第二次编译中识别关联数据值 实施例的流程图;
图3是图1所示的方法实施例中处理器根据引导指令收集的关联数据值形成值历史模式并预测间接跳转指令的方法实施例的流程图;
图4是在图3所示的方法实施例中使用的值关联间接跳转预测装置实施例的结构框图;
图5是对图3所示的方法实施例流程的操作进一步细述的流程;
图6是图4所示的装置实施例中分类移位器2对关联数据值进行分类移位的示意图;
图7是图4所示的装置实施例中值历史模式寄存器3进行值历史模式更新的示意图;
图8是说明本发明方法及装置的预测结果的评测实验结果数据示意图。
具体实施方式
下面结合附图和优选实施例对本发明的技术方案进行详细地说明。以下例举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。
本发明采用软硬件协同的技术方案,提出了一种基于编译指导的值关联间接跳转预测的方法及系统,其核心思想是编译器通过对典型的子程序结构中所包含的间接跳转指令的特点分析,找到不同的子程序结构中的间接跳转指令应该关联到的不同关联数据值,并通过在程序中插入引导指令对关联数据值进行标记,以指导处理器在执行可执行程序时进行的间接跳转预测。
本发明基于上述思想设计了一种根据子程序结构自动为难预测的间接跳转指令识别不同关联值的编译方法,并设计了一种能将编译时识别的关联数据值传递给处理器的引导指令。编译器根据子程序结构识别关联值后显式地插入引导指令,以便将编译时刻识别的关联信息传递给处理器。
如图1所示,是本发明提供的实现值关联间接跳转预测的方法一实施例的流程,包括编译器在编译时刻执行的流程和处理器在程序运行时刻执行的流程,分别包括如下步骤:
10:编译器通过首次编译将源程序编译成可执行程序;
20:编译器对处理器执行可执行程序过程进行剖视,获取剖视信息;
编译器对处理器在执行可执行程序过程中的间接跳转指令进行剖视,搜集程序间接跳转指令在典型输入集情况下的剖视(profiling)信息,主要包括间接跳转指令的执行次数、动态跳转目标数量以及目标地址预测失效次数中的一种或多种。
30:编译器根据剖视信息进行二次编译,为间接跳转指令识别源程序中的子程序结构及其关联信息,并在编译过程中插入引导指令;
其中,编译器识别源程序中的间接跳转指令所对应的子程序结构,主要包括虚函数调用、Switch-case语句、函数指针调用中的一种或多种;根据相应的子程序结构识别与间接跳转指令跳转目标具有较强关联性的信息;通过过程间控制流分析,将引导指令显式插入到程序中,以标识该间接跳转指令所对应的关联信息。
本发明为实现值关联间接跳转预测而设置的“引导指令”,是通过扩展指令系统而添加的一种特殊指令(是使用处理器的用户所看不到的指令),该指令携带以下三类信息:
第一类信息用于指示本引导指令与相应的间接跳转指令的距离,表示这种距离的数值可以为正值或者负值,它由引导指令和间接跳转指令的相对顺序决定;
第二类信息则是标识间接跳转指令所对应的关联信息相应的寄存器编号;
第三类信息是表示引导指令所对应的间接跳转指令的类别,即表示该间接跳转指令相应的子程序结构的类别。
以上三类信息均是由编码器通过直接编码而包含到引导指令之中;在由处理器执行程序过程中对引导指令进行译码时即可获得这三类信息。
引导指令的具体格式可以根据处理器的指令系统的特点而定制。
40:再次生成可执行程序;
50:处理器在执行可执行程序过程中根据引导指令动态收集关联信息,并形成值历史模式;
值历史模式是一种将多个关联数据值中相应的关联信息组合形成的复合体信息。它借鉴了基于转移历史的间接跳转预测器的思想,但它与基于转移历史的间接跳转预测器所不同的是,其形成历史模式使用的是关联数据值中的信息而不是使用转移历史。
假设间接跳转指令的关联数据值依次为1,2,3,1,2,3,...;若值历史模式由2个关联数据值中各自的关联信息比特组合而成,则该间接跳转指令所对应的值历史为(1,2)、(2,3)、(3,1)、(1,2)、(2,3)、...,其值历史模式为(1,2)、(2,3)、(3,1);若值历史模式由3个关联数据值中各自的关联信息比特组合而成,则该间接跳转指令所对应的值历史为(1,2,3)、(2,3,1)、(3,1,2)、(1,2,3)、...,其值历史模式为(1,2,3)、(2,3,1)、(3,1,2)。值历史模式反映了关联数据值出现的规律,与间接跳转目标地址具有较强的关联性,因此可用于引导间接跳转预测。
60:根据值历史模式对间接跳转指令进行预测。
处理器将根据收集的关联信息所形成的值历史模式作为有效的关联信息对间接跳转指令进行预测。
图1中所示的步骤30,即编译器在进行二次编译过程中,为间接跳转指令识别源程序中的子程序结构及其关联数据值,并将其插入引导指令,具体的流程表示在图2中,包括如下步骤:
301:编译器根据源程序及其典型输入集剖视处理器执行的程序,搜集难预测指令;
编译器根据在剖视过程中获取的剖视信息选取执行次数多于次数阈值和预测失效率高于失效率阈值的间接跳转指令作为“难预测指令”。
302:根据源程序中的子程序结构为每个难预测指令识别关联信息;
编译器在二次编译过程中对那些“难预测指令”进行特殊处理,包括:
(1)识别“难预测指令”对应的子程序结构;
这些子程序结构是一种局部控制流和数据依赖结构,即包括上述虚函数调用、Switch-case语句、函数指针调用中的一种或多种。由于这些子程序结 构携带了源程序级别的控制流和数据流信息,因此能够更清楚地表明哪些数据值与间接跳转指令关联性较强,以及如何使用这些关联性强的信息。
(2)根据相应的子程序结构识别与间接跳转指令跳转目标具有较强关联性的信息;其中:
a、对于虚函数调用,将虚函数表地址中间的一个或多个比特信息识别为形成对应的值历史信息的关联信息。
虚函数调用子程序是一种为实现面向对象程序中“多态性”特征而设计的一种特殊函数调用。该“多态性”是指发出同样的消息被不同类别的对象接收时,有可能导致完全不同的行为,因此虚函数调用目标地址由对象的具体类别动态确定。应用于虚函数调用的间接跳转指令通常需要进行三个过程,即:获取对象地址、获取虚函数表地址以及间接跳转。根据虚函数调用的语义特征,可以发现虚函数表与间接跳转指令具有强烈关联性,并且其对应的值历史信息应该包含虚函数表地址中间的一个或多个比特信息。
b、对于Switch-case语句,将标准化case变量值的低位比特信息识别为形成对应的值历史信息的关联信息。
Switch-case语句是一种根据case变量值动态选择分支路径执行的控制流结构,被广泛用于C/C++/C#/Java等现代高级编程语言中。通常,当分支路径数目大于一定阈值时,编译器会使用间接跳转指令来实现Switch-case语句,否则使用if-else结构来实现。当使用间接跳转指令实现时,其具体过程为首先对case变量进行标准化使其成为从0开始的相邻枚举变量,然后使用标准化case变量值作为索引获得相应目标地址,并使用间接跳转指令跳转到相应分支路径。标准化case变量值与间接跳转指令具有强烈的关联性,并且其对应的值历史模式应包含标准化case变量值的低位比特信息。
c、对于函数指针调用,将函数指针值中非对齐开始的一个或多个比特识别为形成对应的值历史信息的关联信息。
函数指针调用主要用于根据函数指针内容跳转到相应的目标地址。故函数指针值与间接跳转指令具有强烈关联性,并且其对应的值历史模式应该包含函数值指针值中非对齐开始的一个或多个比特信息。
303:在源程序的控制流路径上显式地插入引导指令,以标识关联信息;
编译器通过对源程序的控制流进行分析,在该控制流的路径上显式地插入引导指令,以标识相应的间接跳转指令所对应的形成值历史信息的关联信息。
编译器在每一个控制路径上插入引导指令,可跟踪多条控制流路径,所以每个间接跳转指令可能会对应多个引导指令。
304:根据程序过程间数据依赖关系对引导指令进行调度,以增大引导指令和间接跳转指令间的距离。
可执行程序中的指令之间是存在数据依赖关系的,譬如一个寄存器中的值依赖于另外一个寄存器的值,或依赖于对多个寄存器的值运算的结果,或依赖于一个标号地址中的值。编译器对引导指令的调度主要是根据指令之间的这种数据依赖关系,在不影响程序正确性的前提下动态调度引导指令以及引导指令的前驱指令和后继指令,以增大引导指令和间接跳转指令之间的距离,从而使得处理器能够及时通过引导指令传递的关联数据值对间接跳转指令目标地址进行预测。
具体的指令调度算法是基于传统“表调度”算法(参考《Compilers:Principles,Techniques,&Tools.second Edition》中10.3.2节)实现的,包含如下步骤:
●根据程序中指令之间的数据依赖关系建立数据依赖图;
●在数据依赖图中标记引导指令,以及引导指令所依赖的所有其它指令;
●修改这些被标记指令的调度优先级,使得它们的优先级最高,以便尽可能早地完成这些被标记指令的调度。
通过修改调度优先级的方法,引导指令就可以尽早完成调度,在引导指令和间接跳转指令之间留下尽可能多的指令,从而增大了引导指令和间接跳转指令之间的距离。
在图1所示的方法实施例的步骤50中,处理器根据引导指令动态收集关 联信息,并形成值历史模式,以及根据形成的值历史模式预测间接跳转指令,其方法实施例的具体流程表示在图3中,包括如下步骤:
510:在引导指令的发射阶段,根据引导指令从寄存器堆动态收集关联数据值,并针对间接跳转指令的类别移位处理关联数据值,获取相应的关联信息;
520:将获取的关联信息与前一值历史组合更新成当前值历史,形成值历史模式;将引导指令所对应的难预测转指令的PC值写入过滤表中;
530:在间接跳转指令的取指阶段,根据难预测指令的PC值和形成的值历史模式预测保存在目标地址缓冲区内的目标地址。
譬如下面中给出了SPEC CPU 2006程序集中的458.sjeng程序片段:
其中的switch-case语句中包含一个间接跳转指令,其目标地址反复变化(wpawn,wknight),如果用传统的间接跳转预测器则难以预测。
处理器执行该458.sjeng程序的可执行程序中,将在时刻t2针对在前两个时刻t0、t1出现的“i”值(即标准化case变量)为1、1,分别将各自的低位作为关联信息获取,组合形成值历史1,1;将在时刻t3针对在前两个时刻t1、t2出现的“i”值为1、2,分别将各自的低位作为关联信息获取,组合形成值历史1,2;......将在时刻t7针对在前两个时刻t5、t6出现的“i”值为1、2,分别将各自的低位作为关联信息获取,组合形成值历史1,2。
处理器在t0~t7时刻根据前两个时刻的“i”值中处于低位的关联信息形成的值历史,表示在表1中。
表1
时刻 | t0 | t1 | t2 | t3 | t4 | t5 | t6 | t7 |
期望的“i”值 | 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 |
值历史 | 2,2 | 2,1 | 1,1 | 1,2 | 2,2 | 2,1 | 1,1 | 1,2 |
从上述表1中所有的值历史可获取值历史模式,即所有不同的值历史。表2中表示了获取的四个值历史模式,并表示出根据每一值历史模式预测的目标地址;其中T1表示预测的目标地址wpawn,T2表示预测的目标地址wknight。
表2
值历史模式 | 1,1 | 1,2 | 2,2 | 2,1 |
值历史模式预测目标 | T2 | T2 | T1 | T1 |
针对表1中的每一值历史,将根据值历史模式预测的目标地址表示在表3中,与程序执行实际出现的目标地址相比较,结果表明使用本发明的值历史模式作为有效的关联信息,可以非常准确地预测间接跳转的目标地址。
表3
时刻 | t0 | t1 | t2 | t3 | t4 | t5 | t6 | t7 |
期望的“i”值 | 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 |
值历史 | 2,2 | 2,1 | 1,1 | 1,2 | 2,2 | 2,1 | 1,1 | 1,2 |
实际目标 | T1 | T1 | T2 | T2 | T1 | T1 | T2 | T2 |
值历史模式预测目标 | T1 | T1 | T2 | T2 | T1 | T1 | T2 | T2 |
为了更清楚地解释图3所示的处理器预测间接跳转指令的方法实施例的各个步骤,图5给予了更加详细的方法实施例流程,包括值历史更新和间接跳转预测两个过程,分别如图4所示虚线上半部和虚线下半部所示。
其中,值历史更新包括如下步骤:
511:在引导指令的发射阶段,根据引导指令表明的寄存器编号读取寄存 器堆中相应寄存器的值作为关联数据值收集;
请参照图4,当引导指令进入发射阶段时,处理器根据引导指令所标识的关联数据值对应的寄存器编号RA,从寄存器堆1中读取相应的寄存器中的值,并将其作为关联数据值收集。
512:根据引导指令表明的间接跳转指令的类别对收集的关联数据值进行移位,将其中的关联信息移位到值历史第一组合位置上;
请参照图6,譬如处理器根据间接跳转指令的类别若判断该指令所对应的子程序结构为虚函数调用,则通过分类移位器2将虚函数表地址中间的多个关联信息比特移位到值历史第一组合位置(譬如右移到最低几位);其中移位的位数取决于虚函数表地址中间的关联信息比特数。
处理器根据间接跳转指令的类别若判断该指令所对应的子程序结构为Switch-case语句或函数指针调用,将对应的关联信息比特移位到值历史第一组合位置上的方法类似上述方法,移位的位数取决于对应的关联信息比特数。
521:将值历史模式寄存器中的前一值历史移位到值历史第二组合位置,与移位到值历史第一组合位置上的关联信息组合拼接,形成值历史模式;
如图7所示,表示了将移位到值历史第一组合位置上的关联信息与前一值历史(初始时刻为初始的值历史)拼接成值历史模式的过程,请参照图4:
首先在值历史模式寄存器3中将前一值历史移位到值历史第二组合位置(譬如移位到最高的几位),移位的位数取决于处于值历史第一组合位置上的关联信息的位数;
将移位到值历史第二组合位置上的前一值历史与处于值历史第一组合位置上的关联信息通过“或”操作,拼接成值历史模式。
522:将引导指令表明的距离值与该指令的PC值之和作为标签查询过滤表,若没有匹配的项,则将该标签作为难预测指令的PC值填入过滤表新分配的项中;
请参照图4,在引导指令的发射阶段,处理器将引导指令表明的距离值Offset与该指令的PC值之和作为标签查询过滤表4,若查询没有匹配的项,则在过滤表4新分配一项,并将该标签作为难预测指令的PC值填入该新分配 中,否则则不必进行操作。
531:在取指阶段,将间接跳转指令的PC值作为标签查询过滤表,若过滤表中有与该标签匹配的项,则标记为当前跳转指令是难预测指令,否则标记为是普通跳转指令;
请参照图4,处理器在取指阶段将间接跳转指令的PC值作为标签,若查询过滤表4中有与该标签匹配的项,则认为当前跳转指令是难预测指令,否则认为是普通跳转指令。
532、533:对于难预测指令,将从值历史模式寄存器读取的值历史模式与该指令的PC值相异或,并以异或结果作为索引读取映射在BTB中的目标地址;对于普通跳转指令,按该指令的PC值访问BTB,获取目标地址;结束流程。
针对上述实现值关联间接跳转预测方法实施例,本发明相应地还提供了一种在该方法实施例中处理器在程序时刻预测间接跳转指令的装置实施例,其结构框图如图4所示,包括寄存器堆1、分类移位器2、值历史模式寄存器3、目标地址缓冲区5、指令取指模块6以及引导指令发射模块7,其中:
指令取指模块6,用于在指令的取指时刻将接收的引导指令输出给引导指令发射模块7;根据间接跳转指令的PC值和值历史模式寄存器3更新的值历史模式预测保存在目标地址缓冲区5中相应的目标地址;
引导指令发射模块7,用于在引导指令发射阶段根据该引导指令从寄存器堆1读取收集间接跳转指令的关联数据值,并向分类移位器2输出携带该关联数据值的分类移位命令;
寄存器堆1,用于通过多个寄存器存放间接跳转指令对应的关联数据值;
分类移位器2,用于根据分类移位命令将关联数据值中的关联信息移位到值历史第一组合位置,并将移位的关联信息输出给值历史模式寄存器3;
值历史模式寄存器3,用于将前一值历史模式移位到值历史第二组合位置后,与分类移位器2输出的关联信息组合成更新的值历史模式;
目标地址缓冲区5,用于根据间接跳转指令的PC值和值历史模式作为索 引,保存所述间接跳转指令所对应的目标地址。
在上述上述装置实施例中,引导指令中携带有以下三种信息:第一类信息用于指示本引导指令与相应的间接跳转指令的距离;第二类信息是标识间接跳转指令所对应的关联信息相应的寄存器编号;第三类信息是表示引导指令所对应的间接跳转指令的类别,即表示该间接跳转指令相应的子程序结构的类别,其中:
引导指令发射模块7根据引导指令所标识的寄存器编号,从寄存器堆1中读取相应的寄存器中的值,并将其作为关联数据值与引导指令所表示的间接跳转指令的类别一起携带在分类移位命令中,输出给分类移位器2;
分类移位器2根据分类移位命令中携带的间接跳转指令的类别,将该命令携带的关联数据值中的关联信息移位到值历史第一组合位置,并输出移位的关联信息,待值历史模式寄存器3进行值历史模式更新。
上述装置实施例还包括过滤表4,其中:
引导指令发射模块7在引导指令的发射阶段还将引导指令表明的距离值与该指令的PC值之和作为标签查询过滤表4,若没有匹配的项,则将该标签作为难预测指令的PC值填入过滤表4新分配的项中;
指令取指模块6在取指阶段将间接跳转指令的PC值作为标签查询过滤表4,若有与该标签匹配的项,则标记当前跳转指令是难预测指令;针对该难预测指令将从值历史模式寄存器3读取的值历史模式与该指令的PC值相异或,并以异或结果作为索引读取保存在目标地址缓冲区5中的目标地址。
在图4所示的装置实施例中,分类移位器2是将关联数据值中的关联信息右移6位移到值历史第一组合位置上<5:0>;值历史模式寄存器3则将前一值历史模式左移6位,移位到值历史第二组合位置上<19:10>。
实际上,无论是分类移位器2右移关联数据值的位数,还是值历史模式寄存器3将前一值历史模式左移的位数,均取决于间接跳转指令所对应的关联数据值中的关联信息有效位的位数。但是,这样做起来会使得处理器的结构非常复杂,故考虑到此,本发明针对间接跳转指令的三类子程序结构采用固定的移位位数,并通过实验获取最佳的移位位数。
针对上述方法实施例和装置实施例进行了预测结果评测实验。评测实验结果表明,本发明能够有效地提高预测准确率,从而提高处理器性能。实验环境基于SimpleScalar模拟器和SPEC典型评测程序集。基础处理器使用4K表项、4路组相连BTB结构实现间接跳转预测,基本参数如表4所示。
表4.基础处理器配置参数
评测程序集包括5个SPEC CPU2000典型程序(图8中横坐标上的perlbmk、gap、gcc00、crafty、eon),3个SPEC CPU2006典型程序(图8中横坐标上的perlbench、gcc06、sjeng)和2个C++典型程序(图8中横坐标上的richards、ixx)。
在SPEC CPU2000和SPEC CPU2006评测程序集中,仅选择间接跳转误预测性能损失大于5%的典型程序。另外两个C++典型程序为Richards和ixx,其中Richards是一个模拟的操作系统内核任务调度器,ixx是一个将IDL源程序转化为C++程序的转化器,它们反映了面向对象程序的间接跳转指令行为,被广泛用于间接跳转评测。对每个评测程序,使用SimPoint工具选取由100M条指令构成的代表程序片段来实际运行。编译环境基于开源编译器GCC-4.1,主要添加子程序结构分析、关联数据值识别和标记等编译过程。剖视过程基于常规BTB预测器完成,即:选取执行次数多于次数阈值和预测失效率高于 失效率阈值的间接跳转指令作为“难预测指令”。
图8给出了本发明所提出的间接跳转预测技术的性能。其中,ORIG表示基础处理器,VBBI(Value Based BTB Indexing,简称VBBI)预测器是2010年由Farooq等人在论文《Value Based BTB Indexing for Indirect Jump Prediction》中提出的最新的、预测性能最好的间接跳转预测技术,VHC(Value History Classification,简称VHC)表示本发明所提出的间接跳转预测技术。从图8中可以看出,相对于基础处理器,本发明所提出的预测技术平均将性能提高19%;相对于VBBI预测器,本发明所提出的预测技术平均将性能提高4.3%。
对于本领域的专业人员来说,在了解了本发明内容和原理后,能够在不背离本发明的原理和范围的情况下,根据本发明的方法进行形式和细节上的各种修正和改变,但是这些基于本发明的修正和改变仍在本发明的权利要求保护范围之内。
Claims (5)
1.一种在处理器运行可执行程序过程中实现值关联间接跳转预测的装置,其特征在于,包括一寄存器堆、一分类移位器、一值历史模式寄存器、一目标地址缓冲区、一指令取指模块以及一引导指令发射模块,其中:
指令取指模块,用于在指令的取指时刻将接收的引导指令输出给引导指令发射模块,所述引导指令中的信息包含:用于指示本引导指令与相应的间接跳转指令之间距离的距离值,用于标识所述间接跳转指令所对应的关联数据值相应的寄存器编号,用于表示引导指令所对应的间接跳转指令相应的子程序结构的类别;
引导指令发射模块,用于在引导指令的发射阶段根据该引导指令从寄存器堆选取执行次数多于次数阈值和预测失效率高于失效率阈值的所述间接跳转指令作为难预测指令,将所述难预测指令对应的子程序结构和所述子程序结构中相应的参数值识别为所述间接跳转指令的子程序结构和所述关联数据值;并向所述分类移位器输出携带该关联数据值的分类移位命令;
寄存器堆,用于通过多个寄存器存放所述间接跳转指令所对应的关联数据值;
分类移位器,用于根据所述分类移位命令对所述关联数据值中的关联信息进行移位,并将移位的关联信息输出给值历史模式寄存器;
值历史模式寄存器,用于将前一值历史模式进行移位,将移位的值历史模式与所述分类移位器输出的所述关联信息组合形成更新的值历史模式;
目标地址缓冲区,用于根据所述间接跳转指令的程序计数器PC值和所述值历史模式作为索引,保存所述间接跳转指令所对应的目标地址。
2.按照权利要求1所述的装置,其特征在于,
所述引导指令发射模块根据所述引导指令所标识的所述寄存器编号,从所述寄存器堆中读取相应的寄存器中的值,并将其作为所述关联数据值与该引导指令所表示的所述间接跳转指令的类别一起携带在所述分类移位命令中,输出给所述分类移位器;
所述分类移位器根据该分类移位命令中携带的所述间接跳转指令的类别,将该命令中携带的所述关联数据值中的关联信息移位到值历史第一组合位置,并输出所述移位的关联信息;
所述值历史模式寄存器将前一值历史模式移位到值历史第二组合位置,将移位的值历史模式与所述分类移位器输出的关联信息组合形成更新的值历史模式。
3.按照权利要求2所述的装置,其特征在于,
所述分类移位器将收集的关联数据值中的关联信息移位到值历史第一组合位置上,或者所述值历史模式寄存器将所述值历史模式寄存器中的前一值历史移位到值历史第二组合位置,均采用由实验确定的最佳固定移位位数。
4.按照权利要求2或3所述的装置,其特征在于,
所述指令取指模块还根据所述间接跳转指令的程序计数器PC值和所述值历史模式寄存器更新的值历史模式预测所述目标地址缓冲区中保存的所述目标地址。
5.按照权利要求4所述的装置,其特征在于,还包括一过滤表,用于保存难预测指令的PC值;其中:
所述引导指令发射模块在引导指令的发射阶段还将该引导指令包含的所述距离值与该引导指令的PC值之和作为标签,若查询所述过滤表中没有匹配的项,则将该标签作为所述难预测指令的PC值填入所述过滤表新分配的项中;
所述指令取指模块在间接跳转指令的取指阶段将该间接跳转指令的PC值作为标签,若查询所述过滤表中有与该标签匹配的项,则标记该间接跳转指令是难预测指令;针对该难预测指令将从所述值历史模式寄存器读取的所述值历史模式与该难预测指令的PC值相异或,并以所述异或的结果作为索引读取所述目标地址缓冲区中的所述目标地址。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101083027A CN102156636B (zh) | 2011-04-28 | 2011-04-28 | 一种实现值关联间接跳转预测的装置 |
PCT/CN2011/080747 WO2012145997A1 (zh) | 2011-04-28 | 2011-10-13 | 一种实现值关联间接跳转预测的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101083027A CN102156636B (zh) | 2011-04-28 | 2011-04-28 | 一种实现值关联间接跳转预测的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102156636A CN102156636A (zh) | 2011-08-17 |
CN102156636B true CN102156636B (zh) | 2013-05-01 |
Family
ID=44438144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101083027A Active CN102156636B (zh) | 2011-04-28 | 2011-04-28 | 一种实现值关联间接跳转预测的装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102156636B (zh) |
WO (1) | WO2012145997A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102163143B (zh) * | 2011-04-28 | 2013-05-01 | 北京北大众志微系统科技有限责任公司 | 一种实现值关联间接跳转预测的方法 |
CN102156636B (zh) * | 2011-04-28 | 2013-05-01 | 北京北大众志微系统科技有限责任公司 | 一种实现值关联间接跳转预测的装置 |
GB2506462B (en) | 2013-03-13 | 2014-08-13 | Imagination Tech Ltd | Indirect branch prediction |
GB2540221B (en) | 2015-07-08 | 2020-01-01 | Mips Tech Llc | Check pointing a shift register |
GB2540189A (en) * | 2015-07-08 | 2017-01-11 | Imagination Tech Ltd | Check pointing a shift register |
CN106843812A (zh) * | 2016-12-23 | 2017-06-13 | 北京北大众志微系统科技有限责任公司 | 一种实现间接转移关联软件预测的方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7493600B2 (en) * | 2004-08-23 | 2009-02-17 | Faraday Technology Corp. | Method for verifying branch prediction mechanism and accessible recording medium for storing program thereof |
CN101763291A (zh) * | 2009-12-30 | 2010-06-30 | 中国人民解放军国防科学技术大学 | 一种程序控制流错误检测方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003003195A1 (en) * | 2001-06-29 | 2003-01-09 | Koninklijke Philips Electronics N.V. | Method, apparatus and compiler for predicting indirect branch target addresses |
CN102156634B (zh) * | 2011-04-20 | 2013-05-01 | 北京北大众志微系统科技有限责任公司 | 一种实现值关联间接跳转预测的方法 |
CN102156635B (zh) * | 2011-04-21 | 2014-01-15 | 北京北大众志微系统科技有限责任公司 | 实现值关联间接跳转预测的装置 |
CN102163143B (zh) * | 2011-04-28 | 2013-05-01 | 北京北大众志微系统科技有限责任公司 | 一种实现值关联间接跳转预测的方法 |
CN102156636B (zh) * | 2011-04-28 | 2013-05-01 | 北京北大众志微系统科技有限责任公司 | 一种实现值关联间接跳转预测的装置 |
-
2011
- 2011-04-28 CN CN2011101083027A patent/CN102156636B/zh active Active
- 2011-10-13 WO PCT/CN2011/080747 patent/WO2012145997A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7493600B2 (en) * | 2004-08-23 | 2009-02-17 | Faraday Technology Corp. | Method for verifying branch prediction mechanism and accessible recording medium for storing program thereof |
CN101763291A (zh) * | 2009-12-30 | 2010-06-30 | 中国人民解放军国防科学技术大学 | 一种程序控制流错误检测方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2012145997A1 (zh) | 2012-11-01 |
CN102156636A (zh) | 2011-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102163143B (zh) | 一种实现值关联间接跳转预测的方法 | |
CN102156634B (zh) | 一种实现值关联间接跳转预测的方法 | |
CN102156636B (zh) | 一种实现值关联间接跳转预测的装置 | |
US7337301B2 (en) | Designing configurable processor with hardware extension for instruction extension to replace searched slow block of instructions | |
Gabbay et al. | Can program profiling support value prediction? | |
CN1332321C (zh) | 页表中维护性能监测结构用于监测程序性能的方法和设备 | |
CN102473104B (zh) | 插入用于优化的simd代码的操作-和-指示指令 | |
US5933628A (en) | Method for identifying hard-to-predict branches to enhance processor performance | |
Metzner | Why model checking can improve WCET analysis | |
Vijaykumar | Compiling for the multiscalar architecture | |
US20080141229A1 (en) | Processor, program conversion apparatus, program conversion method, and computer program | |
JPH10187463A (ja) | コンパイラ | |
CN101379467B (zh) | 对动态可扩展处理器的软件支持 | |
US20060041875A1 (en) | Methods and apparatus for creating software basic block layouts | |
Lakshminarayana et al. | Incorporating speculative execution into scheduling of control-flow-intensive designs | |
CN102591621B (zh) | 使用计算历史进行预测 | |
CN102156635B (zh) | 实现值关联间接跳转预测的装置 | |
Cedersjö et al. | Tÿcho: A framework for compiling stream programs | |
Moreira et al. | Vespa: static profiling for binary optimization | |
Wu et al. | Exploiting inter-sequence correlations for program behavior prediction | |
Raman et al. | Learning branch probabilities in compiler from datacenter workloads | |
CN101231598B (zh) | 一种基于汇编程序构造语义流程图的方法 | |
Gustafsson et al. | Code analysis for temporal predictability | |
Gabbay et al. | Improving achievable ILP through value prediction and program profiling | |
Metzler et al. | Efficient verification of program fragments: Eager POR |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160307 Address after: 100080 Beijing City, Haidian District Zhongguancun No. 151 North Street Yanyuan resources building room 1107 Patentee after: Beijing Zhongzhi core technology Co. Ltd. Address before: 100080, Beijing Haidian District Zhongguancun 151 North Street, building 11, resources Patentee before: Beida Zhongzhi Microsystem Science and Technology Co., Ltd., Beijing |