CN101479700B - 用于积极主动分支目标地址高速缓冲存储器管理的方法和设备 - Google Patents

用于积极主动分支目标地址高速缓冲存储器管理的方法和设备 Download PDF

Info

Publication number
CN101479700B
CN101479700B CN200780023873.2A CN200780023873A CN101479700B CN 101479700 B CN101479700 B CN 101479700B CN 200780023873 A CN200780023873 A CN 200780023873A CN 101479700 B CN101479700 B CN 101479700B
Authority
CN
China
Prior art keywords
btac
branch
entry
predictor circuit
instructions
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
CN200780023873.2A
Other languages
English (en)
Other versions
CN101479700A (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101479700A publication Critical patent/CN101479700A/zh
Application granted granted Critical
Publication of CN101479700B publication Critical patent/CN101479700B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

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

本发明揭示一种包括分支目标地址高速缓冲存储器(BTAC)和分支预测器电路的多级分支预测系统。所述BTAC经配置以存储BTAC条目。所述分支预测器电路经配置以存储状态信息。所述分支预测器电路利用所述状态信息来预测分支指令的方向,且响应于所述分支指令的实际分解,基于所述所存储的状态信息来管理所述BTAC条目。

Description

用于积极主动分支目标地址高速缓冲存储器管理的方法和设备
技术领域
本发明大体来说涉及处理器的领域,且具体来说,本发明涉及一种通过积极主动地管理分支目标地址高速缓冲存储器的内容而改进分支预测的方法。
背景技术
微处理器在多种应用中执行计算任务。改进的处理器性能几乎始终为所要的,以允许经由软件改变的较快操作和/或增加的功能性。在许多嵌入应用(例如,便携式电子装置)中,省电也为处理器设计和实施方案中的目标。
许多现代处理器采用管线式架构,其中连续指令(每一者具有多个执行步骤)在执行中重叠。对于改进的性能来说,所述指令应经由管线连续流动。引起指令在管线中停止的任何情形可不利地影响性能。如果指令被从管线冲洗且随后经重取,则性能和功率消耗两者均受损害。
多数程序包括条件分支指令,其实际分支行为直至指令在管线深处被评估时才知晓。为了避免将由等待分支指令的实际评估而引起的停止,现代处理器可采用一些形式的分支预测,藉此在管线中早早地预测条件分支指令的分支行为。基于预测的分支评估,处理器推测性地提取(预取)和执行来自预测地址的指令,所述地址为分支目标地址(如果预测将选取所述分支)或分支指令之后的下一连续地址(如果预测将不选取所述地址)。条件分支指令是否被选取或未被选取被称作确定分支的方向。可在预测时间时和在实际分支分解时间时进行确定分支的方向。当确定实际分支行为时,如果误预测了所述分支,则必须从管线冲洗推测性地提取的指令,且必须从正确的下一地址提取新指令。响应于错误分支预测的预取指令可不利地影响处理器性能和功率消耗。因此,改进分支预测的准确性为重要的处理器设计目标。
分支预测的一个已知形式包括将分支预测划分为两个预测器:初始分支目标地址高速缓冲存储器(BTAC)和分支历史表(BHT)。还已知为分支目标缓冲器(BTB)的BTAC由指令提取地址编索引且含有对应于所述指令提取地址的下一提取地址(还被称作分支目标)。在分支指令已穿过处理器管线且其分支已经被选取之后,将条目添加到常规BTAC。如果所述常规BTAC为满的,则当正添加下一条目时,使用标准高速缓冲存储器替换算法(例如,循环或最近最少使用法)从BTAC常规地移除条目。
一般来说,BTAC常常体现为高度关联性高速缓冲存储器设计且在提取管线中被早早地存取。如果提取地址匹配BTAC条目(BTAC命中),则在下一循环中提取对应的下一提取地址或目标地址。目标地址的此匹配和随后提取被称作隐式选取分支预测。如果不存在匹配(BTAC未命中),则在下一循环中提取下一连续增加的地址。此无匹配情形还被称作隐式未选取预测。
一般来说,结合较准确的个别分支方向预测器(例如,还已知为模式历史表(PHT)的分支历史表(BHT))利用BTAC。与常规BTAC相比,在管线中稍晚地存取常规BHT。同样,可潜在地存在额外信息以便进行较佳预测。常规BHT可含有一组饱和预测式方向计数器以产生对于个别分支指令的较准确的选取/未选取决策。举例来说,每一饱和预测式方向计数器可包含2-位计数器,其假定四个状态中的一者,每一者指派有加权预测值,例如:
11-强预测选取
10-弱预测选取
01-弱预测未选取
00-强预测未选取
一般来说,BHT常规地由存储于分支历史寄存器(BHR)中的位编索引。常规BHT的输出为导致提取分支指令的目标地址或下一循环中的下一连续地址的选取或未选取决策。当BHT变为已知时,BHT通常以分支结果信息加以更新。
通过利用常规BHT,处理器可超越(override)由BTAC作出的较早的隐式预测。举例来说,BTAC可命中(隐式地预测选取分支),但所述BHT可以未选取预测超越BTAC隐式预测。相反,在BTAC未命中之后,BHT可以选取预测超越BTAC未命中,假定在处理器管线中此点处的目标地址现在为已知的。
超越BHT的BTAC预测导致由冲洗处理器管线引起的浪费的循环。当类似的分支指令随后由管线处理时,超越BHT的BTAC预测可重复地发生。举例来说,如果BTAC隐式地预测由正发现于BTAC中的匹配进行的选取,则来自目标地址(选取分支)的指令开始被提取到处理器管线中。如果BHT随后通过决定不应选取所述分支而超越BTAC预测,则必须从管线冲洗在提取目标地址之后的所有指令。在此常规的分支预测技术中,对于随后提取的相同分支指令来说,此循环潜在地自身重复。关于相同条件分支指令的随后提取的重复分支预测矛盾的此问题在本文中被称作多冲洗循环(multiple flushcycle)问题。在常规方法中,对于条件分支指令来说,多冲洗循环问题可持续存在直到BTAC被更新为止。因此,认识到,需要积极主动性地管理BTAC和减小多冲洗循环问题的发生机率的设备和方法。
发明内容
根据一个或一个以上实施例,揭示一种分支目标地址高速缓冲存储器(BTAC)和一种分支预测器电路。所述BTAC经配置以存储BTAC条目。所述分支预测器电路经配置以存储状态信息。所述分支预测器电路利用状态信息来预测分支指令的方向,且响应于分支指令的实际分解,基于存储的状态信息而管理BTAC条目。通过基于用以预测分支指令的方向的状态信息而管理BTAC条目,有利地减少了误预测和在BTAC查找与分支预测器电路之间的矛盾的可能性。
一个实施例涉及一种多级分支预测系统。所述多级分支预测系统包括BTAC和分支预测器电路。所述BTAC经配置以存储BTAC条目。所述分支预测器电路经配置以存储状态信息。所述分支预测器电路利用状态信息来预测分支指令的方向,且响应于分支指令的实际分解,基于存储的状态信息而管理BTAC条目。
另一实施例涉及一种管理分支目标存取高速缓冲存储器(BTAC)的方法。接收实际上已经分解的条件分支指令的分支方向。响应于接收的分支方向,评估分支预测器电路的状态信息。根据分支预测器电路的状态信息,管理与条件分支指令相关联的BTAC中的条目。
另一实施例涉及一种降低管线的多冲洗循环的机率的方法。在此方法中,隐式地预测条件分支指令的第一方向。同样,基于状态信息,预测所述条件分支指令的第二方向。利用状态信息管理与所述条件分支指令相关联的BTAC条目。
应了解,所属领域的技术人员将易于从以下实施方式了解本发明的其它实施例,在实施方式中通过说明展示并描述了本发明的各种实施例。如将认识到,本发明可以有其它和不同实施例且其若干细节在各种其它方面中可以有修改,全部都不脱离本发明。因此,本质上应认为图式和实施方式均为说明性的而非限制性的。
附图说明
图1为处理器的功能框图。
图2为图1的分支预测器系统的功能框图。
图3为BTAC管理信号电路的第一示范性实施例的功能框图。
图4为BTAC管理信号电路的第二示范性实施例的功能框图。
图5为说明管理BTAC的方法的流程图。
图6为说明降低管线的多冲洗循环的机率的方法的流程图。
具体实施方式
图1描绘处理器100的功能框图。处理器100根据控制逻辑114执行指令执行管线112中的指令。在一些实施例中,管线112可为具有多个平行管线的超标量(superscalar)设计。管线112包括组织于管线级中的各种寄存器或锁存器116A-D和一个或一个以上执行单元(例如,算术逻辑单元(ALU)118)。通用寄存器(GPR)堆120提供包含存储器层级的顶部的寄存器。
从数据高速缓冲存储器(D高速缓冲存储器)140存取数据,其中存储器地址转译和准许由主转译后备缓冲器(TLB)142管理。在各种实施例中,ITLB 124可包含TLB142的部分的副本。或者,可集成ITLB 124和TLB 142。类似地,在处理器100的各种实施例中,可集成或统一I高速缓冲存储器122与D高速缓冲存储器140。在存储器接口146的控制下,I高速缓冲存储器122和/或D高速缓冲存储器140的未命中导致对主(晶片外)存储器144的存取。
处理器100可包括输入/输出(I/O)接口148,从而控制对各种外围装置150的存取。所属领域的技术人员将认识到,处理器100的众多变化是可能的。举例来说,处理器100可包括用于I高速缓冲存储器122和D高速缓冲存储器140中的任一者或两者的第二级(L2)高速缓冲存储器。此外,可从特定实施例省去处理器100中描绘的功能块中的一者或一者以上。
处理器100包括多级分支预测系统143。多级分支预测系统143包括BTAC 141(第一级)和分支预测器电路126(第二级)。BTAC 141经配置以存储一个或一个以上条目,其中每一条目含有对应于提取地址的分支目标地址。指令预取单元128从指令存储器(I高速缓冲存储器或I$)122提取指令,其中存储器地址转译和准许由指令侧转译后备缓冲器(ITLB)124管理。多级分支预测系统143确定在BTAC 141中一提取地址是否命中、通过利用分支预测器电路126中的存储的预测模式预测一分支指令的方向,和基于分支预测器电路126中的存储的预测模式的状态更新BTAC 141。将结合图2的讨论更详细地描述多级分支预测系统143以及指令预取单元128和管线112的操作。
图2为图1的分支预测器系统143的功能框图。管线112和指令预取单元128各包括一个或一个以上处理级。分支预测器电路126可包括分支历史寄存器203、分支历史表(BHT)207和分支表更新和预测逻辑电路205。将结合图3和图4描述分支表更新和预测逻辑电路205的BTAC管理部分的示范性实施例。
在操作中,经由路径219在BTAC 141中查找一提取地址,以确定其是否对应于先前已由管线112处理的选取分支指令。指令预取单元128经由路径221从指令高速缓冲存储器122推测性地预取指令,对于隐式预测为“选取”的分支,其开始于从BTAC 141返回的分支目标地址,或对于隐式预测为“未选取”的分支,其开始于下一连续地址。在任一情况下,将预取的指令沿着路径223加载到指令预取单元128内。
当条件分支指令由指令预取单元128或管线112级处理时,确定关于条件分支指令的额外信息,例如,在经由路径223从I高速缓冲存储器122检索的预解码位中携载的信息。在路径121上调用利用存储的预测模式和此额外信息的分支预测器电路126,以便以比BTAC查找高的置信度级别预测条件分支指令的方向。
分支表更新和预测逻辑电路205利用分支指令地址、分支历史寄存器(BHR)203和分支历史表(BHT)207来预测条件分支指令的方向。对于条件分支指令来说,BHR 203充当移位寄存器。举例来说,如果实际上选取了条件分支指令,则将“1”移位至BHR 203内。如果实际上未选取条件分支指令,则将“0”移位至BHR 203内,从而导致将特定分支指令的历史分支方向存储于BHR 203上。在一实施例中,BHR 203包括用于由管线112在一时间周期内处理的每一分支指令的特定寄存器。在另一实施例中,BHR 203可具有含有最近处理的条件分支指令的历史分支方向的全局范围。BHT 207可包括用于特定分支指令的两位计数器,如在上文背景技术部分中所描述。应认识到,用于预测分支方向的各种已知技术可利用BHR 203和BHT 207。还应认识到,这些已知的预测性技术利用BHR 203和BHT 207的各种实施方案。还应认识到,本发明涵盖利用实施BHR或BHT的替代例的其它预测技术。
基于BHR 203和BHT 207,在图2中说明的实例中,分支方向预测器电路126预测到与BTAC 141隐式预测矛盾的分支方向。结果,在“选取路径1(Taken Path1)”(条件分支指令的级位置)上方的所有指令将从指令预取单元128冲洗。在无矛盾的情况下,指令预取单元128将继续预取从分支目标地址开始的指令。
当条件分支指令前进经过管线112的级时,条件分支指令到达一其中条件实际上经分解的级。如果分支的实际分解与分支预测器电路126的预测不同,则所述条件分支指令上方的所有指令被从管线112和指令预取单元128两者冲洗掉。在管线的实际分支分解级处,经由路径213将条件分支的实际方向发送到分支预测器电路126。
分支表更新和预测逻辑电路205经配置以除了分支指令地址之外还利用实际分支方向、BHT 207中的条目的状态和(视情况)BHR 203的内容来更新BHT 207的内容。另外,分支表更新和预测逻辑电路205经配置以视实际分支方向和BHT 207的状态或分支方向预测器中的任何其它状态而定来管理BTAC 141中的条目,从而有利地允许BTAC141中的条目响应于分支预测器电路126和存储用于分支预测的状态信息的其它分支预测器电路的任一分支预测技术实施。
图3为BTAC管理电路300的第一示范性实施例的功能框图。BTAC管理电路300可为包括于分支表更新和预测逻辑电路205中以在BHT 207已经更新之后管理BTAC141的合适电路。在作为实际分解的结果而经更新后,到BTAC管理电路300的输入为对应于条件分支指令的两位计数器值的最高有效位。BTAC管理电路300的输出信号305为输入的反转信号。如下文所述,BTAC 141解译输出信号305以确定是否管理对应于条件分支指令的条目。
举例来说,如果对应于条件分支指令的经更新的两位计数器具有值00(强预测未选取),则将根据下文描述的各种替代例管理BTAC 141中的此条件分支指令的条目。类似地,如果经更新的两位计数器具有值01(弱预测未选取),则将管理BTAC 141中的此条件分支指令的条目。如果经更新的两位计数器具有值10(弱预测选取)或值11(强预测选取),则将不修改BTAC 141中的条目。
图4为BTAC管理信号电路400的第二示范性实施例的功能框图。BTAC管理电路400可为用于在BHT 207已经更新之前管理BTAC 141的分支表更新和预测逻辑电路205的BTAC管理部分的一部分的合适电路。BTAC管理电路400为逻辑电路,其包括用以产生管理信号425以管理对应于实际上经分解的条件分支指令的条目的AND门405A-405B和OR门415。在由实际方向引起的更新之前,BTAC管理电路400响应于分支的实际方向和BHT 207的当前状态而操作。BTAC管理电路400具有输入A′(经反转的实际分支方向)、B′(经反转的两位计数器的最高有效位)和C′(经反转的两位计数器的最低高有效位)。在此实施例中,如下所述,BTAC 141将解译输出信号425以管理对应于条件分支指令的条目。虽然BTAC管理电路300和400已描述为视BHT 207的实施方案而定,但其还可视BHR的选定实施方案而定。此外,应认识到,本发明涵盖由BHT的各种实施方案驱动或者由各种分支预测性实施方案而实施的其它BTAC管理电路。此外,如图3和图4中所示的BTAC管理电路可与分支表更新和预测逻辑电路205集成或与分支表更新和预测逻辑电路205分离。
条目的管理的类型可包括各种替代例。管理的类型包括立即移除BTAC、在下一添加的分支指令上标记移除的BTAC条目、在延长的时间周期内钉扎或维持所述BTAC条目和其类似操作。应认识到,本发明涵盖作为与条件分支指令相关联的BTAC条目的管理的替代例的不与条件分支指令相关联的BTAC条目的管理。
BTAC 141采用以指示BTAC 141中的条目的替换次序的次序组织条目的最近最少使用替换策略。已知的伪最近最少使用的电路可适合于维持条目的替换次序。因而,BTAC管理电路300的输出信号可导致修改对应于BTAC 141中的条件分支指令的条目的位置。举例来说,可以替换次序增大或以替换次序减小所述条目。或者,通过调整BTAC 141中的位置以指示其为最近使用的,可维持所述条目,以便延长其在BTAC 141中的寿命。
或者,在另一实施例中,BTAC 141可采用修改的循环策略。在常规循环策略中,寄存器指向待在下次添加条件分支时替换的条目且在替换所述条目之后连续步进到下一连续条目,从而以一合理方式循环穿过所述条目。然而,在修改的循环策略中,采用一指针指向对应于实际上经分解的条件分支指令的条目。举例来说,可通过调整指针现在指向此条目而标记用于移除的对应于条件分支指令的条目。在如此进行的过程中,在下一次将条件分支指令和其对应目标地址添加到BTAC 141时,替换此条目。因此,待被移除的下一条目将为最近确定以待移除的条目。虽然由本文中提供的BTAC 141采用的替换策略为示范性的,但本发明技术还可适用于在BTAC中通常使用的其它替换策略。
图5为说明管理BTAC的方法的流程图500。在框510处,接收实际上已经分解的条件分支指令的分支方向。举例来说,图2的路径213将分支预测器电路126说明为从管线112接收分支方向。在框520处,响应于接收实际分支方向,评估分支预测器电路的状态。在框530处,根据分支预测器电路的状态,管理与条件分支指令相关联的BTAC中的条目。
框530A-530D为如框530中所示的BTAC中的条目的各种类型的管理的替代示范性实施例。可单一或组合地采用这些示范性实施例。在框530A处,移除待被管理的BTAC中的条目,从而从所述BTAC有利地移除待被预测为“未选取”的最后一个条件分支指令。在框530B中,在延长的时间周期内,将待被管理的BTAC中的条目维持于所述BTAC中,从而有利地延长BTAC中的待被预测为“选取”的最后一个条件分支指令的寿命。
框530C展示待被管理的BTAC中的条目使其位置以经调整用于采用最近最少使用替换策略的BTAC的替换次序。在一实施例中,BTAC中的条目使其位置以使不大可能被替换的条目在待添加的下一BTAC条目上的方式修改的替换次序,从而有利地延长BTAC中的待被预测为“选取”的最后一个条件分支指令的寿命。在另一实施例中,BTAC中的条目使其位置以使很大可能被替换的条目在待添加的下一BTAC条目上的方式修改的替换次序。
框530D展示下一替换寄存器经调整用于采用经修改的循环替换策略的BTAC。在一个实施例中,下一替换寄存器的内容经修改以指向BTAC中待管理的条目。因此,当下一条件分支指令将被添加到BTAC时,所述被指向的条目由添加的条目替换,从而从所述BTAC有利地移除将被预测为“未选取”的最后一个条件分支指令。在另一实施例中,下一替换寄存器的内容经修改以指向待管理的条目之后的BTAC中的下一条目。以此方式,当下一条件分支指令将被添加到BTAC时,所述待管理条目之后的BTAC中的下一条目由添加的条目替换,从而有利地延长BTAC中的经管理的条目的寿命。应认识到,本发明可利用用于管理BTAC的其它管理技术。
图6为说明降低管线的多冲洗循环的机率的方法600的流程图。在框610处,隐式地预测条件分支指令的第一方向。举例来说,如果对于条件分支指令来说,在BTAC中存在命中,则接着预取BTAC中的对应分支目标地址。因此,分支方向被隐式预测为“选取”。在框620处,随后基于例如存储于分支预测电路126中的状态信息等状态信息而预测条件分支指令的第二方向。继续先前实例,分支预测器电路预测条件分支指令应为“未选取”,因此,与BTAC的隐式预测矛盾。在框630处,利用存储于(例如)分支预测电路126中的状态信息来管理与条件分支指令相关联的BTAC条目。上文结合图5的讨论描述了不同类型的BTAC管理。或者,在框630处,归因于在分支预测器电路与独立于存储于分支预测器电路中的任一状态的BTAC查找之间的矛盾来管理与条件分支指令相关联的BTAC条目。
结合本文中所揭示的实施例所描述的各种说明性逻辑块、模块、电路、元件和/或组件可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件或其经设计以执行本文所描述的功能的任何组合来实施或执行。通用处理器可为微处理器,但在替代例中,所述处理器可为任一常规处理器、控制器、微控制器或状态机。还可将处理器实施为计算组件的组合,例如,DSP与微处理器的组合,多个微处理器的组合、一个或一个以上微处理器与DSP核心的联合或任何其它所述配置。
结合本文中所揭示的实施例所描述的方法或算法可直接体现于硬件中、由处理器执行的软件模块中或所述两者的组合中。软件模块可驻留于RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸式盘、CD-ROM或此项技术中已知的任一其它形式的存储媒体中。存储媒体可耦合到处理器,使得所述处理器可从所述存储媒体读取信息且可将信息写入到所述存储媒体。在替代例中,存储媒体可与处理器成一体。
尽管在实施例的上下文中揭示了本发明,但将认识到,所属领域的技术人员可采用与上文讨论和所附的权利要求书相一致的各种各样的实施方案。

Claims (17)

1.一种多级分支预测系统,其包含:
分支目标地址高速缓冲存储器BTAC,其经配置以存储与条件分支指令相关联的BTAC条目;以及
分支预测器电路,其经配置以存储用于预测所述条件分支指令的方向的状态信息,并利用所述状态信息来预测所述方向,其中,所述分支预测器电路还用于在所述条件分支指令已实际分解的情况下接收所述条件分支指令的分支方向,所述分支预测器电路还经配置以基于所存储的所述条件分支指令的状态信息和所接收的分支方向来管理所述BTAC条目。
2.根据权利要求1所述的系统,其中所述分支预测器电路经配置以从所述BTAC移除所述BTAC条目。
3.根据权利要求1所述的系统,其中所述分支预测器电路经配置以在延长的时间周期内将所述BTAC条目维持于所述BTAC中。
4.根据权利要求1所述的系统,其中所述BTAC经配置而以替换次序维持所存储的一个或一个以上条目,且其中所述分支预测器电路经配置而以所述替换次序修改所述BTAC条目的位置。
5.根据权利要求4所述的系统,其中所述分支预测器电路经配置以将所述BTAC条目在所述替换次序中的位置修改为高于其当前位置,以增加所述BTAC条目的替换的可能性。
6.根据权利要求1所述的系统,其进一步包含:
替换指针,其中所述BTAC采用经修改的循环替换策略,且其中所述分支预测器电路经配置以修改所述替换指针以指向所述BTAC条目。
7.根据权利要求1所述的系统,其中所述BTAC及所属分支预测器安置于处理器中。
8.一种管理分支目标存取高速缓冲存储器BTAC的方法,所述方法包含:
接收实际上已经分解的条件分支指令的分支方向;
在分支预测器电路中存储状态信息,所述状态信息用于预测所述条件分支指令的方向;
基于所存储的状态信息以及所接收的分支方向来管理与所述条件分支指令相关联的BTAC中的条目。
9.根据权利要求8所述的方法,其中管理所述BTAC中的条目包含:
从所述BTAC移除所述条目。
10.根据权利要求8所述的方法,其中管理所述BTAC中的条目包含:
在延长的时间周期内维持所述BTAC条目。
11.根据权利要求8所述的方法,其进一步包含:
维持以替换次序存储于所述BTAC中的条目,其中管理所述BTAC中的条目包含以所述替换次序修改BTAC条目的位置。
12.根据权利要求11所述的方法,其中修改所述BTAC条目的所述位置进一步包含修改替换指针以指向所述BTAC条目。
13.一种用于降低管线的多冲洗循环的机率的方法,所述方法包含:
隐式地预测条件分支指令的第一方向;
基于状态信息,预测所述条件分支指令的第二方向;
确定在所述第一方向和所述第二方向之间是否存在矛盾;
如果确定所述第一方向和所述第二方向之间存在矛盾,则管理与所述条件分支指令相关联的分支目标存取高速缓冲存储器BTAC条目;
如果确定所述第一方向和所述第二方向之间不存在矛盾,则不修改与所述条件分支指令相关联的所述BTAC条目。
14.根据权利要求13所述的方法,其中管理所述BTAC条目包含:
从所述BTAC移除所述BTAC条目。
15.根据权利要求13所述的方法,其中管理所述BTAC条目包含:
在延长的时间周期内将所述BTAC条目维持于所述BTAC中。
16.根据权利要求13所述的方法,其进一步包含:
维持以替换次序存储于所述BTAC中的一个或一个以上条目,其中管理所述BTAC条目进一步包含以所述替换次序修改所述BTAC条目的位置。
17.根据权利要求16所述的方法,其中修改所述BTAC条目的所述位置进一步包含修改替换指针以指向所述BTAC条目。
CN200780023873.2A 2006-06-29 2007-06-28 用于积极主动分支目标地址高速缓冲存储器管理的方法和设备 Expired - Fee Related CN101479700B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/427,349 US8935517B2 (en) 2006-06-29 2006-06-29 System and method for selectively managing a branch target address cache of a multiple-stage predictor
US11/427,349 2006-06-29
PCT/US2007/072317 WO2008003019A2 (en) 2006-06-29 2007-06-28 Methods and apparatus for proactive branch target address cache management

Publications (2)

Publication Number Publication Date
CN101479700A CN101479700A (zh) 2009-07-08
CN101479700B true CN101479700B (zh) 2015-06-03

Family

ID=38846531

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200780023873.2A Expired - Fee Related CN101479700B (zh) 2006-06-29 2007-06-28 用于积极主动分支目标地址高速缓冲存储器管理的方法和设备

Country Status (12)

Country Link
US (2) US8935517B2 (zh)
EP (2) EP2035921B1 (zh)
JP (4) JP5558814B2 (zh)
KR (1) KR101074621B1 (zh)
CN (1) CN101479700B (zh)
BR (1) BRPI0713434A2 (zh)
CA (1) CA2654231A1 (zh)
ES (1) ES2386478T3 (zh)
MX (1) MX2008016116A (zh)
RU (1) RU2421783C2 (zh)
TW (1) TWI386850B (zh)
WO (1) WO2008003019A2 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3798998B2 (ja) * 2002-06-28 2006-07-19 富士通株式会社 分岐予測装置および分岐予測方法
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
JP5145809B2 (ja) * 2007-07-31 2013-02-20 日本電気株式会社 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
US20110236729A1 (en) 2008-12-05 2011-09-29 Roustaei Alex Hr Hydrogen cells or microcells with a hydrogen generator
FR2956869B1 (fr) 2010-03-01 2014-05-16 Alex Hr Roustaei Systeme de production de film flexible a haute capacite destine a des cellules photovoltaiques et oled par deposition cyclique des couches
JP2011209774A (ja) * 2010-03-26 2011-10-20 Fujitsu Ltd 分岐予測方法及びその方法を実行する分岐予測回路
US8375565B2 (en) 2010-05-28 2013-02-19 Western Digital (Fremont), Llc Method for providing an electronic lapping guide corresponding to a near-field transducer of an energy assisted magnetic recording transducer
US8351307B1 (en) 2010-06-04 2013-01-08 Western Digital (Fremont), Llc Trailing edge optimized near field transducer having non-rectangular pin cross section
US8320219B1 (en) 2010-06-15 2012-11-27 Western Digital (Fremont), Llc Trailing edge optimized near field transducer
JP5656074B2 (ja) * 2011-02-21 2015-01-21 日本電気株式会社 分岐予測装置、プロセッサ及び分岐予測方法
US9201654B2 (en) * 2011-06-28 2015-12-01 International Business Machines Corporation Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions
US8749790B1 (en) 2011-12-08 2014-06-10 Western Digital (Fremont), Llc Structure and method to measure waveguide power absorption by surface plasmon element
WO2013101121A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Managed instruction cache prefetching
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US9430241B2 (en) 2012-06-15 2016-08-30 International Business Machines Corporation Semi-exclusive second-level branch target buffer
US9298465B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction
US20140006752A1 (en) * 2012-06-27 2014-01-02 Qualcomm Incorporated Qualifying Software Branch-Target Hints with Hardware-Based Predictions
US10042776B2 (en) * 2012-11-20 2018-08-07 Arm Limited Prefetching based upon return addresses
US9441938B1 (en) 2013-10-08 2016-09-13 Western Digital (Fremont), Llc Test structures for measuring near field transducer disc length
JP6393590B2 (ja) * 2013-11-22 2018-09-19 株式会社半導体エネルギー研究所 半導体装置
US9563430B2 (en) 2014-03-19 2017-02-07 International Business Machines Corporation Dynamic thread sharing in branch prediction structures
US10353819B2 (en) * 2016-06-24 2019-07-16 Qualcomm Incorporated Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
US20170371669A1 (en) * 2016-06-24 2017-12-28 Qualcomm Incorporated Branch target predictor
GB2553582B (en) 2016-09-13 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
US10613869B2 (en) * 2018-03-29 2020-04-07 Arm Limited Branch target address provision
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1328664A (zh) * 1998-09-08 2001-12-26 英特尔公司 利用第二级分支预测表的分支预测的方法和设备
CN1601463A (zh) * 2003-09-24 2005-03-30 三星电子株式会社 低功率消耗的分支预测装置和方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2018A (en) * 1841-03-26 Joseph francis
US4018A (en) * 1845-05-01 Closing and opening the- entrances to beehives
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
TW345637B (en) 1994-02-04 1998-11-21 Motorola Inc Data processor with branch target address cache and method of operation a data processor has a BTAC storing a number of recently encountered fetch address-target address pairs.
JP3494484B2 (ja) * 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JP3765111B2 (ja) 1995-08-29 2006-04-12 株式会社日立製作所 分岐登録命令を有するプロセッサ
JPH10105401A (ja) * 1996-09-30 1998-04-24 Fujitsu Ltd プロセッサの分岐命令予測装置
US7103794B2 (en) * 1998-06-08 2006-09-05 Cacheflow, Inc. Network object cache engine
US5890008A (en) * 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US5964870A (en) * 1997-09-22 1999-10-12 Intel Corporation Method and apparatus for using function context to improve branch
US6263427B1 (en) * 1998-09-04 2001-07-17 Rise Technology Company Branch prediction mechanism
US6601161B2 (en) * 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6732260B1 (en) * 2000-03-06 2004-05-04 Intel Corporation Presbyopic branch target prefetch method and apparatus
US7000096B1 (en) * 2000-08-03 2006-02-14 International Business Machines Corporation Branch prediction circuits and methods and systems using the same
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
EP1405174A1 (en) * 2001-06-29 2004-04-07 Koninklijke Philips Electronics N.V. Method, apparatus and compiler for predicting indirect branch target addresses
US7082520B2 (en) * 2002-05-09 2006-07-25 International Business Machines Corporation Branch prediction utilizing both a branch target buffer and a multiple target table
US6965983B2 (en) 2003-02-16 2005-11-15 Faraday Technology Corp. Simultaneously setting prefetch address and fetch address pipelined stages upon branch
US7266676B2 (en) * 2003-03-21 2007-09-04 Analog Devices, Inc. Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
US7831817B2 (en) * 2003-04-15 2010-11-09 Arm Limited Two-level branch prediction apparatus
KR100785723B1 (ko) * 2004-04-21 2007-12-18 후지쯔 가부시끼가이샤 분기 예측 장치, 그 방법 및 프로세서
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1328664A (zh) * 1998-09-08 2001-12-26 英特尔公司 利用第二级分支预测表的分支预测的方法和设备
CN1601463A (zh) * 2003-09-24 2005-03-30 三星电子株式会社 低功率消耗的分支预测装置和方法

Also Published As

Publication number Publication date
WO2008003019A3 (en) 2008-05-02
JP5558814B2 (ja) 2014-07-23
RU2421783C2 (ru) 2011-06-20
KR101074621B1 (ko) 2011-10-17
MX2008016116A (es) 2009-01-20
EP2035921A2 (en) 2009-03-18
EP2035921B1 (en) 2012-06-06
KR20090031751A (ko) 2009-03-27
US8782383B2 (en) 2014-07-15
JP2013229038A (ja) 2013-11-07
JP2015144001A (ja) 2015-08-06
JP2017107578A (ja) 2017-06-15
EP2434393A1 (en) 2012-03-28
TW200816046A (en) 2008-04-01
EP2434393B1 (en) 2017-12-20
WO2008003019A2 (en) 2008-01-03
CN101479700A (zh) 2009-07-08
US20120042155A1 (en) 2012-02-16
RU2009102809A (ru) 2010-08-10
US8935517B2 (en) 2015-01-13
JP2009543223A (ja) 2009-12-03
CA2654231A1 (en) 2008-01-03
US20080005543A1 (en) 2008-01-03
ES2386478T3 (es) 2012-08-21
BRPI0713434A2 (pt) 2012-03-13
TWI386850B (zh) 2013-02-21

Similar Documents

Publication Publication Date Title
CN101479700B (zh) 用于积极主动分支目标地址高速缓冲存储器管理的方法和设备
CN103488463B (zh) 通过循环结束分支来抑制分支历史寄存器的更新
EP2024815B1 (en) Methods and apparatus for implementing polymorphic branch predictors
CN106997286B (zh) 用于循环分支的分支历史寄存器
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
CN101438237A (zh) 基于区块的分支目标地址高速缓冲存储器
JP2001236266A (ja) 高レベルキャッシュの効率改善方法
CN101501635B (zh) 用于减少在分支目标地址高速缓冲存储器中查找的方法和设备
US20030204705A1 (en) Prediction of branch instructions in a data processing apparatus
US7130991B1 (en) Method and apparatus for loop detection utilizing multiple loop counters and a branch promotion scheme
JP2001249806A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150603

Termination date: 20210628

CF01 Termination of patent right due to non-payment of annual fee