CN113703842B - 一种基于分支预测的值预测方法、装置及介质 - Google Patents
一种基于分支预测的值预测方法、装置及介质 Download PDFInfo
- Publication number
- CN113703842B CN113703842B CN202111064427.4A CN202111064427A CN113703842B CN 113703842 B CN113703842 B CN 113703842B CN 202111064427 A CN202111064427 A CN 202111064427A CN 113703842 B CN113703842 B CN 113703842B
- Authority
- CN
- China
- Prior art keywords
- register
- value
- instruction
- branch instruction
- prediction
- 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
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000004590 computer program Methods 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 8
- 230000009191 jumping Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 235000012308 Tagetes Nutrition 0.000 description 2
- 241000736851 Tagetes Species 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 231100000957 no side effect Toxicity 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
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/30003—Arrangements for executing specific machine instructions
-
- 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/30098—Register arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种基于分支预测的值预测方法、装置及介质,本发明基于分支预测的值预测方法包括在指令译码后根据指令译码结果判断是否为可进行值预测的分支指令;在寄存器重命名阶段,针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态,否则进行普通的寄存器重命名操作。译码以及译码前的步骤,以及寄存器重命名后的步骤则与现有指令执行过程相同。本发明在乱序微处理器中,利用分支预测的结果进行指令结果的预测,能够提前获取寄存器值并且该预测不会带来额外的性能损失。
Description
技术领域
本发明涉及处理器微架构领域,具体涉及一种基于分支预测的值预测方法、装置及介质。
背景技术
微处理器中分支指令会改变当前程序的执行流,使得程序调往其他地址执行。而确定分支指令的目标地址需要在该指令执行完之后才能得到。为了能够尽快得到分支指令的目标地址,在当前的高性能微处理器中,普遍都采用了分支预测技术。分支预测技术通过当前指令的地址,在取指令的同时,对分支进行预测,预测分支的方向和分支的地址。这样,就不用等待分支指令执行完成,才能够获得分支的目标地址,减少了流水线中的空泡,提高程序执行的性能。如果分支预测是正确的,那么程序就正常按此执行,如果分支预测错误,需要清除该分支指令之后的所有指令,重新从分支指令的目标处开始执行。
值预测是另一类预测技术,在指令执行之前预测该指令执行的结果。值预测方法通常基于该指令的历史,对未来该指令的值进行预测。值预测的方法可以在指令尚未执行时,预测获得该指令的结果,从而及早唤醒依赖该指令的其他指令。值预测在预测正确的情况下,可以获得性能提升,但是预测错误的情况下,需要从被预测指令开始,清除流水线中所有的指令,从接下来的指令开始执行。错误的值预测会带来性能损失。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于分支预测的值预测方法、装置及介质,本发明要解决的问题是在乱序微处理器中,利用分支预测的结果,进行指令结果的预测,提前获取寄存器值并且该预测不会带来额外的性能损失。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于分支预测的值预测方法,包括:
1)在指令译码后根据指令译码结果判断是否为可进行值预测的分支指令;
2)在寄存器重命名阶段,针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态,否则进行普通的寄存器重命名操作。
可选地,步骤1)中可进行值预测的分支指令包括寄存器型分支指令,所述寄存器型分支指令是指通过比较两个寄存器r1和r2的值确定是否跳转到指令指定的目标地址<target>的分支指令或分支指令对,且两个寄存器r1和r2的值相等。
可选地,步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,针对寄存器型分支指令的操作包括:若寄存器型分支指令的两个寄存器r1和r2的指令都已经执行完,并将结果写到了寄存器中,则针对该寄存器型分支指令不用做任何操作;若寄存器型分支指令的两个寄存器r1和r2有一个的结果已经产生,那么将还未产生结果的寄存器映射到已经产生结果的寄存器的物理寄存器上。
可选地,步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,还包括若寄存器型分支指令的两个寄存器r1和r2的指令都未产生时,针对该寄存器型分支指令不用做任何操作,或者将两个寄存器r1和r2在映射表中做上标记,且在该寄存器型分支指令之后所有引用寄存器r1和r2的指令都将被标记上,当寄存器r1和r2中任何一个被写时,引用寄存器r1和r2的指令将都被唤醒并获取数据。
可选地,步骤1)中可进行值预测的分支指令包括0比较型分支指令,所述0比较型分支指令是指通过比较寄存器r1和立即数0的值确定是否跳转到指令指定的目标地址<target>的分支指令或分支指令对,且寄存器r1的值为0。
可选地,步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,针对0比较型分支指令的操作包括:将寄存器r1映射到零寄存器,使得从该0比较型分支指令开始所有引用寄存器r1作为源操作数的指令,寄存器r1都将映射到零寄存器。
可选地,步骤1)中可进行值预测的分支指令包括非0比较型分支指令,所述非0比较型分支指令是指通过比较寄存器r1和立即数0的值确定是否跳转到指令指定的目标地址<target>的分支指令或分支指令对,且寄存器r1的值非0。
可选地,步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,针对非0比较型分支指令的操作包括:为寄存器r1新分配一个物理寄存器,并将该寄存器的值修改为立即数值,使得所有该非0比较型分支指令之后的指令源操作数引用寄存器r1时,将使用新的物理寄存器值;或者将立即数的值#imm写到重命名表中,并标记该寄存器映射r1到立即数的值#imm而非物理寄存器号,使得所有该0比较型分支指令之后的指令源操作数引用寄存器r1时,将使用立即数的值#imm替代寄存器号,从寄存器源操作数修改为立即数操作数。
此外,本发明还提供一种基于分支预测的值预测装置,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行所述基于分支预测的值预测方法的步骤。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述基于分支预测的值预测方法的计算机程序。
和现有技术相比,本发明具有下述优点:
1、实现代价小。借助已有的分支预测功能,值预测功能的完成仅通过改寄存器映射,而不涉及其他部分的修改。
2、无副作用,分支预测正确则值预测一定正确,分支预测错误,值预测也错误,但是分支预测错误的刷新逻辑会将相关错误状态清空。
3、可提高性能。提早获取寄存器值,避免等待响应的指令执行,提高处理器性能。
附图说明
图1为本发明实施例方法的核心流程示意图。
图2为包含本本发明实施例方法的指令完整执行流程示意图。
具体实施方式
实施例一:
如图1所示,本实施例基于分支预测的值预测方法包括:
1)在指令译码后根据指令译码结果判断是否为可进行值预测的分支指令;
2)在寄存器重命名阶段,针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态,否则进行普通的寄存器重命名操作。
本实施例中,以某指令集为例,可进行值预测的分支指令分析结果如表1所示。
表1:可进行值预测的分支指令分析结果。
指令功能 | 预测结果 | 值可预测 | |
BEQr1,r2,<target> | 比较r1和r2相等,则跳转 | 跳转 | 是 |
BEQr1,r2,<target> | 比较r1和r2相等,则跳转 | 不跳转 | 否 |
BNEr1,r2,<target> | 比较r1和r2不等,则跳转 | 跳转 | 否 |
BNEr1,r2,<target> | 比较r1和r2不等,则跳转 | 不跳转 | 是 |
BEQZR1,<target> | 比较r1等于0,则跳转 | 跳转 | 是 |
BEQZ R1,<target> | 比较r1等于0,则跳转 | 不跳转 | 否 |
BNEZ R1,<target> | 比较r1不等于0,则跳转 | 跳转 | 否 |
BNEZ R1,<taget> | 比较r1不等于0,则跳转 | 不跳转 | 是 |
BEQR1#imm,<target> | 比较r1等于#imm,则跳转 | 跳转 | 是 |
BEQ R1,#imm,<target> | 比较r1等于#imm,则跳转 | 不跳转 | 否 |
BNE R1,#imm,<target> | 比较r1不等于#imm,则跳转 | 跳转 | 否 |
BNE R1,#imm,<taget> | 比较r1不等于#imm,则跳转 | 不跳转 | 是 |
参见图2,本实施例步骤1)中可进行值预测的分支指令包括寄存器型分支指令(寄存器型),寄存器型分支指令是指通过比较两个寄存器r1和r2的值确定是否跳转到指令指定的目标地址<target>的分支指令或分支指令对,且两个寄存器r1和r2的值相等。需要说明的是,r1和r2仅仅用于指代可进行值预测的分支指令的两个寄存器,而并非指代特定的寄存器,下同。
参见表1,其中BEQr1,r2,<target>指令表示当两个操作数r1和r2的值相等时,跳转到目标地址<target>;BNE指令表示当两个操作数的值不相等时,跳转到目标地址。当BEQ指令预测为跳转时,即表示r1和r2的值预测为相等的,此时该指令是可进行值预测的。当BNE指令预测为不跳转时,即“r1和r2不相等”这个条件不成立,也就是说r1和r2值为相等,此时是可以进行值预测的。值得注意的是,在某些指令集中,没有BEQr1,r2,<target>这样的指令。这种功能是通过两条指令来实现的,例如ARM指令集中CMPr1,r2指令进行数据的比较,比较后将比较结果存放在PSTATE寄存器中,第二条指令b.eq<target>进行判断和跳转。对于这样的指令对,也是属于这种寄存器比较型的。
对于寄存器型分支指令(寄存器型),值预测为:预测r1=r2。
对于寄存器型分支指令(寄存器型),在寄存器重命名时,会有三种情况:情况1:r1和r2寄存器的结果都已经产生。即分支指令之前写这两个寄存器的指令都已经执行完,并将结果写到了寄存器中。此时值预测的意义不是很大了,不用做任何操作。情况2:r1或r2寄存器只有一个的结果已经产生,那么将还未产生结果的寄存器映射到已经产生结果的寄存器的物理寄存器上。假设此时r1寄存器的结果已经产生,r1寄存器映射物理寄存器p34,到而r2寄存器的结果还未产生,r1寄存器映射物理寄存器p35。那么在重命名时将修改r2寄存器的映射表,从物理寄存器p35修改到p34。分支指令之后的其他指令引入r2为源操作数的指令,将直接从p34物理寄存器中读取数据,不用等待p35物理的寄存器结果的产生。情况3:r1和r2寄存器的结果都未产生。此时有两种可选的操作:(1)不对该分支指令做额外操作。(2)将r1和r2在映射表中做上标记。分支指令之后所有引用r1和r2寄存器的指令都将被标记上。当r1和r2中任何一个被写时,引用r1和r2都指令将被唤醒,并获取数据。该方案可以捕获更多的值预测结果,但是会带来额外的硬件开销。
本实施例中,步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,针对寄存器型分支指令的操作包括:若寄存器型分支指令的两个寄存器r1和r2的指令都已经执行完,并将结果写到了寄存器中,则针对该寄存器型分支指令不用做任何操作;若寄存器型分支指令的两个寄存器r1和r2有一个的结果已经产生,那么将还未产生结果的寄存器映射到已经产生结果的寄存器的物理寄存器上。
本实施例中,步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,还包括若寄存器型分支指令的两个寄存器r1和r2的指令都未产生时,针对该寄存器型分支指令不用做任何操作,或者将两个寄存器r1和r2在映射表中做上标记,且在该寄存器型分支指令之后所有引用寄存器r1和r2的指令都将被标记上,当寄存器r1和r2中任何一个被写时,引用寄存器r1和r2的指令将都被唤醒并获取数据。
参见图2,本实施例步骤1)中可进行值预测的分支指令包括0比较型分支指令(立即数0比较型),0比较型分支指令是指通过比较寄存器r1和立即数0的值确定是否跳转到指令指定的目标地址<target>的分支指令或分支指令对,且寄存器r1的值为0。
0比较型分支指令(立即数0比较型)和寄存器比较型类似,只不过比较的对象是0。参见表1,例如指令BEQZr1,<target>将寄存器r1中的值和0进行比较。如果r1中的值是0,那么跳转条件成立,程序跳往<target>所指的地方继续执行。当该指令预测为跳转时,即预测r1的值为0,此时可以自然地对r1进行值预测。同样的BNEZr1,<target>将寄存器r1中的值和0进行比较。如果r1中的值不是0,那么跳转条件成立,程序跳往<target>所指的地方继续执行。当该指令预测为不跳转时,即预测“r1的值不为0”这个条件不成立,此时可以自然地对r1进行值预测,r1的值预测为0。和寄存器比较型分支一样,0比较型分支在某些体系结构中可能也是由两条指令实现的。MPr1,#0指令进行数据的比较,比较后将比较结果存放在PSTATE寄存器中,第二条指令b.eq<target>根据PSTATE寄存器进行条件判断和跳转。对于这样的指令对,也是属于立即数0比较型。
对于0比较型分支指令(立即数0比较型),值预测为:预测r1=r2。
对于0比较型分支指令(立即数0比较型),在多数体系结构中都有零寄存器,零寄存器是常值为0的寄存器,该寄存器可读不可写,不管对该寄存器写了什么值,读出的值都是0。当预测分支指令中的操作数r1为0时,就可以在寄存器重命名阶段将r1寄存器在重命名时映射到零寄存器。这样,从该分支指令开始所有引用r1寄存器作为源操作数的指令,r1寄存器都将映射到零寄存器。由于零寄存器总是可以获得值,故后续引入r1寄存器的指令不用等待r1数据准备好就可以执行。本实施例中,步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,针对0比较型分支指令的操作包括:将寄存器r1映射到零寄存器,使得从该0比较型分支指令开始所有引用寄存器r1作为源操作数的指令,寄存器r1都将映射到零寄存器。
参见图2,本实施例步骤1)中可进行值预测的分支指令包括非0比较型分支指令(非0比较型),非0比较型分支指令是指通过比较寄存器r1和立即数0的值确定是否跳转到指令指定的目标地址<target>的分支指令或分支指令对,且寄存器r1的值非0。\非0比较型分支指令(非0比较型)和寄存器比较型类似,只不过比较的对象是非0。参见表1,其中BEQR1#imm,<target>将寄存器r1中的值和立即数#imm进行比较。如果r1中的值是#imm,那么跳转条件成立,程序跳往<target>所指的地方继续执行。当该指令预测为跳转时,即预测r1的值为#imm,此时可以自然地对r1进行值预测。同样的BNEZr1,<target>将寄存器r1中的值和立即数#imm进行比较。如果r1中的值不是立即数#imm,那么跳转条件成立,程序跳往<target>所指的地方继续执行。当该指令预测为不跳转时,即预测“r1的值不为立即数#imm”这个条件不成立,此时可以自然地对r1进行值预测,r1的值预测为立即数#imm。和寄存器比较型分支一样,立即数#imm比较型分支在某些体系结构中可能也是由两条指令实现的。CMPr1,#imm指令进行数据的比较,比较后将比较结果存放在PSTATE寄存器中,第二条指令b.eq<target>进行判断和跳转。对于这样的指令对,也是属于非0立即数比较型。
对于非0比较型分支指令(非立即数0比较型),值预测为:预测r1=#imm。
对于非0比较型分支指令(非立即数0比较型),而该立即数非0值,由于指令编码的原因该立即数通常较小。对于这类值预测,有2种可选地处理方式:(1)为r1新分配一个物理寄存器,并将该寄存器的值修改为立即数值。所有该分支指令之后的指令源操作数引用r1时,将使用新的物理寄存器值。(2)将立即数的值#imm写到重命名表中,并标记该寄存器映射到立即数值而非物理寄存器号。所有该分支指令之后的指令源操作数引用r1时,将使用立即数值替代寄存器号,从寄存器源操作数修改为立即数操作数。例如:假设在在重命名映射表中r1映射到物理寄存器p34,r2映射到物理寄存器p35,r3映射到物理寄存器p41。Beqr1,#imm,<target>指令预测为跳转,在本发明中将进行寄存器值预测,并修改重命名表为r1映射到立即数#imm,那么该指令之后的指令add r3,r1,r2,经过重命名后,变为addp41,#imm,p35,即不用等待p34寄存器结果的产生。而在没有寄存器值预测的情况下,该指令会被重命名为add p42,p34,p35。本实施例中,步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,针对非0比较型分支指令的操作包括:为寄存器r1新分配一个物理寄存器,并将该寄存器的值修改为立即数值,使得所有该非0比较型分支指令之后的指令源操作数引用寄存器r1时,将使用新的物理寄存器值。
参见图2,包含本实施例方法的指令完整执行步骤包括:
S1、在处理器前端进行分支预测。
该步骤和普通处理器的设计一致。一般包括使用一定的分支预测算法进行分支方向的预测,并从分支目标缓冲中获取该分支的目标地址。如果分支预测器预测为跳转的分支,则下一个时钟周期从分支的目标地址处取数据。否则,下一个时钟周期顺序取指令。
S2、取指令。
该步骤和普通处理器的设计一致,使用相应的程序地址从指令Cache中取出对应的指令。
S3、指令译码。
该步骤和普通处理器的设计一致,将步骤S2取出的指令按目标指令集的格式进行译码。
S4、根据指令译码结果,判断是否是可以进行值预测的分支指令类型。
该步骤即为本实施例方法的前述步骤1)。
S5、寄存器重命名。
该步骤即为本实施例方法的前述步骤2)。
通常在寄存器重命名阶段,将对指令的目的寄存器进行重命名:在空闲的物理寄存器中找一个物理寄存器,将指令的目的寄存器映射到该物理寄存器上。根据重命名表,将指令的源操作数寄存器改写为相应的物理寄存器号。对于分支指令,并没有目的寄存器,所以只需要将源操作数寄存器改写为重命名表上的物理寄存器即可。对于可以进行值预测的分支类型,需要对其源操作数寄存器进行特殊处理。假设分支指令的寄存器是值预测的结果,对于其他寄存器也是同样的处理方式。正常寄存器重命名的步骤包括:在空闲的物理寄存器中找一个物理寄存器,将指令的目的寄存器映射到该物理寄存器上。根据重命名表,将指令的源操作数寄存器改写为相应的物理寄存器号。
S6、分支指令执行。
和普通处理一样,根据分支指令的类型和操作数进行分支条件的判断,跳转到目标地址执行。同时,需要判断对该分支进行的预测是否错误,并将该信息传送给处理器的控制和定序单元。如果分支预测失败,跳转步骤S7,否则指令执行结果提交并跳转步骤S1。
S7、清空流水线,从分支目标地址取指令执行。
和普通分支预测错误的处理方式一致,从该分支指令开始,清空所有的指令。这里会将寄存器重命名映射表恢复到该分支指令之前的状态,所以步骤5对寄存器重命名表格中所做的修改都会自然地被恢复,不需要额外操作来保证值预测过程中对重命名表的修改不会造成处理器状态错误。将处理器中误预测路径上的分支都清空,并将处理器中相应的状态都恢复之后,跳转到分支的目标地址取指令执行。
综上,本实施例方法包括在指令译码后根据指令译码结果判断是否为可进行值预测的分支指令,在寄存器重命名阶段,针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态,否则进行普通的寄存器重命名操作,通过针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态,能够在乱序微处理器中,利用分支预测的结果,进行指令结果的预测,提前获取寄存器值并且该预测不会带来额外的性能损失,可提高处理器的执行性能。而且,本实施例方法利用现有分支预测的结构和分支预测的结果,在指令译码时识别分支指令和预测结果,通过寄存器映射表的修改,完成值预测和使用的过程,预测失败无副作用。
此外,本实施例还提供一种基于分支预测的值预测装置,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行前述基于分支预测的值预测方法的步骤。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述基于分支预测的值预测方法的计算机程序。
实施例二:
本实施例与实施例一基本相同,其主要不同点为:
本实施例中步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,针对非0比较型分支指令的操作方式有所不同。
本实施例中,步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,针对非0比较型分支指令的操作包括:将立即数的值#imm写到重命名表中,并标记该寄存器映射r1到立即数的值#imm而非物理寄存器号,使得所有该0比较型分支指令之后的指令源操作数引用寄存器r1时,将使用立即数的值#imm替代寄存器号,从寄存器源操作数修改为立即数操作数。
此外,本实施例还提供一种基于分支预测的值预测装置,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行前述基于分支预测的值预测方法的步骤。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述基于分支预测的值预测方法的计算机程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (5)
1.一种基于分支预测的值预测方法,其特征在于,包括:
1)在指令译码后根据指令译码结果判断是否为可进行值预测的分支指令;
2)在寄存器重命名阶段,针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态,否则进行寄存器重命名操作;
步骤1)中可进行值预测的分支指令包括寄存器型分支指令,所述寄存器型分支指令是指通过比较两个寄存器r1和r2的值确定是否跳转到指令指定的目标地址<target>的分支指令或分支指令对,且两个寄存器r1和r2的值相等;步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,针对寄存器型分支指令的操作包括:若寄存器型分支指令的两个寄存器r1和r2的指令都已经执行完,并将结果写到了寄存器中,则针对该寄存器型分支指令不用做任何操作;若寄存器型分支指令的两个寄存器r1和r2有一个的结果已经产生,那么将还未产生结果的寄存器映射到已经产生结果的寄存器的物理寄存器;步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,还包括若寄存器型分支指令的两个寄存器r1和r2的指令都未产生时,针对该寄存器型分支指令不用做任何操作,或者将两个寄存器r1和r2在映射表中做上标记,且在该寄存器型分支指令之后所有引用寄存器r1和r2的指令都将被标记上,当寄存器r1和r2中任何一个被写时,引用寄存器r1和r2的指令将都被唤醒并获取数据。
2.根据权利要求1所述的基于分支预测的值预测方法,其特征在于,步骤1)中可进行值预测的分支指令包括0比较型分支指令,所述0比较型分支指令是指通过比较寄存器r1和立即数0的值确定是否跳转到指令指定的目标地址<target>的分支指令或分支指令对,且寄存器r1的值为0,步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,针对0比较型分支指令的操作包括:将寄存器r1映射到零寄存器,使得从该0比较型分支指令开始所有引用寄存器r1作为源操作数的指令,寄存器r1都将映射到零寄存器。
3.根据权利要求1所述的基于分支预测的值预测方法,其特征在于,步骤1)中可进行值预测的分支指令包括非0比较型分支指令,所述非0比较型分支指令是指通过比较寄存器r1和立即数0的值确定是否跳转到指令指定的目标地址<target>的分支指令或分支指令对,且寄存器r1的值非0,步骤2)中针对可进行值预测的分支指令利用值预测结果提前获取寄存器值并修改体系结构状态时,针对非0比较型分支指令的操作包括:为寄存器r1新分配一个物理寄存器,并将该寄存器的值修改为立即数值,使得所有该非0比较型分支指令之后的指令源操作数引用寄存器r1时,将使用新的物理寄存器值;或者将立即数的值#imm写到重命名表中,并标记该寄存器映射r1到立即数的值#imm而非物理寄存器号,使得所有该0比较型分支指令之后的指令源操作数引用寄存器r1时,将使用立即数的值#imm替代寄存器号,从寄存器源操作数修改为立即数操作数。
4.一种基于分支预测的值预测装置,包括相互连接的微处理器和存储器,其特征在于,该微处理器被编程或配置以执行权利要求1~3中任意一项所述基于分支预测的值预测方法的步骤。
5.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有被编程或配置以执行权利要求1~3中任意一项所述基于分支预测的值预测方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111064427.4A CN113703842B (zh) | 2021-09-10 | 2021-09-10 | 一种基于分支预测的值预测方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111064427.4A CN113703842B (zh) | 2021-09-10 | 2021-09-10 | 一种基于分支预测的值预测方法、装置及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113703842A CN113703842A (zh) | 2021-11-26 |
CN113703842B true CN113703842B (zh) | 2024-03-26 |
Family
ID=78659920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111064427.4A Active CN113703842B (zh) | 2021-09-10 | 2021-09-10 | 一种基于分支预测的值预测方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113703842B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6516405B1 (en) * | 1999-12-30 | 2003-02-04 | Intel Corporation | Method and system for safe data dependency collapsing based on control-flow speculation |
WO2004001584A2 (en) * | 2002-06-24 | 2003-12-31 | Ante Vista Gmbh | A method for executing structured symbolic machine code on a microprocessor |
CN101169710A (zh) * | 2006-10-26 | 2008-04-30 | 中国科学院计算技术研究所 | 对状态寄存器进行重命名的方法和使用该方法的处理器 |
KR20080065733A (ko) * | 2007-01-10 | 2008-07-15 | 연세대학교 산학협력단 | 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법 |
GB201815654D0 (en) * | 2018-09-26 | 2018-11-07 | Advanced Risc Mach Ltd | An apparatus and method for processing instructions |
CN113254079A (zh) * | 2021-06-28 | 2021-08-13 | 广东省新一代通信与网络创新研究院 | 一种用于实现自增指令的方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7925868B2 (en) * | 2007-01-24 | 2011-04-12 | Arm Limited | Suppressing register renaming for conditional instructions predicted as not executed |
US10678544B2 (en) * | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10866805B2 (en) * | 2018-01-03 | 2020-12-15 | Arm Limited | Speculation barrier instruction |
US11379240B2 (en) * | 2020-01-31 | 2022-07-05 | Apple Inc. | Indirect branch predictor based on register operands |
-
2021
- 2021-09-10 CN CN202111064427.4A patent/CN113703842B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6516405B1 (en) * | 1999-12-30 | 2003-02-04 | Intel Corporation | Method and system for safe data dependency collapsing based on control-flow speculation |
WO2004001584A2 (en) * | 2002-06-24 | 2003-12-31 | Ante Vista Gmbh | A method for executing structured symbolic machine code on a microprocessor |
CN101169710A (zh) * | 2006-10-26 | 2008-04-30 | 中国科学院计算技术研究所 | 对状态寄存器进行重命名的方法和使用该方法的处理器 |
KR20080065733A (ko) * | 2007-01-10 | 2008-07-15 | 연세대학교 산학협력단 | 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법 |
GB201815654D0 (en) * | 2018-09-26 | 2018-11-07 | Advanced Risc Mach Ltd | An apparatus and method for processing instructions |
CN113254079A (zh) * | 2021-06-28 | 2021-08-13 | 广东省新一代通信与网络创新研究院 | 一种用于实现自增指令的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113703842A (zh) | 2021-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5889986B2 (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
JP3565504B2 (ja) | プロセッサにおける分岐予測方法及びプロセッサ | |
KR101459536B1 (ko) | 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치 | |
RU2417407C2 (ru) | Способы и устройство для моделирования поведения предсказания переходов явного вызова подпрограммы | |
US7444501B2 (en) | Methods and apparatus for recognizing a subroutine call | |
US7624253B2 (en) | Determining register availability for register renaming | |
KR100900364B1 (ko) | 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체 | |
US9329868B2 (en) | Reducing register read ports for register pairs | |
US9256427B2 (en) | Tracking multiple conditions in a general purpose register and instruction therefor | |
JP5815596B2 (ja) | プロシージャリターンシーケンスを加速するための方法およびシステム | |
CN113703832B (zh) | 一种立即数转移指令的执行方法、装置及介质 | |
CN114116002A (zh) | 一种存储重命名的实现方法、处理器及计算机设备 | |
US20060174096A1 (en) | Methods and systems for storing branch information in an address table of a processor | |
US10108419B2 (en) | Dependency-prediction of instructions | |
US6484256B1 (en) | Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table | |
CN113703842B (zh) | 一种基于分支预测的值预测方法、装置及介质 | |
US9323532B2 (en) | Predicting register pairs | |
US20040243791A1 (en) | Processing partial register writes in an out-of-order processor | |
US10552156B2 (en) | Processing operation issue control | |
Shah et al. | SPSIM: SuperScalar Processor SIMulater CS305 Project Report | |
JP2001236228A (ja) | 計算機とその制御方法 | |
JP2014059665A (ja) | マイクロコンピュータ及びマイクロコンピュータにおける命令処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |