CN103238134A - 编码于分支指令中的双模态分支预测器 - Google Patents

编码于分支指令中的双模态分支预测器 Download PDF

Info

Publication number
CN103238134A
CN103238134A CN2011800578444A CN201180057844A CN103238134A CN 103238134 A CN103238134 A CN 103238134A CN 2011800578444 A CN2011800578444 A CN 2011800578444A CN 201180057844 A CN201180057844 A CN 201180057844A CN 103238134 A CN103238134 A CN 103238134A
Authority
CN
China
Prior art keywords
branch
instruction
bimodal
prediction
address
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.)
Granted
Application number
CN2011800578444A
Other languages
English (en)
Other versions
CN103238134B (zh
Inventor
苏雷什·K·文库马汉提
卢奇安·科德雷斯库
史蒂芬·R·香农
王林
菲利普·M·琼斯
黛西·T·帕拉尔
屠嘉晋
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 CN103238134A publication Critical patent/CN103238134A/zh
Application granted granted Critical
Publication of CN103238134B publication Critical patent/CN103238134B/zh
Active 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

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)

Abstract

具有分支预测支持的每一分支指令在所述分支指令中的架构指定的位位置中具有分支预测位。指令高速缓冲存储器支持使用在所述分支指令执行时动态地确定的经更新的分支预测位来修改所述分支指令。

Description

