CN104603747B - 响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法 - Google Patents
响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法 Download PDFInfo
- Publication number
- CN104603747B CN104603747B CN201380046029.7A CN201380046029A CN104603747B CN 104603747 B CN104603747 B CN 104603747B CN 201380046029 A CN201380046029 A CN 201380046029A CN 104603747 B CN104603747 B CN 104603747B
- Authority
- CN
- China
- Prior art keywords
- branch
- bpt
- instruction
- history
- direction history
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000004044 response Effects 0.000 title claims abstract description 44
- 230000015654 memory Effects 0.000 claims abstract description 85
- 230000008569 process Effects 0.000 claims abstract description 33
- 238000012545 processing Methods 0.000 claims abstract description 29
- 238000003860 storage Methods 0.000 claims description 36
- 230000014759 maintenance of location Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 229920006395 saturated elastomer Polymers 0.000 description 6
- 230000003139 buffering effect Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 230000005611 electricity Effects 0.000 description 4
- 230000002349 favourable effect Effects 0.000 description 4
- 238000011017 operating method Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 210000003484 anatomy Anatomy 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000000007 visual 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
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明揭示响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法。在一个实施例中,分支历史管理电路经配置以处理分支预测表调换指令。响应于所述分支预测表调换指令,所述分支历史管理电路经配置以将从高速缓冲存储器指派给当前软件代码区的先前分支方向历史组调换到分支预测表BPT中以用于分支预测。当前分支方向历史组被调换出所述BPT且存储于高速缓冲存储器中以避免被覆写。以此方式,在处理特定软件代码区时,使用指派给所述特定软件代码区的分支方向历史组来用于分支预测。因此,增加了指令处理系统的分支预测准确度及指令处理处理量。
Description
技术领域
本发明的技术大体上涉及使用分支方向历史来预测基于中央处理单元(CPU)的系统中的条件性分支计算机指令的条件性分支的解析度。
背景技术
处理器在计算机平台进化的核心处。随着处理器的物理设计已经进化,处理信息及执行功能的方法也已经改变。举例来说,已在处理器设计中实施指令的“管线化”。处理器管线由许多级构成,其中每一级执行与执行指令相关联的功能。每一级被称作管级或管片段。所述级连接在一起以形成管线。指令在管线的一端处进入且在另一端处退出。管线化的一个优点在于指令的执行是重叠的,因为指令被并行地评估。管线化还被称作指令层级并行度(ILP)。
在此方面,图1说明中央处理单元(CPU)12的示范性指令处理系统10。指令在由图1中的指令流14表示的连续流中经过处理。指令处理系统10采用指令管线15。指令管线15包含多个管级,包含指令获取级、指令解码级、指令执行级及指令提交级。在所说明的实例中,指令流14源自指令存储器16,指令存储器16提供对计算机可执行程序的指令的存储。指令获取电路18从指令存储器16及/或从指令高速缓冲存储器22读取指令20(例如,指令20(0)-20(W)),且可递增通常存储于寄存器24(0)-24(X)中的一者中的程序计数器。寄存器24(0)-24(X)是指令处理系统10的架构寄存器,其可包含通用寄存器(GPR)及/或其它架构寄存器(作为非限制性实例,帧指针、堆叠指针、链接寄存器及/或程序计数器)。
在指令获取电路18获取指令20之后,指令解码电路26解码指令20。指令解码电路26将指令20转译为处理器特定的微指令,且从寄存器24(0)-24(X)中的适当一者或从数据存储器(未图示)及/或数据高速缓冲存储器(未图示)检索指令20(如果存在)所需的操作数。指令解码电路26可保存一组多个指令28(0)-28(Y)以用于解码。指令20被发布到指令执行管线32的指令队列30中。指令20的实际执行发生在指令执行管线32(例如,指令执行管线32(0)-32(Z))中。提供指令提交电路34,其确定需要所执行的指令20中的哪一者,且例如通过使用所执行的指令20的结果更新寄存器24(作为非限制性实例,寄存器24(0)-24(X))、数据存储器及/或数据高速缓冲存储器而提交那些结果。
指令20可包含条件性分支指令。可采用或不采用条件性分支指令。直到条件性分支指令被执行且确定分支条件,才知晓是否将采用条件性分支指令。然而,除条件性分支指令之外的指令可被获取到指令管线15中,之后执行条件性分支指令。举例来说,如果采用分支,那么在未采用分支的情况下获取到待执行的指令管线15中的指令20可必须从指令管线15冲洗。因此,指令处理可被指令管线15中的时钟循环级的数目延迟,以再填充指令管线15。
为了减少指令管线15的指令冲洗,分支预测系统36可用于指令处理系统10中。分支预测系统36预测条件性分支指令的方向。在此方面,分支预测系统36提供基于所提交的分支指令38的历史来预测条件性分支指令的方向的分支预测40。将分支预测40提供给指令处理系统10的指令处理电路42(作为非限制性实例,指令获取电路18及/或指令解码电路26)。基于分支预测40,处理器可将条件性分支指令的分支目标地址处的指令20获取到指令管线15中或将下一连续指令20获取到指令管线15中。然而,使用常规的方法提供的分支预测可能不如所需的那么准确。
发明内容
本发明的实施例提供响应于分支预测表调换指令的调换分支方向历史及相关的系统和方法。分支预测表(BPT)由指令处理系统中的分支预测系统使用以预测条件性分支指令的分支方向。分支预测是基于当前加载在BPT中的分支方向历史组。基于先前提交的分支指令的经解析的分支方向来填充分支方向历史组。因为CPU中的不同软件代码区可具有不同的分支模式,所以可通过使用指派给不同软件代码区的不同分支方向历史组来增加分支预测准确度。
在此方面,在一个实施例中,提供分支历史管理电路以管理由中央处理单元(CPU)指令处理系统用于分支预测的至少一个分支预测表(BPT)。分支历史管理电路经配置以响应于分支预测表调换指令的执行。响应于分支预测表调换指令的执行,分支历史管理电路经配置以与存储于高速缓冲存储器中的多个先前分支方向历史组中的一者调换用于至少一个分支预测表(BPT)中的分支预测的当前分支方向历史组。术语“先前分支方向历史组”是指在执行之前存在于BPT中以执行分支方向历史组调换的分支方向历史组,而不管所述先前分支方向历史组是否已用于分支预测。以此方式,分支预测可更准确。因此,可归因于减少的指令管线冲洗及/或将减小数目的气泡引入到指令管线中而增加指令处理系统的指令处理处理量。
作为非限制性实例,分支预测表调换指令允许编程者及/或编译者控制哪一(哪些)代码区与供分支预测系统使用的分支方向历史组相关联。编程者及/或编译者可基于编程者及/或编译者的知识、分析及/或代码的剖析来作出这些选择。因此,可在编程者及/或编译者的控制下增加分支预测准确度。
在另一实施例中,揭示用于提供分支历史管理电路以管理由中央处理单元(CPU)指令处理系统用于分支预测的至少一个分支预测表(BPT)的装置。所述用于提供分支历史管理的装置包括响应于分支预测表调换指令的执行的装置。响应于分支预测表调换指令的执行,所述装置经配置以与存储于高速缓冲存储器中的多个先前分支方向历史组中的一者调换用于至少一个分支预测表(BPT)中的分支预测的当前分支方向历史组。
在另一实施例中,揭示一种操作分支历史管理电路以用于管理由中央处理单元(CPU)指令处理系统用于分支预测的至少一个分支预测表(BPT)的方法。所述方法响应于分支预测表调换指令的执行。响应于分支预测表调换指令的执行,所述方法包括与存储于高速缓冲存储器中的多个先前分支方向历史组中的一者调换用于至少一个分支预测表(BPT)中的分支预测的当前分支方向历史组。
在另一实施例中,揭示一种高速缓冲存储器。所述高速缓冲存储器经配置以存储多个先前分支方向历史组。所述高速缓冲存储器响应于分支预测表调换指令的执行。响应于分支预测表调换指令的执行,所述高速缓冲存储器经配置以将多个先前分支方向历史组中的一者提供到分支预测表(BPT)中以由中央处理单元(CPU)中的分支预测电路用作当前分支方向历史。所述高速缓冲存储器还经配置以存储从BPT逐出到多个先前分支方向历史组中的一者的逐出的分支方向历史组。
在另一实施例中,揭示一种用于在中央处理单元(CPU)指令处理系统中执行分支预测的分支预测系统。所述分支预测系统包括高速缓冲存储器。所述高速缓冲存储器经配置以存储多个先前分支方向历史组。所述高速缓冲存储器响应于分支预测表调换指令的执行。响应于分支预测表调换指令的执行,所述高速缓冲存储器经配置以将多个先前分支方向历史组中的一者提供到分支预测表(BPT)中以由中央处理单元(CPU)中的分支预测电路用作当前分支方向历史。所述高速缓冲存储器进一步经配置以存储从BPT逐出到多个先前分支方向历史组中的一者的逐出的分支方向历史组。所述分支预测系统还包括分支历史管理电路。所述分支历史管理电路经配置以响应于分支预测表调换指令的执行。响应于分支预测表调换指令的执行,分支历史管理电路经配置以与存储于高速缓冲存储器中的多个先前分支方向历史组中的一者调换用于至少一个BPT中的分支预测的当前分支方向历史组。
在另一实施例中,揭示一种非暂时性计算机可读媒体。所述计算机可读媒体具有存储在其上的计算机可执行指令。所述指令包括至少一个分支预测表调换指令。所述指令致使处理器实施操作分支历史管理电路的方法。所述指令包括,响应于分支预测表调换指令的执行,使用存储于高速缓冲存储器中的多个先前分支方向历史组中的一者调换用于至少一个分支预测表(BPT)中的分支预测的当前分支方向历史组。
附图说明
图1是包含提供用于基于先前提交的分支指令来预测条件性分支指令的分支方向的分支预测的分支预测系统的示范性指令处理系统的框图;
图2是采用经配置以响应于分支预测表调换指令而调换分支预测表(BPT)中的分支方向历史的分支历史管理电路的示范性分支预测系统的框图;
图3是说明采用经配置以响应于分支预测表调换指令而调换分支预测表(BPT)中的分支方向历史的分支历史管理电路的图2中的分支预测系统的示范性过程的流程图;
图4是图2的分支预测系统的框图,其进一步采用用于对逐出的分支方向历史组进行排队以用于存储到高速缓冲存储器中的队列;
图5是采用经配置以响应于分支预测表调换指令而调换分支预测表(BPT)中的分支方向历史的分支历史管理电路的替代性分支预测系统的框图,其采用有效BPT及影子BPT;
图6是采用经配置以响应于分支预测表调换指令而调换分支预测表(BPT)中的分支方向历史的分支历史管理电路的替代性分支预测系统的框图(s)其采用指示BPT是否有效用于分支预测的BPT有效性指示符;
图7是采用经配置以响应于分支预测表调换指令而调换分支预测表(BPT)中的分支方向历史的分支历史管理电路的替代性分支预测系统的框图,其从高速缓冲存储器中的多个BPT选择当前BPT且直接在高速缓冲存储器中直接存取及更新当前BPT;及
图8是可包含根据本发明的指令处理系统的示范性基于处理器的系统的框图,其包含但不限于用于管理用于分支预测的分支历史的图2及4到7的分支预测系统及/或分支历史管理电路。
具体实施方式
现在参看各图,描述了本发明的几个示范性实施例。词语“示范性”在本文中用于指“充当实例、例子或说明”。在本文中被描述为“示范性”的任何实施例未必被解释为比其它实施例优选或有利。
本发明的实施例提供响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法。分支预测表(BPT)由指令处理系统中的分支预测系统使用以预测条件性分支指令的分支方向。分支预测是基于当前加载在BPT中的分支方向历史组。基于先前提交的分支指令的经解析的分支方向来填充分支方向历史组。因为CPU中的不同软件代码区可具有不同的分支模式,所以可通过使用指派给不同软件代码区的不同分支方向历史组来增加分支预测准确度。
在此方面,在一个实施例中,揭示用于管理用于由中央处理单元(CPU)指令处理系统进行分支预测的至少一个分支预测表(BPT)的分支历史管理电路。所述分支历史管理电路经配置以响应于分支预测表调换指令的执行。响应于分支预测表调换指令的执行,分支历史管理电路经配置以与存储于高速缓冲存储器中的多个先前分支方向历史组中的一者调换用于至少一个分支预测表(BPT)中的分支预测的当前分支方向历史组。以此方式,分支预测可更准确。因此,可归因于减少的指令管线冲洗及/或将减小数目的气泡引入到指令管线中而增加指令处理系统的指令处理处理量。
在此方面,作为非限制性实例,分支预测表调换指令允许编程者及/或编译者控制哪一(哪些)软件代码区与供分支预测系统使用的分支方向历史组相关联。编程者及/或编译者可基于编程者及/或编译者的知识、分析及/或代码的剖析来作出这些选择。因此,可在编程者及/或编译者的控制下增加分支预测准确度。
在此方面,图2说明包含经配置以响应于分支预测表调换指令而调换分支预测表中的分支方向历史组的电路的替代性分支预测系统36(1)。更具体来说,在分支预测系统36(1)中提供分支历史管理电路44。分支历史管理电路44经配置以响应于分支预测表调换指令52而调换BPT 46中的BPT条目48当中的分支方向历史组。分支历史管理电路44维持基于先前所提交的分支指令38的信息,其可用于预测新获取的条件性分支指令将解析的方向。
在此方面,继续参考图2,分支历史管理电路44采用BPT 46。BPT 46包括多个BPT条目48(例如,BPT条目48(0)-48(N))。每一BPT条目48存储指示是采用还是不采用条件性分支指令的一或多个先前执行的信息。因此,每一BPT条目48可用于提供指示新获取的条件性分支指令的分支是否将更可能被采用或不采用的分支预测40。作为非限制性实例,每一BPT条目48可包括饱和计数器。在索引到BPT条目48的条件性分支指令解析为采用时,可递增饱和计数器,且在不采用时递减饱和计数器。因此,饱和计数器的最高次序位可用于预测条件性分支指令将被采用(1)还是不被采用(0)。
在此实施例中,较小大小的BPT 46可用于减少BPT 46的存储器大小要求且在维持存储器状态中节省电力。然而,较小大小的BPT 46可不能够提供待解析的每一唯一分支条件的BPT条目48。举例来说,可基于条件性分支指令的存储器地址来索引BPT 46。因此,BPT条目48可混叠,因为两个或更多个不同条件性分支指令可索引到BPT 46的相同BPT条目48。BPT 46中的BPT条目48的混叠可降低基于BPT条目48的分支预测40的准确度,因为两个或更多个不同条件性分支指令的历史用于更新相同的BPT条目48。作为基于条件性分支指令的存储器地址索引BPT 46的替代方案,可基于最近所提交的分支指令38已解析的方向的模式(被称作“分支模式历史”或“模式历史”)来索引BPT 46。由分支模式历史索引的BPT 46也可被称作模式历史表(PHT)。基于分支模式历史来索引BPT 46可为有利的,因为在某一模式历史之后执行的当前条件性分支指令可更可能在与在相同模式历史之后执行的先前条件性分支指令相同的方向上解析。
然而,指令20的不同软件代码区可不同地解析特定模式历史。作为非限制性实例,可在不同的软件应用、进程、线程、库或子例程中提供不同的软件代码区。此外,归因于上下文切换、子例程调用及/或子例程返回,指令处理系统10可在不同的软件代码区当中切换执行。在执行切换到不同地解析模式历史的软件代码区时,起初会降低分支预测40的准确度。这之所以会发生是因为分支预测40是基于经更新以基于不同的软件代码区来预测分支方向40的混叠的BPT条目48。分支预测40的准确度可在混叠的BPT条目48基于当前软件代码区经更新时得到提高。然而,在执行再次切换到另一软件代码区时,分支预测40的准确度可再次降低。
因此,在本文中揭示的实施例中,通过基于分支预测表调换指令将用于指令20的不同软件代码区的不同分支方向历史组调换进出BPT 46来增加分支预测40的准确度。响应于分支预测表调换指令,在指令管线中正处理的用于当前软件代码区的分支方向历史组被加载到BPT 46中以用于执行对所述当前软件代码区中的条件性分支指令的分支预测40。作为执行及解析当前软件代码区中的条件性分支指令的结果,基于在当前软件代码区中执行的条件性分支指令的解析度来更新加载于BPT 46中的对应的分支方向历史组。
当在指令管线中处理不同软件代码区时(如由后续的分支预测表调换指令指示),当前分支方向历史组被从BPT 46逐出到高速缓冲存储器中,以便不被不同软件代码区中的条件性分支指令的解析覆写。指派给不同软件代码区的不同分支方向历史组从高速缓冲存储器加载到BPT 46中以变为新(即,当前)的分支方向历史组。在指派给逐出的分支方向历史组的软件代码区在将来再次在指令管线中处理时,所述逐出的分支方向历史组可被加载回到BPT 46中。因此,通过使用指派给维持那些特定软件代码区的分支方向历史组的特定软件代码区的分支方向历史组,由BPT 46执行的分支预测40将更准确。作为此增加的分支预测准确度的结果,可增加采用分支历史管理电路44的指令处理系统的指令处理处理量。
继续参考图2,分支历史管理电路44采用经配置以存储多个先前分支方向历史组50(作为非限制性实例,先前分支方向历史组50(0)-50(M))的高速缓冲存储器58,所述多个先前分支方向历史组中的每一者与不同的软件代码区相关联。如本文中所使用,“先前分支方向历史”包含指示至少一个特定分支指令及/或至少一个特定分支指令模式是否已更常被采用或不被采用的信息。“先前分支方向历史组”包括一组先前分支方向历史(例如,一组饱和计数器)。术语“先前分支方向历史组50”是指在执行之前存在于BPT 46中的BPT条目48中以执行分支方向历史组调换的分支方向历史组,而不管所述先前分支方向历史组是否已用于分支预测。
高速缓冲存储器58可为各种类型的高速缓冲存储器中的任一者。作为非限制性实例,高速缓冲存储器58可包括数据高速缓冲存储器、一级数据高速缓冲存储器、二级数据高速缓冲存储器、多级数据高速缓冲存储器及/或先前分支方向历史组高速缓冲存储器。举例来说,高速缓冲存储器58可为存储图1的指令处理系统10的其它数据的数据高速缓冲存储器。或者,高速缓冲存储器58可经配置以仅存储分支预测信息。举例来说,高速缓冲存储器58可为经配置以仅存储多个先前分支方向历史组50及/或其它分支预测信息的专用高速缓冲存储器。可在与分支历史管理电路44相同的半导体裸片上提供高速缓冲存储器58。或者,可将高速缓冲存储器58提供为单独的高速缓冲存储器(例如,在与分支历史管理电路44不同的半导体裸片上)。
继续参考图2及图3中的流程图,分支历史管理电路44经配置以响应于分支预测表调换指令52的执行(图3中的框61)。响应于分支预测表调换指令52的执行,分支历史管理电路44经配置以使用多个先前分支方向历史组50(0)-50(M)中的一者将用于BPT 46中的分支预测40的当前分支方向历史组(例如,BPT条目48(0)-48(N)的内容)调换到BPT 46中(例如,新的分支方向历史组56)(图3中的框65)。
在此方面,分支预测表调换指令52可包括操作数62,操作数62指示高速缓冲存储器58中的多个先前分支方向历史组50(0)-50(M)当中的哪一先前分支方向历史组50将被调换到BPT 46中。操作数62可包括调换到BPT 46中的先前分支方向历史组50的地址及/或索引。响应于分支预测表调换指令52已执行及/或提交的指示的接收,分支历史管理电路44可从BPT 46逐出当前分支方向历史组(例如,BPT条目48(0)-48(N)的内容)。分支历史管理电路44还可将多个先前分支方向历史组50中的一者加载到BPT 46中以作为新分支方向历史组56。分支历史管理电路44还可任选地将逐出的分支方向历史组54存储到多个先前分支方向历史组50中的一者(图3中的框67)。
继续参考图3,如将在下文关于图6更详细地论述,分支历史管理电路44可任选地经配置以在调换之前将存储于BPT 46中的当前分支方向历史组设定为对分支预测40无效(图3中的框63)。此防止分支历史管理电路44在调换期间使用存储于BPT 46中的当前分支方向历史组来用于分支预测40(图3中的框63)。分支历史管理电路44可随后经配置以在执行分支方向历史组调换之后将存储于BPT 46中的新的当前分支方向历史组56设定为对分支预测40有效(图3中的框69)。这使得分支历史管理电路44可在执行分支方向历史组调换之后使用存储于BPT 46中的新的当前分支方向历史组56来用于分支预测40。
特定软件代码区可与高速缓冲存储器58中的某一先前分支方向历史组50相关联。为了维持所述关联,逐出的分支方向历史组54可存储于从其加载所述分支方向历史组的高速缓冲存储器58的相同条目中(例如,在相同的高速缓冲存储器地址及/或相同的高速缓冲存储器索引处)。在此方面,分支历史管理电路44可进一步包括用于存储最近调换到BPT 46中的先前分支方向历史组50的地址及/或索引的BPT地址寄存器64。在开始调换时,可将逐出的分支方向历史组54写入到由BPT地址寄存器64指示的先前分支方向历史组50。其后,可将BPT地址寄存器64设定到由分支预测表调换指令52的操作数62指示的地址或索引。以此方式,可将逐出的分支方向历史组54存储到先前从其加载所述分支方向历史组的先前分支方向历史组50中。因此,基于用于特定软件代码区的逐出的分支方向历史组54来更新用于所述软件代码区的先前分支方向历史组50。以此方式,增加了分支预测准确度。
可将分支预测表调换指令52提供为多种类型的指令中的任一者。在此方面,分支预测表调换指令52可包括机器代码指令、对象代码指令、汇编语言指令、C语言指令及/或更高级的语言指令(作为非限制性实例,C++指令、Smalltalk指令及/或JAVA指令)。如图2中所说明,分支预测表调换指令52可包括操作代码60(还被称作“操作码”),例如“BPT_SWAP”。然而,还可使用替代性语法来表示分支预测表调换指令52的操作代码60。分支预测表调换指令52可为指令处理系统10的原子指令。分支预测表调换指令52可在指令处理系统10的一或多个时钟循环期间执行。
存在提供分支预测表调换指令52以触发由BPT 46用于分支预测的当前分支方向历史组的调换的若干优点。分支预测表调换指令52使得软件编程者及/或编译者能够选择将哪些软件代码区指派给高速缓冲存储器58中的先前分支方向历史组50。编程者及/或编译者可基于将在指令处理系统10上运行的软件的知识、分析及/或剖析来作出此类选择。以此方式,可增加分支预测40的准确度。编程者及/或编译者还可进行分支预测表调换指令52的调用,以使得不存在太少的先前分支方向历史组50,太少的先前分支方向历史组可导致分支预测40归因于过多的混叠而具有减小的准确度。编程者及/或编译者还可进行分支预测表调换指令52的调用,以使得不存在太多的先前分支方向历史组50,太多的先前分支方向历史组可导致高速缓冲存储器58的过量的高速缓冲存储器大小。以此方式,可增加分支预测40的准确度。
如本文中所论述,将不同的先前分支方向历史组50调换到BPT 46中以用于不同的软件代码区可增加BPT 46的分支预测准确度。增加的分支预测准确度可与减小大小的BPT46折衷。减少BPT 46中的BPT条目48的数目会增加混叠量,且因此减小BPT 46的准确度。因此,可减小BPT 46的大小以使得通过使用不同的先前分支方向历史组50所获得的准确度的量超过或大体上等于归因于BPT 46的减小的大小而失去的准确度的量。以此方式,可采用维持或超过用于所有分支预测的较大大小的BPT的准确度的响应于分支预测表调换指令52的减小大小的BPT 46。
现参看图4,中间队列可用于存储逐出的分支方向历史组54。因此,可在将逐出的分支方向历史组54存储于高速缓冲存储器58中之前将新的分支方向历史组56加载到BPT46(1)中。以此方式,可减少调换BPT 46(1)中的先前分支方向历史组50所需的时间量。在此方面,分支预测系统36(2)的分支历史管理电路44(1)采用BPT存储队列78。BPT存储队列78经配置以从BPT 46(1)接收及存储逐出的当前分支方向历史组54,直到逐出的分支方向历史组54被存储到高速缓冲存储器58中为止。
还可将BPT地址寄存器64的当前值与来自BPT 46(1)的逐出的分支方向历史组54一起存储于BPT存储队列78中。其后,逐出的分支方向历史组54可在由BPT地址寄存器64的排队值指示的地址(或索引)处存储于高速缓冲存储器58中。以此方式,分支历史管理电路44(1)可确定使用哪一先前分支方向历史组50存储来自BPT 46(1)的逐出的分支方向历史组54。其后,将先前分支方向历史组50调换到BPT 46(1)中,且将BPT地址寄存器64设定到正被调换到BPT 46(1)中的先前分支方向历史组50的地址(或索引)。以此方式,可将逐出的分支方向历史组54存储到先前从其加载所述分支方向历史组的先前分支方向历史组50中。
继续参考图4,分支历史管理电路44(1)可进一步包括BPT存取电路70。BPT存取电路70经配置以从指令处理系统10接收所提交的分支指令38。BPT存取电路70进一步经配置以基于所提交的分支指令38的方向(例如,被采用或未被采用)而更新BPT 46(1)的BPT条目48(BPT条目更新72)。在此方面,BPT存取电路70可基于所提交的分支指令38来递增及/或递减BPT条目48(0)-48(N)的饱和计数器。BPT存取电路70还经配置以提供分支预测40,其预测条件性分支指令的分支是将被采用还是不被采用。作为非限制性实例,可基于BPT条目48的饱和计数器的最高次序位(即,最高有效位)来作出分支预测40。BPT存取电路70的BPT索引寄存器76可用于存储BPT 46(1)的当前选定的BPT条目48的索引。未再次描述具有相同元件编号的相同元件。
现参看图5,为了继续在加载新的分支方向历史组56的同时从BPT 46提供分支预测40,可采用有效BPT及影子BPT。在此方面,图5说明采用有效BPT及可切换成变为有效BPT的影子BPT的分支预测系统36(3)的分支历史管理电路44(2)。分支历史管理电路44(2)还采用当前BPT寄存器90,其指示BPT 46(作为非限制性实例,BPT 46(2A)及BPT 46(2B))中的哪一者是有效BPT。采用有效BPT及影子BPT两者是有利的,因为在有效BPT保持有效的同时可与先前分支方向历史组50同时地加载影子BPT。因此,虽然正加载影子BPT,但BPT存取电路70(1)可基于来自有效BPT的选定的BPT条目48(作为非限制性实例,选定的BPT条目48A、48B)而继续提供分支预测40。另外,所接收的所提交的分支指令38可继续用于更新有效BPT的对应的BPT条目48(作为非限制性实例,经由BPT条目更新72A、72B)。以此方式,有效BPT可在加载先前分支方向历史组50的同时继续用于分支预测40及BPT条目更新72,即使需要较长的时间周期从高速缓冲存储器58加载新的分支方向历史56也如此。
作为非限制性实例,假设BPT 46(2A)是有效BPT,且BPT 46(2B)是影子BPT。在接收到所提交的分支指令38之后,BPT存取电路70(1)即刻更新当前有效BPT(BPT 46(2A))的BPT条目48(BPT条目更新72A)。为了分支预测,BPT存取电路70(1)基于来自有效BPT(BPT 46(2A))的当前选定的BPT条目48(选定BPT条目48A)而提供分支预测40。响应于分支预测表调换指令52,BPT加载电路88从高速缓冲存储器58将新的分支方向历史组56加载到影子BPT中(BPT 46(2B))(新的分支方向历史组56B)。在完成将先前分支方向历史组50加载到影子BPT(BPT 46(2B))中之后,当前BPT寄存器90即刻经设定以将影子BPT(BPT 46(2B))改变为有效BPT。其后,BPT逐出电路84从现在是影子BPT的先前有效的BPT(BPT 46(2A))逐出分支方向历史(逐出的分支方向历史组54A)。
现在,在接收到所提交的分支指令38之后,BPT存取电路70(1)即刻更新当前有效BPT(BPT 46(2B))的BPT条目48(BPT条目更新72B)。为了分支预测,BPT存取电路70(1)基于来自有效BPT(BPT 46(2B))的选定BPT条目48(选定BPT条目48B)而提供分支预测40。响应于另一分支预测表调换指令52,BPT加载电路88从高速缓冲存储器58将新的分支方向历史组56加载到影子BPT(BPT 46(2A))中(新的分支方向历史组56A)。在完成将新的分支方向历史组56A加载到影子BPT(BPT 46(2A))中之后,当前BPT寄存器90即刻经设定以将影子BPT(BPT46(2A))改变为有效BPT。其后,BPT逐出电路84从再次是影子BPT的先前有效的BPT(BPT 46(2B))逐出分支方向历史(逐出的分支方向历史组54B)。以此方式,在从高速缓冲存储器58加载新的分支方向历史组56的同时继续从BPT 46提供分支预测40。
在存储器受约束的指令处理系统10中,可能需要使用利用比在采用有效BPT及影子BPT两者时所需的存储器单元少的存储器单元的分支历史管理电路44。在此方面,图6说明采用单一BPT 46(3)的分支预测系统36(4)的分支历史管理电路44(3)。然而,响应于分支预测表调换指令52,可能不需要使用BPT 46(3)用于分支预测40直到已完成将新的分支方向历史组56加载到BPT 46(3)中为止。在此方面,分支历史管理电路44(3)采用BPT有效位92,其指示BPT 46(3)当前是否可用于提供分支预测40。响应于分支预测表调换指令52的执行。可将BPT有效位92设定为无效。BPT有效位92可其后响应于新的分支方向历史组56到BPT46(3)中的加载的完成而被设定为有效。因此,可仅在BPT有效位92是有效的情况下基于BPT46(3)而提供分支预测40。此避免基于无效的BPT条目48提供分支预测40。
如果BPT有效位92指示BPT 46(3)无效,那么可使用预设规则来预测条件性分支指令的分支方向。作为非限制性实例,所述预设规则可为向后采用、向前不采用(BTFNT)规则。BTFNT规则预测在条件性分支指令的目标地址小于条件性分支指令的地址的情况下将采用条件性分支(向后采用)。否则的话,BTFNT规则预测将不采用条件性分支(向前不采用)。BTFNT规则对于循环指令是有利的,因为循环指令(作为非限制性实例,WHILE循环、FOR循环、DO循环、DO UNTIL循环、REPEAT UNTIL循环等)一般更可能在退出循环之前分支回到循环的早先部分。通过在BPT 46(3)不有效时将预设规则用于分支预测,且在BPT 46(3)有效时应用来自BPT 46(3)的动态地获得的BPT条目48用于分支预测,可甚至在正从高速缓冲存储器58加载单一BPT 46(3)时继续提供分支预测40。
现参看图7,可能需要使用额外的存储器用于BPT 46以便减少响应于分支预测表调换指令52而调换用于分支预测的分支方向历史组所需的时间量。在此方面,图7说明采用具有可作为有效BPT 46(4)直接存取的先前分支方向历史组50(0)-50(M)的高速缓冲存储器58(1)的分支预测系统36(5)的分支历史管理电路44(4)。分支历史管理电路44(4)通过切换高速缓冲存储器58(1)中的哪一先前分支方向历史50用作有效BPT 46(4)而调换用于分支预测40的当前分支方向历史组。在此方面,使用当前BPT寄存器94来指示高速缓冲存储器58(1)中的哪一先前分支方向历史组50应作为有效BPT 46(4)被直接存取。在执行分支预测表调换指令52之后,分支历史管理电路44(4)即刻接收分支预测表调换指令52的地址操作数62的值且将所述值存储到当前BPT寄存器94中以选择高速缓冲存储器58(1)中的当前有效BPT。随后,BPT存取电路70(3)直接存取高速缓冲存储器58(1)中的选定的先前分支方向历史组50以作为有效BPT 46(4)。以此方式,先前分支方向历史组50不必被从高速缓冲存储器58(1)逐出及/或加载到高速缓冲存储器58(1)以便调换用于分支预测的分支方向历史组。因此,减少了调换用于分支预测的分支方向历史组所需的时间量。
本文中描述的实施例中的任一者可进一步包括额外的组件及/或经受进一步的变化。作为非限制性实例,本文中描述的分支预测系统36可进一步包括分支目标高速缓冲存储器以向指令处理系统提供在解码新获取的指令之前辨识所述指令是不是条件性分支指令的能力。可将分支目标高速缓冲存储器实施为分支目标地址高速缓冲存储器(BTAC)及/或分支目标指令高速缓冲存储器(BTIC)。在实施为BTIC时,BTIC另外高速缓冲条件性分支指令的分支目标指令。
根据本文中揭示的实施例的用于响应于分支预测表调换指令而调换BPT中的分支方向历史的指令处理系统、分支预测系统及/或分支历史管理电路可提供在任何基于处理器的装置中或集成到其中,或集成到半导体裸片中。实例包含(但不限于)机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、桌上型计算机、个人数字助理(PDA)、监视器、计算机监视器、电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘(DVD)播放器及便携型数字视频播放器。
在此方面,图8说明基于处理器的系统96的实例。基于处理器的系统96包含一个或多个中央处理单元(CPU)98,其各自包含一个或多个处理器100。一或多个处理器100可包括指令处理系统(IPS)10(1)。指令处理系统10(1)可包括本文中揭示的实施例(作为非限制性实例,分别是分支预测系统36(作为非限制性实例,图2及4到7中的分支预测系统36(1)-36(5)))的任何组合。CPU 98可具有耦合到处理器100以用于对临时存储的数据快速存取的高速缓冲存储器102。高速缓冲存储器102可用作高速缓冲存储器58。CPU 98耦合到系统总线104,并且可以将基于处理器的系统96中包含的主装置和从属装置相互耦合。众所周知,CPU98通过在系统总线104上交换地址、控制及数据信息而与这些其它装置通信。举例来说,CPU98可将总线事务请求传送到存储器控制器106(作为从属装置的实例)。尽管图8中未说明,但可提供多个系统总线104。
其它主和从属装置可以连接到系统总线104。如图8中所说明,作为实例,这些装置可包含存储器系统108、一或多个输入装置110、一或多个输出装置112、一或多个网络接口装置114及一或多个显示器控制器116。输入装置110可包含任何类型的输入装置,包含但不限于输入键、开关、话音处理器,等。输出装置112可包含任何类型的输出装置,包含但不限于音频、视频、其它视觉指示器,等等。网络接口装置114可为经配置以允许数据与网络118间的交换的任何装置。网络118可为任何类型的网络,包含但不限于有线或无线网络、私人或公共网络、局域网(LAN)、广域网(WLAN)和因特网。网络接口装置114可经配置以支持所要的任何类型的通信协议。存储器系统108可包含一或多个存储器单元120(0-N)。
CPU 98还可经配置以在系统总线104上存取显示器控制器116以控制发送到一或多个显示器122的信息。显示器控制器116经由一或多个视频处理器124将信息发送到显示器122以进行显示,所述一或多个视频处理器将待显示的信息处理成适合于显示器122的格式。显示器122可包含任何类型的显示器,包含但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、发光二极管(LED)显示器等。
所属领域的技术人员将进一步了解,结合本文所揭示的实施例描述的多种说明性逻辑块、模块、电路和算法可以实施为电子硬件、存储在存储器或另一计算机可读媒体中且通过处理器或其它处理装置执行的指令或两者的组合。作为实例,本文所述的主控装置和从属装置可用于任何电路、硬件组件、集成电路(IC)或IC芯片中。本文所揭示的存储器可为任何类型和大小的存储器,且可经配置以存储所需的任何类型的信息。为清楚地说明此可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路和步骤。如何实施此功能性取决于特定应用、设计选项和/或强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为引起偏离本发明的范围。
结合本文揭示的实施例描述的各种说明性功能元件、逻辑块、模块和电路可以通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或经设计以执行本文所述的功能的其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任何组合来实施或执行。处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器非组合、一或多个微处理器与DSP核心的联合,或任何其它此类配置。
本文中揭示的实施例可体现在硬件中及存储于硬件中的指令中,且可驻留(例如)在随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可装卸式磁盘、压缩光盘只读存储器(CD-ROM)或此项技术中已知的任何其它形式的计算机可读媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体式。处理器及存储媒体可驻留在ASIC中。ASIC可驻留于远程站中。在替代方案中,处理器及存储媒体可作为离散组件驻留在远程站、基站或服务器中。
还应注意,描述本文中的示例性实施例中的任一者中描述的操作步骤是为了提供实例及论述。可以用除了所说明的序列之外的大量不同序列执行所描述的操作。另外,在单个操作步骤中描述的操作实际上可以在多个不同步骤中执行。另外,示范性实施例中论述的一个或多个操作步骤可以组合。应理解,所属领域的技术人员将容易明白,流程图中所说明的操作步骤可以接受大量不同修改。所属领域的技术人员还将理解,可使用各种不同技术和技法中的任一者来表示信息和信号。举例来说,可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示可在整个以上描述中参考的数据、指令、命令、信息、信号、位、符号及码片。
提供对本发明的先前描述以使得所属领域的技术人员能够制作或使用本发明。所属领域的技术人员将易于了解对本发明的各种修改,且本文中界定的一般原理可应用于其它变体而不脱离本发明的精神或范围。因此,本发明并不希望限于本文中所描述的实例及设计,而应被赋予与本文中所揭示的原理及新颖特征相一致的最广范围。
Claims (30)
1.一种分支历史管理电路,其用以管理由中央处理单元CPU指令处理系统用于分支预测的至少一个分支预测表BPT,所述分支历史管理电路经配置以:
响应于分支预测表调换指令的执行,使用存储于高速缓冲存储器中的多个先前分支方向历史组中的一者调换所述至少一个BPT中的用于分支预测的当前分支方向历史组。
2.根据权利要求1所述的分支历史管理电路,其中所述至少一个BPT包括包含用以预测分支指令的分支方向的预测指示符的至少一个BPT条目。
3.根据权利要求2所述的分支历史管理电路,其进一步包括BPT存取电路,所述BPT存取电路经配置以:
基于从分支解析电路提供的分支解析度而更新所述至少一个BPT条目;及
将选定的至少一个BPT条目提供给分支预测电路以用于预测所述分支指令的所述分支方向。
4.根据权利要求1所述的分支历史管理电路,
其中所述分支历史管理电路进一步经配置以在使用存储于所述高速缓冲存储器中的所述多个先前分支方向历史组中的所述一者调换单一BPT中的所述当前分支方向历史组时将BPT有效性指示符设定并维持为无效。
5.根据权利要求4所述的分支历史管理电路,其进一步经配置以在所述BPT有效性指示符被设定成无效的情况下应用向后采用、向前不采用BTFNT规则来预测分支指令的分支方向。
6.根据权利要求1所述的分支历史管理电路,
其中所述至少一个BPT包括有效BPT及影子BPT;且
其中所述分支历史管理电路进一步经配置以设定当前BPT寄存器以指示所述至少一个BPT中的哪一者是所述有效BPT。
7.根据权利要求6所述的分支历史管理电路,其进一步经配置以:
响应于接收到分支解析度而更新所述有效BPT的条目;及
提供所述有效BPT的选定条目以用于分支预测。
8.根据权利要求7所述的分支历史管理电路,其经配置以:
响应于所述分支预测表调换指令的所述执行:
将所述多个先前分支方向历史组中的所述一者加载到所述影子BPT中;及
设定所述当前BPT寄存器以将所述影子BPT改变为所述有效BPT。
9.根据权利要求1所述的分支历史管理电路,其经配置以:
响应于所述分支预测表调换指令的所述执行而接收分支预测表调换指示;及
响应于所述分支预测表调换指示的所述接收:
从所述至少一个BPT逐出所述当前分支方向历史组;
将所述多个先前分支方向历史组中的所述一者加载到所述至少一个BPT中;及
将所述逐出的当前分支方向历史组存储到所述多个先前分支方向历史组中的所述一者。
10.根据权利要求9所述的分支历史管理电路,其经配置以将所述高速缓冲存储器中的最近加载到所述至少一个BPT中的所述多个先前分支方向历史组的一个先前分支方向历史组的地址存储到BPT地址寄存器中。
11.根据权利要求10所述的分支历史管理电路,其经配置以将所述逐出的当前分支方向历史组存储到由所述BPT地址寄存器寻址的所述先前分支方向历史组。
12.根据权利要求1所述的分支历史管理电路,其进一步包括BPT存取队列,所述BPT存取队列经配置以:
从所述至少一个BPT接收逐出的当前分支方向历史组;及
将所述逐出的当前分支方向历史组存储到所述多个先前分支方向历史组中的所述一者。
13.根据权利要求1所述的分支历史管理电路,其经配置以通过以下操作调换所述当前分支方向历史组:
接收所述分支预测表调换指令的地址操作数;
基于所述地址操作数而选择所述多个先前分支方向历史组中的所述一者;及
存取所述高速缓冲存储器中的所述多个先前分支方向历史组中的选定一者作为所述至少一个BPT。
14.一种用于提供用于管理由中央处理单元CPU指令处理系统用于分支预测的至少一个分支预测表BPT的分支历史管理的装置,其包括:
用于响应于分支预测表调换指令的执行而使用存储于高速缓冲存储器中的多个先前分支方向历史组中的一者调换至少一个BPT中的用于分支预测的当前分支方向历史组的装置。
15.根据权利要求14所述的用于提供分支历史管理的装置,其进一步包括:
用于响应于所述分支预测表调换指令的所述执行而接收分支预测表调换指示的装置;及
响应于所述分支预测表调换指示的所述接收的装置,其包括:
用于从所述至少一个BPT逐出所述当前分支方向历史组的装置;
用于将所述多个先前分支方向历史组中的所述一者加载到所述至少一个BPT中的装置;及
用于将所述逐出的当前分支方向历史组存储到所述多个先前分支方向历史组中的所述一者的装置。
16.根据权利要求14所述的用于提供分支历史管理的装置,其中所述用于调换所述当前分支方向历史组的装置包括:
用于接收所述分支预测表调换指令的地址操作数的装置;
用于基于所述地址操作数而选择所述多个先前分支方向历史组中的所述一者的装置;及
用于存取所述高速缓冲存储器中的所述多个先前分支方向历史组中的选定一者作为所述至少一个BPT的装置。
17.一种操作分支历史管理电路以管理由中央处理单元CPU指令处理系统用于分支预测的至少一个分支预测表BPT的方法,其包括:
响应于分支预测表调换指令的执行,使用存储于高速缓冲存储器中的多个先前分支方向历史组中的一者调换所述至少一个BPT中的用于分支预测的当前分支方向历史组。
18.根据权利要求17所述的方法,其进一步包括在使用存储于所述高速缓冲存储器中的所述多个先前分支方向历史组中的所述一者调换单一BPT中的所述当前分支方向历史组时将BPT有效性指示符设定并维持为无效。
19.根据权利要求17所述的方法,其进一步包括:
响应于所述分支预测表调换指令的所述执行而接收分支预测表调换指示;及
响应于所述分支预测表调换指示的所述接收:
从所述至少一个BPT逐出所述当前分支方向历史组;
将所述多个先前分支方向历史组中的所述一者加载到所述至少一个BPT中;及
将所述逐出的当前分支方向历史组存储到所述多个先前分支方向历史组中的所述一者。
20.根据权利要求17所述的方法,其进一步包括:
从所述至少一个BPT接收逐出的当前分支方向历史组;
将所述逐出的当前分支方向历史组存储到所述多个先前分支方向历史组中的所述一者;
将所述逐出的当前分支方向历史组排成BPT存储队列;及
使所述逐出的当前分支方向历史组从所述BPT存储队列离队。
21.根据权利要求17所述的方法,其中调换所述当前分支方向历史组包括:
接收所述分支预测表调换指令的地址操作数;
基于所述地址操作数而选择所述多个先前分支方向历史组中的所述一者;及
存取所述高速缓冲存储器中的所述多个先前分支方向历史组中的选定一者作为所述至少一个BPT。
22.一种高速缓冲存储器,其经配置以:
存储多个先前分支方向历史组;及
响应于分支预测表调换指令的执行:
将所述多个先前分支方向历史组中的一者提供到分支预测表BPT中以由中央处理单元CPU中的分支预测电路用作当前分支方向历史组;及
将从所述BPT逐出的分支方向历史组存储到所述多个先前分支方向历史组中的所述一者。
23.根据权利要求22所述的高速缓冲存储器,其中所述BPT包括模式历史表PHT。
24.一种用于在中央处理单元CPU指令处理系统中执行分支预测的分支预测系统,其包括:
高速缓冲存储器,其经配置以:
存储多个先前分支方向历史组;
响应于分支预测表调换指令的执行:
将所述多个先前分支方向历史组中的一者提供到分支预测表BPT中以由CPU中的分支预测电路用作当前分支方向历史组;及
将从所述BPT逐出的分支方向历史组存储到所述多个先前分支方向历史组中的所述一者;及
分支历史管理电路,其经配置以:
响应于所述分支预测表调换指令的所述执行,使用存储于所述高速缓冲存储器中的所述多个先前分支方向历史组中的所述一者调换至少一个BPT中的用于分支预测的所述当前分支方向历史组。
25.根据权利要求24所述的分支预测系统,其进一步包括分支解析电路,其经配置以:
在多个所提交的指令当中检测所提交的分支指令;及
将所述所提交的分支指令的分支解析度提供给所述分支历史管理电路以用于更新所述分支历史管理电路的所述至少一个BPT。
26.根据权利要求25所述的分支预测系统,其中所述分支解析电路进一步经配置以从指令处理系统的指令提交电路接收所述多个所提交的指令。
27.根据权利要求24所述的分支预测系统,其中所述分支预测电路进一步经配置以基于所述至少一个BPT的选定条目在分支指令的执行之前提供对所述分支指令的分支方向的预测。
28.根据权利要求27所述的分支预测系统,其中所述分支预测电路进一步经配置以将对所述分支指令的所述分支方向的所述预测提供给来自由以下各者组成的群组的至少一者:指令处理系统的获取电路及所述指令处理系统的解码电路。
29.根据权利要求24所述的分支预测系统,其安置在指令处理系统中。
30.一种其上存储有计算机可执行指令的非暂时性计算机可读媒体,所述计算机可执行指令包括至少一个分支预测表调换指令以致使处理器实施操作分支历史管理电路的方法,所述方法包括:
响应于所述至少一个分支预测表调换指令的执行,使用存储于高速缓冲存储器中的多个先前分支方向历史组中的一者调换至少一个分支预测表BPT中的用于分支预测的当前分支方向历史组。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/611,597 | 2012-09-12 | ||
US13/611,597 US9395984B2 (en) | 2012-09-12 | 2012-09-12 | Swapping branch direction history(ies) in response to a branch prediction table swap instruction(s), and related systems and methods |
PCT/US2013/059532 WO2014043399A1 (en) | 2012-09-12 | 2013-09-12 | Swapping branch direction history(ies) in response to a branch prediction table swap instruction(s), and related systems and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104603747A CN104603747A (zh) | 2015-05-06 |
CN104603747B true CN104603747B (zh) | 2018-06-05 |
Family
ID=49237689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380046029.7A Expired - Fee Related CN104603747B (zh) | 2012-09-12 | 2013-09-12 | 响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9395984B2 (zh) |
KR (1) | KR101705211B1 (zh) |
CN (1) | CN104603747B (zh) |
WO (1) | WO2014043399A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9442726B1 (en) | 2015-12-15 | 2016-09-13 | International Business Machines Corporation | Perceptron branch predictor with virtualized weights |
US10223118B2 (en) * | 2016-03-24 | 2019-03-05 | Qualcomm Incorporated | Providing references to previously decoded instructions of recently-provided instructions to be executed by a processor |
CN109783143B (zh) * | 2019-01-25 | 2021-03-09 | 贵州华芯通半导体技术有限公司 | 用于流水线指令流的控制方法和控制设备 |
US11194582B2 (en) | 2019-07-31 | 2021-12-07 | Micron Technology, Inc. | Cache systems for main and speculative threads of processors |
US11048636B2 (en) | 2019-07-31 | 2021-06-29 | Micron Technology, Inc. | Cache with set associativity having data defined cache sets |
US11010288B2 (en) | 2019-07-31 | 2021-05-18 | Micron Technology, Inc. | Spare cache set to accelerate speculative execution, wherein the spare cache set, allocated when transitioning from non-speculative execution to speculative execution, is reserved during previous transitioning from the non-speculative execution to the speculative execution |
US11200166B2 (en) | 2019-07-31 | 2021-12-14 | Micron Technology, Inc. | Data defined caches for speculative and normal executions |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5935241A (en) * | 1996-12-10 | 1999-08-10 | Texas Instruments Incorporated | Multiple global pattern history tables for branch prediction in a microprocessor |
CN101438237A (zh) * | 2006-05-10 | 2009-05-20 | 高通股份有限公司 | 基于区块的分支目标地址高速缓冲存储器 |
CN102520913A (zh) * | 2011-11-03 | 2012-06-27 | 浙江大学 | 基于分组更新历史信息的并行分支预测装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0463965B1 (en) * | 1990-06-29 | 1998-09-09 | Digital Equipment Corporation | Branch prediction unit for high-performance processor |
US5574871A (en) | 1994-01-04 | 1996-11-12 | Intel Corporation | Method and apparatus for implementing a set-associative branch target buffer |
US6108775A (en) * | 1996-12-30 | 2000-08-22 | Texas Instruments Incorporated | Dynamically loadable pattern history tables in a multi-task microprocessor |
US6877089B2 (en) * | 2000-12-27 | 2005-04-05 | International Business Machines Corporation | Branch prediction apparatus and process for restoring replaced branch history for use in future branch predictions for an executing program |
CN1200343C (zh) * | 2002-03-22 | 2005-05-04 | 中国科学院计算技术研究所 | 适用于上下文切换的分支预测方法 |
JP4052887B2 (ja) | 2002-06-28 | 2008-02-27 | 富士通株式会社 | 記憶装置、分岐履歴記憶装置及びその制御方法 |
JP3798998B2 (ja) | 2002-06-28 | 2006-07-19 | 富士通株式会社 | 分岐予測装置および分岐予測方法 |
US7370183B2 (en) * | 2003-04-11 | 2008-05-06 | Board Of Regents, The University Of Texas System | Branch predictor comprising a split branch history shift register |
JP4009248B2 (ja) | 2003-12-05 | 2007-11-14 | 富士通株式会社 | 分岐予測装置および分岐予測方法 |
US7523298B2 (en) | 2006-05-04 | 2009-04-21 | International Business Machines Corporation | Polymorphic branch predictor and method with selectable mode of prediction |
US7487340B2 (en) | 2006-06-08 | 2009-02-03 | International Business Machines Corporation | Local and global branch prediction information storage |
-
2012
- 2012-09-12 US US13/611,597 patent/US9395984B2/en active Active
-
2013
- 2013-09-12 KR KR1020157009176A patent/KR101705211B1/ko active IP Right Grant
- 2013-09-12 WO PCT/US2013/059532 patent/WO2014043399A1/en active Application Filing
- 2013-09-12 CN CN201380046029.7A patent/CN104603747B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5935241A (en) * | 1996-12-10 | 1999-08-10 | Texas Instruments Incorporated | Multiple global pattern history tables for branch prediction in a microprocessor |
CN101438237A (zh) * | 2006-05-10 | 2009-05-20 | 高通股份有限公司 | 基于区块的分支目标地址高速缓冲存储器 |
CN102520913A (zh) * | 2011-11-03 | 2012-06-27 | 浙江大学 | 基于分组更新历史信息的并行分支预测装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20150054966A (ko) | 2015-05-20 |
CN104603747A (zh) | 2015-05-06 |
US9395984B2 (en) | 2016-07-19 |
US20140075166A1 (en) | 2014-03-13 |
WO2014043399A1 (en) | 2014-03-20 |
KR101705211B1 (ko) | 2017-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104603747B (zh) | 响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法 | |
US10353819B2 (en) | Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system | |
EP3306467B1 (en) | Branch predictor that uses multiple byte offsets in hash of instruction block fetch address and branch pattern to generate conditional branch predictor indexes | |
US9898412B2 (en) | Methods, systems and apparatus for predicting the way of a set associative cache | |
JP4027620B2 (ja) | 分岐予測装置、プロセッサ、及び分岐予測方法 | |
US8578140B2 (en) | Branch prediction apparatus of computer storing plural branch destination addresses | |
CN107851028A (zh) | 将指令操作数的窄生成值直接存储在乱序处理器中的寄存器映射中 | |
KR20180127379A (ko) | 프로세서-기반 시스템들 내의 로드 경로 이력에 기반한 어드레스 예측 테이블들을 사용하는 로드 어드레스 예측들의 제공 | |
US20160259645A1 (en) | Register renaming in block-based instruction set architecture | |
US9830152B2 (en) | Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor | |
CN109308191B (zh) | 分支预测方法及装置 | |
KR20110000533A (ko) | 원격 아토믹 실행의 적응적 처리 방법, 장치 및 시스템 | |
EP3433728A1 (en) | Providing references to previously decoded instructions of recently-provided instructions to be executed by a processor | |
CN109799897A (zh) | 一种减少gpu二级缓存能耗的控制方法及装置 | |
CN106104466B (zh) | 在超越控制分支预测器中的推测历史转递以及相关电路、方法和计算机可读媒体 | |
US20160077836A1 (en) | Predicting literal load values using a literal load prediction table, and related circuits, methods, and computer-readable media | |
WO2019045940A1 (en) | INSERTING INSTRUCTION BLOCK HEADER DATA CACHING IN SYSTEMS BASED ON BLOCK ARCHITECTURE PROCESSOR | |
CN107924310A (zh) | 使用避免转出表(pat)预测计算机处理器中的存储器指令转出 | |
JP2020077334A (ja) | 演算処理装置および演算処理装置の制御方法 | |
US11036512B2 (en) | Systems and methods for processing instructions having wide immediate operands | |
US20240168804A1 (en) | Graphics processing systems | |
JP2007293814A (ja) | プロセッサ装置とその処理方法 | |
TW202307655A (zh) | 利用基於解碼分支指令的預測快取條目的反向失效的處理器分支預測電路及相關方法 | |
CN116627505A (zh) | 指令缓存及操作方法、处理器核及指令处理方法 | |
JP2007293815A (ja) | プロセッサ装置とその処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180605 Termination date: 20210912 |