CN100480994C - 分支目标缓冲器及其使用方法 - Google Patents

分支目标缓冲器及其使用方法 Download PDF

Info

Publication number
CN100480994C
CN100480994C CNB2005100846618A CN200510084661A CN100480994C CN 100480994 C CN100480994 C CN 100480994C CN B2005100846618 A CNB2005100846618 A CN B2005100846618A CN 200510084661 A CN200510084661 A CN 200510084661A CN 100480994 C CN100480994 C CN 100480994C
Authority
CN
China
Prior art keywords
word line
gating
branch
instruction
circuit
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
Application number
CNB2005100846618A
Other languages
English (en)
Other versions
CN1725175A (zh
Inventor
朴基豪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN1725175A publication Critical patent/CN1725175A/zh
Application granted granted Critical
Publication of CN100480994C publication Critical patent/CN100480994C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • 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

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

公开了一种存储与分支指令相关的数据条目的分支目标缓冲器(BTB)。该BTB响应于与BTB中的字线相关联的字线选通电路有条件地使能对数据条目的访问。该字线选通电路存储从与指令相关的分支历史数据导出的字线选通值。另外,公开了包含BTB的分支预测单元和处理器,以及用于操作BTB的方法。

Description

分支目标缓冲器及其使用方法
技术领域
本发明一般涉及具有分支预测单元的处理器,更具体地涉及分支预测单元内的分支目标缓冲器(branch target buffer,BTB)。本发明适于与具有流水线(pipeline)体系结构的处理器一起使用,其中流水线体系结构包括单流水线体系结构和超标量(superscalar)流水线体系结构。
背景技术
早期的计算机被设计成按指令的顺序在开始下一指令之前完成处理一条指令。多年过去了,这些早期设计有了很大的体系结构上进步,这极大提高了性能。流水线体系结构和超标量体系结构是这些进步的示例。
通过使用高速缓存(cashe)也增强了处理器的性能。高速缓存是用来存储和提供频繁使用的信息的存储器元件。术语“信息”广义上既包括数据也包括指令。与可能需要几个周期的传统存储器访问操作相比,高速缓存通常以单时钟周期提供信息。所谓的分支目标缓冲器(Branch Target Buffer,“BTB”)是处理器高速缓存的一个示例。
在流水线体系结构的背景下,BTB的效用很容易理解。“流水线”(或也称作“推测执行(speculative execution)”)是一个术语,通常指其中使用一系列功能步骤或处理阶段来处理指令序列的操作方法。每个处理阶段通常在单个时钟周期内完成它的一个或多个构成操作(constituent operation)。
与在开始下一指令之前将每条指令处理完成的非流水线处理器不同,流水线处理器在流水线的不同处理阶段同时处理几条指令。流水线阶段可以由设计者任意指定,但是通常包括:指令获取(fetch)、指令译码、指令执行、执行解析(execution resolution)阶段。
指令获取阶段从指令当前被存储的任何所在(例如,主系统存储器或者指令队列)检索(retrieve)指令。一旦获取,指令被传递到译码器阶段,其通常确定指令地址和/或指令操作数。指令从译码器阶段传递到执行由指令指示的一个或多个操作的执行阶段。执行解析阶段通常涉及将通过执行指令生成的结果(例如,结果数据)回写(write-back)到一个或多个寄存器或存储器以备以后使用。
优选地,在规定的周期期间指令从一个流水线阶段传递到下一流水线阶段。这样在第一周期期间,指令获取阶段从存储部件获取第一指令并且在相关联的硬件寄存器内将其排好(align)以进行译码。在第二周期期间,指令获取阶段从存储部件获取第二指令并且将其排好,同时指令译码器阶段对第一指令进行译码。在第三周期期间,第一指令在执行阶段启动执行操作(例如,逻辑、数学、寻址或索引操作),同时指令译码器阶段对第二指令进行译码,并且指令获取阶段获取第三指令。流水线继续到执行解析,通过这种方式处理器的总体运行速度比非流水线体系结构有了大大改进。
在超标量体系结构中,可以同时处理和/或执行两条或更多条指令。即,超标量系统具有能够并行地同时且独立执行多条指令的两条或者更多条执行(或译码/执行)路径。标量系统在每个周期只可以执行一条指令,不管该指令来自指令的流水线序列还是以非流水线方式被执行。多条指令的同时执行进一步增强了处理器的性能。
流水线提供了毫无疑问的性能收益,只要待处理的指令序列保持高度线性或者可预测。不幸的是,大多数指令序列包含众多的能够引入非顺序执行路径的指令。所谓的“分支指令”(包括,例如,跳转(jump),返回(return)和条件分支指令)在流水线处理器中产生了显著的性能损害(performancepenalty)-除非实现分支预测的有效形式。在未预测到(或错误预测)的分支指令引起偏离处理器内当前流水线中的指令序列时出现性能损害。如果发生这种情况,则当前流水线指令序列就必须被扔掉或“清除(flush)”,而新的指令序列必须加载到流水线中。流水线清除浪费了众多时钟周期并且通常使处理器的执行变慢。
增加与分支指令相关联的执行性能的一种途径是预测分支指令的出口,并且在紧随分支指令之后立刻将预测的指令插入到流水线中。如果在处理器中成功实现这样的分支预测机制,则仅当不正确地预测了分支指令出口时才招致与流水线清除相关联的性能损害。幸运的是,现有的技术和分析已确定许多分支指令的出口是可以以高度的确定性正确预测的——对一些应用接近80%。
结果,已研发了几种现有类型的分支预测机制。一种类型的分支预测机制使用BTB来存储众多数据条目,其中每个数据条目与分支指令相关联。BTB因此存储了许多所谓的“分支地址标签(branch address tag)”,每个分支地址标签用作相应分支指令分类的索引。除了分支地址标签外,每个BTB条目还可以包括目标地址、指令操作码(opcode)、分支历史信息以及可能的其它数据。在使用BTB的处理器中,分支预测机制监视进入流水线的每条指令。通常,监视指令地址,以及如果指令地址与BTB中的条目匹配,则该指令被标识为分支指令。从相关联的分支历史信息,分支预测机制确定该分支是否可能发生。分支历史信息通常由下述状态机来确定,该状态机监视BTB中索引的每条分支指令并且关于在前面操作中该分支是否发生将所存储的数据定义为分支历史信息。
如果分支历史信息指示该分支指令可能发生,则一条或多条预测指令被插入流水线中。按照惯例,每个BTB数据条目包括与关于其分支历史信息被评估的分支指令相关联的一个或多个操作码。基于来自分支预测机制的适当指示,该一个或多个操作码可以被直接插入到流水线中。此外,每个BTB数据条目包括与正被评估的分支指令相关联的“目标地址”。同样,基于来自分支预测机制的适当指示,这些目标地址被分支预测单元作为“预测地址”输出并且用来获取指令序列中的下一指令。
分支指令的处理和其后继指令通过流水线前进了几个周期直到在执行阶段执行了该分支指令。仅在该点才能知道分支预测的正确性。如果正确预测了分支指令的出口,则分支目标地址已经通过流水线被移动到其正当的顺序,因而处理器执行可以继续而无需中断。但是,如果不正确地预测了分支指令的出口,则清除流水线并且将在流水线中插入正确指令或指令序列。在具有处理多指令序列的两个或多个流水线的超标量处理器中,不正确的分支预测导致的性能损害甚至更大,这是因为在大多数情况下必须清除至少指令数目的两倍。
图1图示了连接到分支预测逻辑2和相关硬件的现有BTB1。BTB1通常包括指令地址译码器3、存储器阵列4、读出放大器5。地址译码器3从指令获取单元接收指令地址并且选择与译码得到的指令地址相关联的字线(wordline)。字线选择是按惯例执行的,但是通常包括将字线电压施加给所选择的字线。作为惯例,多个字线从地址译码器3以逐行的方式延伸穿过存储器阵列4。
存储器阵列4包括众多存储单元,每个存储至少一个数据比特。每个包括多个数据比特的数据条目被便利地按行存储,从而特定字线的选择本质上访问相应的数据条目。数据条目包含定义分支地址标签的至少一个数据字段和定义目标地址的另一数据字段。按照惯例通过读出放大器5从存储器阵列4输出经字线选择的数据条目。
分支地址标签从读出放大器5被传递到也接收指令地址的标签比较寄存器6。来自读出放大器5的目标地址连同与非分支指令序列相关联的地址(例如,对于32位指令字处理器的程序计数值+4)一起被传送到多路复用器7。通过接收来自标签比较寄存器6的结果和来自分支预测逻辑2的发生(Taken)/不发生(Not-Taken)指示的逻辑门9的操作选择这两个多路复用器输入之一以传送到指令队列(这里示出了PC多路复用器8)。
这种类型的现有BTB饱受多种缺陷之苦。首先,在图1所示的配置的左侧,BTB的存储器阵列将由每条分支指令访问,而不考虑指令的可能出口。BTB访问通常涉及执行有关地址译码器所选择的字线的传统的读操作。每个读操作从电源吸取能量以使与所选择的字线相关联的多个存储单元通电并且从这些存储单元输出数据。
响应于此事务的浪费状态,其它现有的BTB设计将使能线集成到存储器阵列设计中。美国专利No.5,740,417是一个示例。如该文献中所示出的,所提出的BTB包括使能线,其在读操作期间使能或禁止与存储器阵列相关联的字线驱动器。字线驱动器是基于预测特定指令是否不可能发生的发生/不发生状态而被使能或禁止的。例如,对于特定指令的发生/不发生状态指示“强不发生”状态的情况,则使能线转变到无效电平(inactive level),由此禁止存储器阵列字线驱动器。
不幸的是,该在BTB访问操作期间节省能量的现有方法伴随有高开销。即,产生使能信号的分支预测机制既需要时间也需要资源来对指令“预译码(pre-decode)”、确定其分支历史数据和发生/不发生状态以及其后视必要改变使能信号的电平。
随着指令执行的速率和指令流水线的深度增加,分支预测的准确性和速度变得越来越重要。认识到该重要性,许多现有处理器引入扩展的预译码方案,由此评估所有的指令、标识分支指令、并且关于当前正被评估和预译码的分支指令检索或动态计算分支历史信息。不用说,这样的预测分支指令行为的方法花费相当多的时间且需要显著的额外资源。指令序列处理中额外的延迟和复杂性是分支预测机制中不期望的属性。然而,这确实是许多现有方法提供的。
能量消耗问题还使设计令人满意(competent)的分支预测机制复杂化。毫不令人惊讶,当代处理器正在发现应用是以严格限制能量消耗为特征的设备范围。膝上型计算机和移动设备,诸如手机和PDA,是包括优选地消耗最少能量的处理器的设备的现成示例。
如上所提到的,BTB是存储潜在众多数据条目的高速缓存型存储器。这样,BTB在其核心部分具有存储器阵列且优选地具有易失性存储器阵列。这样的存储器阵列,特别是足够大以存储众多数据条目的存储器阵列,是臭名昭著的能量渴求者。分支预测机制对BTB的每个访问都意味着对BTB存储器阵列的“读”操作。人们公认BTB访问操作正在增加,并且某些评估者提出对BTB存储器阵列的读操作占现有处理器的全部能量消耗高达10%。
很清楚,需要实现新兴处理器内分支预测机制的更好方法。需要分支指令的冗长实时评估和/或分支历史信息的动态检索或计算的现有方法太复杂且太慢。此外,许多现有方法中不间断地然而必要地访问BTB存储器阵列导致的能量消耗简直是浪费。
发明内容
在一个实施例中,本发明提供了一种分支目标缓冲器(BTB)存储器阵列,其包括字线和相关联的字线选通电路。该字线选通电路包括存储字线选通值的存储电路。
该存储器阵列优选地适于关于字线存储数据条目。字线选通电路优选地除了存储字线选通值的存储电路外还包括选通逻辑电路。在一个特定示例中,字线选通电路响应于施加给字线的字线电压和字线选通值以使能对数据条目的访问操作。访问操作可以是响应于BTB中接收到的写信号的写操作,或关于字线施加到存储器阵列的读操作。
BTB存储器阵列优选地包括易失存储单元阵列。在一个特定示例中,存储器阵列包括SRAM阵列并且字线选通电路中的存储电路包括1比特SRAM单元。
在相关的特定示例中,选通逻辑电路包括:第一逻辑门,其接收字线电压和所存储的字线选通值作为输入以产生第一逻辑输出;以及第二逻辑门,其接收第一逻辑输出和写信号作为输入以产生第二逻辑信号。
本发明还提供了一种响应于写操作存储数据条目以及响应于读操作输出数据条目的BTB存储器阵列。该BTB存储器阵列优选地包括字线选通电路,该字线选通电路用于在写操作期间使能对数据条目的访问,以及用于在读操作期间响应于存储在字线选通电路中的字线选通值有条件地使能对数据条目的访问。在另一特定示例中,字线选通电路包括:存储电路,用于存储字线选通值;以及选通逻辑电路,其接收写信号和字线选通值作为输入,以在写操作期间基于写信号的正指示使能对数据条目的访问,以及在读操作期间仅基于字线选通值的正指示有条件地使能对数据条目的访问。
这些存储器阵列实施例可以很容易地被合并到BTB中。例如,本发明的另一实施例提供了一种包括具有选通字线的存储器阵列的分支目标缓冲器。每个选通字线优选地包括选择字线部分、包括用于存储字线选通值的存储电路的字线选通电路、和选通字线部分。BTB通常还包括:译码器,其接收指令地址以响应于指令地址选择选通字线之一;以及读出放大器,其适于从响应于译码器中接收的指令地址选择的选通字线接收数据条目。
在相关的特定示例中,该读出放大器包括用于将字线选通值传送到与选通字线相关联的相应存储电路的电路以及/或者用于将写信号传送到与选通字线相关联的相应字线选通电路的电路。
这些BTB实施例可以很容易地与分支预测单元合并。结果的分支预测单元的一个实施例包括:分支历史单元,用于存储分支历史数据;分支预测逻辑,用于接收指令地址,提供预测地址,和更新分支历史数据;以及BTB,用于接收指令地址。该BTB优选地包括存储器阵列,存储器阵列包括选通字线,每个选通字线存储数据条目并且包括字线选通电路,字线选通电路包括存储从分支历史数据导出的字线选通值的存储电路。
在相关的特定示例中,分支历史单元包括状态机,该状态机根据指令的过去的分支执行历史确定指令的分支历史数据。
根据本发明的分支预测单元的另一实施例包括:分支历史单元,用于存储分支历史数据;以及分支目标缓冲器,其包括多个选通字线,每个选通字线通过字线选通电路来访问,其中分支目标缓冲器适于响应于分支目标缓冲器中所接收到的指令部分和从分支历史数据导出的字线选通值来输出数据条目。
根据本发明的分支预测单元的实施例可以很容易地合并到处理器中。例如处理器包括:指令获取单元,用于接收指令并且提供相应的指令地址;分支预测单元,用于接收指令地址并且向指令获取单元提供预测地址;以及指令译码器/执行单元,用于接收指令、提供译码后的指令、响应于译码后的指令提供更新后的地址。
在一个特定示例中,并入处理器中的分支预测单元包括:分支历史单元,用于存储分支历史数据;分支预测逻辑,用于接收指令地址和更新后的地址,提供预测地址,更新分支历史数据;以及分支目标缓冲器,用于接收指令地址并且输出数据条目。该分支目标缓冲器优选地包括如同上述实施例那样的存储器阵列。
本发明很容易地可适用于超标量处理器,其中前述译码器/执行单元包括多个执行路径,每个包括单独的译码器和执行单元。超标量处理器的示例包括但不限于向量处理器和单指令多数据(single-instruction-multiple-data,SIMD)处理器。
本发明还提供了各种方法。一种示例性方法使能对分支目标缓冲器存储器阵列中的选通字线的读操作。该方法包括:将字线选通值存储在与选通字线相关的字线选通电路中,并且响应于字线选通值有条件地使能读操作。
在相关的实施例中,该方法还包括:接收分支目标缓冲器中的指令部分,响应于指令部分选择选通字线并且将字线电压施加给所选择的选通字线,以及响应于字线电压和字线选通值有条件地使能读操作。
在另一相关实施例中,该方法还包括:定义有关指令部分的分支历史数据,以及从分支历史数据导出字线选通值。
在另一相关实施例中,该方法还包括:响应于被使能的读操作从分支目标缓冲器输出数据条目。
本发明还在一个实施例中提供了与上述方法类似的操作BTB的方法。该方法优选地包括:对多条指令的每一条,将相应的数据条目存储在多个选通字线的一个中,以及将相应的字线选通值存储在与所述多个选通字线之一相关联的字线选通电路中。一旦接收到从多条指令中选择的当前指令,BTB关于相应的所存储的字线选通值有条件地从BTB输出相应于当前指令的数据条目。
在相关的实施例中,有条件地输出数据条目还包括:关于当前指令从多个选通字线中选择选通字线,将字线电压施加给所选择的选通字线,以及响应于所存储的字线选通值通过相关联的字线选通电路选通字线电压。
在指令执行之后,优选地更新至少一个字线选通值。
在另一实施例中本发明还提供了操作分支预测单元的方法。该方法优选地包括:在分支历史单元中存储指令的分支历史数据;从分支历史数据导出字线选通值;将有关该指令的数据条目存储在分支目标缓冲器(BTB)存储器阵列中,其中该数据条目是经由选通字线在BTB存储器阵列中访问的;将字线选通值存储在与选通字线相关联的字线选通电路中;以及响应于接收到分支预测单元中的指令以及关于所存储的字线选通值有条件地使能从BTB存储器阵列的数据条目的输出。
在相关实施例中,该方法还包括:随着每条指令的执行更新分支历史数据和相应的字线选通值。
附图说明
关于附图中图示的几个目前最优的实施例描述了本发明。贯穿所有附图类似的标号指示类似的示例性元件、组件或步骤。在附图中:
图1图示了现有的分支目标缓冲器(BTB)和从BTB存储器阵列输出数据条目所需的相关组件;
图2是根据本发明很容易适应于并入分支预测单元和/或相关方法的示例性处理器的框图;
图3是根据本发明很容易适应于并入分支预测单元和/或相关方法的示例性超标量处理器的框图;
图4是以某些额外的细节进一步图示根据本发明的分支预测单元的框图;
图5是图示根据本发明易于包含在分支历史单元内的状态机的流程图;
图6是图示根据本发明的BTB存储器阵列的一个实施例的框图;
图7是进一步图示根据本发明的一个实施例的选通字线结构的电路图;
图8是图示根据本发明操作分支预测单元的一种优选方法的流程图;
图9是图示根据本发明的分支预测单元的基准仿真结果的图。
具体实施方式
下面参考相应附图描述本发明的示例性实施例。这些实施例作为教导示例给出。本发明的实际范围由所附的权利要求书定义。
在一般应用中,本发明的实施例提供了一种分支目标缓冲器(BTB),其使得能够实现和操作具有减少了的能量消耗、增加了的分支指令处理速度、减少了的总体复杂性的处理器。在一个方面,通过有条件地禁止对BTB的读操作减少了处理器的能量消耗。在相关的方面,进行处理器中的分支指令处理而没有惯常由检索和/或计算分支历史信息所需的操作导致的延迟。在另一方面,处理器受益于构成分支预测单元中减少了的复杂性。
术语“处理器”广义上包括能够执行或响应于指令序列的任何数字逻辑设备或系统。该术语包括作为所选择的示例的中央处理单元(CPU)、微处理器、数字信号处理器(DSP)、精简指令集计算机(reduced instruction setcomputer,RISC)处理器、向量处理器、单指令多数据(SIMD)处理器。
流水线处理器特别适于包括根据本发明示教设计的分支预测单元。因此,作为说明的工作示例和本发明的实现和使用以及本发明提供的一些优点描述了多流水线处理器。图2以方框级别图图示了第一示例性流水线处理器。
处理器10使用许多现有数据传输技术的任一种经由总线14向/从主存储器12传送数据。假定存储器12存储了一个或多个软件程序或例程,每个包括指令序列。还假定存储器12存储与指令序列有关的数据。该数据可以包括由处理器使用的输入数据和/或由处理器10存储在存储器12中的结果数据。响应于来自处理器的地址指示将指令从存储器12返回到处理器10。地址指示可以采取许多形式,而程序计数器(program counter,PC)是一种广泛了解的技术,通过该技术处理器10向存储器12指示存储器中哪个位置(即存储地址)存储了要获取的“下一个”指令。
如上面所讨论的,当指令的一个或多个是能够在一种条件下指示一个下一地址或在另一条件下指令另一下一地址的分支指令时,指示要从存储器检索下一指令的简单操作被大大复杂化了。对流水线处理器尤其如此。
回到图2,流水线处理器10通常包括指令获取单元13,其从存储器12接收指令(IR)并且向存储器12提供预测地址(例如,程序计数器值)。指令获取单元13将指令提供给指令译码器单元15。指令译码器单元15对指令译码—通常至少将指令的操作码部分提供给执行单元17。执行单元17中接收到的译码后的指令(或指令部分)启动在执行单元中的一个或多个操作。这样的操作通常产生回写到存储器12或者系统中的某些其它位置的结果数据。
除了将指令提供给指令译码器15外,指令单元13还将指令部分提供给分支预测单元19。该指令部分通常包括指令地址,但是可以包括其它信息。指令预测单元19还从执行单元17接收确定的“下一地址”指示。即,随着指令的执行,指令序列中要执行的下一指令实际上已知了(即分支指令的条件确定了)。因此,下一地址指示被反馈给分支预测单元19。使用此信息,分支预测单元19确定先前预测的下一指令事实上是否是正确的下一指令。来自执行单元17的下一地址指示通常是指令地址。
如果来自执行单元17的下一地址指示匹配以前预测的指令地址(例如,“击中(HIT)”条件),则处理器继续向前处理流水线指令序列。但是,如果下一地址指示不匹配以前预测的指令地址(例如,“未击中(MISS)”条件),则处理器清除流水线并且加载下一地址指示所指示的指令。
下一地址指示与以前预测的指令地址的比较优选地在分支预测单元19中进行。如下面以某些额外的细节叙述的,在流水线处理器10中还提供了分支预测单元19以将预测地址提供给指令获取单元13。
在继续进行优选实施例更详细的叙述之前,应该特别指出本发明也特别适于超标量处理器。图3中图示了大大简化了的超标量处理器。这里,存储器12同样经由总线14向超标量处理器11输入指令和/或数据。除指令获取单元33给多条执行路径34、35、36提供指令外,分支预测单元39和指令获取单元33通常如上述那样运行。类似地,每条执行路径34、35、36给分支预测单元39提供下一地址指示。
在超标量处理器的图示示例中,示出了3条执行路径,但是该数目仅是示例性的且是随意选取的数目。此外每个执行路径的特征在于从公共的指令获取单元接收指令的组合的译码器/执行单元。
与图示处理器的示例性阶段相关联的硬件和功能边界完全是设计者例行设计选择的问题。例如,可以很容易地以单片硬件(例如,集成电路(IC))或以多片、合作运行IC执行译码和执行功能。可以硬件、软件、固件(firmware)或者这三种一般的平台类型的任何组合来进行译码和/或执行。类似地,本实施例中的指令获取单元、指令译码器单元和/或分支预测单元之间的硬件和/或功能边界仅是说明性的。对示例性实施例的许多变更和修改预期在本发明的范围之内。
不管合并处理器类型如何,本发明优选地提供了一种分支预测单元,其包括某种形式的分支预测逻辑、用于存储与分支指令相关的数据条目的某种机制、某种形式的分支历史数据存储和/或计算。图4还以框图形式图示了图3中所示出的分支预测单元19。
在图4中,分支预测逻辑20提供通常被输出到至少指令获取单元13的预测地址。分支预测逻辑20从指令获取单元13接收指令地址并且一般与分支目标缓冲器(BTB)22及分支历史单元24交换信息。出于说明的目的选择了这三个功能块。本发明并不在硬件意义上受限于该特定元件分组。例如在本发明的实际实现中,与分支历史单元24相关联(下面对此进行描述)的数据存储功能可以被结合到与BTB 22相关联的存储器阵列或者与分支预测逻辑20相关联的存储设备中。类似地,与分支历史单元24相关联的计算功能可以使用分支预测逻辑20提供的硬件或软件资源来实现。
更特别地,分支预测逻辑20从指令获取单元13接收指令部分,通常是指令地址(例如当前的程序计数器值),并且之后预测处理器将分支到与指令相关联的目标地址还是执行指令队列中的下一指令。术语“预测”通常指分支预测逻辑关于接收到的指令地址优选地关于与接收到的指令地址相关联的分支历史信息做出的逻辑或计算输出。这样,分支预测逻辑20可以包括逻辑结构、计算电路、数据寄存器、比较电路和/或类似的硬件资源以及用于驱动硬件资源的可能的嵌入控制器软件的许多特定组合。
作为当前优选的,分支预测单元20给BTB 22提供写信号。写信号控制BTB22中的写操作。术语“读”和“写”这里用来一般地描述普通的存储设备的操作中公知的相应操作,所述普通的存储设备诸如有静态随机存取存储器(Static Random Access Memory,SRAM)和动态随机存取存储器(DynamicRandom Access Memory,DRAM)。
分支预测逻辑20做出的分支到目标地址的决定被称为“发生”条件。分支预测逻辑20做出的不分支而是执行指令序列中下一指令的决定被称为“不发生”条件。分支预测单元20预测发生条件还是不发生条件取决于与接收到的指令地址所指示的指令相关联的分支历史数据的状态。
分支历史单元24负责计算、存储和/或将分支历史数据提供给至少分支预测逻辑20。分支历史数据是与对于给定的指令在发生(Taken)和不发生(Not-Taken)条件之间的预测相关的任何有用的数据。已经给出了众多的传统的算法和方法论,其提出了计算指示分支指令是否发生的数据的不同途径。本发明倾向于使用这些方法论的任何一种,只要该算法或方法提供了对分支指令行为的准确预测。
分支历史数据的存储和供给优选地由与分支历史单元相关联的存储元件提供。具有存储在BTB中的相应数据条目的每条分支指令优选地应具有存储在分支历史单元中的某种形式的分支历史数据。(但是,如上面提到的,分支历史数据可以连同相应的数据条目一起存储在BTB中)。指令的分支历史数据可以通过运行包含该指令的一个或多个程序从而确定该指令实际上分支的频率来用实验确定。一旦最初确定了,则该分支历史数据被存储在分支历史单元中以供后续参考。作为当前优选的,初始确定的分支历史数据(如果有的话)随着每个后继的指令执行而视必要更新。通过这种方式,当时的分支行为用于更新现有的分支历史数据。当然,分支历史数据不需要通过某种方式预先确定,而是可以响应于实际指令执行而“实时(on-the-fly)”产生。
无论何时确定以及如何更新,分支历史数据都可以使用状态机来容易地确定。令人满意的状态机的复杂性和设计是例行设计选择(routine designchoice)的问题。但是,作为当前优选的,本发明包括作为分支历史单元24的计算部分的2比特、上/下饱和计数器(saturation counter)。图5的流程图中图示了2比特、上/下饱和计数器的操作和使用。这里,随着关于分支指令在执行期间是事实上发生或不发生的该指令的执行而增加或减少2比特分支历史数据值。该分支历史数据指示指令“发生(Taken-ness)”的特定程度。
例如,先前没有发生的分支指令一旦发生就从“强不发生”状态移动到“弱不发生”状态。该状态改变通过将相应的分支历史数据值从“00”增加到“01”来指示。跟随在其中指令没有发生的执行周期之后通过减少相应的分支历史数据值将先前具有“强发生”状态的指令改变到“弱发生”状态。
在目前优选的实施例中,认为两比特对大多数应用已足以精确预测指令是否发生的可能性。但是,这对所有应用未必都如此—一些应用可能需要更大量(例如,更多数据比特)的分支历史数据以做出准确的发生/不发生决定。因此,分支历史数据的特定定义连同计算分支历史数据的算法的选择和/或实现所选择算法的状态机的定义一起是设计选择的问题。
参考图6以某些额外的细节描述图4中所示的BTB。这里,译码器43接收指令部分,优选地是指令地址,并且按照惯例选择译码后的指令部分指示的字线。象传统BTB那样,多个字线从译码器43延伸穿过存储器阵列40。但是,在本发明中改变了字线的特性、操作和实现。有关随后描述本发明预期的字线的几个实施例使用了术语“选通字线(gated word line)”。
存储器阵列40优选地是诸如SRAM的非易失存储单元的阵列,但是可以使用其它形式的存储单元。象传统的BTB存储器阵列那样,本发明的存储器阵列优选地存储多个数据条目,其中每个数据条目对应于一条指令并且优选地包括至少分支地址标签和目标地址。在每个数据条目中可以关联其它类型的数据,但是一般而言,要求某种形式的分支地址标签和目标地址。
图7中示出了目前优选的选通字线。选通字线通常包括字线70和字线选通电路60的组合。如图6所示,字线选通电路优选地一对一(one-for-one)地与相应的字线相关联。在存储器阵列40内优选地以列的形式配置多个字线选通电路。该配置允许使用传统的写技术容易地更新存储在字线选通电路中的相应的字线选通值。在一个优选实施例中,存储器阵列40包括SRAM阵列,并且每个字线选通电路包括由单个比特SRAM单元形成的存储电路。
不管字线选通电路的实际配置如何,每个字线选通电路作用来根据从与字线相关联的指令的分支历史数据导出的“字线选通值”使能或禁止对相应字线的访问。即,BTB 22中接收到的每个分支指令部分通过译码器43的操作选择相应的字线。该字线存储包含至少关于接收到的分支指令部分的分支地址标签和目标地址的数据条目。由译码器43选择的相应的字线是选通字线,即,只有通过相关联的字线选通电路的操作才能够访问的字线,其中字线选通电路的操作由存储在字线选通电路中的字线选通值来控制。该字线选通值从与指令相关联的分支历史数据导出。
对每个分支指令,字线选通值优选地从与指令相关的分支历史数据导出。将在上述实施例的背景下描述示例性的导出方法。该导出方法仅仅是示例。可以使用许多不同方法来从分支历史数据导出字线选通值,并且这些方法将根据分支历史数据的特性、用来定义分支历史数据的算法、字线选通值的大小(例如,比特数)和/或字线选通电路的结构及其构成存储电路而变化。
假定2比特分支历史数据如同关于图5描述的那样,还假定单个比特存储电路与每个字线选通电路相关联,则可以通过仅使用分支历史数据的最高有效位(most significant bit)来导出令人满意的字线选通值。在该示例中,最高有效位逻辑值“1”指示该指令的“强发生”或“弱发生”状态。最高有效位逻辑值“0”指示该指令的“弱不发生”或“强不发生”状态。通过将该比特值存储在与字线选通电路相关联的单个比特存储单元中,对指令的发生程度的可接受准确性的指示用来控制对选通字线的访问。
回到图7,由译码器选择字线70,并且以传统的方式将字线电压施加给字线70。通常,所施加的字线电压将提高沿着字线整个长度的电压电势。但是,在本发明中,通过相关联的字线选通电路60有条件地使能沿着所选择的字线的长度的字线电压的施加。字线选通电路60优选地包括存储电路61和选通逻辑电路62。
将根据要存储的字线控制值的大小来确定存储电路60的大小。在图示的示例中,存储单个比特。但是,字线控制值的任何合理大小可以被存储并且用来控制对选通字线的访问。在图7中,包括两个P型晶体管和4个N型晶体管的传统的SRAM存储单元用于存储字线选通值的存储电路。
所存储的字线选通值的逻辑值(“1”或“0”)用作选通逻辑电路62的输入。特别地,施加字线选通值作为第一逻辑门82的一个输入,该第一逻辑门82还接收来自分支预测逻辑的写信号。由于第一逻辑门是或型逻辑门,所以任一输入或者两个输入上的逻辑值“1”都将得到第一逻辑输出“1”。第一逻辑输出连同字线电压值(即,由第二逻辑门分别解释为逻辑“1”或“0”的高压或低压)被施加给第二逻辑门80。由于第二逻辑门是与型逻辑门,所以两个输入都必须是“1”才得到第二逻辑输出“1”在优选实施例中,来自第二逻辑门80的第二逻辑输出用作字线选通电路60的操作“后”的字线部分70的字线电压。
这样,可以认为字线70具有两个不同部分;能够被译码器响应于指令地址选择的选择字线部分71和仅能够通过字线选通电路的操作访问的选通字线部分72。在一个实施例中,选择字线部分适于从译码器接收字线电压。该字线电压可用作与字线70相关联的字线选通电路的输入。如果被存储在字线选通电路60中的字线选通值有条件地使能,则该字线电压被传递到相应的选通字线部分72。
有条件地将字线电压从选择字线部分传递(即,“选通”)到相应的选通字线部分优选地仅与施加到字线的读操作相关。即,如果字线选通值指示分支历史数据预测分支指令很可能发生,则施加到所选择字线的读操作被使能。但是,如果字线选通值指示分支历史数据预测分支指令不可能发生,则应用到所选择字线的读操作不被使能。
在其中更新存储在存储器阵列40中的数据条目的写操作中,这样的有条件的“访问操作”使能通常是不必要的。因此,当译码器选择了选通字线时将写信号施加给第一逻辑门立刻允许对选通字线的访问。即,写操作继续进行而不考虑字线选通值。通过这种方式,利用最少的硬件资源有效地促进了有条件的读操作和无条件(就字线选通值而言)的写操作两者。
图6所示的示例性BTB还包括读出放大器45,其基于成功的(例如,被使能)的读操作从存储器阵列40接收数据条目。作为当前优选的,读出放大器45也用作将字线控制值(word line control value,WLCV)加载(写或更新)到与字线选通电路相关联的相应存储电路中。
现将参考图8描述根据本发明的用于分支预测单元的操作的示例性方法。将相应于多条分支指令的数据条目存储在BTB的存储器阵列中(100)。使用令人满意的算法逐渐生成每条指令的分支历史数据(101)。从分支历史数据导出每条指令的相应字线选通值(WLGV)(102),然后将其存储在相应的字线选通电路的存储电路中(103)。
数据条目和字线选通值存储后,分支预测单元准备好了接收指令部分,诸如指令地址(104)。对指令部分译码(105)并且选择相应的字线(106)。选择字线之后,所存储的字线选通值有条件地确定是否访问字线的选通部分。“正”字线选通值指示(即,分支指令可能发生的指示)导致被使能的字线访问(108)以及相应数据条目的输出(109)。“负”字线选通值指示(即,分支指令可能不发生的指示)导致不能进一步访问以及存储器的结果输出(110)。上面提及的负指示和正指示将通常相应于特定指令的标识的发生/不发生状态。
前述示例说明了通过利用根据本发明设计的分支预测单元的简易和有效性,该分支预测单元能够接收分支指令并且有条件地使能对存储在BTB中的相应数据条目的访问。仅当相应的分支历史数据指示可能需要数据条目时才从BTB读取该数据条目。具有较低的“发生”分支可能性的指令不会导致对BTB的使能了的读取操作。结果,节省了否则将消耗在不必要的读取操作中的能量。
例如,图9的图图示了使用根据本发明设计的分支预测单元的EEMBC基准仿真(benchmark simulation)运行结果。在沿着水平轴指示的一系列基准例程上,示出了在预测的分支指令比率和实际的分支指令比率之间的比较。该特定仿真揭示出接近40%的分支指令与“不发生”状态相关联,因而有关BTB存储器阵列读取操作的BTB能量消耗可以减少高达40%。
然而,本发明并不以增加的复杂度和减少的运行速率为代价来提供能量节省。当指令在分支预测单元中被接收时,该指令立刻由译码器处理,并且如果被使能的话,则其后立刻产生相应的数据条目输出。在对指令预编码、检索和/或计算该指令的分支历史数据、并且仅在其后产生使能/禁止对BTB存储器阵列的相应读操作的信号的指令的处理过程中没有延迟。在本发明中不需要复杂的额外电路或功能以有条件地使能对BTB存储器阵列的读取操作。
相反,相应的字线选通值“等待”接收BTB中的每条指令。简单字线选通电路中字线选通值的施加使能/禁止对存储与所接收到的指令相应的数据条目的字线的访问。随着每条指令的执行可以很容易地并准确地在字线选通电路中更新字线选通值。
如整个前面的描述中所提及的,就所选择的实施例而言,众多的设计改变、适应性调整、变更都是可能的。在整个前面的描述中使用了术语“优选的”和“优选地”。这样的术语仅指示在教导实施例的环境下的当前优选。这些术语也认可随着技术不断进步,将出现藉之可以有效实现本发明的其它的电路、机制和方法。

Claims (48)

1.一种分支目标缓冲器存储器阵列,包括:
存储器阵列,适于存储数据条目;
字线和相关联的字线选通电路;
该字线选通电路包括存储字线选通值的存储电路;
该字线选通电路响应于字线选通值来使能对数据条目的访问操作。
2.如权利要求1所述的存储器阵列,所述存储器阵列适于关于字线存储数据条目。
3.如权利要求2所述的存储器阵列,其中所述字线选通电路还包括选通逻辑电路。
4.如权利要求3所述的存储器阵列,所述选通逻辑电路响应于施加给字线的字线电压和字线选通值来使能对数据条目的访问操作。
5.如权利要求4所述的存储器阵列,所述选通逻辑电路还响应于写信号。
6.如权利要求4所述的存储器阵列,其中所述访问操作是施加到字线的读操作。
7.如权利要求5所述的存储器阵列,其中所述访问操作是施加到字线的写操作。
8.如权利要求1所述的存储器阵列,其中所述存储器阵列包括非易失存储单元阵列。
9.如权利要求8所述的存储器阵列,其中所述存储器阵列是静态随机访问存储器SRAM阵列。
10.如权利要求9所述的存储器阵列,其中所述存储电路包括1比特静态随机访问存储器SRAM单元。
11.如权利要求2所述的存储器阵列,其中所述数据条目包括分支目标标签和目标地址。
12.如权利要求5所述的存储器阵列,其中所述存储电路包括存储字线选通值的1比特静态随机访问存储器SRAM单元;以及,
其中所述选通逻辑电路包括:
第一逻辑门,其接收写信号和字线选通值作为输入以产生第一逻辑输出;以及,
第二逻辑门,其接收第一逻辑输出和字线电压作为输入以产生第二逻辑信号。
13.如权利要求5所述的存储器阵列,其中所述字线包括接收字线电压的选择字线部分以及相应的选通字线部分。
14.如权利要求13所述的存储器阵列,其中所述选择字线部分和选通字线部分通过字线选通电路电连接。
15.如权利要求12所述的存储器阵列,其中所述字线包括接收字线电压的选择字线部分以及相应的选通字线部分。
16.如权利要求15所述的存储器阵列,其中所述选择字线部分和选通字线部分通过字线选通电路电连接;以及,
其中所述第二逻辑信号包括施加给选通字线部分的字线电压。
17.一种响应于写操作存储数据条目以及响应于读操作输出数据条目的分支目标缓冲器存储器阵列,该存储器阵列包括:
字线选通电路,用于在写操作期间使能对数据条目的访问,以及用于在读操作期间响应于存储在字线选通电路中的字线选通值有条件地使能对数据条目的访问。
18.如权利要求17所述的存储器阵列,其中所述字线选通电路包括:
存储电路,用于存储字线选通值;以及,
选通逻辑电路,其接收写信号和字线选通值作为输入,以在写操作期间使能对数据条目的访问,以及在读操作期间仅基于字线选通值的正指示有条件地使能对数据条目的访问。
19.如权利要求18的存储器阵列,其中所述选通逻辑电路接收字线电压作为输入,以及其中所述选通逻辑电路在读操作期间仅基于字线选通值的正指示和字线电压有条件地使能对数据条目的访问。
20.如权利要求19所述的存储器阵列,其中所述存储器阵列包括易失存储单元阵列。
21.如权利要求20所述的存储器阵列,其中所述存储器阵列是静态随机访问存储器SRAM阵列,且所述存储电路是1比特静态随机访问存储器SRAM单元。
22.一种分支目标缓冲器,包括:
存储器阵列,其包括选通字线,选通字线的每个包括:
选择字线部分;
字线选通电路,其包括用于存储字线选通值的存储电路;以及,
选通字线部分;以及,
译码器,其接收指令部分并且适于响应于指令部分选择选通字线之一。
23.如权利要求22所述的分支目标缓冲器,所述译码器适于将字线电压施加给译码器所选择的选通字线的选择字线部分。
24.如权利要求23所述的分支目标缓冲器,其中所述字线选通电路还包括选通逻辑电路,其接收字线电压和字线选通值作为输入。
25.如权利要求24所述的分支目标缓冲器,所述字线选通电路适于响应于字线电压和字线选通值有条件地使能对译码器所选择的选通字线的选通字线部分的访问操作。
26.如权利要求25所述的分支目标缓冲器,其中所述访问操作是读操作。
27.如权利要求25所述的分支目标缓冲器,所述字线选通电路适于接收写信号作为输入,并且其中所述访问操作是写操作。
28.如权利要求26所述的分支目标缓冲器,其中所述存储器阵列包括静态随机访问存储器SRAM阵列,所述存储电路包括1比特静态随机访问存储器SRAM单元,以及所述选通逻辑电路包括:
或门,其接收写信号和字线选通值作为输入以输出第一逻辑信号;以及,
与门,其接收字线电压和第一逻辑信号作为输入以输出第二逻辑信号。
29.如权利要求28所述的分支目标缓冲器,其中所述第二逻辑信号是施加给由译码器所选择的选通字线的选通字线部分的字线电压。
30.如权利要求22所述的分支目标缓冲器,还包括:
读出放大器,其适于从译码器所选择的选通字线接收数据条目。
31.如权利要求30所述的分支目标缓冲器,其中所述读出放大器包括用于将字线选通值传送给与选通字线相关联的相应存储电路的电路。
32.如权利要求31所述的分支目标缓冲器,其中所述存储器阵列包括静态随机访问存储器SRAM阵列;以及,
其中相应存储电路的每一个包括用于接收字线选通值的1比特静态随机访问存储器SRAM单元。
33.如权利要求32所述的分支目标缓冲器,其中相应字线电路的每个包括:
或门,其接收写信号和来自1比特静态随机访问存储器SRAM单元的字线选通值作为输入以输出第一逻辑信号;以及
与门,其接收字线电压和第一逻辑信号作为输入以输出第二逻辑信号。
34.一种分支预测单元,包括:
分支历史单元,用于存储分支历史数据;
分支预测逻辑,用于接收指令地址,提供预测地址,更新分支历史数据;以及
分支目标缓冲器,用于接收指令地址,并且包括:
存储器阵列,其包括选通字线,每个选通字线存储数据条目并且包括字线选通电路,该字线选通电路包括用于存储从分支历史数据导出的字线选通值的存储电路。
35.如权利要求34所述的分支预测单元,其中所述分支预测逻辑向分支目标缓冲器提供写信号。
36.如权利要求35所述的分支预测单元,其中所述分支历史单元包括状态机,其用于根据指令的分支执行历史计算该指令的分支历史数据。
37.如权利要求36所述的分支预测单元,其中所述分支历史单元包括存储分支历史数据的分支历史表,并且其中所述状态机包括2比特上/下饱和计数器。
38.如权利要求34所述的分支预测单元,其中所述存储器阵列包括静态随机访问存储器SRAM阵列,所述存储电路包括1比特静态随机访问存储器SRAM单元,并且所述字线选通值包括从分支历史数据导出的单个数据比特。
39.如权利要求38所述的分支预测单元,其中所述分支目标缓冲器还包括:
译码器,用于接收指令地址并且响应于指令地址选择选通字线;以及,
读出放大器,其适于从所选择的选通字线接收数据条目,并且包括用于将字线选通值传送到与选通字线相关联的相应字线选通电路的电路。
40.一种处理器,包括:
指令获取单元,用于接收指令并且提供相应的指令地址;
分支预测单元,用于接收指令地址并且向指令获取单元提供预测地址;以及,
指令译码器/执行单元,用于接收指令,提供译码后的指令,响应于译码后的指令的执行提供更新后的地址;
其中所述分支预测单元包括:
分支历史单元,用于存储分支历史数据;
分支预测逻辑,用于接收指令地址和更新后的地址,提供预测地址,并更新分支历史数据;以及,
分支目标缓冲器,用于接收指令地址并且输出数据条目,所述分支目标缓冲器包括:
存储器阵列,其包括选通字线,每个选通字线连接到相应的字线选通电路,该字线选通电路包括用于存储从分支历史数据导出的字线选通值的存储电路。
41.如权利要求40所述的处理器,其中所述指令译码器/执行单元包括多个执行路径,每个执行路径包括译码器和执行单元。
42.如权利要求41所述的处理器,其中所述处理器是超标量处理器。
43.如权利要求42所述的处理器,其中所述处理器是向量处理器或单指令多数据处理器。
44.如权利要求40所述的处理器,其中所述分支预测逻辑向分支目标缓冲器提供写信号。
45.如权利要求44所述的处理器,其中所述分支历史单元包括状态机,其根据指令的分支执行历史计算指令的分支历史数据。
46.如权利要求45所述的处理器,其中所述分支历史单元包括存储分支历史数据的分支历史表。
47.如权利要求40所述的处理器,其中所述存储器阵列包括静态随机访问存储器SRAM阵列,所述存储电路包括1比特静态随机访问存储器SRAM单元,所述字线选通值包括从分支历史数据导出的单个数据比特。
48.如权利要求47所述的处理器,其中所述分支目标缓冲器还包括:
译码器,用于接收指令地址并且响应于指令地址选择选通字线;以及,
读出放大器,用于从所选择的选通字线接收数据条目,并且包括用于将字线选通值传送到与选通字线相关联的相应字线选通电路的电路。
CNB2005100846618A 2004-07-16 2005-07-15 分支目标缓冲器及其使用方法 Active CN100480994C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR1020040055635A KR100591769B1 (ko) 2004-07-16 2004-07-16 분기 예측 정보를 가지는 분기 타겟 버퍼
KR55635/04 2004-07-16
US11/080,986 2005-03-16

Publications (2)

Publication Number Publication Date
CN1725175A CN1725175A (zh) 2006-01-25
CN100480994C true CN100480994C (zh) 2009-04-22

Family

ID=36261628

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100846618A Active CN100480994C (zh) 2004-07-16 2005-07-15 分支目标缓冲器及其使用方法

Country Status (3)

Country Link
US (2) US7471574B2 (zh)
KR (1) KR100591769B1 (zh)
CN (1) CN100480994C (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4281719B2 (ja) * 2005-08-10 2009-06-17 コニカミノルタビジネステクノロジーズ株式会社 ファイル処理装置、ファイル処理方法、およびファイル処理プログラム
KR20070081696A (ko) * 2006-02-13 2007-08-17 삼성전자주식회사 분기 예측 정보를 저장하는 분기 타겟 버퍼 및 그것을포함한 분기 예측 회로
KR101263167B1 (ko) * 2006-02-13 2013-05-09 삼성전자주식회사 메모리 셀에 대한 액세스 정보를 저장하는 반도체 메모리장치
US7787324B2 (en) * 2006-10-13 2010-08-31 Marvell World Trade Ltd. Processor instruction cache with dual-read modes
US8027218B2 (en) 2006-10-13 2011-09-27 Marvell World Trade Ltd. Processor instruction cache with dual-read modes
US8205068B2 (en) * 2008-07-29 2012-06-19 Freescale Semiconductor, Inc. Branch target buffer allocation
JP5423156B2 (ja) * 2009-06-01 2014-02-19 富士通株式会社 情報処理装置及び分岐予測方法
US20130290686A1 (en) * 2011-01-21 2013-10-31 Freescale Semiconductor, Inc. Integrated circuit device and method for calculating a predicate value
EP2549376B1 (en) 2011-07-22 2019-03-13 Telefonaktiebolaget LM Ericsson (publ) Method and apparatus for branch prediction.
WO2013147289A1 (en) * 2012-03-29 2013-10-03 Semiconductor Energy Laboratory Co., Ltd. Processor and electronic device
CN102662640B (zh) * 2012-04-12 2015-04-01 苏州睿云智芯微电子有限公司 双重分支目标缓冲器和分支目标处理系统及处理方法
US8898426B2 (en) 2012-06-11 2014-11-25 International Business Machines Corporation Target buffer address region tracking
US9262169B2 (en) 2012-06-11 2016-02-16 International Business Machines Corporation Branch prediction table install source tracking
US9250909B2 (en) 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9250912B2 (en) 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
CN104123195B (zh) * 2013-04-23 2018-03-13 华为技术有限公司 一种指令清除方法及装置
US10241557B2 (en) 2013-12-12 2019-03-26 Apple Inc. Reducing power consumption in a processor
CN105867884B (zh) * 2016-03-24 2018-06-15 清华大学 一种改进型PAp分支预测方法
US10223123B1 (en) 2016-04-20 2019-03-05 Apple Inc. Methods for partially saving a branch predictor state
US10713054B2 (en) * 2018-07-09 2020-07-14 Advanced Micro Devices, Inc. Multiple-table branch target buffer
US10901743B2 (en) 2018-07-19 2021-01-26 International Business Machines Corporation Speculative execution of both paths of a weakly predicted branch instruction
CN109377936B (zh) * 2018-11-06 2020-06-02 深圳康佳电子科技有限公司 一种led驱动电路及方法
TWI722797B (zh) * 2020-02-17 2021-03-21 財團法人工業技術研究院 記憶體內運算器及其運算方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02278428A (ja) 1989-04-20 1990-11-14 Toshiba Corp 分岐制御方式
JPH07186862A (ja) 1993-12-24 1995-07-25 Ikeda Bussan Co Ltd エアバッグ装置のエアバッグ本体
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US5623615A (en) 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
JP3494484B2 (ja) 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
US5732253A (en) 1994-10-18 1998-03-24 Cyrix Corporation Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches
GB9521980D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Branch target buffer
GB9521977D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory
US5740417A (en) 1995-12-05 1998-04-14 Motorola, Inc. Pipelined processor operating in different power mode based on branch prediction state of branch history bit encoded as taken weakly not taken and strongly not taken states
US6011908A (en) 1996-12-23 2000-01-04 Transmeta Corporation Gated store buffer for an advanced microprocessor
TW357318B (en) 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US5947100A (en) * 1997-04-30 1999-09-07 Anderson; Joel A. Paint ball gun agitator sound trigger and duration control
US5951678A (en) * 1997-07-25 1999-09-14 Motorola, Inc. Method and apparatus for controlling conditional branch execution in a data processor
US6263427B1 (en) 1998-09-04 2001-07-17 Rise Technology Company Branch prediction mechanism
US6366990B1 (en) * 1998-12-14 2002-04-02 Intel Corporation Method and apparatus for software controlled timing of embedded memory
JP2000322257A (ja) 1999-05-10 2000-11-24 Nec Corp 条件分岐命令の投機的実行制御方法
US6647490B2 (en) * 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US6757815B2 (en) 1999-12-23 2004-06-29 Intel Corporation Single array banked branch target buffer
US6859875B1 (en) 2000-06-12 2005-02-22 Freescale Semiconductor, Inc. Processor having selective branch prediction
US6678815B1 (en) 2000-06-27 2004-01-13 Intel Corporation Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end
KR100980076B1 (ko) * 2003-10-24 2010-09-06 삼성전자주식회사 저전력 분기 예측 시스템 및 분기 예측 방법

Also Published As

Publication number Publication date
KR100591769B1 (ko) 2006-06-26
US20080168263A1 (en) 2008-07-10
CN1725175A (zh) 2006-01-25
US7471574B2 (en) 2008-12-30
KR20060006551A (ko) 2006-01-19
US20060092712A1 (en) 2006-05-04
US7609582B2 (en) 2009-10-27

Similar Documents

Publication Publication Date Title
CN100480994C (zh) 分支目标缓冲器及其使用方法
US10248395B2 (en) Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
CN101373427B (zh) 程序执行控制装置
CN100407137C (zh) 推测性地执行程序指令的方法、微处理器及系统
US9836304B2 (en) Cumulative confidence fetch throttling
US8151092B2 (en) Control signal memoization in a multiple instruction issue microprocessor
EP2674858B1 (en) Loop buffer learning
CN105511838A (zh) 处理器及其执行方法
US20130346727A1 (en) Methods and Apparatus to Extend Software Branch Target Hints
US8589665B2 (en) Instruction set architecture extensions for performing power versus performance tradeoffs
CN103488463A (zh) 通过循环结束分支来抑制分支历史寄存器的更新
CN101449238A (zh) 本地和全局分支预测信息存储
CN101763249A (zh) 对非控制流指令减少分支检验
US9110683B2 (en) Predicting branches for vector partitioning loops when processing vector instructions
US20140089647A1 (en) Branch Predictor for Wide Issue, Arbitrarily Aligned Fetch
US7017030B2 (en) Prediction of instructions in a data processing apparatus
CN112241288A (zh) 在硬件中检测条件分支的动态控制流重汇聚点
US7346737B2 (en) Cache system having branch target address cache
KR100977687B1 (ko) 기지의 프로세서 상태에 기초하여 cam 리네이밍레지스터 파일 내의 비교기를 선택적으로 인에이블링하는절전 방법 및 장치
Veidenbaum et al. Low energy, highly-associative cache design for embedded processors
US11379240B2 (en) Indirect branch predictor based on register operands
GB2416412A (en) Branch target buffer memory array with an associated word line and gating circuit, the circuit storing a word line gating value
CN114647596A (zh) 基于上下文的循环分支预测
US6430682B1 (en) Reliable branch predictions for real-time applications
Bielby Ultra low power cooperative branch prediction

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