编码于分支指令中的双模态分支预测器
技术领域
本发明大体上涉及减少电力和实施复杂性且改进支持分支预测的处理系统的性能的技术,且更具体来说,涉及用于在存储于多级存储器分层结构中的分支指令中动态地编码分支预测信息的有利技术。
背景技术
例如手机、膝上型计算机、个人数字助理(PDA)等许多便携式产品并入有执行支持通信和多媒体应用的程序的一个或一个以上处理器。用于这些产品的处理器常规上具有分层式存储器配置,所述分层式存储器配置具有包括指令高速缓冲存储器、数据高速缓冲存储器和系统存储器的多级高速缓冲存储器。处理器还需要以高性能和效率来操作以支持这些产品的多个计算密集型功能。处理器通常为管线式的且支持条件分支指令的执行。
在管线式处理器上条件分支指令的执行可在条件的确定以前使管线中止。为了避免使处理器中止,通常在管线中提早使用某种形式的分支预测,从而允许处理器基于预测的分支行为推测地获取和执行指令。如果误预测条件分支,则从管线冲洗相关联的推测地获取的指令且从确定的分支地址获取新的指令。此误预测降低了处理器性能且增加电力使用。
分支预测的常规方法归因于分支预测电路的实施成本和复杂性而受到限制,所有所述分支预测电路均消耗电力。
发明内容
在本发明的若干方面中,本发明辨识对具有低实施成本且减少电力使用的改进的分支预测能力的需要。为了实现这些目的,本发明的一实施例应用一种将双模态分支预测器位存储于指令高速缓冲存储器中的一分支指令中的方法。基于存储于从指令高速缓冲存储器获取的分支指令中的双模态分支预测器位预测分支目标地址。基于响应于所述分支指令的执行的对分支预测准确性的评估而确定是否改变所述双模态分支预测器位。已从所述所获取的分支指令中的所述双模态分支预测器位改变的双模态分支预测器位存储于所述指令高速缓冲存储器中。
本发明的另一实施例处理一种分支预测设备。指令高速缓冲存储器经配置以用于在指令获取地址处存储和提供分支指令,所述分支指令具有双模态分支预测器位。管线存储器经配置以用于存储所述分支指令的所述指令获取地址。预测电路经配置以用于基于对与所述所提供的分支指令相关联的条件的评估而确定是否改变双模态分支预测位。写入控制逻辑电路经配置以用于在所述指令高速缓冲存储器中在所述经存储的指令获取地址处的所述分支指令中存储已从所述所提供的分支指令中的所述双模态分支预测位改变的所述双模态分支预测位。
本发明的另一实施例处理一种用于双模态分支预测的方法。在执行期间动态地产生与条件分支指令相关联的分支预测位。所述动态地产生的分支预测位存储于指令高速缓冲存储器中的所述条件分支指令中。
根据以下具体实施方式和附图,可更全面理解本发明且本发明的其它特征和优势将显而易见。
附图说明
图1为可有利地使用本发明的实施例的示范性无线通信系统的方框图;
图2为根据本发明的用于存储编码于存储于存储器分层结构中的分支指令中的双模态分支预测器的处理复合体的功能性方框图;
图3说明根据本发明的支持双模态分支预测器位的动态编码的示范性32位和16位条件分支指令格式;
图4说明根据本发明的耦合到处理器管线的多个级的示范性1级指令高速缓冲存储器子系统;以及
图5说明根据本发明的用于在Icache中的分支指令中读取和写入双模态分支预测位的过程。
具体实施方式
现将参看展示本发明的若干实施例的附图更完全地描述本发明。然而,本发明可以各种形式体现且不应解释为限于本文中所陈述的实施例。而是,提供这些实施例以使得本发明将为全面且完整的,且将向所属领域的技术人员完全地传达本发明的范围。
最初可以例如C、C++、
Figure BDA00003279163800021
Smalltalk、
Figure BDA00003279163800022
TSQL、Perl等高级编程语言或以各种其它编程语言来编写在根据本发明的教示的操作时所操作的或用于执行根据本发明的教示的操作的计算机程序代码或“程序代码”。通过将高级程序代码转换成本机汇编器程序而将以这些语言中的一者编写的程序编译到目标处理器架构。用于目标处理器架构的程序还可直接以本机汇编器语言来编写。本机汇编器程序使用机器层级二进制指令的指令助记表示法。如本文中所使用的程序代码或计算机可读媒体指代例如对象代码等机器语言代码,其格式可被处理器理解。
图1说明可有利地使用本发明的实施例的示范性无线通信系统100。为了说明的目的,图1展示三个远程单元120、130和150和两个基站140。应认识到,常见的无线通信系统可具有多得多的远程单元和基站。如下文进一步论述,分别包括如由组件125A、125C、125B和125D表示的硬件组件、软件组件或两者的远程单元120、130、150和基站140已适于体现本发明。图1展示从基站140到远程单元120、130和150的前向链路信号180以及从远程单元120、130和150到基站140的反向链路信号190。
在图1中,远程单元120经展示为移动电话,远程单元130经展示为便携式计算机,且远程单元150经展示为无线本地环路系统中的固定位置远程单元。举例来说,远程单元可替代地为手机、寻呼机、对讲机、手持型个人通信系统(PCS)单元、例如个人数字助理的便携式数据单元,或例如仪表读取设备的固定位置数据单元。尽管图1说明根据本发明的教示的远程单元,但本发明不限于这些示范性所说明的单元。本发明的实施例可适合地用于支持分支预测并支持具有高速缓冲存储器的存储器分层结构的任何处理器系统中。
分支预测技术可包括静态预测和动态预测的技术。一些分支指令的可能的行为可由编程者和/或编译者静态地预测。举例来说,可基于执行运行时属性(例如,循环退出评估,其为到循环的开始处的前一地址的分支)静态地预测分支指令。这些“后向”分支常常被预测为被采用以留在循环中。当退出循环且由于落空到分支之后的下一指令而不采用所述分支时,“后向”分支将被误预测,进而退出循环。还可针对特定程序确定“前向”分支极少被采用。因此,“后向”分支可被静态地预测为“采用”,且“前向”分支可被静态地预测为“不采用”。
动态预测一般是基于对存储于特殊分支历史存储器电路中的特定分支的行为的历史的评估。对程序的分析一般指示新近过去的分支评估模式可为未来分支指令的行为的良好指示符。作为简单分支历史分支预测器的一个实例,可维持多个一位旗标,其中每一一位旗标与条件分支指令的地址相关联。在相关联的条件分支评估为“采用”时设定每一旗标,且在所述条件分支评估为“不采用”时重设每一旗标。对所述条件分支的下一次出现的预测接着可简单地为相关联的旗标的值。对于一些分支指令,此预测器可产生准确的预测。
与最大化分支预测准确性紧密相关的设计目标是最小化错误分支预测的不利影响。考虑上文所描述的“后向”分支条件且使用一位旗标作为动态分支预测器。在处理器在循环中时,采用分支,且相关联的旗标在通过循环的每一周期中保持“一”,且针对“后向”分支指令的未来执行而预测“采用”。在将退出循环时,“后向”分支被误预测为“采用”且错误指令被预取到管线中。处理器根据已知的分支误预测恢复方法从错误分支预测恢复,同时导致性能的损失且浪费电力。归因于此事件,重设相关联的一位旗标以反映“不采用”分支历史。然而,“后向”分支指令的下一次执行将很可能在循环的第一周期中,且基于“不采用”旗标的预测将不正确。在此情形中,单一位分支评估历史导致针对每一循环退出分支评估的两个误预测—一个在循环退出结束处且另一个在循环的第一周期中“后向”分支指令的下一后续执行处。
一种用于最小化误预测的分支评估的影响的技术为通过置信因子对分支预测进行加权以指示强或弱预测。举例来说,可通过基于由二位饱和计数器的状态表示的分支历史的双模态分支预测器产生置信因子。对于使用此技术预测的每一分支,需要单独计数器或单独2位历史存储装置。每一计数器采取四个状态中的一者,每一状态表示经加权预测值,例如:
11-强预测采用
10-弱预测采用
01-弱预测不采用
00-强预测不采用
举例来说,计数器每当对应条件分支指令评估为“采用”时递增且每当指令评估为“不采用”时递减。递增为在两个状态之间在朝向“强预测采用”状态的方向上的前向转变且递减为在两个状态之间在朝向“强预测不采用”状态的方向上的反向转变。举例来说,从“01”弱预测不采用状态的递增为到“10”弱预测采用状态的前向转变。此递增/递减在递增停止于0b11处和递减停止于0b00处时“饱和”。因此,分支预测不仅包括如可通过检验2位饱和计数器输出的最高有效位(MSB)而确定的采用或不采用预测,还包括利用计数器值的两个位指示预测的强度或置信度的加权因子。
用于实施双模态分支预测器的替代技术是基于有限状态机。单独有限状态机预测器用于被预测的每一分支。有限状态机预测器具有四个状态,每一状态表示经加权预测值,例如:
11-强预测采用
10-弱预测采用
00-弱预测不采用
01-强预测不采用
取决于当前状态和相关联的条件分支指令是否评估为“采用”,有限状态机预测器在经加权预测值的两个状态之间进行前向转变“01”→“00”→“10”→“11”,在“11”处饱和。取决于当前状态和相关联的条件分支指令是否评估为“不采用”,有限状态机预测器在经加权预测值的两个状态之间进行反向转变“11”→“10”→“00”→“01”,在“00”处饱和。通过有限状态机预测器,经加权预测值的最高有效位被标记为P位,且经加权预测值的最低有效位被标记为Q位且表示预测的强度。
例如上文所考虑的“后向”分支指令等分支指令通过双模态分支预测器将仅误预测一次,而非如通过单一位旗标预测器的两次。在循环退出处的分支预测将使预测器从“强采用”移动到“弱采用”。实际预测为双模态,且由可实施为相关联的2位计数器或上文所描述的有限状态机预测器的双模态预测器电路的MSB表示。因此,“后向”分支指令的下一次出现将被预测为“采用”,其可能为正确的,且预测器将移动回到“强采用”状态。经加权预测值的二进制值确定分支预测置信度的强度,其中在范围的任一端处置信度较高,且朝向范围的中间置信度较低。
实施此双模态预测系统的成本为昂贵的,需要分支历史表等和用以将分支计数器或有限状态机预测器与分支指令的地址相关联的装置。为了支持其中每五到七个指令可遇到分支指令一次的大程序,分支历史表可非常大。
图2为根据本发明的用于存储在存储于存储器分层结构202中的分支指令中编码的双模态分支预测器的处理复合体200的功能性方框图。处理器复合体200包括存储器分层结构202以及具有处理器管线206、控制电路208和寄存器堆(RF)210的处理器204。存储器分层结构202包括1级指令高速缓冲存储器(L1Icache)230、1级数据高速缓冲存储器(L1Dcache)232以及存储器系统234。控制电路208包括程序计数器(PC)209。为了论述的清楚起见,未展示可连接到处理器复合体的外围装置。处理器复合体200可适合地用于图1的硬件组件125A到125D中以用于执行存储于L1Icache230中的程序代码,从而利用存储于L1Dcache232中且与可包括较高级的高速缓冲存储器和主存储器的存储器系统234相关联的数据。处理器204可为通用处理器、多线程处理器、数字信号处理器(DSP)、专用处理器(ASP)等。处理复合体200的各种组件可使用专用集成电路(ASIC)技术、现场可编程门阵列(FPGA)技术或其它可编程逻辑、离散门或晶体管逻辑或适合于既定的应用的任何其它可用技术来实施。
处理器管线206包括(例如)六个主要级:指令获取级214、具有预测逻辑电路217和双模态预测器电路218的解码和预测级216、分派级219、读取寄存器级220、执行级222和回写级224。虽然展示单一处理器管线206,但使用本发明的存储器分层结构202以及解码和预测级216来处理指令可适用于超标量设计和实施并行管线的其它架构。举例来说,针对高时钟速率而设计的超标量处理器可具有支持多个线程的两个或两个以上并行管线且每一管线可将指令获取级214、解码级216、分派级219、读取寄存器级220、执行级222和回写级224划分成两个或两个以上管线化级,从而增加总的处理器管线深度以便支持高时钟速率。而且,出于设计、实施或其它原因,预测逻辑电路217和双模态预测器电路218可位于处理器204中的其它地方,例如在(例如)控制电路208中。
从处理器管线206的第一级开始,与程序计数器(PC)209相关联的指令获取级214从L1Icache230获取指令以用于由后面的级进行处理。如果指令获取在L1Icache230中未命中,意味待获取的指令不在L1Icache230中,则从可包括多级高速缓冲存储器(例如,2级(L2)高速缓冲存储器)和主存储器的存储器系统234获取指令。指令可从其它源(例如,启动只读存储器(ROM)、硬盘驱动器、光盘)或从外部接口(例如,网络)加载到存储器系统234。接着在解码级216中解码所获取的指令。
分派级219取得一个或一个以上经解码的指令且将其分派到一个或一个以上指令管线。读取寄存器级220从RF210获取数据操作数。执行级222执行经分派的指令且回写级224将结果写入到RF210。来自执行级222的结果操作数可花费多个执行周期以确定条件分支指令所使用的条件。在这些周期期间,处理器管线206必须一直等到结果操作数可用为止。因为与程序次序相比可无次序地在回写级224中接收结果,所以回写级224使用处理器设施在将结果写入到RF210时保留程序次序。
处理器复合体200可经配置以在存储于计算机可读存储媒体上的程序的控制下执行指令。举例来说,计算机可读存储媒体可直接在本地与处理器复合体200相关联(例如,可从L1Icache230得到)以用于对从L1Dcache232和存储器系统234获得的数据进行操作,或经由(例如)输入/输出接口(未图示)与处理器复合体200相关联。在指令获取级214中接收从L1Icache230获取的条件分支指令(Cbranch)。在解码和预测级216中检索和使用动态地存储于L1Icache230中的Cbranch中的双模态预测位以预测所获取的条件分支指令将被采用还是不采用。可基于所述预测推测地获取其它指令。在Cbranch在执行级222中时,确定条件且经由预测信号223告知双模态预测器电路218以在Cbranch被采用的情况下进行双模态预测器的状态的前向转变且在Cbranch不被采用的情况下进行双模态预测器的状态的反向转变。接着经由双模态位信号240传递双模态预测器电路218的经更新状态以在L1Icache230中在下一可用写入周期将双模态预测位存储于相关联的Cbranch中。所存储的Cbranch指令中的所改变的双模态分支预测器位影响下一次获取Cbranch指令时下一分支目标地址的预测而不影响Cbranch指令的功能。下文通过详细代码实例提供使用L1Icache230以及解码和预测级216的处理器管线206的更详细描述。
图3分别说明根据本发明的支持对双模态分支预测器位的动态编码的示范性32位和16位条件分支指令格式302和304。32位条件分支指令格式302包括第一条件代码选择字段306、第一操作码308、预测位310、24位带正负号偏移312和Q位314。16位条件分支指令格式304包括第二操作码320、第二条件代码选择字段322和用于在半字地址边界上识别16位指令的地址的8位带正负号偏移324。
在加载程序之前静态地确定条件分支指令中的预测位(例如,预测位310)。举例来说,如从后向分支指令的24位带正负号偏移字段312中确定,通过断言P位310为值一,后向分支可由编译器预测为“采用”。通过双模态预测器电路218的有限状态机实施方案,Q位314可被设定为值一以指示强预测。或者,Q位314可被设定为值零以指示弱预测。举例来说,针对Q位314的初始或默认设定可为零。在替代实施例中,双模态预测器位两者可通过对程序的分析来静态地确定且在执行程序之前指定于分支指令中。举例来说,在条件分支(Cbranch)指令被用作为环回功能的程序上下文中,P位310可被设定为“1”且Q位314可被设定为“0”,从而指示弱采用状态。在通过循环的第一周期时,Cbranch指令将很可能被预测为采用且还将很可能被评估为采用。对采用的评估将导致双模态预测器电路前进到“11”强采用状态。
通过双模态预测器电路218的2位饱和计数器实施方案,可通过检验2位饱和计数器输出的最高有效位(MSB)来确定采用或不采用预测。预测的强度或置信度可通过检验计数器值的两个位来确定。举例来说,2位饱和计数器输出的异或
Figure BDA00003279163800071
提供预测的强度的二进制指示,其中“1”指示强预测且“0”指示弱预测。通过使用如上文所描述的2位饱和计数器的经加权预测值,所要状态(例如,为“10”的弱预测采用状态或为“01”的弱预测不采用状态)可在加载程序之前被选择且初始设定于条件分支指令中。检验双模态预测器电路218的两个位以确定经加权预测值的状态的改变。
分别通过与条件分支指令相关联的双模态预测器电路的最高有效位(MSB)和最低有效位(LSB)来动态地确定预测位310和Q位314。可在解码期间通过第一操作码308的编码来识别条件分支指令。Q位314位于32位条件分支指令格式302的位0位置处。地址的位0位置一般使用于具有16位和32位指令的处理器中以在半字地址边界上识别16位指令。然而,位0位置不在32位条件分支指令格式302中用于寻址目的,这是因为根据定义,所有32位指令都是字对准的且位0表示16位地址位。或者,对于每一条件分支指令,Q位可存储于单独阵列中,而预测位保持存储于条件分支指令中。
图4说明根据本发明的耦合到处理器管线206的多个级的示范性1级指令高速缓冲存储器(L1Icache)子系统400。L1Icache子系统400包括L1Icache230和处理器管线206的多个级。L1Icache230包括指令内容可寻址存储器(ICAM)402、指令随机存取存储器(IRAM)403和写入控制逻辑404。
在将获取指令时,处理器管线206的指令获取级214发出在L1Icache230的ICAM402中接收的获取地址408。获取地址408包括(例如)高速缓冲存储器线地址和在由所述高速缓冲存储器线地址寻址的高速缓冲存储器线中的分支指令位置的偏移。将获取地址408与ICAM402中的条目进行比较以确定是否将在高速缓冲存储器的IRAM403中发现获取地址408处的指令。如果在ICAM402中确定匹配,则产生命中指示410以选择与ICAM402中的匹配条目相关联的IRAM403中的线。举例来说,可选择指令线412,指令线412包括第一指令(Instr.1)414、具有P位417和Q位418的条件分支指令(Cbranch)416,和额外指令420。
所选择的指令线412被引导到L1Icache230的输出424且接收于指令获取级214中。在处理器管线206的下一级中,对于Cbranch416,解码和预测级216使用P位417和Q位418来预测Cbranch416将被采用还是不采用。基于所述预测,相应地调整PC209且指令获取级214产生采用或不采用地址处的下一获取地址。Cbranch416的地址以及预测P位417和Q位418存储于管线缓冲器421中以用于在条件确定之后的稍后检验。
Cbranch416继续沿处理器管线206往下,例如穿过分派级219、读取寄存器级220且到达在那里确定条件的执行级222。预测信号223告知解码和预测级216在条件指示“采用”的情况下在双模态预测器电路(BP)218中进行前向转变且在条件指示“不采用”的情况下在BP218中进行反向转变。解码和预测级216接着将选自BP218的双模态分支位经由双模态位信号240传递到写入控制逻辑404。如果最新双模态分支位值不同于先前P位417和Q位418值,则写入控制逻辑404通过更新L1Icache230中的Cbranch指令416中的相关联的P位和Q位值而致使存储最新的P位和Q位值。因此,先前P位417和先前Q位418值可被替换。举例来说,可经由内部信号430传递P位和Q位的最新版本以加载于指令线412中的Cbranch位置中。在替代方法中,可经由内部信号430传递使用P位和Q位的最新版本更新的所获取的Cbranch指令以加载于指令线412中的Cbranch位置中。内部信号428和432与指令高速缓冲存储器线中的其它指令位置相关联以支持对可存储于那些地址中的条件分支指令的存取。如果在从Icache读取条件分支指令时直到将分支预测信息写回到Icache的点之间的时间期间已从Icache替换Icache线,则冲洗分支预测信息且不更新高速缓冲存储器。
如果在L1Icache230中未发现Cbranch指令,则指示未命中且将获取地址转发到存储器分层结构中的下一级存储器。举例来说,可使用统一2级高速缓冲存储器(L2高速缓冲存储器)。在L2高速缓冲存储器中命中的情况下,将从L2高速缓冲存储器存取的Cbranch指令转发到L1Icache230以用于加载且并行地转发到处理器管线206中的指令获取级214。在确定对Cbranch的双模态预测位的更新后,即刻使用P位和Q位的最新值来动态地更新L1Icache230中的Cbranch。举例来说,如果L1Icache为单端口装置,则Cbranch指令的更新可在L1Icache正获取指令的情况下(其一般具有高于更新的优先级)中止。如果L1Icache为二端口装置,则可使用一个端口执行Cbranch指令的更新,同时使用第二个端口从Icache获取指令。还将分支预测信息转发到L2高速缓冲存储器,即使具有Cbranch指令的高速缓冲存储器线存在于L1Icache中也如此。如果基于替换策略(例如,最近最少使用(LRU))替换L1线,则下次从L2高速缓冲存储器获取线时,使得最新预测信息可从L2高速缓冲存储器中的所存储的Cbranch指令得到,这是因为L2高速缓冲存储器线已被更新。在另一方法中,在使用分支信息更新L1Icache时,设定与具有Cbranch指令的指令线相关联的标签中的更改位。在替换L1Icache中的更改线时,接着在L2高速缓冲存储器中更新旧的更改线。
对于所展示的示范性管线206,四个双模态预测器电路可位于解码和预测级216中以考虑到管线中的四个背对背条件分支的可能性。双模态预测器电路的数目随管线的深度而变化。对于具有较大深度的管线,将需要大于四个双模态预测器电路,且取决于需要,可实施“n”个双模态预测器电路,其中“n”小于由管线深度支持的数目。在此情况下,在接收“n+1”条件分支指令后,此分支将即刻不具有预测支持且将被中止。举例来说,在所预测的分支目标地址处的推测式存取将被中止,直到在确定针对“n+1”分支的条件时能够产生分支目标地址为止。
使用(例如)与每一条件分支指令相关联的双模态计数器的分支预测通常使用预测逻辑电路,预测逻辑电路具有单独分支预测阵列以保存双模态计数器位和针对相关联的条件分支指令的对应值。本发明不需要在容量上受电路要求限制的此分支预测阵列。因此,在维持分支预测的有效性的同时根据本发明的硬件电路实施方案会减少。而且,如本文中所描述的分支预测可将双模态预测信息与每一分支指令存储在一起且在容量上不受分支预测阵列限制。因此,与使用分支预测阵列的方法相比,电力使用被最小化。
图5说明根据本发明的用于在Icache中的分支指令中读取和写入双模态分支预测位的过程。参看先前各图以强调和阐明实施细节。在第一步骤502中,在处理复合体200上开始程序。而且,过程500在流过处理器管线206时遵循一个条件分支指令的路径。
在步骤504处,从L1Icache230获取指令。在决策步骤506处,确定所获取的指令是否为条件分支(Cbranch)指令。如果所获取的指令不是Cbranch指令,则过程500返回到步骤504。如果所获取的指令为Cbranch指令,则过程500继续进行到步骤508。
在步骤508处,在解码和预测级216中解码所获取的Cbranch指令且从条件分支指令选择双模态预测位。在步骤510处,将Cbranch指令的获取地址和所选择的双模态预测位保存于图5的管线缓冲器421中。在步骤512处,基于双模态预测位预测分支目标地址。在决策步骤514处,确定是否应更新获取地址。如果获取地址需要改变到所预测的分支目标地址,则过程500继续进行到步骤516。在步骤516处,基于所预测的分支目标地址推测地更新用于在指令获取级214中的获取地址以用于在步骤504处获取指令,且过程500继续进行到步骤518。返回到决策步骤514,如果获取地址不需要改变,则过程500继续进行到步骤518。
在步骤518处,(例如)在执行级222处确定Cbranch指令的条件且过程500并行地继续进行到决策步骤520和521。在步骤518处确定的条件用于确定双模态分支预测准确性。在决策步骤520处,确定是否误预测Cbranch指令。如果误预测Cbranch指令,则过程500继续进行到步骤522。在步骤522处,冲洗处理器管线206且将获取地址设定为经校正的获取地址。如果未误预测Cbranch指令,则过程500继续进行到步骤524。在步骤524处,过程管线206继续进行正常管操作。
在决策步骤521处,确定条件是否指示Cbranch指令被评估为采用。如果Cbranch指令未被评估为采用,换句话说,Cbranch指令被评估为不采用,则过程500继续进行到步骤526。在步骤526处,在反向方向上调整双模态预测器电路,其中预测值在为“00”的双模态预测值处饱和,且过程500继续进行到决策步骤530。返回到决策步骤520,如果Cbranch指令被评估为采用,则过程500继续进行到步骤528。在步骤528处,在前向方向上调整双模态预测器电路,其中预测值在为“11”的双模态预测值处饱和,且过程500继续进行到决策步骤530。
在决策步骤530处,确定双模态预测器电路位是否不同于从所获取的Cbranch指令选择的双模态预测位。如果双模态预测器电路位与从所获取的Cbranch指令选择的双模态预测位相同,则过程500继续进行到步骤504。如果双模态预测器电路位不同于Cbranch指令的双模态预测位,则过程500继续进行到步骤532。在步骤532处,在可用的Icache写入周期处更新与Cbranch指令一起存储于L1Icache中的双模态预测位。过程500接着继续进行到步骤504。
结合本文中所揭示的实施例而描述的方法可以硬件的组合且以存储由处理器执行的非暂时性信号的软件模块来体现。软件模块可驻留于随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程只读存储器(EPROM)、硬盘、可装卸磁盘、磁带、压缩光盘只读存储器(CD-ROM)或此项技术中已知的任何其它形式的存储媒体中。存储媒体可耦合到处理器,使得处理器可从存储媒体读取信息以及在一些情况下将信息写入到存储媒体。耦合到处理器的存储媒体可为与电路实施方案成一体的直接耦合件或可利用一个或一个以上接口,支持直接存取或使用下载技术的数据串流传输。
虽然在用于处理器系统中的说明性实施例的上下文中揭示本发明,但应认识到,可由所属领域的技术人员与上文论述和所附权利要求书相一致地使用广泛多种实施方案。本技术可缩放到包括3级高速缓冲存储器和主存储器的所有级存储器分层结构。而且,条件分支指令可与单一比较分支指令中的比较指令进行组合。单一比较分支指令在比较分支指令的指令格式中包括双模态分支预测位。举例来说,指令格式中的未使用位可用于双模态分支预测位。另外,条件分支指令可在还包括双模态分支预测位的单一加载和分支指令中与加载指令进行组合。

