CN100365566C - 低功率消耗的分支预测装置和方法 - Google Patents

低功率消耗的分支预测装置和方法 Download PDF

Info

Publication number
CN100365566C
CN100365566C CNB2004100118071A CN200410011807A CN100365566C CN 100365566 C CN100365566 C CN 100365566C CN B2004100118071 A CNB2004100118071 A CN B2004100118071A CN 200410011807 A CN200410011807 A CN 200410011807A CN 100365566 C CN100365566 C CN 100365566C
Authority
CN
China
Prior art keywords
branch
predictor
prediction
value
branch 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.)
Expired - Fee Related
Application number
CNB2004100118071A
Other languages
English (en)
Other versions
CN1601463A (zh
Inventor
郑盛宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN1601463A publication Critical patent/CN1601463A/zh
Application granted granted Critical
Publication of CN100365566C publication Critical patent/CN100365566C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

一分支预测装置包括:执行第一分支预测算法的第一分支预测器和执行第二分支预测算法的第二分支预测器。选择预测器产生控制第一和第二分支预测器操作的控制信号。选择预测器也可选择并输出第一或第二分支预测器预测结果。所述选择预测器操作以从所述第一分支预测器和所述第二分支预测器中仅选择一个来执行所述分支指令的分支预测并使未被选择的另一分支预测器不可用。第一和第二分支预测器可根据控制信号分别执行预测算法。选择预测器可包括将存储的分支预测装置的分支预测值向左移一位的移位寄存器。选择预测表可由移位寄存器的值索引以输出预测器选择值。预测器选择单元可产生该控制信号和选择第一和第二分支预测器之一的输出的选择信号。MUX电路可根据选择信号输出第一或第二分支预测器的分支预测值。

Description

低功率消耗的分支预测装置和方法
技术领域
本发明通常涉及一种微处理器的分支预测装置,并且更详细地涉及一种可以减少在分支预测操作期间不必要的功率消耗的分支预测装置和方法。
根据35 U.S.C§119,本美国非临时专利申请要求2003年9月24日申请的韩国专利申请2003-66325的优先权,其所公开的内容在这里全部引用供参考。
背景技术
分支指令语句可以是一个程序指令。当满足分支指令语句中包括的预定条件时,就执行分支指令语句中指定的指令。否则,就执行另一个在该分支指令语句下一步出现的指令。这样的条件分支指令语句是一个典型的分支指令语句。但是,对于本领域的技术人员来说,各种其它类型的分支指令语句也是公知的。
为了确定其后要执行的指令,上述分支指令语句就需要提取(或检索(retrieving))包括在该分支指令语句中的分支条件的处理。提取处理会使一般需要快速提取指令的流水线微处理器的系统性能恶化。
提取处理的缺点可以通过实现分支预测器克服。分支预测器可以预测分支指令语句的条件检索结果。分支预测器获得的预测结果可以用于预提取该分支指令语句下面的一条要执行的指令。术语“预提取”是指不等待判定分支就检索随后的指令,从而提高微处理器的性能。
如果分支预测结果不正确,那么先前提取的指令就无效了,并需要提取其它的指令。重新提取指令会使微处理器性能恶化。因此,已经开始研究提高分支预测器的准确性。最准确的分支预测器之一就是联赛分支预测器(tournament branch predictor)。
联赛分支预测器在本领域中是公知的。图1是表示常规的联赛分支预测器的方框图。
如图1所示,联赛分支预测器可具有三个预测器,包括局部预测器(localpredictor)100、全局预测器(global predictor)110和选择预测器(choicepredictor)120。分支预测器还可以包括全局历史寄存器130。
通过利用当前输入的分支指令的在先分支预测值结果的历史,局部预测器100可以执行局部分支预测算法。局部预测器100可以包括一个局部预测存储阵列(“LPSA”)102,该阵列包括三个预测位:表示对应分支指令的最近预测结果值的一个预测位,以及表示用于输出局部预测值LP_V的结果的预测次数的指针位的两位。LPSA 102可以由一个程序计数器(“PC”)索引,该程序计数器代表要执行的分支指令的地址。局部历史表104(“LHT”)可以为各个分支指令的最近的十个分支,存储预测值结果的历史(也就是,是否取用程序的指令流中的某一分支)。局部预测表106(“LPT”)可以由存储在LHT 104中的局部历史来做索引。
分支预测后,LHT 104和LPT 106就可以用于更新LPSA 102。进一步地,LHT 104和LPT 106可以用于更新LPSA 102,但是它们不能在分支预测时使用。
全局历史寄存器130可以存储由分支预测器提供的最终分支预测值PRED_V的历史。
全局预测器110可以使用全局预测表112(“GPT”)。GPT 112可以由PC的专有OR140(XOR)以及从全局历史寄存器130输入的全局历史来索引,用以执行全局分支算法。全局预测器110可以输出全局预测值结果GP_V。
选择预测器120可以包括选择预测表122(“CPT”)。CPT 122可以由全局历史(来自全局历史寄存器130)来索引,用以输出预测器选择值(“PSEL”)。选择预测器120可以包括MUX电路124。选择预测器120可以从分别来自局部预测器100和全局预测器110的预测值结果LP_V和GP_V中选择一个,并且将选择的预测值作为最终的分支预测值PRED_V输出。
LPT 106、GPT 112和CPT 122可以被用作饱和计数器。为了进行更新,当预测该分支将被取用时,LPT 106和GPT 112的入口就加“1”,而当预测该分支将不被取用时,其入口就减“1”。CPT 122的入口的更新取决于为最终分支预测选择的一种分支预测器(例如,局部或全局)。也就是说,该入口的增加或减少取决于是否是局部预测器100的分支预测值LP_V被选择为最终分支预测值PRED_V,还是全局预测器110的分支预测值GP_V被选择为最终分支预测值PRED_V。此更新特性可以由程序员任意设定,这是本领域公知的。
图2是可以由图1的常规分支预测器执行的分支预测操作的示意图。应意识到为了方便说明,图2所示的每个表格的入口值都可以被任意设置。在图2中,假设输入的代表分支指令地址的PC被设为零。
在局部预测器100中,LPSA 102的第一入口可以由PC“0”索引。被索引的第一入口的预测位“110”的最高位(“MSB”)“1”可以被输出为局部预测器100的分支预测值LP_V。预测位“110”的最高位被阴影线圈出。
在全局预测器110中,GPT 112的第4入口可以由XOR 140的输出索引,XOR 140具有来自全局历史寄存器130和PC的全局历史“0000000011”的输入。被索引的入口“011”的MSB值“0”可以被输出为全局预测器110的分支预测值GP_V。
在选择预测器120中,CPT 122的第四入口可以被来自全局历史寄存器130的全局历史“0000000011”索引。被索引的入口“100”的MSB值“1”可以作为选择预测器的PSEL,输入到MUX电路124中。
在每个预测器中,分支预测值“1”可表示预测该分支将被取用,分支预测值“0”可表示预测该分支将不被取用。因此,在图2所描述的情况中,预测器100、110可以不一致。换句话说,局部预测器100预测该分支将被取用,而全局预测器100预测该分支不被取用。另外,当CPT 122的PSEL是“1”时,局部预测器100的分支预测值LP_V可以被选择为最终分支预测值PRED_V,而当预测器选择值PSEL为“0”时,全局预测器110的分支预测值GP_V可以被选择为最终分支预测值PRED_V。由于在图2中,CPT122的预测器选择值PSEL为“1”,其值为“1”的局部预测器100的分支预测值LP_V可以被MUX电路124输出为最终分支预测值PRED_V。这就表示预测到相应于输入PC的分支指令的分支将被取用。因此,在分支将被实际取用的情况下,即,在分支指令语句为“true”的情况下,微处理器可以预提取要执行的指令。
如图2所示,分支预测器执行分支预测之后,分支预测器可以根据预测结果更新各个表和寄存器,以备下一个分支预测使用。图3A-3E是根据图2所示的分支预测结果的更新处理的示意图。每个图的左边表示更新处理前的表格值,每个图的右边表示更新处理后的表格值。这里,当预测要取用该分支时(也就是,当分支预测结果(PRED_V=“1”)时),用于分支预测的每个表的入口值就加“1”,并且当预测该分支将不被取用时(也就是,当PRED_V=“0”时),其被减“1”。但是在CPT 122中,当选择局部预测器100用于最终分支预测时,入口值被加“1”,并且当全局预测器110被选择时,入口值被减“1”。
图3A示意性地表示了根据图2所示的分支预测结果值(PRED_V=“1”),由包括在局部预测器100中的LHT 104和LPT 106执行的更新处理。在图3A中,由于在图2中预测分支将被取用(即PRED_V=“ 1”),由PC索引的LHT 104的第一入口值“0000000010”将被向左移一位,当前分支预测结果值“1”将被插入到最低位(LSB),来形成更新后的第一入口值“0000000101”。另外,由LHT 104索引的LPT 106的第三入口值“000”将加“1”,来形成更新后的第三入口值“001”。同时,参考图3b,LPSA 102的第一入口的指针位将加“1”,并参照图3a所示的LHT 104和LPT 106的值进行更新。LPSA 102的更新处理在本领域中是公知的,因此省略相同的细节描述。
图3c示意性地表示了由全局历史寄存器130执行的、取决于分支预测结果的更新处理。如图3C所示,全局历史寄存器130的值“0000000011”被向左移一位,并且分支预测结果值“1”被插入到寄存器130的LSB,来形成更新后的值“0000000111”。
图3D示意性地表示了由GPT112执行的、取决于分支预测结果的更新处理。由于预测当前分支将被取用,GPT 112的用于该分支预测的第四入口值“011”被加“1”,来形成更新后的值“100”。
图3e示意性地表示了由CPT 122执行的、取决于分支预测结果的一更新处理。在CPT 122中,根据选择哪个预测器确定更新的值。由于选择了局部预测器100,用于分支预测的CPT 122第四入口值“100”被加“ 1”,来形成更新后的第四入口值“101”。
通过上述公知的预测和更新处理,联赛分支预测器可以执行一准确、可靠的分支预测。但是,如图4所示,在常规的联赛分支预测器中,三个预测器100、110、120可以同时执行。也就是说,分支预测可以同时由各个分支预测器(即,局部预测器和全局预测器)执行,并且选择预测也可以同时由选择预测器120执行。因此,整个分支预测器可以导致不必要的功率消耗。例如,如图2所示,当局部预测器110被选择为最终分支预测器时,全局预测器110可能为未选择的分支预测消耗不必要的功率。相反的,当选择全局预测器110时,局部预测器100可能为未选择的分支预测消耗不必要的功率。
分支预测器的功率消耗可以占用微处理器的总功率消耗的10%以上。因此需要减少分支预测器的不必要功率消耗,来提高微处理器的性能。
发明内容
本发明的示例性实施例可以减少功率消耗,来排除相关技术的问题和缺陷。
本发明的其它优点和特性在参照下面的说明书后会变得显而易见,并在本发明的实施中显现。
在本发明的示例性实施例中,分支预测装置可以包括第一分支预测器,其用于为了预测一分支指令的结果而执行第一分支预测算法;以及第二分支预测器,其用于为了预测该分支指令的结果而执行第二分支预测算法。选择预测器可以产生用于控制该第一分支预测器和第二分支预测器的操作的控制信号。选择预测器也可以选择并输出第一分支预测器或第二分支预测器的预测结果。所述选择预测器操作以从所述第一分支预测器和所述第二分支预测器中仅选择一个来执行所述分支指令的分支预测并使未被选择的另一分支预测器不可用。该第一分支预测器和第二分支预测器可根据该控制信号分别执行预测算法。
在一个示例性的实施例中,分支预测器方法可包括:通过利用在先分支预测结果从多个分支预测器中选择一个分支预测器,从而使选中的一个分支预测器可用而使未被选择的其它分支预测器不可用,因而所述其它分支预测器不为所述分支指令执行分支预测;以及通过利用选择的分支预测器为分支指令执行分支预测。
在另一个示例性的实施例中,分支预测装置的选择预测器可包括移位寄存器,其用于将存储的该分支预测装置的分支预测值向左移一位。选择预测表可被一移位寄存器的值索引,来输出预测器选择值。预测器选择单元可产生控制信号,该信号用于根据选择预测表的预测器选择值,来控制第一分支预测器和第二分支预测器的操作,从而使选中的一个分支预测器可用而使未被选择的其它分支预测器不可用。该预测器选择单元可产生选择信号,其用于选择第一和第二分支预测器中的一个的输出。MUX电路可连接到该第一分支预测器和第二分支预测器。该MUX电路可根据选择的信号输出第一分支预测器的分支预测值或第二分支预测器的分支预测器。
在示例性的实施例中,一种分支预测装置的选择预测方法可包括将存储的分支预测装置的分支预测值向左移动一位。选择预测表可由一个移位寄存器的值索引,来输出一个预测器选择值。可根据预测器选择值产生用于控制多个分支预测器的操作控制信号,从而使选中的一个分支预测器可用而使未被选择的其它分支预测器不可用。
应当理解的是,本发明的上述总的说明以及下面的详细说明仅仅是示例性和解释性的,其并不是对要求保护的发明的限制。
附图说明
附图表示了本发明的示例性、非限制性的实施例,并且其与说明书一起用于解释本发明的原理。在这些图中:
图1是常规分支预测器的方框图。
图2是图1中所示的常规分支预测器执行的分支预测操作的示意图。
图3A到3E是图2所示的分支预测操作后执行的更新处理的示意图。
图4是由图1的常规分支预测器执行的分支预测处理的流程图。
图5是根据本发明的一个示例性、非限制性的实施例,低功率消耗的分支预测装置的方框图。
图6A是根据本发明的一个示例性、非限制性的实施例,由选择预测器执行的预测器选择操作的示意图。
图6B是根据选择预测器操作指令,由各个分支预测器执行的操作的示意图。
图7是根据本发明的一个示例性、非限制性的实施例,由分支预测装置执行的分支预测处理的流程图。
图8是常规分支预测器和根据本发明的一个示例性实施例的低功率消耗分支预测装置的每一个中,取决于分支指令和总指令的比率的功率消耗度量的示意图。
具体实施方式
现在将参照本发明的示例性、非限制性的实施例,其实例在附图中表示。但是本发明并不局限于这些示出的实施例的细节,这里所介绍的内容是为了容易并且完整地理解本发明的范围和精神。
图5是根据本发明的一个示例性、非限制性的实施例,低功率消耗的分支预测装置的方框图。这里,分支预测装置可包括:局部预测器500、全局预测器510、全局历史寄存器530以及选择预测器520。选择预测器520可具有用于控制各个预测器500和510的控制电路。
局部预测器500可使用相应于当前输入的分支指令的在先分支预测结果的局部历史信息,来执行用于预测当前分支指令结果的局部分支预测算法。局部预测器500可具有局部预测存储阵列(“LPSA”)502、局部历史表(“LHT”)504、局部预测表(“LPT”)506以及控制逻辑508。控制逻辑508可根据第一控制信号Ctrl 0使局部预测器500能或不能进行完整的操作,其中该第一控制信号由选择预测器520输出。
全局历史寄存器530可以是一个10位大小的寄存器,其用于存储在先分支预测结果的全局历史,其中该预测结果由分支预测装置获得。
全局预测器510可使用存储在全局历史寄存器530中的全局历史,来执行用于预测当前分支指令的结果的全局分支预测算法。全局预测器510可包括用于存储最近的分支结果的全局预测表(“GPT”)512。全局预测器510也可包括控制逻辑514,该控制逻辑可根据第二控制信号Ctrl 1使全局预测器510能或不能进行完整的操作,该第二控制信号由选择预测器520输出。
选择预测器520可包括一个1位的移位寄存器522。该移位寄存器可以将全局历史寄存器530的全局历史向左移一位。选择预测器520也可包括一个用于存储最近的预测器选择结果的历史的选择预测表(“CPT”)524。选择预测器520也可包括预测器选择单元526。该预测器选择单元526可根据CPT 524的预测结果产生控制信号Ctrl 0和Ctrl 1,以用于控制局部预测器500和全局预测器510。预测器选择单元526也可产生用于选择分支预测装置的输出PRED_V的预测器选择值(“PSEL”)。选择预测器520也可包括MUX电路528。
选择预测器520可使用一个来自全局历史寄存器530的值,来执行预测器选择过程。该预测器选择过程可以在局部预测器500和全局预测器510执行过程之前的一个周期中执行。例如,假设全局历史寄存器530的在先值可以是“0000000001”,并且假设下一个选择的最终分支预测值为“1”。这里,选择预测器520可在选择下一个预测值“1”之前,即全局历史寄存器530被更新之前,初始化选择预测器的操作,该操作在局部预测器500和全局预测器510执行操作的前一个周期中执行。通过利用在操作期间选择的下一个最终分支预测值“1”,选择CPT 524的一个入口,使得所选择的入口的MSB值输出。
图6A是由选择预测器520执行的预测器选择操作的示意图。
参照图6A,选择预测器520可使用移位寄存器522,以在更新之前将全局历史寄存器530的值“0000000001”向左移动一位。选择预测器520可选择相应于随后输入的下一个最终分支预测值“1”的入口,来输出所选择的入口的MSB值“1”,该入口位于由移位的9位寄存器值“000000001”索引的CPT 524的第二入口行。另外,预测器选择单元526可使用CPT 524输出的该MSB值“1”,产生用于分别控制预测器500和510的控制信号Ctrl0和Ctrl 1以及PSEL。第一控制信号Ctrl0被输入给局部预测器500,用以使局部预测器500能或不能操作。第二控制信号Ctrl1被输入给全局预测器510,用以使全局预测器510能或不能操作。
在此示例性的实施例中,当CPT 524的输出为“1”时,可选择局部预测器500的输出LP_V作为整个分支预测器的输出PRED_V,并且当CPT 524的输出为“0”时,可选择全局预测器510的输出GP_V作为整个分支预测器的输出PRED_V。由于在上述情况下CPT 524的输出为“1”,可选择局部预测器500的输出LP_V作为整个分支预测装置的输出PRED_V。因此,预测器选择单元526可产生使局部预测器500可以使用而使全局预测器510不可使用的控制信号Ctrl 0和Ctrl1。预测器选择单元526也可产生用于控制MUX电路528的PSEL,使得局部预测器500的输出LP_V可以成为整个分支预测器的输出PRED_V.
举例来说,由于图6A中所示的CPT 524可由一个9位的值索引,所以其可以具有29=512个索引行以及29×6的大小。这是由于全局历史寄存器可具有10位的值,并且CPT 524可由通过将全局历史寄存器向左移一位而获得的9位值索引。CPT 524可具有常规CPT的两倍宽和一半长,该常规CPT具有相同位的全局历史寄存器。
图6B是根据如图6A所示的来自选择预测器520的控制信号Ctrl0和Ctrl1以及预测器选择信号PSEL,各个分支预测器执行的操作的示意图。
在图6B中,预测器500以及510可如上所述在选择预测器520后的一个周期操作。换句话说,在由下一个最终分预测值“1”更新全局历史寄存器530后,即在将寄存器值更新为“0000000011”后,预测器500和510可根据选择预测器520的控制信号Ctrl 0和Ctrl1进行操作。
参照图6B,局部预测器500可将由PC索引的LPSA 502入口的MSB值输出为局部分支预测器500的分支预测值LP_V。来自选择预测器520的第一控制信号Ctrl0可使局部预测器500可用或不可用。此外,在全局预测器510中,专有OR 540(其可具有从全局历史寄存器530和PC输出的10位值的输入)的输出可用于索引GPT 512入口。索引的GPT 512入口的MSB值可被作为全局预测器510的分支预测值GP_V输出。根据来自选择预测器520的第二控制信号Ctrl1可使全局预测器510可用或不可用。由于局部预测器500可被图6A所示的选择预测器520选择为当前分支指令的预测器,第二控制信号Ctrl1就使全局预测器510不可用,并且第一控制信号Ctrl0可使局部预测器500操作,以执行用于当前分支指令的分支预测操作。因此,由PC索引的第一入口的MSB值“1”可以被输出为局部分支预测值LP_V,并且可利用选择预测器520的选择信号,将局部分支预测值输出LP_V为MUX电路528的输出,即,输出为整个分支预测器的最终分支预测值PRED_V。
在执行完上述分支预测处理之后,可更新每个表格和寄存器。更新处理可以与常规的分支预测器的更新处理类似,因此就忽略相同的细节描述。也就是说,当预测要取用分支时(PRED_V=“1”),分支预测用的入口可以加“1”,而当预测不取用分支时(PRED_V=“0”),该入口减“1”。
图7是根据本发明的一个示例性实施例,由分支预测装置执行的分支预测处理的流程图。
如图7所示,在示例性的实施例中,选择预测器520可用于预测并选择预测器,该被选的预测器将用于在局部预测器500和全局预测器510执行操作之前一个周期的分支预测。这样,只有选择的预测器可用,而未选择的预测器就不可用,因此防止了分支预测时的不必要的功率消耗。
图8是常规分支预测器和根据本发明的一个示例性实施例的低功率消耗分支预测装置中,取决于分支指令和总指令的比率的功率消耗度量的示意图。
使用三星(Samsung)存储编译器测量功率消耗。在温度25℃和应用电压1.20伏的条件下,进行检测。另外,根据全局历史的平均值,假设局部预测器的预测百分比是75%,并且全局预测器的预测百分比是25%,获得该测量。
参照图8,应当意识到的是,与常规分支预测器的功率消耗800相比,示例性实施例的功率消耗802大约降低了5-19%。如图8所示,随着分支指令与总指令的比值的增加,示例性实施例节约的功率消耗缓慢地减少。这种情况的一个可能的解释就是,随着比值的增加,更新带来的功率消耗将占总功率消耗较大百分比。更新时,示例性实施例可与常规分支预测器有相似的功率消耗。
在大多数的情况下,分支指令与总指令的比值为从0到0.2。因此,与常规分支预测器的功率消耗相比,示例性实施例的功率消耗会减少大约11-19%。
如上所述,根据本发明的示例性实施例的分支预测装置能减少功率消耗,而不影响分支预测的准确性。也就是说,如上述试验结果所示,根据本发明示例性实施例的分支预测装置在大多数的情况下可以将功率消耗减少11-19%。
通过对本发明示例性实施例的描述,很明显的是,该实施例可以多种方式变化。这样的变形并不背离本发明示例性实施例的范围和精神,并且所有的这些对于本领的技术人员来说显而易见的修改都将包括在所附的权利要求的范围内。

Claims (13)

1.一分支预测装置,包括:
第一分支预测器,其执行用于预测一分支指令的结果的第一分支预测算法;
第二分支预测器,其执行用于预测所述分支指令的结果的第二分支预测算法;以及
选择预测器,其产生用于控制所述第一分支预测器和所述第二分支预测器的操作的控制信号,并且用于选择并输出所述第一分支预测器或所述第二分支预测器的预测结果,其中所述选择预测器操作以从所述第一分支预测器和所述第二分支预测器中仅选择一个来执行所述分支指令的分支预测并使未被选择的另一分支预测器不可用;
其中,所述第一分支预测器和所述第二分支预测器分别根据该控制信号执行预测算法。
2.如权利要求1所述的分支预测装置,其特征在于,所述选择预测器比所述第一分支预测器和所述第二分支预测器提前一个预定周期操作。
3.如权利要求1所述的分支预测装置,其特征在于,所述第一分支预测器是一个局部预测器,其利用相应于所述分支指令的在先分支预测结果,为所述分支指令执行分支预测。
4.如权利要求1所述的分支预测装置,其特征在于,所述第一分支预测器包括:
局部历史表,其用于存储各个分支指令的分支的分支预测结果的历史;
局部预测表,其由存储在所述局部历史表中的历史来索引;
局部预测存储阵列,其由一程序计数器来索引,并由所述局部历史表和所述局部预测表来更新;以及
控制逻辑,其用于根据来自所述选择预测器的第一控制信号,从而启动或禁止所述第一分支预测器的操作。
5.如权利要求4所述的分支预测装置,其特征在于,所述局部历史表和所述局部预测表不在分支预测操作期间使用。
6.如权利要求1所述的分支预测装置,其特征在于,所述第二分支预测器是全局分支预测器,其用于利用分支预测装置的在先分支预测结果,为所述分支指令执行分支预测。
7.如权利要求1所述的分支预测装置,其特征在于,所述第二分支预测器包括:
全局预测表,其由所述分支预测装置的在先分支预测结果的预定的操作值和程序计数器来索引,并存储所述分支预测器的最近分支预测结果的历史;以及
控制逻辑,其根据来自所述选择预测器的第二控制信号,从而启动或禁止所述第二分支预测器的操作。
8.如权利要求1所述的分支预测装置,其特征在于,所述选择预测器包括:
移位寄存器,其用于将输入的所述分支预测装置的在先分支预测值向左移一位;
选择预测表,其由所述移位寄存器的值索引,来输出预测器选择值;
预测器选择单元,其根据所述选择预测表的所述预测器选择值,产生控制所述第一分支预测器和所述第二分支预测器的操作的所述控制信号,并产生选择所述第一和所述第二分支预测器之一的输出的选择信号;以及
MUX电路,其与所述第一分支预测器和所述第二分支预测器相连,根据所述选择信号,输出所述第一分支预测器的分支预测值或所述第二分支预测器的分支预测值。
9.一种分支预测方法,其包括:
通过利用在先分支预测结果,从多个分支预测器中选择一个分支预测器,从而使选中的一个分支预测器可用而使未被选择的其它分支预测器不可用,因而所述其它分支预测器不为分支指令执行分支预测;以及
通过利用所选择的分支预测器,为所述分支指令执行分支预测。
10.一种分支预测装置,包括:
预测器选择单元,其通过利用在先分支预测结果,从多个分支预测器中选择一个分支预测器,从而使选中的一个分支预测器可用而使未被选择的其它分支预测器不可用;以及
控制器,其通过利用所选择的分支预测器,为一分支指令执行分支预测。
11.一种分支预测装置的选择预测器,所述选择预测器包括:
移位寄存器,其用于将存储的分支预测装置的分支预测值向左移一位;
选择预测表,其由所述移位寄存器的值索引,来输出预测器选择值;
预测器选择单元,其用于根据所述选择预测表的所述预测器选择值,产生用于控制第一分支预测器和第二分支预测器的操作的控制信号,从而使选中的一个分支预测器可用而使未被选择的其它分支预测器不可用,并产生用于选择所述第一和所述第二分支预测器之一的输出的选择信号;以及
MUX电路,其与所述第一分支预测器和所述第二分支预测器相连,用于根据所述选择信号,输出所述第一分支预测器的分支预测值或所述第二分支预测器的分支预测值。
12.一种分支预测装置的选择预测方法,所述方法包括:
将存储的所述分支预测装置的分支预测值向左移一位;
用移位寄存器的值索引选择一预测表,用以输出一预测器选择值;以及
根据所述预测器选择值产生一个用于控制多个分支预测器的操作的控制信号,从而使选中的一个分支预测器可用而使未被选择的其它分支预测器不可用。
13.一种分支预测装置的选择预测器,包括:
移位寄存器,其将存储的所述分支预测装置的分支预测值向左移一位;
预测器选择单元,其用移位寄存器的值索引选择一预测表,用以输出一预测器选择值;以及
控制器,其根据所述预测器选择值产生用于控制多个分支预测器的操作的控制信号,从而使选中的一个分支预测器可用而使未被选择的其它分支预测器不可用。
CNB2004100118071A 2003-09-24 2004-09-23 低功率消耗的分支预测装置和方法 Expired - Fee Related CN100365566C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR66325/03 2003-09-24
KR66325/2003 2003-09-24
KR10-2003-0066325A KR100528479B1 (ko) 2003-09-24 2003-09-24 전력 소모를 감소시키기 위한 분기 예측기 및 구현방법

Publications (2)

Publication Number Publication Date
CN1601463A CN1601463A (zh) 2005-03-30
CN100365566C true CN100365566C (zh) 2008-01-30

Family

ID=33411797

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100118071A Expired - Fee Related CN100365566C (zh) 2003-09-24 2004-09-23 低功率消耗的分支预测装置和方法

Country Status (5)

Country Link
US (1) US20050066154A1 (zh)
JP (1) JP2005100403A (zh)
KR (1) KR100528479B1 (zh)
CN (1) CN100365566C (zh)
GB (1) GB2406413B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100630702B1 (ko) * 2004-10-05 2006-10-02 삼성전자주식회사 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법
US7673122B1 (en) * 2005-09-29 2010-03-02 Sun Microsystems, Inc. Software hint to specify the preferred branch prediction to use for a branch instruction
US7487340B2 (en) * 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US8301871B2 (en) * 2006-06-08 2012-10-30 International Business Machines Corporation Predicated issue for conditional branch instructions
US8935517B2 (en) * 2006-06-29 2015-01-13 Qualcomm Incorporated System and method for selectively managing a branch target address cache of a multiple-stage predictor
US7565512B2 (en) 2007-02-02 2009-07-21 Kabushiki Kaisha Toshiba Method, system and apparatus for generation of global branch history
CN101763248A (zh) 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 用于多模式分支预测器的系统和方法
JP5423156B2 (ja) 2009-06-01 2014-02-19 富士通株式会社 情報処理装置及び分岐予測方法
US20100332812A1 (en) * 2009-06-24 2010-12-30 Doug Burger Method, system and computer-accessible medium for low-power branch prediction
US8433885B2 (en) * 2009-09-09 2013-04-30 Board Of Regents Of The University Of Texas System Method, system and computer-accessible medium for providing a distributed predicate prediction
US20150220340A1 (en) * 2013-10-04 2015-08-06 Rajkishore Barik Techniques for heterogeneous core assignment
GB2539041B (en) * 2015-06-05 2019-10-02 Advanced Risc Mach Ltd Mode switching in dependence upon a number of active threads
US9471314B1 (en) * 2015-12-15 2016-10-18 International Business Machines Corporation Auxiliary perceptron branch predictor with magnitude usage limit
US9996351B2 (en) * 2016-05-26 2018-06-12 International Business Machines Corporation Power management of branch predictors in a computer processor
CN108062236A (zh) * 2016-11-07 2018-05-22 杭州华为数字技术有限公司 一种软硬件协同分支指令预测方法及装置
US10607137B2 (en) 2017-04-05 2020-03-31 International Business Machines Corporation Branch predictor selection management
US11550588B2 (en) * 2018-08-22 2023-01-10 Advanced Micro Devices, Inc. Branch target filtering based on memory region access count
US11442727B2 (en) * 2020-06-08 2022-09-13 Advanced Micro Devices, Inc. Controlling prediction functional blocks used by a branch predictor in a processor
CN113504943B (zh) * 2021-09-03 2021-12-14 广东省新一代通信与网络创新研究院 用于降低资源使用的混合分支预测装置实现方法及系统
CN114154763A (zh) * 2021-12-29 2022-03-08 北京工业大学 一种利用感知器改进的锦标赛分支预测方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030065912A1 (en) * 2001-10-03 2003-04-03 Hum Herbert H.J. Removing redundant information in hybrid branch prediction

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758142A (en) * 1994-05-31 1998-05-26 Digital Equipment Corporation Trainable apparatus for predicting instruction outcomes in pipelined processors
US5687360A (en) * 1995-04-28 1997-11-11 Intel Corporation Branch predictor using multiple prediction heuristics and a heuristic identifier in the branch instruction
US6253316B1 (en) * 1996-11-19 2001-06-26 Advanced Micro Devices, Inc. Three state branch history using one bit in a branch prediction mechanism
US5872984A (en) * 1997-04-01 1999-02-16 International Business Machines Corporation Uninterruptible power supply providing continuous power mainstore function for a computer system
US5978909A (en) * 1997-11-26 1999-11-02 Intel Corporation System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer
US6332189B1 (en) * 1998-10-16 2001-12-18 Intel Corporation Branch prediction architecture
JP2000293373A (ja) * 1999-04-12 2000-10-20 Hitachi Ltd 分岐予測装置
US6580288B1 (en) * 1999-09-09 2003-06-17 International Business Machines Corporation Multi-property microprocessor with no additional logic overhead to shared pins
US6550004B1 (en) * 1999-11-05 2003-04-15 Ip-First, Llc Hybrid branch predictor with improved selector table update mechanism
US6658558B1 (en) * 2000-03-30 2003-12-02 International Business Machines Corporation Branch prediction circuit selector with instruction context related condition type determining
US7000096B1 (en) * 2000-08-03 2006-02-14 International Business Machines Corporation Branch prediction circuits and methods and systems using the same
US7073079B1 (en) * 2001-12-04 2006-07-04 Ellipsis Digital Systems, Inc. Method, system, and apparatus to apply protocol-driven power management to reduce power consumption of digital communication transceivers
US6938151B2 (en) * 2002-06-04 2005-08-30 International Business Machines Corporation Hybrid branch prediction using a global selection counter and a prediction method comparison table
US7058795B2 (en) * 2002-06-25 2006-06-06 Intel Corporation Method and apparatus of branch prediction
US7047339B2 (en) * 2003-06-27 2006-05-16 Intel Corporation Computer system with detachable always-on portable device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030065912A1 (en) * 2001-10-03 2003-04-03 Hum Herbert H.J. Removing redundant information in hybrid branch prediction

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
The Alpha 21264 Microprocessor. R. E. Kessler.IEEE Micro,Vol.19 No.2. 1999 *

Also Published As

Publication number Publication date
US20050066154A1 (en) 2005-03-24
KR20050030019A (ko) 2005-03-29
CN1601463A (zh) 2005-03-30
GB2406413A (en) 2005-03-30
KR100528479B1 (ko) 2005-11-15
GB2406413B (en) 2006-03-15
JP2005100403A (ja) 2005-04-14
GB0421187D0 (en) 2004-10-27

Similar Documents

Publication Publication Date Title
CN100365566C (zh) 低功率消耗的分支预测装置和方法
CN103250131B (zh) 包括用于早期远分支预测的影子缓存的单周期多分支预测
US7941794B2 (en) Data flow graph processing method and processing apparatus provided with reconfigurable circuit
CN101427213B (zh) 用于实现多态分支预测器的方法和装置
RU2447486C2 (ru) Представление переходов цикла в регистре предыстории переходов с помощью множества бит
CN111459549B (zh) 具有高度领先分支预测器的微处理器
CN101523344B (zh) 用于解析同时所预测分支指令的方法及系统
JPS635777B2 (zh)
US6715064B1 (en) Method and apparatus for performing sequential executions of elements in cooperation with a transform
US9590649B2 (en) Analog-to-digital conversion with micro-coded sequencer
JPH0628184A (ja) ブランチ予測方法及びブランチプロセッサ
US6865662B2 (en) Controlling VLIW instruction operations supply to functional units using switches based on condition head field
CN102707933B (zh) 用于管理返回堆栈的方法和设备
US7730284B2 (en) Pipelined instruction processor with data bypassing and disabling circuit
CN101320324A (zh) 处理机装置及复合条件处理方法
US5495591A (en) Method and system for cache miss prediction based on previous cache access requests
KR20010001022A (ko) 병렬 프로세서를 위한 무순서 명령어 발행 방법 및 장치
CN102855120B (zh) 超长指令字vliw的处理器和处理方法
US3001708A (en) Central control circuit for computers
US7519798B2 (en) Utilizing a branch predictor outcome to decide whether to fetch or not to fetch from a branch target buffer
EP0363174A2 (en) Branch on bit processing
JP4873546B2 (ja) データ処理装置、データ処理方法
CN101326720B (zh) 电路的动态常量合并
JP7227808B2 (ja) 予測装置、二次電池、予測方法およびプログラム
JP2921259B2 (ja) 多分岐命令の処理方式

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080130

Termination date: 20091023