CN111459549B - 具有高度领先分支预测器的微处理器 - Google Patents
具有高度领先分支预测器的微处理器 Download PDFInfo
- Publication number
- CN111459549B CN111459549B CN202010263835.1A CN202010263835A CN111459549B CN 111459549 B CN111459549 B CN 111459549B CN 202010263835 A CN202010263835 A CN 202010263835A CN 111459549 B CN111459549 B CN 111459549B
- Authority
- CN
- China
- Prior art keywords
- branch
- instruction address
- address unit
- instruction
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 claims abstract description 54
- 230000001360 synchronised effect Effects 0.000 claims description 7
- 238000000034 method Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
具有高度领先分支预测器的微处理器。所采用的分支预测器耦接一指令高速缓存,为N级流水线架构,建构来进行分支预测,以控制该指令高速缓存的取指。该分支预测器为一指令地址单位、以及接续该指令地址单位的(N‑2)个接续指令地址单位,并行地进行(N‑1)笔分支预测,以领先该指令地址单位的分支预测。该分支预测器将预测用的参考信息储存在至少一存储器,且并行查找所述存储器,实现所述(N‑1)笔分支预测。
Description
技术领域
本案关于微处理器的分支预测器。
背景技术
流水线架构的微处理器(pipelined microprocessor)中,一般会以数字电路实现分支预测器(branch predictor),预测分支指令(例如,’if-then-else’条件分支指令、’call’呼叫指令、’return’返还指令、以及’jump’无条件分支指令)的跳转。分支预测器有效加速指令提取,显著影响微处理器的效能。
然而,流水线架构下,分支预测器需要耗费一定的时钟周期才能得到分支预测结果,即是否跳转(taken or not-taken)及跳转地址,然而在得到该分支预测结果之前,接续的指令地址已经陆续进入分支预测器的流水线架构运作,可能无意义地为不会执行到的指令地址运作,产生延宕。
发明内容
本案提出一种高度领先的分支预测技术,并行为一指令地址单位、以及其接续指令地址单位进行分支预测。通过超前进行分支预测,无意义的分支预测被有效排除,延宕问题得以解决。
根据本案一种实施方式实现的一微处理器包括一指令高速缓存以及一分支预测器。该分支预测器耦接该指令高速缓存,为N级流水线架构,建构来进行分支预测,以控制该指令高速缓存的取指,N为自然数。该分支预测器为一指令地址单位、以及接续该指令地址单位的(N-2)个接续指令地址单位,并行地进行(N-1)笔分支预测,以领先该指令地址单位的分支预测。该分支预测器将预测用的参考信息储存在至少一存储器,且并行查找所述存储器,实现所述(N-1)笔分支预测。
一种实施方式中,该分支预测器包括一第一存储器、(N-1)套分支逻辑电路、以及一第一多路复用器。该第一存储器作为分支目标地址高速缓存,为该指令地址单位、以及所述(N-2)个接续指令地址单位,并行地提供(N-1)笔目标地址信息。所述(N-1)笔目标地址信息经所述(N-1)套分支逻辑电路处理后,预测出的跳转地址单位由该第一多路复用器输出。
一种实施方式中,该第一存储器包括至少(N-1)个存储体,每个存储体所对应的指令地址单位的低比特数值与其它存储体不同。所述(N-1)笔目标地址信息分别储存在所述存储体中,供并行查找。
一种实施方式中,该第一存储器具有(N-1)个输入端口,可并行地接收该指令地址单位以及所述(N-2)个接续指令地址单位,以对应进行并行查找。
一种实施方式中,该分支预测器包括一第二存储器,储存一分支历史表格,其由该指令地址单位、以及所述(N-2)个接续指令地址单位,与各自相应的历史记录进行一运算后的运算结果来索引,提供预测分支方向,以控制所述(N-1)套分支逻辑电路。
一种实施方式中,该指令地址单位、以及所述(N-2)个接续指令地址单位与前一回合分支预测的(N-1)个指令地址单位部分重复,则其中重复者,略去再次由该分支预测器处理,其中不重复者,由该分支预测器基于多个历史记录假设,并行进行多个分支预测。待历史记录补足,再选出符合历史记录的分支预测。所述历史记录假设可包括前方指令地址单元无分支、以及不取跳转的状况。
该分支预测器所接收的该指令地址单位不限定捆绑该指令高速缓存的一取指地址单位。一种实施方式中,该指令地址单位同步于该指令高速缓存的一取指地址单位。另一种实施方式中,该指令地址单位领先该指令高速缓存的一取指地址单位。
附图说明
下文特举实施例,并配合所附图示,详细说明本发明内容。
图1根据本案一种实施方式图解一微处理器100;
图2为传统分支预测器的流水线状况;
图3为进行高度领先预测的分支预测器110的流水线状况;
图4为进行高度领先预测的分支预测器110的另一种流水线状况;
图5根据本案一种实施方式为该分支预测器110图解详细硬件;以及
图6特别为图3的例子作进一步批注。
具体实施方式
以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本发明内容。实际发明范围应依照权利要求界定之。
图1根据本案一种实施方式图解一微处理器100。
根据取指(address-fetching)地址PC(program counter),指令102自指令高速缓存(L1i)104取出,由解码器106解码,最终由执行单元108执行。另一路,取指地址PC也耦接至该分支预测器110,作为一指令地址IA输入,提供分支预测结果112作为接续的取指地址PC。解码器106或是执行单元108若发现预测错误,会以正确取指地址114、116刷新(flush)取指地址PC。另外,指令高速缓存104可能寻无指令(cache miss)。相应的,指令高速缓存104会先完成指令加载,再以备份的取指地址118设定取指地址PC,再次进行取指。本案特别是令分支预测器110进行高度领先的分支预测。
图1以取指地址PC作为分支预测器110输入的架构为例说明,即在图1的实施例中,分支预测器110的指令地址IA同步于该指令高速缓存104的取指地址PC。需要说明的是,本实施例的分支预测器110的分支预测和指令高速缓存104的取指举例而言均是以16字节(byte)为单位进行:分支预测器110的一个指令地址单位包含16个指令地址IA,每个指令地址IA对应1字节(byte)指令的分支预测;指令高速缓存104的一个取指地址单位包含16个取指地址PC,每个取指地址PC对应1字节(byte)指令的取指,但本发明并不局限于此。除了对取指地址PC开头的16个连续地址组成的“指令地址单位”作分支预测,分支预测器110还估算出接续该“指令地址单位”的至少一接续指令地址单位(如,分别以PC+16、PC+32开头的2个“指令地址单位”,本发明后续实施例均以每个“指令地址单位”及“取指地址单位”分别包含16个连续地址来说明,即,均以16bytes的指令为单位进行分支预测及取指,但本发明并不局限于此,后续为了说明简便,以“指令地址单位PC”代表“以地址PC开头的16个连续地址组成的指令地址单位”“,接续指令地址单位PC+16”代表“以地址PC+16开头的16个连续地址组成的指令地址单位”……依次类推),并对接续指令地址单位PC+16、PC+32进行分支预测。如此一来,在依照取指地址单位PC对指令高速缓存104取指的当下,分支预测器110不只对取指地址单位PC进行分支预测,还超前对接续指令地址单位PC+16、PC+32进行分支预测。接续指令地址单位PC+16、PC+32的分支跳转可被及早发现、并应对。
在本实施例中,分支预测器110的指令地址单位PC同步于指令高速缓存104的取指地址单位PC,在其他实施方式中,分支预测器可更大幅度超越指令高速缓存104。如此实施方式中,分支预测器所处理的指令地址单位以及其接续指令地址单位,可全数超越指令高速缓存104的取指地址PC。
简明起见,以下讨论是令分支预测器绑定指令高速缓存的取指地址单位PC操作,但并不意图限定之。有能力对一指令地址单位(不论是否同步于取指地址单位PC)、以及其接续指令地址单位并行进行分支预测者,都属于本案欲保护范围。
图2为传统分支预测器的流水线状况。分支预测器为四级流水线架构,包括’C’、’I’、’B’以及’U’级流水线。时间T5,分支预测器在’U’级(U-stage)预测出指令地址单位C发生跳转,指令地址单位U为目标地址。预测出的指令地址单位U不只用来控制指令高速缓存104的取指(例如,实时、或稍后更新PC),更进一步输入分支预测器的’C’级流水线,实现跳转后的分支预测。然而,在流水线作业的架构下,在时间T5之前,应该跳过的指令地址单位D、E却早在时间T3、T4进入分支预测器的’C’级流水线。顺着流水线架构,时间T6以及T7,分支预测器的’U’级流水线为指令地址单位D以及E做出无意义的预分支测。这两个无效预测结果所占据的时间T6以及T7称为气泡(bubbles)。分支预测效果不佳。
图3为进行高度领先预测的分支预测器110的流水线状况。分支预测器110同样为四级流水线架构,包括’C’、’I’、’B’以及’U’级流水线。并行输入分支预测器110的’C’级流水线的指令地址单位不为单一个。图例是一次预测三条指令地址单位。时间T0,分支预测器所处理的指令地址单位以及其接续指令地址单位包括:指令地址单位A、指令地址单位B、以及指令地址单位C。时间T3,此三笔指令地址单位A、B以及C的分支预测进行到’U’级流水线(即同时得到三笔指令地址单位的分支预测的结果),且其中指令地址单位C被预测出跳转到指令地址单位U。预测出的指令地址单位U在时间T3就可以被输入至分支预测器110的’C’级流水线,进行跳转后的分支预测。相较于图2在时间T5才预测出指令地址C跳转到指令地址U,图3在时间T3就更新分支预测的处理。每一时间都有获得有效分支预测。图2所示的延宕(两个气泡)有效消除。
图4为进行高度领先预测的分支预测器110的另一种流水线状况。不同于图3是在时间T3预测出其中指令地址单位C跳转到指令地址单位U,图4是在时间T3预测出其中指令地址单位B跳转到指令地址单位U。此状况下,应该跳开的指令地址单位C、D、E早在时间T2输入分支预测器110的’C’级流水线。顺着流水线架构而下。时间T5,分支预测器110的’U’级流水线得到指令地址单位C、D、E的分支预测结果,皆为无效,产生一个时钟周期的延宕(一个气泡)。不过,虽然仍有一个时钟周期的延宕(一个气泡),但较图2的延宕(两个气泡)状况,仍是有相当进步。
图5根据本案一种实施方式为该分支预测器110图解详细硬件。
分支预测器110包括两个存储器,可以静态随机存取存储器(SRAM)实现。一个用作分支目标地址高速缓存(Branch Target Address Cache,简称BTAC),称之为分支目标地址高速缓存BTAC。另一个储存分支历史表格(Branch History Table,简称BHT),称之为分支历史表格存储器BHT。
分支目标地址高速缓存BTAC储存各指令地址单位的目标地址信息,包括但不限于:各指令地址单位所含的分支指令的分支类型(branch type)、分支目标地址(targetaddress)、分支指令在一个取指单位(16B)中的位移量…等信息。
分支指令有多种类型,包括:’if-then-else’条件分支指令、’call’呼叫指令、’return’返还指令、以及’jump’无条件分支指令…等。特别是,条件分支指令的目标地址有多种选择,还需要预测分支方向(取跳转taken、或不取跳转not taken)。分支历史表格存储器BHT即用于预测分支方向(prediction of branch direction)的查找,判断取跳转taken、或不取跳转not taken。
以4级流水线架构为例,相应一指令地址单位IA,分支预测器110可并行作该指令地址单位IA以及其接续指令地址单位IA+16以及IA+32的分支预测(共三笔,不同于传统技术只做单一笔分支预测)。相应的三笔目标地址信息502、504、506自该分支目标地址高速缓存BTAC并行取出,交由标号508的三组分支逻辑电路处理。分支历史表格存储器BHT经并行查找后,提供预测分支方向512、514、516、518,控制标号508的三组分支逻辑电路。逻辑电路508预测出的跳转地址单位由该多路复用器Mux1输出,作为分支预测结果510(若为taken,则为跳转地址单位;若为not-taken,则为接续下一指令地址单位),可作为下一轮分支预测的输入,亦可作为取指操作的输入,具体而言:在分支预测器110的输入(指令地址单位IA)同步于指令高速缓存104的输入(取指地址单位PC)的实施方式中,分支预测结果510将用于调整取指地址单位PC,而将PC作为下一轮分支预测的输入IA(如前图3及图4的实施例,由于分支预测器110的地址要同步于指令高速缓存104,而指令高速缓存104每一T只能对1个取指地址单位进行取指,因此每一T进入分支预测器110的3个指令地址单位中有2个与前一T是重叠的,例如于T0,指令地址单位ABC进入分支预测器110;于T1,指令地址单位BCD进入分支预测器110…依次类推)。而在分支预测的地址可领先于取指操作的地址的实施方式中,分支预测结果510将直接作为下一轮分支预测的输入IA,每一T进入分支预测器110的指令地址单位与前一T可不重叠,以进一步加速分支预测执行。
通过分支目标地址高速缓存BTAC的并行查找、以及分支历史表格存储器BHT的并行查找,高度领先的分支预测器110得以实现。
在本实施例中,指令地址单位IA、以及其接续指令地址单位IA+16以及IA+32中的每一者均包括16个指令地址,每一指令地址对应1字节的指令,即每个指令地址单位对应16字节的指令。图标分支目标地址高速缓存BTAC具有四个存储体Bank0、Bank1、Bank2以及Bank3,每个存储体所对应的指令地址单位的低比特(例如指令地址IA的位[5:4])与其它存储体不同,例如分别为二进制的00,01,10及11。对应指令地址单位IA、以及其接续指令地址单位IA+16以及IA+32的三笔目标地址信息分别储存在其中的三个存储体。因此,分支目标地址高速缓存BTAC可通过指令地址单位的低比特(例如指令地址IA的位[5:4])索引而并行供应此三笔目标地址信息。图标分支目标地址高速缓存BTAC包括两个多路复用器Mux2以及Mux3,根据指令地址IA的位5以及位4(IA[5:4])动作,以正确自四个存储体Bank0、Bank1、Bank2以及Bank3选择出正确对应IA、IA+16以及IA+32的三个存储体,达成并行查找。如此一来,分支目标地址高速缓存BTAC的并行查找可以单一输入端口达成。
或者,分支目标地址高速缓存BTAC也可能不依赖存储体技术,而是开至少三个输入端口,以达成并行查找。
在一实施例中,分支目标地址高速缓存BTAC的每一存储体或每一输入端口可对每个指令地址单位对应的16Byte指令中最多两条分支指令(但不限定之)进行预测。若第一分支指令确实跳转(taken),第二分支指令将被略过;仅第一分支指令的分支预测有意义。第一分支指令不取跳转(not taken)时,第二分支指令才需要考虑是否跳转;第二分支指令的分支预测有意义。自存储体提取出的各笔目标地址信息对应每16Byte指令中的第一分支指令、以及第二分支指令。目标地址信息502对应指令地址单位IA的16Byte指令。目标地址信息504对应接续指令地址单位IA+16的16Byte指令。目标地址信息506对应接续指令地址单位IA+32的16Byte指令。如此三对分支预测(对应6条分支指令)究竟如何选定作为分支预测结果510,则还要参考该分支历史表格存储器BHT提供的预测分支方向512、514、516、518。特别是,多路复用器Mux1是输出最靠近指令地址单位IA的(即最靠前的)分支指令所做出来的预测为该分支预测结果510。当然本发明并不局限于此,为了适应每个指令地址单位对应的16Byte指令中分支指令的条数普遍多于2条的情形,也可将分支目标地址高速缓存BTAC设计为可对每个指令地址单位对应的16Byte指令中的3条或更多条分支指令进行预测。
分支历史表格存储器BHT的查取说明如下。
移位寄存器520随着微处理器100运行,为条件分支指令记载一历史记录(historypattern),在其它实施例中也可以其它存储器存储该历史记录。若有跳转发生(taken),’1’加载该历史记录。若不取跳转(not taken),’0’加载该历史记录。指令地址单位IA、以及其接续指令地址单位IA+16、IA+32与该历史记录中相应内容进行一运算后的运算结果来索引分支历史表格存储器BHT,据以提取该分支历史表格存储器BHT,获得个预测分支方向512、514、516、518。一种实施方式中,该运算为一哈希运算或一按位异或运算。一种实施方式中,预测分支方向512~518各自可还经两位饱和计数器处理:一位为方向,一位为强度,如此两位饱和计数器有四种状态:强跳转、弱跳转、弱不跳转及强不跳转,饱和计数器会根据预测结果更新,并在这四个状态间切换,例如当处在强状态时,需要连续的两次预测错误,才会改变输出的预测分支方向。
相较于以顺序索引(IA、IA+16、IA+32)查取的分支目标地址高速缓存BTAC,分支历史表格存储器BHT的查取索引没有顺序(被按位异或打散)。一种实施方式中,分支历史表格存储器BHT要开四个索引输入端口(编号0~3);不若以多个存储体Bank0~Bank3实现的分支目标地址高速缓存BTAC只需要一个输入端口即可。
然而,高度领先预测的分支预测器110可能会来不及更新移位寄存器520中的历史记录(history pattern)。图6特别为图3的例子作进一步批注。
此例中,时间T3,假设指令地址单位C预测跳转到指令地址单位U。指令地址单位U后面接续指令地址单位V、W及X。后续不再有跳转发生。指令地址单位IA在时间T0~T8分别为A、B、C、U、V、W、X、Y、Z。
由于分支预测器110采4级流水线架构,指令地址单位进入第一级(’C’级)流水线开始分支预测时,所能参考到的最新历史资料乃已经达到第四级(‘U’级)流水线的指令单位更新后供应。也就是说,每个指令地址单位所能使用的历史记录比其自身要旧三个时钟周期。
参阅时间T3,指令地址单位U做分支方向预测依据的历史记录(history pattern)需考虑有指令地址单位A(为领先指令地址单位U三个时钟周期的指令地址单位),指令地址单位V做分支方向预测依据的历史记录需考虑有指令地址单位B(为领先指令地址单位V三个时钟周期的指令地址单位),指令地址单位W做分支方向预测依据的历史记录需考虑有指令地址单位C(为领先指令地址单位W三个时钟周期的指令地址单位)。图标时间T3,指令地址A、B、C的分支预测确实已在’U’级流水线,其跳转状况已考虑在移位寄存器520所载的历史记录中。
参阅时间T4,指令地址单位X还送入’C’级流水线超前做分支预测,其分支方向预测依据的历史记录需考虑有指令地址单位U(为领先指令地址单位X三个时钟周期的指令地址单位)。然而,如图所示,时间T4时,指令地址单位U的分支预测还没有到达’U’级流水线,其分支状况尚未考虑在历史记录中。
参阅时间T5,指令地址单位Y还送入’C’级流水线超前做分支预测,其分支方向预测依据的历史记录需考虑有指令地址单位V(为领先指令地址单位Y三个时钟周期的指令地址单位)。然而,如图所示,时间T5时,指令地址单位V的分支预测还没有到达’U’级流水线,其分支状况尚未考虑在历史记录中。
以下说明如何应付时间T4以及T5历史记录不足的状况。
表格1用来解决时间T4历史记录不足的问题。
表格1
时间T4,指令地址单位IA为V,指令地址单位V/W的分支方向预测依据的历史记录分别考虑到指令地址单位B/C,但均未考虑指令地址单位U。分支历史表格存储器BHT的端口0以及端口1可以正确接收索引(对应IA以及IA+16),但指令地址单位X的分支方向预测所需依据的历史记录尚不完整(因为指令地址单位U的分支预测尚未得到结果),就需要进行所有可能方向的模拟,如下详述之。分支历史表格存储器BHT的端口2以及端口3即是规划来应付这个状况。尚未完成分支预测的指令地址单位U,其「无分支(no branch instruction)」以及「不取跳转(branch not taken)」状况都须被考虑在历史记录中,组成“历史记录假设”,端口2及端口3并行提供2个预测分支方向,待指令地址单位U完成分支预测以将签署历史记录补足后,再选出符合补足后的历史记录的预测分支方向。至于「跳转(branchtaken)」状况则无须考虑。因为,指令地址单位U若发生跳转,则指令地址单位X的分支预测无意义。至于指令地址单位X错误的分支预测,则可在时间T6,指令地址单位U的分支预测进入’U’级流水线、产生预测结果后,更正之。
另一种实施方式中,因为指令地址单位V、W在前一轮的分支方向预测已经出现过,其分支方向预测可在本轮略去。因此,时间T4可专门用于指令地址单位X的各种可能预测,如表格2所示。
端口 | 预测对象 | 历史记录需涵盖到 |
0 | X(IA+32) | U(无分支) |
1 | X(IA+32) | U(不取跳转) |
表格2
分支历史表格存储器BHT的端口0~端口1应付指令地址X的所有可能跳转。即是说,如果指令地址单位以及2个接续指令地址单位与前一回合分支预测的3个指令地址单位部分重复,则其中重复者,略去再次由分支预测器110处理,其中不重复者,由分支预测器110基于对应所需的多个历史记录假设,并行进行多个分支预测。
表格3显示时间T5时,历史记录应涵盖的内容。
预测对象 | 历史记录需涵盖到 |
W(IA) | C |
X(IA+16) | U(无分支) |
X(IA+16) | U(不取跳转) |
Y(IA+32) | U无分支;V无分支 |
Y(IA+32) | U无分支;V不取跳转 |
Y(IA+32) | U不取跳转;V无分支 |
Y(IA+32) | U不取跳转;V不取跳转 |
表格3
时间T5,指令地址单位IA为W,历史记录考虑到指令地址单位C,且此时指令地址单位C的分支预测已完成;但此时指令地址单位U、V的分支预测未完成。指令地址单位X以及指令地址单位Y的分支方向预测需要对指令地址单位U和V进行所有可能方向的模拟。预测对象高达7笔。所幸,指令地址单位W以及X涉及的三笔在前一轮分支预测出现过(如表格1)。因此,时间T5可专门用于指令地址单位Y的各种可能预测。表格4用来解决时间T5历史记录不足的问题。
端口 | 预测对象 | 历史记录需涵盖到 |
0 | Y(IA+32) | U无分支;V无分支 |
1 | Y(IA+32) | U无分支;V不取跳转 |
2 | Y(IA+32) | U不取跳转;V无分支 |
3 | Y(IA+32) | U不取跳转;V不取跳转 |
表格4
分支历史表格存储器BHT的端口0~端口3应付指令地址单位Y的所有可能的分支方向预测。输入该端口0的索引所考虑的历史记录假定指令地址单位U以及V都无分支。输入该端口1的索引所考虑的历史记录假定指令地址U单位无分支、且指令地址V单位不取跳转。输入该端口2的索引所考虑的历史记录假定指令地址单位U不取跳转、且指令地址单位V无分支。输入该端口3的索引所考虑的历史记录假定指令地址单位U以及V都不取跳转。待指令地址单位U的分支预测于时间T6、且指令地址单位V的分支预测于时间T7进入’U’级流水线使得指令地址单位U、V的历史记录得以补足后,再为指令地址单位Y选出符合补足后的历史记录的预测分支方向,错误的方向可被更正。
在前述表格2和表格4的实施方式中,由于与前一回合(前一时钟周期T)分支预测的3个指令地址单位中重复的2个指令地址单位的分支预测可以略去,分支历史表格存储器BHT的输入端口数量无需过多,通常而言可设置2的(N-2)次方个输入端口,以并行接收2的(N-2)次方个指令地址单位即可。如前述表格2和表格4的实施方式中可采2的2次方个输入端口(4个)。N为流水线架构的级数。
前述实施例都是采4级流水线架构实现分支预测器110,但并不限定之。
本案分支预测器可以是N级流水线架构,N为自然数。分支预测器除了可对一指令地址单位进行分支预测,也并行对接续该指令地址单位的(N-2)个接续指令地址单位进行分支预测。本案分支预测器是并行进行(N-1)笔分支预测,以领先该指令地址单位的分支预测。特别是,分支预测器是将预测用的参考信息储存在至少一存储器(如BTAC以及BHT),且并行查找所述存储器,实现所述(N-1)笔分支预测。
分支目标地址高速缓存BTAC可包括至少(N-1)个存储体。分支历史表格存储器BHT的输入端口数量可以为2的(N-2)次方个。
在一实施方式中,分支预测器110的指令地址IA同步于该指令高速缓存104的取指地址PC,每一回合进行分支预测的指令地址单位与前一回合的指令地址单位部分重叠。在另一种实施方式中,分支预测器110所做的分支预测对应的指令地址单位可更大幅度领先指令高速缓存104的取指地址,如此一来,分支预测器110于第一时间并行做的分支预测,可以不重复第二时间所并行做的分支预测。以一连串地址连续的指令地址单位A、B、C、D、E、F为例,假设其中都没有分支发生,指令地址单位A、B、C的分支预测安排在第一时间,而第二时间可以不重复地、为指令地址单位D、E、F做分支预测。于指令高速缓存104,第一时间是以指令地址单位A为取指地址单位,第二时间是以指令地址单位B为取指地址单位。分支预测器110大幅领先指令高速缓存104,可以更早发现跳转状况。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何熟悉此项技艺者,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视后附的权利要求所界定者为准。
【符号说明】
100~微处理器;
102~指令;
104~指令高速缓存;
106~解码器;
108~执行单元;
110~分支预测器(高度领先预测);
112~分支预测结果;
502…506~目标地址信息;
508~三组分支逻辑电路;
510~分支预测结果;
512…518~预测分支方向;
520~移位寄存器;
A…E、U…Z~指令地址单位;
Bank0…Bank3~存储体;
BHT~分支历史表格存储器;
BTAC~分支目标地址高速缓存BTAC;
Mux1…Mux3~多路复用器;
IA~指令地址;
PC~取指地址;
T0…T10~时间。
Claims (20)
1.一种微处理器,包括:
一指令高速缓存;以及
一分支预测器,耦接该指令高速缓存,为N级流水线架构,建构来进行分支预测,以控制该指令高速缓存的取指,N为自然数且(N-1)大于1,
其中:
该分支预测器为一指令地址单位、以及接续该指令地址单位的(N-2)个接续指令地址单位,并行地进行(N-1)笔分支预测以在每一级同时处理多个指令地址单位,以领先该指令地址单位的分支预测;且
该分支预测器将预测用的参考信息储存在至少一存储器,且查找所述存储器来并行获得参考信息,实现所述(N-1)笔分支预测。
2.如权利要求1所述的微处理器,其中该分支预测器包括:
一第一存储器,作为分支目标地址高速缓存,为该指令地址单位、以及所述(N-2)个接续指令地址单位,并行地提供(N-1)笔目标地址信息;以及
(N-1)套分支逻辑电路、以及一第一多路复用器,
其中,所述(N-1)笔目标地址信息经所述(N-1)套分支逻辑电路处理后,预测出的跳转地址单位由该第一多路复用器输出。
3.如权利要求2所述的微处理器,其中:
该第一存储器包括至少(N-1)个存储体,每个存储体所对应的指令地址单位的低比特数值与其它存储体不同;且
所述(N-1)笔目标地址信息分别储存在所述存储体中,供并行查找。
4.如权利要求2所述的微处理器,其中:
该第一存储器具有(N-1)个输入端口,可并行地接收该指令地址单位以及所述(N-2)个接续指令地址单位,以对应进行并行查找。
5.如权利要求2所述的微处理器,其中该分支预测器包括:
一第二存储器,储存一分支历史表格,其由该指令地址单位、以及所述(N-2)个接续指令地址单位,与各自相应的历史记录进行一运算后的运算结果来索引,提供预测分支方向,以控制所述(N-1)套分支逻辑电路。
6.如权利要求5所述的微处理器,其中该分支预测器还包括:
一移位寄存器,供应所述历史记录,其中该运算为一哈希运算或一按位异或运算。
7.如权利要求5所述的微处理器,其中:
该指令地址单位、以及所述(N-2)个接续指令地址单位中,其各自相应的所述历史记录若不完整,由该分支预测器基于多个历史记录假设,并行提供多个预测分支方向,待所述历史记录补足后,再选出符合补足后的所述历史记录的预测分支方向。
8.如权利要求7所述的微处理器,其中:
所述历史记录假设包括前方分支预测未完成的指令地址单位的分支预测结果为无分支、以及不取跳转的状况。
9.如权利要求7所述的微处理器,其中:
如果该指令地址单位、以及所述(N-2)个接续指令地址单位与前一回合分支预测的(N-1)个指令地址单位部分重复,则其中重复者,略去再次由该分支预测器处理,其中不重复者,由该分支预测器基于多个历史记录假设,并行进行多个分支预测。
10.如权利要求9所述的微处理器,其中:
该第二存储器具有2的(N-2)次方个输入端口,以并行接收2的(N-2)次方个指令地址单位。
11.如权利要求1所述的微处理器,其中:
N为4;且
该分支预测器包括一第一级流水线、一第二级流水线、一第三级流水线、以及一第四级流水线。
12.如权利要求11所述的微处理器,其中:
该分支预测器预测跳转到一第一指令地址单位,其中该第一指令地址单位后依次接续一第二指令地址单位、一第三指令地址单位、以及一第四指令地址单位;
该第一指令地址单位、该第二指令地址单位、以及该第三指令地址单位,在一第一时间进入该分支预测器的该第一级流水线,在一第二时间进入该分支预测器的该第二级流水线,在一第三时间进入该分支预测器的该第三级流水线,且在一第四时间进入该分支预测器的该第四级流水线;
该第四指令地址单位在该第二时间进入该分支预测器的该第一级流水线,期间该第一指令地址单位尚未进入该第四级流水线;
一第一历史记录假设对应该第四指令地址单位于该第二时间供应,其包括该第一指令地址单位的分支预测结果为无分支的状况;且
一第二历史记录假设对应该第四指令地址单位于该第二时间供应,其包括该第一指令地址单位的分支预测结果为不取跳转的状况。
13.如权利要求12所述的微处理器,其中:
该分支预测器于该第四时间得到该第一指令地址单位的分支预测结果;且
该第四时间之后的一第五时间,该分支预测器分别对应该第一历史记录假设、以及该第二历史记录假设得到该第四指令地址单位的一第一分支预测候选、以及一第二分支预测候选,且根据该第一指令地址单位的分支预测结果择一,作为该第四指令地址单位的分支预测结果。
14.如权利要求13所述的微处理器,其中:
一第五指令地址单位接续该第四指令地址单位;
该第五指令地址单位在该第三时间进入该分支预测器的该第一级流水线,期间该第一指令地址单位以及该第二指令地址单位尚未进入该第四级流水线;
一第三历史记录假设对应该第五指令地址单位于该第三时间供应,其包括该第一指令地址单位的分支预测结果以及该第二指令地址单位的分支预测结果都为无分支的状况;
一第四历史记录假设对应该第五指令地址单位于该第三时间供应,其包括该第一指令地址单位的分支预测结果为无分支、且该第二指令地址单位的分支预测结果为不取跳转的状况;
一第五历史记录假设对应该第五指令地址单位于该第三时间供应,其包括该第一指令地址单位的分支预测结果为不取跳转、且该第二指令地址单位的分支预测结果为无分支的状况;且
一第六历史记录假设对应该第五指令地址单位于该第三时间供应,其包括该第一指令地址单位的分支预测结果以及该第二指令地址单位的分支预测结果都为不取跳转的状况。
15.如权利要求14所述的微处理器,其中:
该分支预测器于该第四时间还得到该第二指令地址单位的分支预测结果;且
该第五时间之后的一第六时间,该分支预测器分别对应该第三历史记录假设、该第四历史记录假设、该第五历史记录假设、以及该第六历史记录假设得到该第五指令地址单位的一第一分支预测候选、一第二分支预测候选、一第三分支预测候选、以及一第四分支预测候选,且根据该第一指令地址单位以及该第二指令地址单位的分支预测结果择一,作为该第五指令地址单位的分支预测结果。
16.如权利要求11所述的微处理器,其中该分支预测器包括:
一第一存储器,作为分支目标地址高速缓存,其中该第一存储器包括4个存储体;且
该指令地址单位、以及其两个接续指令地址单位所对应的目标地址信息,分别储存于所述4个存储体中的三个存储体,由该第一存储器并行提供。
17.如权利要求16所述的微处理器,其中:
所述三个指令地址单位的每一者对应16字节的指令,且所述3个指令地址单位的每一者包括16个指令地址,其中每个指令地址对应1字节所述指令。
18.如权利要求17所述的微处理器,其中该第一存储器还包括:
一第二多路复用器,根据所述指令地址的位[5:4],读取所述三个存储体;以及
一第三多路复用器,根据所述指令地址的位[5:4],将所述三个存储体提供的所述目标地址信息传递给3套分支逻辑电路。
19.如权利要求1所述的微处理器,其中:
该指令地址单位同步于该指令高速缓存的一取指地址单位。
20.如权利要求1所述的微处理器,其中:
该指令地址单位领先该指令高速缓存的一取指地址单位。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010263835.1A CN111459549B (zh) | 2020-04-07 | 2020-04-07 | 具有高度领先分支预测器的微处理器 |
US17/083,652 US11379243B2 (en) | 2020-04-07 | 2020-10-29 | Microprocessor with multistep-ahead branch predictor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010263835.1A CN111459549B (zh) | 2020-04-07 | 2020-04-07 | 具有高度领先分支预测器的微处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459549A CN111459549A (zh) | 2020-07-28 |
CN111459549B true CN111459549B (zh) | 2022-11-01 |
Family
ID=71683639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010263835.1A Active CN111459549B (zh) | 2020-04-07 | 2020-04-07 | 具有高度领先分支预测器的微处理器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11379243B2 (zh) |
CN (1) | CN111459549B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI768547B (zh) * | 2020-11-18 | 2022-06-21 | 瑞昱半導體股份有限公司 | 管線式電腦系統與指令處理方法 |
CN113553104A (zh) * | 2021-07-22 | 2021-10-26 | 江南大学 | 一种提升分支方向预测器预测准确度的方法 |
US11928474B2 (en) | 2022-06-03 | 2024-03-12 | Microsoft Technology Licensing, Llc | Selectively updating branch predictors for loops executed from loop buffers in a processor |
CN114816536B (zh) * | 2022-06-30 | 2022-09-20 | 飞腾信息技术有限公司 | 一种分支预测处理方法、装置、设备及存储介质 |
US11915005B1 (en) * | 2022-10-05 | 2024-02-27 | Arm Limited | Branch predictor triggering |
CN117008977B (zh) * | 2023-08-08 | 2024-03-19 | 上海合芯数字科技有限公司 | 一种可变执行周期的指令执行方法、系统和计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0651321A1 (en) * | 1993-10-29 | 1995-05-03 | Advanced Micro Devices, Inc. | Superscalar microprocessors |
CN101021779A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 一种针对流处理器的指令控制方法 |
CN101535947A (zh) * | 2006-09-29 | 2009-09-16 | Mips技术公司 | 两次发布的条件移动指令及其应用 |
CN103593166A (zh) * | 2012-08-17 | 2014-02-19 | 刘书 | 一种同时线程处理器的分支预测器设计 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5434985A (en) * | 1992-08-11 | 1995-07-18 | International Business Machines Corporation | Simultaneous prediction of multiple branches for superscalar processing |
US7523298B2 (en) | 2006-05-04 | 2009-04-21 | International Business Machines Corporation | Polymorphic branch predictor and method with selectable mode of prediction |
US9146745B2 (en) * | 2006-06-29 | 2015-09-29 | Intel Corporation | Method and apparatus for partitioned pipelined execution of multiple execution threads |
US7617387B2 (en) * | 2006-09-27 | 2009-11-10 | Qualcomm Incorporated | Methods and system for resolving simultaneous predicted branch instructions |
US7779241B1 (en) * | 2007-04-10 | 2010-08-17 | Dunn David A | History based pipelined branch prediction |
CN102053818B (zh) * | 2009-11-05 | 2014-07-02 | 无锡江南计算技术研究所 | 分支预测方法及装置 |
CN102306092B (zh) * | 2011-07-29 | 2014-04-09 | 北京北大众志微系统科技有限责任公司 | 超标量处理器实现指令缓存路选择的方法及装置 |
EP2972797B1 (en) * | 2014-01-27 | 2018-04-04 | VIA Alliance Semiconductor Co., Ltd. | Fractional use of prediction history storage for operating system routines |
CN106406823B (zh) | 2016-10-10 | 2019-07-05 | 上海兆芯集成电路有限公司 | 分支预测器和用于操作分支预测器的方法 |
CN109308191B (zh) * | 2017-07-28 | 2021-09-14 | 华为技术有限公司 | 分支预测方法及装置 |
US11029959B2 (en) * | 2018-09-04 | 2021-06-08 | Arm Limited | Branch target look up suppression |
-
2020
- 2020-04-07 CN CN202010263835.1A patent/CN111459549B/zh active Active
- 2020-10-29 US US17/083,652 patent/US11379243B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0651321A1 (en) * | 1993-10-29 | 1995-05-03 | Advanced Micro Devices, Inc. | Superscalar microprocessors |
CN101535947A (zh) * | 2006-09-29 | 2009-09-16 | Mips技术公司 | 两次发布的条件移动指令及其应用 |
CN101021779A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 一种针对流处理器的指令控制方法 |
CN103593166A (zh) * | 2012-08-17 | 2014-02-19 | 刘书 | 一种同时线程处理器的分支预测器设计 |
Non-Patent Citations (1)
Title |
---|
一种改进型TAGE分支预测器的实现;李正平等;《辽宁工业大学学报(自然科学版)》;20191230(第01期);1-4 * |
Also Published As
Publication number | Publication date |
---|---|
CN111459549A (zh) | 2020-07-28 |
US11379243B2 (en) | 2022-07-05 |
US20210311744A1 (en) | 2021-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459549B (zh) | 具有高度领先分支预测器的微处理器 | |
US6553488B2 (en) | Method and apparatus for branch prediction using first and second level branch prediction tables | |
US20010020267A1 (en) | Pipeline processing apparatus with improved efficiency of branch prediction, and method therefor | |
JP5209633B2 (ja) | ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 | |
US6550004B1 (en) | Hybrid branch predictor with improved selector table update mechanism | |
US9201654B2 (en) | Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions | |
US8572358B2 (en) | Meta predictor restoration upon detecting misprediction | |
US5517439A (en) | Arithmetic unit for executing division | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
JPH0628184A (ja) | ブランチ予測方法及びブランチプロセッサ | |
US20050066154A1 (en) | Branch prediction apparatus and method for low power consumption | |
US5822561A (en) | Pipeline data processing apparatus and method for executing a plurality of data processes having a data-dependent relationship | |
JPH09153822A (ja) | データ処理システムにおける加算比較選択バタフライ演算およびその命令を実行する方法 | |
US20050283593A1 (en) | Loop end prediction | |
US20200379764A1 (en) | Processing device with a micro-branch target buffer for branch prediction | |
US20070061554A1 (en) | Branch predictor for a processor and method of predicting a conditional branch | |
US7234046B2 (en) | Branch prediction using precedent instruction address of relative offset determined based on branch type and enabling skipping | |
KR100273038B1 (ko) | 브랜치 히스토리 테이블 | |
KR100980076B1 (ko) | 저전력 분기 예측 시스템 및 분기 예측 방법 | |
JP3802038B2 (ja) | 情報処理装置 | |
JP3532835B2 (ja) | データ処理装置およびプログラム変換装置 | |
US7849299B2 (en) | Microprocessor system for simultaneously accessing multiple branch history table entries using a single port | |
JP3708022B2 (ja) | プロセッサ | |
JP2006053830A (ja) | 分岐予測装置および分岐予測方法 | |
WO2002039272A9 (en) | Method and apparatus for reducing branch latency |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: 201210 Room 301, No. 2537, Jinke Road, Zhangjiang High Tech Park, Shanghai Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |