CN112470122A - 具有提前返回预测的分支目标缓冲器 - Google Patents
具有提前返回预测的分支目标缓冲器 Download PDFInfo
- Publication number
- CN112470122A CN112470122A CN201980049605.0A CN201980049605A CN112470122A CN 112470122 A CN112470122 A CN 112470122A CN 201980049605 A CN201980049605 A CN 201980049605A CN 112470122 A CN112470122 A CN 112470122A
- Authority
- CN
- China
- Prior art keywords
- return
- branch
- instruction
- btb
- entry
- 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.)
- Granted
Links
- 230000004044 response Effects 0.000 claims abstract description 49
- 230000000977 initiatory effect Effects 0.000 claims abstract description 15
- 238000000034 method Methods 0.000 claims description 35
- 238000012545 processing Methods 0.000 abstract description 11
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002730 additional effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch 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/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
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)
- Executing Machine-Instructions (AREA)
Abstract
一种处理器[100],包括分支目标缓冲器(BTB)[110],所述BTB[110]具有多个条目[111],其中每个条目对应于被预测为分支指令的相关联的指令指针[101]值。每个BTB条目存储所述分支指令的预测分支目标地址,并且还存储指示与所述预测分支目标地址相关联的指令块中的下一个分支是否被预测为返回指令的信息。响应于所述BTB指示所述下一个分支被预测为返回指令,所述处理器发起对存储所述预测返回指令的返回地址的返回堆栈[115]的访问。通过响应于存储在所述BTB处的所述返回预测而发起对所述返回堆栈的访问,所述处理器减少了识别所述返回地址的延迟,从而提高了处理效率。
Description
背景技术
为了提高处理效率,处理器可采用一种或多种预测处理技术。一种类型的预测处理技术称为分支预测,由此处理器预测分支指令的结果,使得处理器可在处理单元评估分支指令之前沿预测分支开始推测性地执行后续指令。为了进一步提高处理效率,处理器采用分支目标结构,所述分支目标结构称为分支目标缓冲器(BTB)。BTB存储预测分支的地址信息。但是,常规的BTB结构不支持高效执行不同类型的程序分支。
附图说明
通过参考附图,本领域技术人员可更好地理解本公开并且明白其众多特征和优势。在不同附图中使用相同的附图标记指示类似或相同的项目。
图1是根据一些实施方案的采用包括返回预测信息以用于预测分支指令所针对的指令块是否包括返回指令的分支目标缓冲器(BTB)的处理器的框图。
图2是根据一些实施方案的响应于BTB指示分支指令所针对的指令块包括返回指令而发起对返回地址的堆栈的访问的图1的处理器的示例的图。
图3是根据一些实施方案的处理器响应于BTB指示分支指令所针对的指令块包括返回指令而发起对返回地址的堆栈的访问的方法的流程图。
具体实施方式
图1至图3示出了用于减少在处理器处识别用于返回指令的返回地址的延迟的技术。所述处理器包括分支目标缓冲器(BTB),所述BTB具有多个条目,其中每个条目对应于被预测为分支指令的相关联的指令指针值。每个BTB条目存储所述分支指令的预测分支目标地址,并且还存储指示与所述预测分支目标地址相关联的指令块中的下一个分支是否被预测为返回指令的信息。响应于所述BTB指示所述下一个分支被预测为返回指令,所述处理器发起对存储所述预测返回指令的返回地址的返回堆栈的访问。通过响应于存储在所述BTB处的所述返回预测而发起对所述返回堆栈的访问,所述处理器减少了识别所述返回地址的延迟,从而提高了处理效率。
与本文所述的技术相反,常规处理器不存储预测返回信息。因此,常规处理器在处理器的提取级识别出当前指令指针值对应于返回指令之前不发起对返回堆栈的访问。因为从返回堆栈检索返回地址需要多个时钟周期,所以处理器处的操作可能会延迟。使用本文所述的技术,所述处理器提前发起对返回堆栈的访问,从而当指令指针值达到返回指令时,返回地址已从堆栈检索出并且可供处理器使用。因此,存储预测返回信息支持更快地访问返回地址,从而提高了处理效率。
图1示出根据一些实施方案的采用包括返回预测信息以用于预测分支指令所针对的指令块是否包括返回指令的分支目标缓冲器(BTB)的处理器100。处理器执行指令集(例如,计算机程序)以代表电子装置执行指定的任务。在一些实施方案中,处理器100被结合在诸如台式或膝上型计算机、服务器、游戏控制台、智能电话、平板计算机等的多个电子装置中的一者中。
为了支持指令的执行,处理器100包括具有指令提取级102和另外的流水线级104的指令流水线。另外的流水线级104包括:用于将所提取的指令解码为操作集的级、用于执行所解码的操作的执行级和用于引退所执行的指令的引退级。应当理解,在一些实施方案中,处理器100包括另外的模块以支持指令的执行,包括一个或多个存储器控制器、输入/输出控制器、存储器结构(例如,一个或多个高速缓存)等。另外,应当理解,在一些实施方案中,处理器100包括另外的指令流水线。例如,在一些实施方案中,处理器100包括多个处理器核心,每个处理器核心具有至少一个指令流水线以用于执行指令集。此外,在一些实施方案中,处理器100包括专门设计用于执行与特殊任务相关联的操作的另外的处理单元,诸如用于执行与绘图、显示和其他图形操作相关联的操作的一个或多个图形处理单元(GPU)。
返回图1的所示实施方案,指令提取级102通常被配置为基于指令指针101从指令高速缓存103中检索(提取)指令。如本领域技术人员应当理解的,指令指针101是指示要提取的当前指令的地址值,并且可以通过执行用于修改正在执行的指令的程序流的操作来进行修改。例如,在一些实施方案中,分支指令例如基于对由分支指令或相关联的指令指定的数据的评估来修改指令指针101。
为了支持分支指令的高效执行,处理器100包括返回堆栈115和分支目标缓冲器(BTB)110。返回堆栈115是存储在处理器100处执行的返回指令的返回地址的堆栈存储器结构。在操作中,响应于识别为调用类型的分支指令,提取级102生成指定的指令指针值作为返回地址。在一些实施方案中,指令提取级102通过将指定的值添加到指令指针101来生成返回地址,其中指定的值对应于在指令流水线处执行的指令的大小(例如,宽度)。指令提取级将返回地址压入返回堆栈115上。对于返回指令,提取级102通过以下来识别返回地址:从返回堆栈115的顶部检索(弹出)返回地址,如本文进一步所述;以及将返回地址存储为指令指针101的值。
BTB 110包括多个条目(例如,条目111),每个条目对应于与分支指令相关联的不同的指令指针值。在每个指令周期,指令提取级102将指令指针101提供到BTB 110。响应于识别出条目对应于所接收的指令指针值(称为BTB命中),BTB 110从所识别的条目的分支目标地址(BTA)字段(例如,条目111的BTA字段112)检索BTA,并且将BTA提供到指令提取级102。因此,BTB 110为处理器100提供了快速识别分支目标地址的高效方式。
在一些实施方案中,处理器可非推测性地和推测性地修改BTB 110的条目,包括新条目的分配和BTA的修改。流水线级104执行非推测性更新。例如,响应于将指令识别为分支指令,解码级将用于分支指令的指令指针值提供到BTB 110。作为响应,BTB 110确保针对所接收的指令指针值分配条目。另外,执行单元将针对分支指令计算出的BTA提供到BTB 110,所述BTB将BTA存储在对应条目的BTA字段处。
为了进一步支持分支预测,处理器100包括条件预测器108。条件预测器108监测在处理器100的指令流水线处执行的分支指令的历史(示出为分支历史109),并且根据一种或多种已知的分支预测技术来识别分支历史109中的模式。基于所识别的模式和每个分支的实际方向,条件预测器108预测每个分支指令是被采用还是不被采用(有时称为分支指令的方向)。
返回到BTB 110,除了所存储的BTA,每个条目还包括返回预测字段(例如返回预测字段113),以用于指示与对应的BTA相关联的指令块中的下一个分支指令是否被预测为返回指令。为了便于描述,这种序列在本文中称为“分支返回”序列,其中开始所述序列的分支指令称为分支返回序列的“源”分支。这种序列的示例为如下:
JMP ADDRESS A(源分支指令)
LD X,DATA1(向寄存器X加载值)
ADD X,Y(在寄存器X和寄存器Y处添加值)
RETURN
相反,以下是序列的示例,在所述序列中,返回指令不是给定分支指令之后的下一个分支指令(并因此不是分支返回序列):
JMP ADDRESS A(分支指令)
LD X,DATA1(向寄存器X加载值)
ADD X,Y(在寄存器X和寄存器Y处添加值)
JMP ADDRESS B(分支指令—不是分支返回序列)
响应于识别分支返回序列达阈值次数,BTB 110设置返回预测字段以指示预测返回。响应于从指令提取级102接收到指令指针值,BTB 110确定所接收的指令指针值是否导致BTB命中,如上所述。响应于BTB命中,BTB 110将导致BTB命中的条目的BTA字段处的BTA提供到指令提取级102。另外,BTB 110确定对应的返回预测字段是否指示预测返回。如果是,则BTB 110发起在返回堆栈115处进行弹出操作。因此,当达到预测返回指令时,返回地址可用于快速访问。
如果程序流中的下一个分支指令不是返回指令,则流水线级104中的一个或多个流水线级向BTB 110指示错误预测返回。在一些实施方案中,响应于错误预测返回,BTB 110清除对应于分支返回序列的源分支指令的条目的返回预测字段。在其他实施方案中,BTB110响应于错误预测返回发生阈值次数而清除返回预测字段。
在一些实施方案中,除了发起对返回堆栈115的访问之外,处理器100还响应于预测返回采取另外的动作。例如,在一些实施方案中,响应于预测返回,处理器100抑制预期导致对预测返回指令本身的BTB命中的对BTB 110的后续访问。通过抑制此访问,处理器100节省了功率和其他系统资源。
图2是根据一些实施方案的响应于BTB 110指示分支指令所针对的指令块包括返回指令而发起对返回堆栈115的访问的处理器100的示例200的图。在示例200中,条目111包括BTA字段112,以用于存储对应于条目111的分支指令的BTA。另外,条目111的返回预测字段113被设置为指示分支指令被预测为分支返回序列的分支源的值(在所描绘的示例中指示为“Y”)。也就是说,返回预测字段113处于指示与对应于条目111的分支指令相关联的指令块中的下一个分支指令被预测为返回指令的状态。为了便于描述,此状态在本文中称为指示预测返回的返回预测字段。
对于示例200,指令提取级102将指令指针101提供到BTB 110。提供指令指针101导致在条目111处的BTB命中。也就是说,BTB 110将条目111识别为与对应于指令指针101的存储器地址相关联。响应于BTB命中,BTB 110将存储在BTA字段112中的BTA提供到指令提取级102。另外,响应于返回预测字段113指示预测返回,BTB 110发起对返回堆栈115的访问以在堆栈的顶部处检索(弹出)地址,以供提供到指令提取级102。
图3是根据一些实施方案的处理器响应于BTB指示分支指令所针对的指令块包括返回指令而发起对返回地址的堆栈的访问的方法300的流程图。在框302处,BTB从处理器的提取级接收指令指针值。在框304处,BTB识别对应于所接收的指令指针的条目。在框306处,BTB识别所识别的条目的返回预测字段是否指示预测返回。如果否,则所述方法流程移动至框310,并且BTB将所识别的BTB条目处的BTA提供到提取级。
在框306处,如果BTB识别所识别的条目的返回预测字段确实指示了预测返回,则所述方法流程移动至框308,并且BTB发起从返回堆栈的顶部检索返回地址。所述方法流程前进至框310,并且BTB将所识别的BTB条目处的BTA提供到提取级。
如本文所公开的,在一些实施方案中,一种方法包括:基于处理器的分支目标缓冲器(BTB)的第一条目来识别第一分支返回指令的预测;以及响应于识别所述第一分支返回指令的所述预测,发起对所述处理器的分支返回地址的堆栈的访问。在一个方面,所述第一条目包括:第一返回字段,所述第一返回字段指示所述第一分支返回指令的所述预测;以及第一分支字段,所述第一分支字段指示第一预测分支地址。在另一方面,所述第一分支返回指令的所述预测包括所述第一预测分支地址对应于返回指令的预测。在另一个方面,所述方法包括:响应于识别出所述第一分支返回指令被错误预测,设置所述第一条目以指示无返回预测。
在一个方面,所述方法包括:响应于确定所述第一条目指示返回指令的预测,抑制对所述BTB的后续访问。在又一方面,所述方法包括:基于所述BTB的第二条目来识别第二分支返回指令的预测;以及响应于识别所述第二分支返回指令的所述预测,发起对所述分支返回地址的堆栈的访问。
如本文所公开的,在一些实施方案中,一种方法包括:基于第一程序计数器值来访问分支目标缓冲器(BTB)的第一条目;基于所述BTB的所述第一条目的第一分支地址字段来分支到第一指令地址;以及响应于所述BTB的所述第一条目的第一返回字段指示所述第一指令地址对应于返回指令,发起对分支返回地址的堆栈的访问。在一个方面,所述方法包括:响应于确定所述第一指令地址对应于所述返回指令,将返回的指示存储在所述第一返回字段处。在又一方面,发起对所述分支返回地址的堆栈的访问包括:与分支到所述第一指令地址的同时地从所述分支返回地址的堆栈返回指令地址。在另一个方面,所述方法包括:响应于所述第一返回字段指示所述第一指令地址对应于所述返回指令,抑制对所述BTB的后续访问。
在一个方面,抑制所述后续访问包括:抑制预期导致对预测返回指令的BTB命中的对所述BTB的访问。在另一方面,所述方法包括:基于第二程序计数器值来访问所述BTB的第二条目;基于所述BTB的所述第一条目的第二分支地址字段来分支到第二指令地址;以及响应于所述BTB的所述第二条目的第二返回字段指示所述第二指令地址对应于返回指令,发起对所述分支返回地址的堆栈的访问。在又一方面,所述方法包括:响应于识别出所述返回被错误预测,设置所述第一条目以指示无返回预测。
如本文所公开的,在一些实施方案中,一种处理器包括:分支目标缓冲器(BTB),所述分支目标缓冲器包括识别第一分支返回指令的预测的第一条目;分支返回地址的堆栈;以及处理器核心,所述处理器核心被配置为响应于所述BTB的所述第一条目指示所述第一分支返回指令的所述预测而发起对所述分支返回地址的堆栈的访问。在一个方面,所述BTB的所述第一条目包括:第一返回字段,所述第一返回字段指示所述第一分支返回指令的所述预测;以及第一分支字段,所述第一分支字段指示第一预测分支地址。在另一方面,所述第一分支返回指令的所述预测包括所述第一预测分支地址对应于返回指令的预测。
在一个方面,所述处理器核心被配置为:响应于识别出所述第一分支返回指令被错误预测,设置所述第一条目以指示无返回预测。在另一方面,所述处理器核心被配置为:响应于确定所述第一条目指示返回指令,抑制对所述BTB的后续访问。在另一个方面,所述处理器核心被配置为:响应于确定所述第一条目指示返回指令,抑制预期访问所述第一分支返回指令的对所述BTB的后续访问。在又一方面,所述BTB包括第二条目,所述第二条目指示第二分支返回指令的预测;并且所述处理器核心被配置为响应于识别出所述第二分支返回指令的所述预测而发起对所述分支返回地址的堆栈的访问。
计算机可读存储介质可包括在使用期间可由计算机系统访问以将指令和/或数据提供给计算机系统的任何非暂时性存储介质或非暂时性存储介质的组合。此类存储介质可包括但不限于光学介质(例如,压缩光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或快闪存储器)或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可嵌入在计算系统中(例如,系统RAM或ROM)、固定地附接到计算系统(例如,磁性硬盘驱动器)、可拆卸地附接到计算系统(例如,光盘或基于通用串行总线(USB)的快闪存储器),或者通过有线或无线网络耦接到计算机系统(例如,网络可访问存储装置(NAS))。
在一些实施方案中,上述技术的某些方面可由执行软件的处理系统的一个或多个处理器来实现。软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。软件可包括当由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面的指令和某些数据。非暂时性计算机可读存储介质可包括例如磁盘或光盘存储装置、固态存储装置诸如快闪存储器、高速缓存、随机存取存储器(RAM)或一个或多个其他非易失性存储器装置等。存储在非暂时性计算机可读存储介质上的可执行指令可呈源代码、汇编语言代码、目标代码或者由一个或多个处理器解译或可其他方式执行的其他指令格式。
应注意,并非所有上文在一般描述中所描述的所有活动或元件是所需要的的,特定活动或装置的一部分可能不是所需要的,并且可执行一个或多个其他活动,或者可包括除所描述的那些元件之外的元件。此外,列出活动的顺序不一定是执行所述活动的顺序。另外,已经参考具体实施方案描述概念。然而,本领域普通技术人员应了解,在不脱离如所附权利要求中所阐述的本公开的范围的情况下,可作出各种修改和改变。因此,本说明书和附图应被视为说明性而非限制性的,并且所有此类修改都意图包括在本公开的范围内。
上文已经参照具体实施方案描述益处、其他优点以及问题解决方案。然而,所述益处、优点、问题解决方案以及可使任何益处、优点或问题解决方案出现或变得更突出的任何特征都不应被解释为是任何或所有权利要求的关键、必需或必要特征。此外,以上所公开的特定实施方案只是说明性的,因为所公开的主题可按受益于本文教义的本领域技术人员显而易知的不同但等效的方式来修改和实践。除了如所附权利要求中所描述的之外,并不意图限制本文所示的构造或设计的细节。因此,明显以上所公开的特定实施方案可更改或修改,并且所有此类变体被认为在所公开的主题的范围内。因此,本文所寻求的保护正如所附权利要求中所陈述。
Claims (20)
1.一种方法,其包括:
基于处理器[100]的分支目标缓冲器(BTB)[110]的第一条目[111]来识别第一分支返回指令的预测;以及
响应于识别所述第一分支返回指令的所述预测,发起对所述处理器的分支返回地址的堆栈[115]的访问。
2.如权利要求1所述的方法,其中所述第一条目包括:
第一返回字段[113],所述第一返回字段[113]指示所述第一分支返回指令的所述预测;以及
第一分支字段[112],所述第一分支字段[112]指示第一预测分支地址。
3.如权利要求2所述的方法,其中所述第一分支返回指令的所述预测包括所述第一预测分支地址对应于返回指令的预测。
4.如权利要求3所述的方法,其还包括:响应于识别出所述第一分支返回指令被错误预测,设置所述第一条目以指示无返回预测。
5.如权利要求1所述的方法,其还包括:
响应于确定所述第一条目指示返回指令的预测,抑制对所述BTB的后续访问。
6.如权利要求1所述的方法,其还包括:
基于所述BTB的第二条目来识别第二分支返回指令的预测;以及
响应于识别所述第二分支返回指令的所述预测,发起对所述分支返回地址的堆栈的访问。
7.一种方法,其包括:
基于第一程序计数器值[101]来访问分支目标缓冲器(BTB)[110]的第一条目;
基于所述BTB的所述第一条目的第一分支地址字段[112]来分支到第一指令地址;以及
响应于所述BTB的所述第一条目的第一返回字段[113]指示所述第一指令地址对应于返回指令,发起对分支返回地址的堆栈[115]的访问。
8.如权利要求7所述的方法,其还包括:
响应于确定所述第一指令地址对应于所述返回指令,将返回的指示存储在所述第一返回字段处。
9.如权利要求7所述的方法,其中发起对所述分支返回地址的堆栈的访问包括:与分支到所述第一指令地址的同时地从所述分支返回地址的堆栈返回指令地址。
10.如权利要求7所述的方法,其还包括:
响应于所述第一返回字段指示所述第一指令地址对应于所述返回指令,抑制对所述BTB的后续访问。
11.如权利要求10所述的方法,其中抑制所述后续访问包括:抑制预期导致对预测返回指令的BTB命中的对所述BTB的访问。
12.如权利要求7所述的方法,其还包括:
基于第二程序计数器值来访问所述BTB的第二条目;
基于所述BTB的所述第一条目的第二分支地址字段来分支到第二指令地址;以及
响应于所述BTB的所述第二条目的第二返回字段指示所述第二指令地址对应于返回指令,发起对所述分支返回地址的堆栈的访问。
13.如权利要求7所述的方法,其还包括:
响应于识别出所述返回被错误预测,设置所述第一条目以指示无返回预测。
14.一种处理器[100],其包括:
分支目标缓冲器(BTB)[110],所述BTB[110]包括识别第一分支返回指令的预测的第一条目[111];
分支返回地址的堆栈[115];以及
处理器核心,所述处理器核心被配置为响应于所述BTB的所述第一条目指示所述第一分支返回指令的所述预测而发起对所述分支返回地址的堆栈的访问。
15.如权利要求14所述的处理器,其中所述BTB的所述第一条目包括:
第一返回字段[113],所述第一返回字段[113]指示所述第一分支返回指令的所述预测;以及
第一分支字段[112],所述第一分支字段[112]指示第一预测分支地址。
16.如权利要求15所述的处理器,其中所述第一分支返回指令的所述预测包括所述第一预测分支地址对应于返回指令的预测。
17.如权利要求15所述的处理器,其中所述处理器核心被配置为:
响应于识别出所述第一分支返回指令被错误预测,设置所述第一条目以指示无返回预测。
18.如权利要求14所述的处理器,其中所述处理器核心被配置为:
响应于确定所述第一条目指示返回指令,抑制对所述BTB的后续访问。
19.如权利要求14所述的处理器,其中所述处理器核心被配置为:
响应于确定所述第一条目指示返回指令,抑制预期访问所述第一分支返回指令的对所述BTB的后续访问。
20.如权利要求14所述的处理器,其中:
所述BTB包括第二条目,所述第二条目指示第二分支返回指令的预测;并且
所述处理器核心被配置为响应于识别出所述第二分支返回指令的所述预测而发起对所述分支返回地址的堆栈的访问。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/043,293 US11055098B2 (en) | 2018-07-24 | 2018-07-24 | Branch target buffer with early return prediction |
US16/043,293 | 2018-07-24 | ||
PCT/US2019/042176 WO2020023263A1 (en) | 2018-07-24 | 2019-07-17 | Branch target buffer with early return prediction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112470122A true CN112470122A (zh) | 2021-03-09 |
CN112470122B CN112470122B (zh) | 2022-05-10 |
Family
ID=69179546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980049605.0A Active CN112470122B (zh) | 2018-07-24 | 2019-07-17 | 具有提前返回预测的分支目标缓冲器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11055098B2 (zh) |
EP (1) | EP3827338A4 (zh) |
JP (1) | JP7269318B2 (zh) |
KR (1) | KR102571623B1 (zh) |
CN (1) | CN112470122B (zh) |
WO (1) | WO2020023263A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023165185A1 (zh) * | 2022-03-02 | 2023-09-07 | 腾讯科技(深圳)有限公司 | 分支预测方法、装置、处理器、介质及设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11663126B1 (en) * | 2022-02-23 | 2023-05-30 | International Business Machines Corporation | Return address table branch predictor |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5604877A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
US5850543A (en) * | 1996-10-30 | 1998-12-15 | Texas Instruments Incorporated | Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return |
US20030120906A1 (en) * | 2001-12-21 | 2003-06-26 | Jourdan Stephan J. | Return address stack |
US6609194B1 (en) * | 1999-11-12 | 2003-08-19 | Ip-First, Llc | Apparatus for performing branch target address calculation based on branch type |
US20040003213A1 (en) * | 2002-06-28 | 2004-01-01 | Bockhaus John W. | Method for reducing the latency of a branch target calculation by linking the branch target address cache with the call-return stack |
US20090210661A1 (en) * | 2008-02-20 | 2009-08-20 | International Business Machines Corporation | Method, system and computer program product for an implicit predicted return from a predicted subroutine |
CN101884025A (zh) * | 2007-11-02 | 2010-11-10 | 高通股份有限公司 | 用于使过程返回序列加速的方法和系统 |
US20180060075A1 (en) * | 2016-09-01 | 2018-03-01 | Oracle International Corporation | Method for reducing fetch cycles for return-type instructions |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5964868A (en) * | 1996-05-15 | 1999-10-12 | Intel Corporation | Method and apparatus for implementing a speculative return stack buffer |
US6957327B1 (en) * | 1998-12-31 | 2005-10-18 | Stmicroelectronics, Inc. | Block-based branch target buffer |
US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US6973563B1 (en) | 2002-01-04 | 2005-12-06 | Advanced Micro Devices, Inc. | Microprocessor including return prediction unit configured to determine whether a stored return address corresponds to more than one call instruction |
US7237098B2 (en) * | 2003-09-08 | 2007-06-26 | Ip-First, Llc | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
US7913068B2 (en) * | 2008-02-21 | 2011-03-22 | International Business Machines Corporation | System and method for providing asynchronous dynamic millicode entry prediction |
US20120079255A1 (en) | 2010-09-25 | 2012-03-29 | Combs Jonathan D | Indirect branch prediction based on branch target buffer hysteresis |
US10338928B2 (en) | 2011-05-20 | 2019-07-02 | Oracle International Corporation | Utilizing a stack head register with a call return stack for each instruction fetch |
US9395994B2 (en) * | 2011-12-30 | 2016-07-19 | Intel Corporation | Embedded branch prediction unit |
US9600418B2 (en) | 2012-11-19 | 2017-03-21 | Florida State University Research Foundation, Inc. | Systems and methods for improving processor efficiency through caching |
US20140250289A1 (en) * | 2013-03-01 | 2014-09-04 | Mips Technologies, Inc. | Branch Target Buffer With Efficient Return Prediction Capability |
US20190235873A1 (en) * | 2018-01-30 | 2019-08-01 | Samsung Electronics Co., Ltd. | System and method of reducing computer processor power consumption using micro-btb verified edge feature |
GB201802815D0 (en) * | 2018-02-21 | 2018-04-04 | Univ Edinburgh | Branch target buffer arrangement for instruction prefetching |
GB2577051B (en) * | 2018-09-11 | 2021-03-03 | Advanced Risc Mach Ltd | Branch prediction using branch target buffer |
-
2018
- 2018-07-24 US US16/043,293 patent/US11055098B2/en active Active
-
2019
- 2019-07-17 JP JP2021503748A patent/JP7269318B2/ja active Active
- 2019-07-17 CN CN201980049605.0A patent/CN112470122B/zh active Active
- 2019-07-17 KR KR1020217004753A patent/KR102571623B1/ko active IP Right Grant
- 2019-07-17 EP EP19841112.6A patent/EP3827338A4/en active Pending
- 2019-07-17 WO PCT/US2019/042176 patent/WO2020023263A1/en unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5604877A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
US5850543A (en) * | 1996-10-30 | 1998-12-15 | Texas Instruments Incorporated | Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return |
US6609194B1 (en) * | 1999-11-12 | 2003-08-19 | Ip-First, Llc | Apparatus for performing branch target address calculation based on branch type |
US20030120906A1 (en) * | 2001-12-21 | 2003-06-26 | Jourdan Stephan J. | Return address stack |
US20040003213A1 (en) * | 2002-06-28 | 2004-01-01 | Bockhaus John W. | Method for reducing the latency of a branch target calculation by linking the branch target address cache with the call-return stack |
CN101884025A (zh) * | 2007-11-02 | 2010-11-10 | 高通股份有限公司 | 用于使过程返回序列加速的方法和系统 |
US20090210661A1 (en) * | 2008-02-20 | 2009-08-20 | International Business Machines Corporation | Method, system and computer program product for an implicit predicted return from a predicted subroutine |
US20180060075A1 (en) * | 2016-09-01 | 2018-03-01 | Oracle International Corporation | Method for reducing fetch cycles for return-type instructions |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023165185A1 (zh) * | 2022-03-02 | 2023-09-07 | 腾讯科技(深圳)有限公司 | 分支预测方法、装置、处理器、介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
KR20210025677A (ko) | 2021-03-09 |
EP3827338A1 (en) | 2021-06-02 |
EP3827338A4 (en) | 2022-04-27 |
JP7269318B2 (ja) | 2023-05-08 |
KR102571623B1 (ko) | 2023-08-29 |
CN112470122B (zh) | 2022-05-10 |
JP2021532471A (ja) | 2021-11-25 |
US11055098B2 (en) | 2021-07-06 |
US20200034151A1 (en) | 2020-01-30 |
WO2020023263A1 (en) | 2020-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9256428B2 (en) | Load latency speculation in an out-of-order computer processor | |
JP7160956B2 (ja) | 分岐命令のタイプに基づく先行分岐予測の選択的実行 | |
US10353710B2 (en) | Techniques for predicting a target address of an indirect branch instruction | |
EP3803577A1 (en) | Storing incidental branch predictions to reduce latency of misprediction recovery | |
CN112470122B (zh) | 具有提前返回预测的分支目标缓冲器 | |
CN112925632B (zh) | 处理方法及装置、处理器、电子设备及存储介质 | |
US10248555B2 (en) | Managing an effective address table in a multi-slice processor | |
CN114586003A (zh) | 使用页级跟踪的加载顺序队列的推测执行 | |
US11579886B2 (en) | System and method for multi-level classification of branches | |
US20090193240A1 (en) | Method and apparatus for increasing thread priority in response to flush information in a multi-threaded processor of an information handling system | |
CN110806898B (zh) | 处理器及指令操作方法 | |
US11392383B2 (en) | Apparatus and method for prefetching data items | |
US20220075624A1 (en) | Alternate path for branch prediction redirect | |
EP3841465A1 (en) | Filtered branch prediction structures of a processor |
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 |