CN101529378B - 用于处理分支历史信息的方法及管线处理器 - Google Patents

用于处理分支历史信息的方法及管线处理器 Download PDF

Info

Publication number
CN101529378B
CN101529378B CN2007800398002A CN200780039800A CN101529378B CN 101529378 B CN101529378 B CN 101529378B CN 2007800398002 A CN2007800398002 A CN 2007800398002A CN 200780039800 A CN200780039800 A CN 200780039800A CN 101529378 B CN101529378 B CN 101529378B
Authority
CN
China
Prior art keywords
branch
instruction
register
history information
processor
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
CN2007800398002A
Other languages
English (en)
Other versions
CN101529378A (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 CN101529378A publication Critical patent/CN101529378A/zh
Application granted granted Critical
Publication of CN101529378B publication Critical patent/CN101529378B/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
    • 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
    • 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
    • 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/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)
  • Hardware Redundancy (AREA)

Abstract

本发明揭示一种处理分支历史信息的方法。所述方法从指令高速缓冲存储器中检索分支指令并在多个管线级中执行所述分支指令。所述方法验证已识别分支指令。所述方法进一步在第一管线级期间接收分支历史信息并将所述分支历史信息加载到第一寄存器中,其中所述第一寄存器。所述方法进一步在第二管线级期间将所述分支历史信息加载到第二寄存器中。

Description

用于处理分支历史信息的方法及管线处理器
技术领域
本发明通常涉及计算机系统,且更特定来说涉及一种用于使用工作全局历史寄存器的方法及系统。
背景技术
处于计算机平台演进核心的是处理器。早期处理器受当时可用技术的限制。制造技术的新进展允许将晶体管设计减小到早期处理器大小的1/1000且超过其1/1000。这些较小的处理器设计在供给超过先前期望的处理能力时更快、更有效且使用少得多的功率。
随着处理器实体设计的演进,处理信息及执行功能的新颖方式也发生改变。例如,自从1960年早期就在处理器设计中执行了指令的“管线化”。管线化的一个实例是将执行管线分解成指令以一串流形成按顺序流过的单元或级的概念。所述级经布置以使得数个级可同时处理数个指令的适合部分。管线化的一个优点是:由于并行评估若干指令,因此所述指令的执行重叠。
处理器管线由许多级组成,其中每一级执行与执行一指令相关联的功能。每一级称作管道级或管道段。所述级连接在一起形成管线。指令在管线的一端进入且在另一端退出。
处理器所执行的大多数程序均包含条件分支指令,且条件分支指令的实际分支行为直到在管线深处对所述指令进行评估时才能获知。为避免将由等待分支指令的实际评估产生的停止,现代处理器可采用某一形式的分支预测,借此在管线中较早地预测条件分支指令的分支行为。基于所预测的分支评估,处理器推测性地提取并执行来自所预测的地址的指令-所述所预测的地址是分支目标地址(如果预测采用所述分支)或者所述分支指令之后的下一顺序地址(如果预测不采用所述分支)。是否采用条件分支指令被称作确定分支的方向。可在预测时及在实际分支解算时确定分支的方向。当确定实际的分支行为时,如果错误地预测了分支,那么必须从管线中冲洗所述推测性提取的指令,并从正确的地址提取新指令。响应于错误的分支预测来推测性地提取指令可对处理器性能及功率消耗产生不利的影响。因此,改善分支预测的准确性是重要的处理器设计目的。
一种已知形成的分支预测包含将分支预测分割成两个预测符:初始分支目标地址高速缓冲存储器(BTAC)及分支历史表(BHT)。所述BTAC是用指令提取群组地址进行加索引且含有对应于所述指令提取群组地址的下一个所提取的地址,也称作分支目标。在一分支指令通过处理器管线且已采用其分支之后将条目添加到BTAC。如果BTAC变得充满,那么当添加下一条目时,使用标准高速缓冲存储器替代算法(例如循环算法或最近最少使用算法)从BTAC中移除条目。
所述BTAC可以是高度相联高速缓冲存储器设计且在指令执行管线中被较早地存取。如果提取群组地址与一BTAC条目匹配(BTAC命中),那么在下一循环中提取对应的下一提取地址或目标地址。此匹配及随后提取目标地址称作隐含采用分支预测。如果不存在匹配(BTAC未命中),那么在下一循环中提取下一个按顺序递增的地址。此无匹配情形也被称作隐含不采用预测。
可结合更准确的个别分支方向预测符(例如,分支历史表(BHT),也称作模式历史表(PHT))利用BTAC。常规的BHT可含有一组饱和预测方向计数器以针对个别分支指令产生更准确的采用/不采用决定。例如,每一饱和预测方向计数器可包括采取四种状态中的一者的2位计数器,所述四种状态的每一者被指派加权预测值,例如:
11-强预测采用
10-弱预测采用
01-弱预测不采用
00-强预测不采用
常规BHT的输出(也称作预测值)是采用或不采用的决定,其导致在下一循环中提取分支指令的目标地址或者下一顺序地址。通常在分支结果信息变为已获知时用所述分支结果信息更新所述BHT。
为增加分支预测的准确性,可实施各种其它预测技术,所述技术使用来自其它分支的最近分支历史信息作为反馈。如所属领域的技术人员了解,当前分支行为可与先前所执行的分支指令的历史相关。例如,先前所执行的分支指令的历史可影响如何预测条件分支指令。
全局历史寄存器(GHR)(在此项技术中也称作全局分支历史寄存器或全局历史移位寄存器)可用来追踪先前所执行的分支指令的过去历史。如GHR所存储,分支历史提供在通向当前所执行的分支指令的代码路径中所遇到的分支指令顺序的综览以实现改善预测结果。
在某些处理器中,分支指令及其相关联预测信息的识别可仅在指令解码级之后发生。普遍地,所述指令解码级可以是指令执行顺序中的稍后级。在解码一指令并确认其为分支指令之后,用适合的分支历史信息加载GHR。当识别所述分支历史信息时,将其移位到GHR中。GHR的输出用来识别存储在BHT中用来预测下一条件分支指令的预测值。
在使用GHR的常规处理器中,当在相对短的时间段期间并行执行多个分支指令时所述GHR可能并未反映所遇到的实际分支历史信息。在此实例中,所述GHR可没有在预测第二分支指令之前用来自第一分支指令的分支历史信息更新。因此,GHR的不准确值可用来针对第二条件分支指令识别BHT中的条目。使用不准确的值来给BHT中的条目加索引可影响分支预测的准确性。如果处理器已能够与来自第一条件分支指令的分支历史信息保持齐步,那么会将一不同值存储在GHR中,且针对第二条件分支指令识别BHT中的不同条目。
发明内容
因此,在工业中存在对具有以下处理器的需要:其可快于GHR地存储并使用分支历史信息以实现更准确的分支预测。本发明认识到此需要且揭示一种处理器,其在所述处理器的执行级中较早地识别分支指令。使用所述分支指令信息作为输入,所述处理器可操纵针对随后条件分支指令的预测值的选择。
本发明揭示一种处理分支历史信息的方法。所述方法在第一管线级期间识别分支指令且在所述第一管线级期间将分支历史信息加载到第一寄存器中。所述方法在第二管线级中确认所述分支指令并在所述第二管线级期间将所述分支历史信息加载到第二寄存器中。
本发明揭示一种管线处理器,其包括具有分支历史信息的第一寄存器及具有分支历史信息的第二寄存器。所述管线处理器具有多个管线级,其中当识别分支指令时所述第一寄存器在第一管线级中加载有所述分支历史信息,且在第二管线级期间第二寄存器加载有分支历史信息。
本发明揭示一种处理分支历史信息的方法。所述方法提取分支指令,在第一管线级期间识别所述分支指令且在所述第一管线级期间将所述分支历史信息加载在第一寄存器中。所述方法在第二管线级中确认所述分支指令且在所述第二管线级期间将所述分支历史信息加载到第二寄存器中。
根据下文详细说明及随附图式,将易知对本发明以及本发明之其它特征及优点之更彻底理解。
附图说明
图1显示使用本发明实施例的处理器的高层级逻辑硬件方框图。
图2显示图1的处理器所使用的实例性分支历史表。
图3显示采用工作全局历史寄存器的图1处理器的低层级逻辑方框图。
图4显示工作全局历史寄存器及全局历史寄存器的详细视图。
图5显示图1的处理器所执行的实例性指令群组。
图6显示图5的实例性指令群组在通过图1的处理器的各种级被执行时的时序图。
图7显示图解说明使用工作全局历史寄存器的图1处理器所执行的指令流程的流程图。
具体实施方式
以下结合附图阐述的详细说明打算作为对本发明的各种实施例的描述,而非打算仅代表其中可实践本发明的实施例。出于提供对本发明的透彻理解的目的,所述详细说明包含有若干具体细节。然而,所属领域的技术人员将易知,可不以这些具体细节来实践本发明。在某些实例中,为避免遮蔽本发明的概念,以方框图形式显示众所周知的结构及组件。缩略语及其它描述性术语的使用可能仅出于便利及清晰之意图,而并非打算限制本发明的范围。
图1显示利用如后文所述的实施例的超标量处理器100的高层级视图。处理器100具有中央处理单元(CPU)102,其经由专用高速总线104耦合到指令高速缓冲存储器106。所述指令高速缓冲存储器还经由通用总线116耦合到存储器114。
在处理器100内,指令提取单元(IFU)122控制将指令从存储器114加载到指令高速缓冲存储器106中。在指令高速缓冲存储器106加载有指令之后,CPU 102能够经由高速总线104对其进行存取。指令高速缓冲存储器106可以是如图1中所示的单独存储器结构,或可将其集成为CPU 102的内部组件。所述集成可视指令高速缓冲存储器106的大小以及CPU 102的复杂性及功率消耗而定。耦合到IFU 122的还有分支目标地址高速缓冲存储器130(BTAC)、分支历史表140(BHT)及两个下管线160及170。
可一次数个指令地从指令高速缓冲存储器106提取指令并解码。在指令高速缓冲存储器106内,将指令分组成称为高速缓冲存储器线的区段。每一高速缓冲存储器线可含有多个指令以及相关联的数据。所提取的指令的数目可相依于所需提取带宽以及每一高速缓冲存储器线中的指令数目。在IFU 122内,对所提取的指令进行操作类型及数据相关性分析。在分析所述指令之后,处理器100可将所述指令从IFU 122分布到下级功能单元或下管线160或170以进行进一步执行。
下管线160及170可含有各种执行单元(EU)118,包含算术逻辑单元、浮点单元、存储单元、加载单元等。例如,EU 118(例如算术逻辑单元)可执行广泛的算术功能,例如整数加法、减法、简单的乘法、按位逻辑运算(例如,“与”、“非”、“或”、“异或”)、位移位等。额外地,下管线160及170可具有解算级(未显示),在所述解算级期间,识别条件分支指令的实际结果。在识别分支指令的实际结果之后,处理器100可将实际结果与所预测的结果作比较且如果其不匹配,那么发生错误预测。
所属领域的技术人员了解,BTAC 130可类似于分支目标缓冲器(BTB)或分支目标指令高速缓冲存储器(BTIC)。BTB或BTIC存储分支的地址及目标分支的指令数据(或操作代码)两者。为便于图解说明,结合本发明的各种实施例使用BTAC130。或者,本发明的其它实施例可包含BTB或BTIC代替BTAC 130。
第一次执行分支指令时,在BTAC 130中不存在条目且发生BTAC未命中。在分支指令完成其执行之后,可随后更新BTAC 130以反映特定条件分支指令的目标地址以及处理器模式(例如,在高级RISC处理器架构中的Arm对Thumb操作)。在此后任何一次再提取所述分支指令时,将在下一处理器循环上提取存储在BTAC 130中的信息,即使在未完全解码所提取的分支指令的情况下。
可针对条件或者无条件分支指令发生BTAC命中(例如,当提取群组地址与BTAC 130中的一地址匹配时)。这是因为BTAC 130可存储与条件分支指令以及无条件分支指令两者相关的信息的事实。在针对无条件分支指令的BTAC命中的情况下,可存储所预测的目标地址、所预测的处理器模式以及分支指令为无条件分支指令的事实。在无条件分支指令地址存储在BTAC 130中的条目中的情形下,所述条目将指示采用的分支方向。
图2显示处理器100所使用的实例性分支历史表(BHT)140的更详细图解说明。可将BHT 140组织成2m个行202,使用具有m个地址位的地址给所述行加索引。在一个实施例中,使用9个地址位,从而导致BHT 140具有512个行。在每一个行202内,存在2n个计数器204,其中n是用来选择适合计数器的位数目。额外地,可使用3个地址位来选择计数器204,从而导致每个行202具有八个计数器204的BHT 140。在一个实例性实施例中,提取群组地址位12至4可用来选择BHT 140中的行202。提取群组地址中的位3-1可用来选择特定计数器204。
处理器100可在指令执行过程中在指令解码级之前较早地识别分支指令。当较早地识别分支指令时,也可同时识别分支历史信息(例如预测值(条件分支指令)或采用分支方向(无条件分支指令))。如将在图3的论述中所描述,处理器100可使用工作全局历史寄存器(WGHR)以在指令执行过程中较早地接收并处理分支历史信息。例如,WGHR可存储条件分支指令的预测值以及无条件分支指令的分支方向。或者,WGHR可仅存储条件分支指令的预测值。WGHR的输出可用来给BHT 140中的对应条目加索引以用于下一条件分支指令。
图3显示包含工作全局历史寄存器(WGHR)316的处理器100的低层级逻辑方框图300。在低层级方框图300中是上管道350。耦合到上管道的顶部的是提取逻辑电路302。上管道350包含四个指令执行级:指令高速缓冲存储器1级(IC1)304、指令高速缓冲存储器2级(IC2)306、指令数据调整级(IDA)308及解码级(DCD)310。应注意,可向上管道350添加或从其减去管道级,此并不限制本发明的范围。提取逻辑电路302以及上管道350、工作全局历史寄存器(WGHR)316、全局历史寄存器(GHR)314、分支校正逻辑电路(BCL)330、选择多路复用器322及地址散列逻辑电路320也可位于IFU 122内。
当处理器100开始执行指令时,提取逻辑电路302确定在IC1级304期间要提取的指令。为检索所述指令,提取逻辑电路302将提取群组地址发送到指令高速缓冲存储器106。如果在指令高速缓冲存储器106内发现提取群组地址(例如,指令高速缓冲存储器命中),那么在IC2级304期间从指令高速缓冲存储器106中的命中高速缓冲存储器线读取指令。
并行地,在IC1级304期间,处理器100将提取群组地址发送到BTAC 130。如果处理器100遇到BTAC命中,那么在IC2级306期间接收存储在BTAC中针对所述提取群组地址的信息。如先前所提及,存储在BTAC 130中的信息可包含分支信息,例如分支目标、处理器模式以及采用分支方向(在无条件分支指令的情况下)。
同样在IC1级304期间,提取逻辑将提取群组地址发送到地址散列逻辑电路320。在地址散列逻辑电路320内,用选择多路复用器322的输出对提取群组地址的位12-4进行异或操作(“异或”)。地址散列逻辑电路320的输出(例如,“异或”功能)提供到BHT 140中的地址索引。如先前所提及,提取群组地址的位3-1可提供用以选择适合计数器204的选择位。
在IC2级306期间,处理器100读取来自将指令提取群组地址发送到指令高速缓冲存储器106、BTAC 130及BHT 140的结果。在IC2级306中,处理器100确定是否已发生BTAC命中。当在IC2级306期间确认BTAC命中时,处理器100还确定所述分支是条件分支指令还是无条件分支指令。在IC2级306中,还接收并存储来自BHT 140的预测值。
由于指令高速缓冲存储器106中的每一高速缓冲存储器线可含有多个指令,因此可需要从一高速缓冲存储器线中分离个别指令。同样,数据可与所述高速缓冲存储器线中的指令连结在一起。可需要格式化并调整来自高速缓冲存储器线的信息以适当地分析并执行所述指令。在IDA级308期间发生将所述指令调整并格式化为个别可执行指令。
在IDA级308期间处理所述指令之后,其通过解码(DCD)级310。在DCD级310期间,对指令进行分析以确定指令类型及进一步处理可需要哪些额外信息或资源。相依于指令类型或当前指令加载,处理器100可将所述指令保持在DCD级310中或处理器100可将其传递到下管线160或170中的任一者以用于进一步执行。在DCD级310中,处理器100确认指令为条件分支指令且确认来自BHT 140的指令的预测值(在IC2级306期间读取)。预测值的准确性将在指令执行的稍后级期间在下管线160或170中的任一者中得到验证。在确定分支预测不正确(例如,错误预测)以前,处理器100假定所述预测值为真值且基于此预测进行提取指令。
耦合到上管道350的是工作全局历史寄存器316(WGHR)。WGHR 316允许处理器100存储并处理与在DCD级310之前识别的分支指令相关联的分支历史信息。在一个实施例中,当发生BTAC命中时,WGHR 316可加载有来自BHT 140的针对条件分支指令的预测值。如先前所述,BTAC命中表明正在提取的指令是分支指令且具有相关联的分支历史信息(例如,针对条件分支指令的预测值或针对无条件分支指令的采用方向)。基于此条件,处理器100可较早地利用分支历史信息用于随后的分支预测(即,所述分支历史信息更当前)而非等待直到在DCD级310期间确认所述分支指令。将WGHR 314的输出发送到地址散列逻辑电路320以确定BHT 140中的下一条目的地址索引。
分支历史信息何时变得可用相依于可从BHT 140中多快地检索所述分支历史信息及可多快地确认BTAC命中。在某些处理器设计中,可在IC2级306期间接收所述分支历史信息及BTAC命中。在其它处理器设计中,可在IDA级308期间接收所述分支历史信息及BTAC命中。在并入除先前所述级之外的级的又其它处理器设计中,可在解码级之前的那些级期间获得分支历史信息及BTAC命中。
在一个实施例中,在IC2级306期间将针对条件分支指令的分支历史信息移位到WGHR 316中(当发生BTAC命中时)。在又另一实施例中,将针对条件分支指令及无条件分支指令两者的分支历史信息移位到WGHR 316中。在其它实施例中,可在IDA级308期间用分支历史信息更新WGHR 316。此情形可在直到IDA级308才获得存储在BHT 140中的预测值或BTAC命中信息时发生。
选择多路复用器322经配置以接收WGHR 316的输出。在一个实施例中,WGHR316的输出是含有处理器100所处理的前九个分支指令的分支历史的九位值。将选择多路复用器322的输出用作进入地址散列逻辑电路320的输入,所述地址散列逻辑电路320加索引到BHT 140中以用于下一条件分支指令。
GHR 314与WGHR 316极类似地操作,除了在DCD级310期间可用分支历史信息加载GHR 314之外。在分支指令通过DCD级310之后,GHR 314的内容将镜像反映(mirror)WGHR 316的内容。相依于情况,GHR的输出可用来给预测值加索引。
GHR 314的输出耦合到选择多路复用器322。当发生BTAC未命中且在DCD级310期间确定指令被确认为采用分支指令时,指引选择多路复用器322选择GHR 314的输出以被地址散列逻辑电路320使用来加索引。在此实例中,因为WGHR 316尚未具有针对采用分支的分支历史信息(由于BTAC未命中),因此使用GHR 314。或者,当因为在针对当前分支指令给BHT 140加索引之前WGHR 316可能已被随后所提取的分支指令更新而发生BTAC未命中时,GHR 314的输出也可由地址散列逻辑电路320来使用。在此实例中,WGHR 314可不反映当前分支指令的适当值且如果被地址散列逻辑电路320使用,那么可给BHT 140中的不正确条目加索引。
GHR 314的输出也耦合到分支校正逻辑电路(BCL)330。假如发生错误预测,那么BCL 340使用GHR 314来提供用于恢复目的的分支历史信息的“真”副本。当发生错误预测时,BCL 340还原GHR 314及WGHR 316两者中的分支历史信息。如先前所提及,当分支指令到达解算级且实际结果与所预测结果不匹配时发生错误预测。
当发生错误预测时,BCL 340将信息发送到提取逻辑电路302,所述信息指引提取逻辑电路302冲洗基于错误预测的条件分支指令所提取的指令。为了更有效,BCL340可使GHR 314及WGHR 316还原为正确的分支历史信息,同时其向选择多路复用器322提供所述正确的分支历史信息。当发生错误预测时,处理器100可选择要被指引到地址散列逻辑电路320以供在给适合计数器204加索引中使用的BCL 340的输出(通过选择多路复用器320)。
当处理器100遇到错误预测时,BCL 340使GHR及WGHR还原为其适当值。在一个实施例中,BCL 340可在GHR 314加载有针对条件分支指令的预测值之后给GHR 314拍快照。然后,BCL 340可反转GHR 314的最近预测值(例如,MSB)。通过使和预测值相反,BCL 340准备经校正的值,所述经校正的值在发生错误预测时应该被反映在GHR 314及WGHR 316中。例如,如果在DCD级310期间识别条件分支指令及其预测值之后,用值“101011111”(MSB=>LSB)加载GHR 314及BCL340。BCL 340可倒转对应于条件分支指令的MSB并存储链接到条件分支指令的经校正的值“001011111”。因此,如果条件分支指令被错误地预测,那么准备将经校正的值发送到GHR 314、WGHR 316及选择多路复用器322。
图4显示WGHR 316、GHR 314及BCL 340的详细视图400。在详细视图400内,WGHR选择多路复用器402接收来自IC2级306、DCD级310的分支历史信息以及来自BCL 340的经校正分支历史信息。GHR选择多路复用器404接收来自DCD级310的分支历史信息及来自BCL 340的经校正分支历史信息。
WGHR选择多路复用器402选择用于用分支历史信息加载WGHR 316的输入。当发生错误预测时,来自BCL 340的输入具有高于从IC2级306或DCD级310正在发送的信息的优先级。因为跟随错误预测的随后分支历史信息可与沿不正确预测的分支路径向下提取的条件分支指令相关联,因此BCL 340具有优先级。因此,IC2级或DCD级310所传递的分支历史信息也可能是不正确的。
如果不发生错误预测,那么可根据以下从最高到最低优先级列出的实例确定WGHR选择多路复用器402的输入选择:
a)如果在IC2级306期间分支指令返回BTAC未命中但在DCD级310期间经解码之后以预测采用结束,那么将在DCD级310期间确认的分支历史值移位到WGHR 316中。在此情况下,DCD级310具有优先级,因为需要冲洗在预测采用分支指令之后所提取的指令。因此,废除在IC2级306期间针对在同一处理器循环期间可能准备写入WGHR 316中的随后分支指令所识别的任何分支历史信息。
b)如果DCD级310不执行与BTAC未命中相关联的分支指令,那么IC2级306将具有下一最高优先级。只要针对所述分支指令发生BTAC命中,便将在IC2级306期间所识别的分支历史信息移位到WGHR 316中。
c)如果先前已将分支指令识别为BTAC命中且根据先前所述的实例(b)加载相关联的分支历史信息,那么从DCD级310再次重写WGHR 316。同样,如果条件分支指令为BTAC未命中且预测不采用所述分支指令,那么用此分支历史信息写入WGHR 316。对WGHR 316进行写入确保在指令通过解码级310之后,将使GHR 314与WGHR 316同步化。
GHR选择多路复用器404选择用来更新GHR 314的适合输入。类似于WGHR选择逻辑402,GHR选择多路复用器404出于与上文所解释的相同原因给予来自BCL340的输入最高优先级。因此,如果不发生错误预测,那么用在DCD级310期间针对特定分支指令所识别的分支历史信息更新GHR 314。
图6显示实例性指令群组500在其移动通过上管道350时的时序图600。在实例性指令群组500内是多个分支指令。图6的X-轴602描绘处理器循环且Y-轴604图解说明指令通过的上管道350内的执行级以及GHR 314及WGHR 316的内容。在一个处理器循环期间对GHR 314及WGHR 316的内容进行写入且在下一处理器循环的开始时进行锁存。如在时序图600中所反映,其显示所锁存的GHR 314及WGHR 316的内容。为便于图解说明,仅显示GHR 314及WGHR 316的三个最高有效位。随着指令的执行,指令沿Y-轴604向下移动。
在处理器循环1中,提取逻辑电路302针对指令A将提取群组地址发送到指令高速缓冲存储器106、BTAC 130及地址散列逻辑电路320。此在时序图600中显示为指令A进入IC1级304。同样在处理器循环1中,GHR 314及WGHR 316的三个最高有效位全部为零,其指示所执行的前三个分支指令全部未被采用。
在处理器循环2中,接收发送所述提取群组地址到指令高速缓冲存储器106、BTAC 130及BHT 140的结果。此在时序图中显示为指令A进入IC2级306。由于指令高速缓冲存储器106存储多个指令,因此在IC2级306中也显示连同指令A一起检索的指令A+4。IC2级306内的逻辑电路分析从BTAC 130及BHT 140接收的信息。在IC2级306期间,处理器100确定指令A为条件分支指令(基于来自BTAC命中的信息)以及从BHT 140返回的预测值。在此实例中,预测采用指令A。BHT 140中针对指令A的实际条目可以是强采用(11)或弱采用(10)。在处理器循环2的结束处,处理器100以“1”加载在WGHR 316的MSB中以反映与条件分支指令A相关联的预测值。由于预测采用指令A,因此在指令A通过IC2级306之后冲洗下一顺序指令(A+4),这是因为指令A+4不会是下一将要执行的指令。如在时序图600中所示,在处理器循环3的开始时将值“100”锁存在WGHR 316中。
在处理器循环3期间,指令A进入IDA级308。当在IDA级308中时,格式化并调整指令A,由此准备进入DCD级310的指令。当指令A移动通过IDA级308时,在IC1级304期间将针对指令B的提取群组地址发送到指令高速缓冲存储器106、BTAC 130及BHT 140。
在处理器循环4中,指令A进入DCD级310、接收来自针对对指令B及B+4的提取请求的结果(IC2级306)及将针对指令B+8的提取群组地址发送到指令高速缓冲存储器106、BTAC 130及BHT 140(IC1级304)。选择多路复用器322选择WGHR 316的内容(“100”)且地址散列逻辑电路320使用所述内容来针对指令B+8将条目加索引到BHT 140中。当指令A在DCD级310中时,处理器100确认指令A为条件分支指令且因此将预测值(“1”)移位到GHR 314中。直到处理器循环5开始当处理器100锁存GHR 314时处理器100才会看到根据指令A的GHR 314的更新值。在处理器循环4的结束处,指令A离开上管道350且被指引到下管线160或170以用于进一步执行。
在不利用WGHR 316而仅采用GHR来存储分支历史信息及所执行的实例性指令群组500的常规处理器中,从BHT返回的针对指令B+8的所预测值可能不准确。这是因为地址散列逻辑电路将使用在处理器循环4中的GHR的值来确定BHT中针对指令B+8的条目(例如,将使用值“000”)。GHR的此值并未准确地反映处理器所遇到的实际分支历史,这是因为未准确地反映指令A的分支历史信息。如果随后执行相同指令顺序,但这次处理器在提取指令B+8时经历了一延迟,(即当地址散列逻辑电路使用GHR的值来存取BHT条目时更新了GHR的内容),那么可将不同条目存取到BHT中。在此情况中,仅使用GHR来存储分支历史信息的处理器可针对具有相同指令执行顺序的相同条件分支指令存取两个不同的BHT条目。
在一个实施例中,当指令A在DCD级310中时,在加载GHR 314的同时用预测值重写WGHR 316。通过同时用同一预测值写入两个寄存器,所述两个寄存器针对指令A同步化。由于两个条件分支指令紧随彼此被预测为采用不常见,因此几乎不存在同步化两个寄存器将丢失任何分支历史信息的机会。
在处理器循环5中,指令B及B+4进入IDA级308而指令B+8及B+12进入IC2级306。同样在处理器循环5中,将针对指令B+16及B+20的提取群组地址发送到指令高速缓冲存储器106、BTAC 130及BHT 140。在IC2级306中,指令B+8返回BTAC命中。由于指令B+8为BTAC命中,因此处理器100还确定指令B+8为条件分支指令且将在IC2级306期间从BHT 140返回的其预测值移位到WGHR 316中。在此实例中,指令B+8也预测为采用。BHT 140中的实际条目可以是强采用(11)或者弱采用(10)。由于指令B+8为预测采用分支指令,所以在指令B+8离开IC2级306之后指令B+12、B+16及B+20将由提取逻辑电路302冲洗且目标地址反映指令C(从BTAC命中接收的)被指引到提取逻辑电路302。用采用的预测值(“1”)更新WGHR316的内容并在处理器循环6的开始时锁存所述值,如时序图600中所反映。
在处理器循环6中,指令B及B+4进入DCD级310同时指令B+8进入IDA级308。同样在处理器循环6期间,将针对指令C的提取群组地址发送到指令高速缓冲存储器106、BTAC 130及BHT 140(IC1级304)。在处理器循环6的结束处,指令B及B+4离开上管道350且被指引到下管线160或170以用于进一步执行。
在处理器循环7中,在DCD级310期间处理指令B+8。在DCD级310期间,确认指令B+8为条件分支指令且还确认其预测值。在处理器循环7期间,将针对指令B+8识别的预测值移位到GHR 314中并重加载到WGHR 316中。在IC2级306期间从指令高速缓冲存储器106返回指令C及C+4。在处理器循环7的结束处,指令B+8离开上管道350且被指引到下管线160或170以用于进一步执行。
在可极接近彼此地(基于管线的深度)执行分支指令的代码段中,使用最新分文历史信息来处理分支预测。
在处理器循环8期间,锁存GHR 314的值连同WGHR 316。在IDA级310期间处理指令C及C+4且可提取并执行跟随指令C及C+4的任何顺序指令。
图7是显示使用工作全局历史寄存器(WGHR)316执行指令的处理器100所采用的指令流程700的流程图。指令流程700开始于方框702。所述指令流程继续进行到方框704,其中提取逻辑电路302将提取群组地址发送到BTAC 130及地址散列逻辑电路320(以加索引到BHT 140中)。如先前所提及,可在处理器100中在IC1级304期间发生提取群组地址的发送。在方框704处,返回搜索BTAC 130(以确定正在提取的指令是否为分支指令)的结果。在IC2级306期间返回结果。从方框704,指令流程700继续进行到决定方框706。在决定方框706处,处理器100确定是否发生了BTAC命中。此确定也可发生在IC2级306期间。如先前所解释,针对条件分支指令或采用无条件分支指令可发生BTAC命中。如果不存在BTAC命中(例如,BTAC未命中),那么指令流程700直接继续进行到方框712。
如果存在BTAC命中,那么指令流程700继续进行到方框710。在方框710处,通过将自BHT 140检索的预测值移位到WGHR 316中来更新WGHR 316。例如,如果预测分支指令为采用,那么将“1”移位到WGHR 316中,或如果预测为不采用,那么将“0”移位到WGHR 316中。相依于实施方案,可在解码级之前的任一处理器执行级期间返回预测值。在如先前所述的实施例中,在IC2级306期间更新WGHR316。
指令流程700继续进行到方框712,其中所述指令通过解码级(例如,DCD级310)。在解码级期间,在方框712处,可将所述指令确认为分支指令。在解码级中执行所述指令之后,指令流程700继续进行到决定方框714。如果在决定方框714处,所述指令不是分支指令,那么指令流程700在方框720处结束。
如果在方框714处,处理器100确认所述指令是分支指令,那么指令流程700继续进行到方框716。在方框716处,用适合分支历史信息更新WGHR 316及GHR 314且指令流程在方框720处结束。
结合本文中所揭示的实施例所述的各种说明性逻辑块、模块、电路、元件及/或组件皆可用一通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件、或其经设计用于执行本文中所述功能的任一组合来实施或执行。通用处理器可以是微处理器,但或者,所述处理器也可以是任一常规处理器、控制器、微控制器或状态机。处理器也可以实施为计算组件的组合,例如DSP与微处理器的组合、多个微处理器、一个或一个以上微处理器结合DSP核芯、或任何其它此类配置。
虽然本文中已图解说明并描述了具体实施例,但所属领域的技术人员将了解,可使用任何经计算以实现相同目的的布置来替代所示的具体实施例且本发明在其他环境中具有其他应用。此应用打算涵盖本发明的任何修改或变化。下文权利要求书绝非打算将本发明的范围限定于本文中所述的具体实施例。