Claims (21)

1.一种将双模态分支预测器位存储于指令高速缓冲存储器中的分支指令中的方法,所述方法包含:
基于存储于从指令高速缓冲存储器获取的分支指令中的双模态分支预测器位来预测分支目标地址;
基于响应于所述分支指令的执行的对分支预测准确性的评估而确定是否改变所述双模态分支预测器位;以及
将已从所述所获取的分支指令中的所述双模态分支预测器位改变的双模态分支预测器位存储于所述指令高速缓冲存储器中。
2.根据权利要求1所述的方法,其中所述双模态分支预测器位为来自双模态预测器电路的位,所述位指示强采用分支预测指示、弱采用分支预测指示、弱不采用分支预测指示和强不采用分支预测指示。
3.根据权利要求2所述的方法,其中将所述双模态预测器电路的最低有效位指派给在32位分支指令格式的位字段中未使用的一位,其中那个位用于对应的16位分支指令格式中。
4.根据权利要求1所述的方法,其中通过对程序的分析来静态地确定所述双模态预测器位,且在执行所述程序之前在加载于存储器中的所述分支指令中指定所述双模态预测器位。
5.根据权利要求1所述的方法,其进一步包含:
在已获取所述分支指令之后将指令获取地址保存于管线级中,其中所述指令获取地址为高速缓冲存储器线地址和在通过所述高速缓冲存储器线地址寻址的高速缓冲存储器线中的分支指令位置的偏移;以及
选择所述所保存的高速缓冲存储器线地址和所述高速缓冲存储器线中的偏移作为用于存储所述所改变的双模态分支预测位的所述指令获取地址。
6.根据权利要求1所述的方法,其中所述指令高速缓冲存储器为1级指令高速缓冲存储器。
7.根据权利要求1所述的方法,其进一步包含:
使用具有所述所改变的双模态分支预测器位的所述分支指令更新2级指令高速缓冲存储器。
8.根据权利要求1所述的方法,其中所述所存储的分支指令中的所述所改变的双模态分支预测器位影响在下一次获取所述分支指令时对下一分支目标地址的预测而不影响所述分支指令的功能。
9.根据权利要求1所述的方法,其中通过存储具有所述所改变的双模态分支预测器位的所述分支指令而将所述所改变的双模态分支预测器位存储于所述指令高速缓冲存储器中。
10.一种分支预测设备,其包含:
指令高速缓冲存储器,其经配置以用于在指令获取地址处存储和提供分支指令,所述分支指令具有双模态分支预测器位;
管线存储器,其经配置以用于保存所述分支指令的所述指令获取地址;
预测电路,其经配置以用于基于对与所述所提供的分支指令相关联的条件的评估而确定是否改变所述双模态分支预测位;以及
写入控制逻辑电路,其经配置以用于在所述指令高速缓冲存储器中在所述所保存的指令获取地址处的所述分支指令中存储已从所述所提供的分支指令中的所述双模态分支预测位改变的所述双模态分支预测位。
11.根据权利要求10所述的分支预测设备,其中所述写入控制逻辑电路进一步在所述指令高速缓冲存储器中在所述所保存的指令获取地址处存储具有已从所述所获取的分支指令中的所述双模态分支预测位改变的所述双模态分支预测位的所述分支指令。
12.根据权利要求10所述的分支预测设备,其中所述分支指令为比较和分支指令。
13.根据权利要求10所述的分支预测设备,其中所述分支指令为加载和分支指令。
14.根据权利要求10所述的分支预测设备,其中所述分支预测电路进一步包含:
具有强采用、弱采用、弱不采用和强不采用的状态的二位计数器,所述二位计数器经配置以针对每一采用分支递增,在表示强采用的为三的二进制计数处饱和,且针对每一不采用分支递减,在表示强不采用的为零的二进制计数处饱和。
15.一种用于双模态分支预测的方法,所述方法包含:
在执行期间动态地产生与条件分支指令相关联的分支预测位;以及
将所述动态地产生的分支预测位存储于指令高速缓冲存储器中的所述条件分支指令中。
16.根据权利要求15所述的方法,其进一步包含:
如果所述条件分支指令评估为采用,则在经加权预测值的当前状态与下一状态之间朝向饱和强采用状态进行前向转变;
如果所述条件分支指令评估为不采用,则在所述经加权预测值的所述当前状态与下一状态之间朝向饱和强不采用状态进行反向转变。
17.根据权利要求16所述的方法,其中所述经加权预测值的所述当前状态和所述下一状态为有限状态机预测器的状态,其表示执行所述条件分支指令的强采用、弱采用、弱不采用和强不采用历史。
18.根据权利要求15所述的方法,其进一步包含:
基于由所述条件分支指令指定的条件的采用或不采用决议而调整双模态预测电路;以及
在由所述双模态预测电路表示的所述分支预测位与从所述条件分支指令解码的所述双模态预测位相同时,动态地确定不更新与所述条件分支指令一起存储的所述分支预测位。
19.根据权利要求15所述的方法,其中所述分支预测位最初被设定成为1的最高有效位和为0的最低有效位,从而指示双模态预测电路的弱采用状态。
20.根据权利要求15所述的方法,其进一步包含:
在临时缓冲器中保存所述条件分支指令的地址和所述分支预测位;
将所述所保存的分支预测位与基于由所述条件分支指令指定的条件的采用或不采用决议而调整的双模态预测电路值进行比较;以及
检索所述条件分支指令的所述所保存的地址以识别在何处存储所述动态确定的分支预测位。
21.根据权利要求15所述的方法,其中所述条件分支指令具有包括所述双模态预测位的固定指令集架构格式。
CN201180057844.4A 2010-11-08 2011-11-07 编码于分支指令中的双模态分支预测器 Active CN103238134B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/941,105 2010-11-08
US12/941,105 US9122486B2 (en) 2010-11-08 2010-11-08 Bimodal branch predictor encoded in a branch instruction
PCT/US2011/059658 WO2012064677A1 (en) 2010-11-08 2011-11-07 Bimodal branch predictor encoded in a branch instruction