Claims (22)

1.一种处理分支历史信息的方法,其包括:
在第一管线级中识别分支指令;
在所述第一管线级期间将所述分支历史信息加载到第一寄存器中;
在第二管线级中确认所述分支指令,其中在所述第二管线级期间将所述分支历史信息加载到第二寄存器中。
2.如权利要求1所述的方法,其中当接收到分支目标地址高速缓冲存储器(BTAC)命中时发生所述识别所述分支指令的步骤。
3.如权利要求1所述的方法,其中当接收到分支目标指令高速缓冲存储器(BTIC)命中时发生所述识别所述分支指令的步骤。
4.如权利要求1所述的方法,其中所述第一管线级为指令高速缓冲存储器级。
5.如权利要求1所述的方法,其中所述第一寄存器及所述第二寄存器为移位寄存器。
6.如权利要求5所述的方法,其中所述第一寄存器及所述第二寄存器为9-位移位寄存器。
7.如权利要求1所述的方法,其中所述第一寄存器及第二寄存器存储用于条件分支指令的分支历史信息。
8.如权利要求1所述的方法,其中所述第一寄存器及第二寄存器存储用于条件分支指令及无条件分支指令的分支历史信息。
9.如权利要求1所述的方法,其中所述第二管线级为解码级。
10.一种管线处理器,其包括:
第一寄存器,其具有分支历史信息,
第二寄存器,其具有分支历史信息,
多个管线级,其中当识别分支指令时所述第一寄存器在第一管线级期间加载有所述分支历史信息,其中第二寄存器在第二管线级期间加载有所述分支历史信息。
11.如权利要求10所述的管线处理器,其中当发生分支目标地址高速缓冲存储器(BTAC)命中时识别所述分支指令。
12.如权利要求10所述的管线处理器,其中当发生分支目标指令高速缓冲存储器(BTIC)命中时识别所述分支指令。
13.如权利要求10所述的管线处理器,其中所述第一管线级为指令高速缓冲存储器级。
14.如权利要求10所述的管线处理器,其中所述第二管线级为指令解码级。
15.如权利要求10所述的管线处理器,其中所述分支历史信息进一步包括用于条件分支指令的分支历史信息。
16.如权利要求10所述的管线处理器,其中所述分支历史信息进一步包括用于条件分支指令及无条件分支指令的分支历史信息。
17.如权利要求10所述的管线处理器,其中所述第一寄存器及所述第二寄存器为移位寄存器。
18.如权利要求10所述的管线处理器,其中所述第二寄存器用于将输入提供到分支校正逻辑电路中。
19.一种处理分支历史信息的方法,其包括:
提取分支指令;
在第一管线级中识别所述分支指令;
在所述第一管线级期间将所述分支历史信息加载到第一寄存器中;及
在第二管线级中确认所述分支指令,其中在所述第二管线级期间将所述分支历史信息加载到第二寄存器中。
20.如权利要求19所述的方法,其中当接收到分支目标地址高速缓冲存储器(BTAC)命中时发生所述识别所述分支指令的步骤。
21.如权利要求19所述的方法,其中所述第一管线级为指令高速缓冲存储器级。
22.如权利要求19所述的方法,其中所述第二管线级为解码级。
CN2007800398002A 2006-11-03 2007-10-25 用于处理分支历史信息的方法及管线处理器 Expired - Fee Related CN101529378B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/556,244 2006-11-03
US11/556,244 US7984279B2 (en) 2006-11-03 2006-11-03 System and method for using a working global history register
PCT/US2007/082538 WO2008055045A1 (en) 2006-11-03 2007-10-25 A system and method for using a working global history register

Publications (2)

Publication Number Publication Date
CN101529378A CN101529378A (zh) 2009-09-09
CN101529378B true CN101529378B (zh) 2013-04-03

Family

ID=38926137

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800398002A Expired - Fee Related CN101529378B (zh) 2006-11-03 2007-10-25 用于处理分支历史信息的方法及管线处理器

Country Status (8)

Country Link
US (1) US7984279B2 (zh)
EP (1) EP2084602B1 (zh)
JP (1) JP5209633B2 (zh)
KR (1) KR101081674B1 (zh)
CN (1) CN101529378B (zh)
AT (1) ATE496329T1 (zh)
DE (1) DE602007012131D1 (zh)
WO (1) WO2008055045A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5145809B2 (ja) * 2007-07-31 2013-02-20 日本電気株式会社 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
US20100031011A1 (en) * 2008-08-04 2010-02-04 International Business Machines Corporation Method and apparatus for optimized method of bht banking and multiple updates
US8078851B2 (en) * 2008-12-18 2011-12-13 Faraday Technology Corp. Processor and method for recovering global history shift register and return address stack thereof by determining a removal range of a branch recovery table
JP5367416B2 (ja) * 2009-03-04 2013-12-11 光洋サーモシステム株式会社 搬送ロボット装置
WO2013100998A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Processor with second jump execution unit for branch misprediction
US9229723B2 (en) 2012-06-11 2016-01-05 International Business Machines Corporation Global weak pattern history table filtering
US9858081B2 (en) * 2013-08-12 2018-01-02 International Business Machines Corporation Global branch prediction using branch and fetch group history
US10372590B2 (en) 2013-11-22 2019-08-06 International Business Corporation Determining instruction execution history in a debugger
JP5863855B2 (ja) 2014-02-26 2016-02-17 ファナック株式会社 分岐命令を高速に処理するためのインストラクションキャッシュを有するプログラマブルコントローラ
CN113721985B (zh) * 2021-11-02 2022-02-08 超验信息科技(长沙)有限公司 Risc-v向量寄存器分组设置方法、装置及电子设备
US20230315468A1 (en) * 2022-03-30 2023-10-05 Advanced Micro Devices, Inc. Enforcing consistency across redundant tagged geometric (tage) branch histories

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6647467B1 (en) * 1997-08-01 2003-11-11 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155818A (en) * 1988-09-28 1992-10-13 Data General Corporation Unconditional wide branch instruction acceleration
US5604877A (en) * 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for resolving return from subroutine instructions in a computer processor
JPH08106387A (ja) 1994-10-06 1996-04-23 Oki Electric Ind Co Ltd 命令プリフェッチ回路及びキャッシュ装置
US5918245A (en) * 1996-03-13 1999-06-29 Sun Microsystems, Inc. Microprocessor having a cache memory system using multi-level cache set prediction
US5860017A (en) * 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US5838962A (en) * 1997-04-09 1998-11-17 Hewlett-Packard Company Interrupt driven dynamic adjustment of branch predictions
US6418530B2 (en) 1999-02-18 2002-07-09 Hewlett-Packard Company Hardware/software system for instruction profiling and trace selection using branch history information for branch predictions
US6622240B1 (en) * 1999-06-18 2003-09-16 Intrinsity, Inc. Method and apparatus for pre-branch instruction
SE0003446L (sv) * 2000-09-27 2002-03-28 Ericsson Telefon Ab L M En pipelinemikroprocessor och ett förfarnade relaterande därtill
US6886093B2 (en) 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7107438B2 (en) * 2003-02-04 2006-09-12 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
US20040225866A1 (en) * 2003-05-06 2004-11-11 Williamson David James Branch prediction in a data processing system
US20050228977A1 (en) * 2004-04-09 2005-10-13 Sun Microsystems,Inc. Branch prediction mechanism using multiple hash functions
US7181190B2 (en) 2004-04-30 2007-02-20 Microsoft Corporation Method for maintaining wireless network response time while saving wireless adapter power
CN1961285B (zh) * 2004-06-02 2011-05-25 英特尔公司 Tlb相关分支预测器及其使用方法
US7752426B2 (en) * 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US7278012B2 (en) * 2005-06-02 2007-10-02 Qualcomm Incorporated Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
TW200739419A (en) * 2006-04-07 2007-10-16 Univ Feng Chia Prediction mechanism of a program backward jump instruction

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6647467B1 (en) * 1997-08-01 2003-11-11 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems

Also Published As

Publication number Publication date
JP5209633B2 (ja) 2013-06-12
WO2008055045A1 (en) 2008-05-08
CN101529378A (zh) 2009-09-09
KR20090089358A (ko) 2009-08-21
US20080109644A1 (en) 2008-05-08
EP2084602A1 (en) 2009-08-05
EP2084602B1 (en) 2011-01-19
DE602007012131D1 (de) 2011-03-03
US7984279B2 (en) 2011-07-19
KR101081674B1 (ko) 2011-11-09
JP2010509680A (ja) 2010-03-25
ATE496329T1 (de) 2011-02-15

Similar Documents

Publication Publication Date Title
CN101529378B (zh) 用于处理分支历史信息的方法及管线处理器
EP1513062B1 (en) Apparatus, method and computer data signal for selectively overriding return stack prediction in response to detection of non-standard return sequence
KR100270003B1 (ko) 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법
US6185676B1 (en) Method and apparatus for performing early branch prediction in a microprocessor
EP1889152B1 (en) A method and apparatus for predicting branch instructions
JP5255367B2 (ja) 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法
CN106997286B (zh) 用于循环分支的分支历史寄存器
US8082428B2 (en) Methods and system for resolving simultaneous predicted branch instructions
US6550004B1 (en) Hybrid branch predictor with improved selector table update mechanism
US7877586B2 (en) Branch target address cache selectively applying a delayed hit
CN101460922B (zh) 滑动窗口、基于区块的分支目标地址高速缓冲存储器
US7844807B2 (en) Branch target address cache storing direct predictions
US8473727B2 (en) History based pipelined branch prediction
US7069426B1 (en) Branch predictor with saturating counter and local branch history table with algorithm for updating replacement and history fields of matching table entries
US6918033B1 (en) Multi-level pattern history branch predictor using branch prediction accuracy history to mediate the predicted outcome
US7865705B2 (en) Branch target address cache including address type tag bit
US7962722B2 (en) Branch target address cache with hashed indices
US6421774B1 (en) Static branch predictor using opcode of instruction preceding conditional branch
CN101833437B (zh) 适用于微处理器的装置及方法
US6578134B1 (en) Multi-branch resolution
CN101887358B (zh) 适用于微处理器的装置及方法
CN101853151B (zh) 适用于微处理器的装置及方法

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: 20130403

Termination date: 20211025

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