Publications (2)

Publication Number Publication Date
CN103238134A true CN103238134A (zh) 2013-08-07
CN103238134B CN103238134B (zh) 2016-03-30

Family

ID=45217633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180057844.4A Active CN103238134B (zh) 2010-11-08 2011-11-07 编码于分支指令中的双模态分支预测器

Country Status (7)

Country Link
US (1) US9122486B2 (zh)
EP (1) EP2638463A1 (zh)
JP (1) JP5745638B2 (zh)
KR (1) KR101536179B1 (zh)
CN (1) CN103238134B (zh)
TW (1) TW201235940A (zh)
WO (1) WO2012064677A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105867884A (zh) * 2016-03-24 2016-08-17 清华大学 一种改进型PAp分支预测方法
CN108604184A (zh) * 2016-02-29 2018-09-28 高通股份有限公司 使用正在进行中的分支指令的基于置信度的加权的动态管线节流

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519479B2 (en) 2013-11-18 2016-12-13 Globalfoundries Inc. Techniques for increasing vector processing utilization and efficiency through vector lane predication prediction
US9690587B2 (en) 2014-04-08 2017-06-27 International Business Machines Corporation Variable updates of branch prediction states
US10853074B2 (en) * 2014-05-01 2020-12-01 Netronome Systems, Inc. Table fetch processor instruction using table number to base address translation
US9442726B1 (en) 2015-12-15 2016-09-13 International Business Machines Corporation Perceptron branch predictor with virtualized weights
US11086629B2 (en) * 2018-11-09 2021-08-10 Arm Limited Misprediction of predicted taken branches in a data processing apparatus
US11163577B2 (en) 2018-11-26 2021-11-02 International Business Machines Corporation Selectively supporting static branch prediction settings only in association with processor-designated types of instructions

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1115659A (ja) * 1997-06-20 1999-01-22 Nec Corp 分岐予測方式
US20040059899A1 (en) * 2002-09-20 2004-03-25 International Business Machines Corporation Effectively infinite branch prediction table mechanism
CN101427213A (zh) * 2006-05-04 2009-05-06 国际商业机器公司 用于实现多态分支预测器的方法和装置
EP2063355A1 (en) * 2007-11-22 2009-05-27 Sony Computer Entertainment Europe Ltd. Branch prediction method
CN101449238A (zh) * 2006-06-08 2009-06-03 国际商业机器公司 本地和全局分支预测信息存储

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09500989A (ja) 1993-05-14 1997-01-28 インテル・コーポレーション 分岐ターゲット・バッファにおける推論履歴
US5878255A (en) 1995-06-07 1999-03-02 Advanced Micro Devices, Inc. Update unit for providing a delayed update to a branch prediction array
US5887159A (en) 1996-12-11 1999-03-23 Digital Equipment Corporation Dynamically determining instruction hint fields
GB2389211B (en) 1998-12-31 2004-02-04 Intel Corp A method and apparatus for improved predicate prediction
US6351796B1 (en) 2000-02-22 2002-02-26 Hewlett-Packard Company Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US20030126414A1 (en) 2002-01-02 2003-07-03 Grochowski Edward T. Processing partial register writes in an out-of order processor
US7752426B2 (en) 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US7587580B2 (en) 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US7461243B2 (en) 2005-12-22 2008-12-02 Sun Microsystems, Inc. Deferred branch history update scheme
US20070260862A1 (en) 2006-05-03 2007-11-08 Mcfarling Scott Providing storage in a memory hierarchy for prediction information
US20080040576A1 (en) 2006-08-09 2008-02-14 Brian Michael Stempel Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set
US20080072024A1 (en) 2006-09-14 2008-03-20 Davis Mark C Predicting instruction branches with bimodal, little global, big global, and loop (BgGL) branch predictors
TWI379230B (en) * 2008-11-14 2012-12-11 Realtek Semiconductor Corp Instruction mode identification apparatus and instruction mode identification method
CN105468334A (zh) 2008-12-25 2016-04-06 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
US20130283023A1 (en) 2012-04-18 2013-10-24 Qualcomm Incorporated Bimodal Compare Predictor Encoded In Each Compare Instruction

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1115659A (ja) * 1997-06-20 1999-01-22 Nec Corp 分岐予測方式
US20040059899A1 (en) * 2002-09-20 2004-03-25 International Business Machines Corporation Effectively infinite branch prediction table mechanism
CN101427213A (zh) * 2006-05-04 2009-05-06 国际商业机器公司 用于实现多态分支预测器的方法和装置
CN101449238A (zh) * 2006-06-08 2009-06-03 国际商业机器公司 本地和全局分支预测信息存储
EP2063355A1 (en) * 2007-11-22 2009-05-27 Sony Computer Entertainment Europe Ltd. Branch prediction method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108604184A (zh) * 2016-02-29 2018-09-28 高通股份有限公司 使用正在进行中的分支指令的基于置信度的加权的动态管线节流
CN108604184B (zh) * 2016-02-29 2022-05-06 高通股份有限公司 使用正在进行中的分支指令的基于置信度的加权的动态管线节流
CN105867884A (zh) * 2016-03-24 2016-08-17 清华大学 一种改进型PAp分支预测方法
CN105867884B (zh) * 2016-03-24 2018-06-15 清华大学 一种改进型PAp分支预测方法

Also Published As

Publication number Publication date
WO2012064677A1 (en) 2012-05-18
EP2638463A1 (en) 2013-09-18
US9122486B2 (en) 2015-09-01
TW201235940A (en) 2012-09-01
JP5745638B2 (ja) 2015-07-08
JP2013545194A (ja) 2013-12-19
CN103238134B (zh) 2016-03-30
KR101536179B1 (ko) 2015-07-13
KR20130111583A (ko) 2013-10-10
US20120117327A1 (en) 2012-05-10

Similar Documents

Publication Publication Date Title
CN103238134B (zh) 编码于分支指令中的双模态分支预测器
CN101694613B (zh) 不对准存储器存取预测
US7631146B2 (en) Processor with cache way prediction and method thereof
CN102934075B (zh) 用于使用预先通知技术改变程序的顺序流程的方法和设备
US6349365B1 (en) User-prioritized cache replacement
EP2864868B1 (en) Methods and apparatus to extend software branch target hints
US7707397B2 (en) Variable group associativity branch target address cache delivering multiple target addresses per cache line
KR101402560B1 (ko) 연산 처리 장치
US5774710A (en) Cache line branch prediction scheme that shares among sets of a set associative cache
EP0795828A2 (en) Dynamic set prediction method and apparatus for a multi-level cache system
US20020199151A1 (en) Using type bits to track storage of ECC and predecode bits in a level two cache
US20080072024A1 (en) Predicting instruction branches with bimodal, little global, big global, and loop (BgGL) branch predictors
CN101438237A (zh) 基于区块的分支目标地址高速缓冲存储器
US9547358B2 (en) Branch prediction power reduction
US9552032B2 (en) Branch prediction power reduction
WO2007019001A1 (en) Call return stack way prediction repair
US20140075166A1 (en) Swapping Branch Direction History(ies) in Response to a Branch Prediction Table Swap Instruction(s), and Related Systems and Methods
CN116302106A (zh) 用于促进分支预测单元的改善的带宽的设备、方法和系统
US7346737B2 (en) Cache system having branch target address cache
CN114647447A (zh) 基于上下文的存储器间接分支目标预测
US11995443B2 (en) Reuse of branch information queue entries for multiple instances of predicted control instructions in captured loops in a processor
CN116627505A (zh) 指令缓存及操作方法、处理器核及指令处理方法
WO2005119428A1 (en) Tlb correlated branch predictor and method for use therof

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