CN104020982A - 具有高效返回预测能力的分支目标缓冲器 - Google Patents

具有高效返回预测能力的分支目标缓冲器 Download PDF

Info

Publication number
CN104020982A
CN104020982A CN201410069516.1A CN201410069516A CN104020982A CN 104020982 A CN104020982 A CN 104020982A CN 201410069516 A CN201410069516 A CN 201410069516A CN 104020982 A CN104020982 A CN 104020982A
Authority
CN
China
Prior art keywords
irrevocable
entry
return
instruction
data
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
CN201410069516.1A
Other languages
English (en)
Other versions
CN104020982B (zh
Inventor
P·博塔
S·帕塔尔
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.)
Imagination Technologies Ltd
MIPS Tech LLC
Original Assignee
MIPS Technologies 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 MIPS Technologies Inc filed Critical MIPS Technologies Inc
Publication of CN104020982A publication Critical patent/CN104020982A/zh
Application granted granted Critical
Publication of CN104020982B publication Critical patent/CN104020982B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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, 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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, 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

Abstract

提供具有高效返回预测能力的分支目标缓冲器,并提供改善的分支目标缓冲器(BTB)和在具有流水线的微处理器中处理数据的方法。根据各种实施例,提供包含非返回缓冲器、返回缓冲器和多路复用器的BTB。非返回缓冲器被设计为存储多个非返回条目。各非返回条目与非返回型指令对应。返回缓冲器被设计为存储分别与返回型指令对应的多个返回条目。另外,返回缓冲器可产生控制信号。多路复用器也产生控制信号并输出来自非返回缓冲器的数据或者来自返回预测栈(RPS)的数据。多路复用器是从非返回缓冲器还是从RPS返回数据依赖于控制信号。

Description

具有高效返回预测能力的分支目标缓冲器
技术领域
本发明一般涉及微处理器,特别是涉及使用具有分支目标缓冲器(BTB)的流水线的微处理器。
背景技术
BTB一般是与处理器中的流水线相关的存储器的小型高速缓存。BTB被用于通过比较指令地址与存储于BTB中的以前执行的指令地址来预测可能采取的分支的目标。这可节省处理时间,原因是它允许处理器“跳过”计算目标地址的步骤;事实上,它可只是在BTB中查看它。因此,BTB可产生对目标地址的“命中”的频率直接影响指令执行的速度。即,执行的速度直接与BTB可存储的条目的数量有关。常规上,仅有的增加BTB可存储的条目的数量的方式是通过增加缓冲器的尺寸。
发明内容
考虑到空间在现代的微处理器中十分珍贵,会希望在不必增加缓冲器自身的尺寸的情况下提高BTB性能。因此,所需要的是相对于以前的缓冲器具有优化的命中率和改善的性能的改善的BTB。
因而,本公开的实施例涉及针对这些问题得以改善的BTB和处理数据的方法。改善的BTB有利于改善功率利用、加快执行和提高返回预测的效率。根据各种实施例,提供包含非返回缓冲器、返回缓冲器和多路复用器的BTB。非返回缓冲器被设计为存储多个非返回条目。各非返回条目与非返回型指令(例如,无条件跳转、条件分支等)对应。返回缓冲器被设计为存储分别与返回型指令对应的多个返回条目。另外,返回缓冲器可产生控制信号。多路复用器也产生控制信号并输出来自非返回缓冲器的数据或者来自返回预测栈(RPS)的数据。多路复用器是返回来自非返回缓冲器的数据还是来自RPS的数据依赖于控制信号。
根据各种实施例,返回缓冲器确定多个返回条目中是否有某一个包含与指令地址对应的标签。并且,返回缓冲器产生控制信号,以使得该控制信号在返回缓冲器确定标签与指令地址对应时导致多路复用器输出来自RPS的头部的数据,并在确定多个返回条目都不包含与指令地址对应的标签时输出来自非返回缓冲器的数据。非返回缓冲器还可确定多个非返回条目中是否有某一个与指令地址对应。
根据各种实施例,提供通过使用BTB取得地址的方法。根据该方法,接收与指令地址有关的数据。然后可确定存储于返回缓冲器中的多个返回条目中是否有某一个与指令地址对应。可基于预测来输出来自返回预测栈(RPS)的数据和来自非返回缓冲器的数据。
确定返回条目是否与指令地址对应包含确定多个返回条目中是否有某一个包含与指令地址对应的标签。另外,可基于确定产生控制信号。当确定返回条目中的某一个与指令地址对应时,控制信号导致输出来自RPS的数据。相反,当确定返回条目都不与指令地址对应时,可产生控制信号以导致输出来自非返回缓冲器的数据。
附图说明
在这里加入并形成说明书的一部分的附图示出本发明,并与说明一起进一步用于解释本发明的原理并使得本领域技术人员能够实施和使用本发明。
图1是示出根据各种实施例的指令流水线的功能框图。
图2A和图2B示出根据各种实施例的指令流水线的动作。
图3示出根据各种实施例的存储于分支目标缓冲器中的数据。
图4是示出根据各种实施例的取得地址的方法的流程图。
图5是示出根据各种实施例的分支目标缓冲器的功能框图。
图6是示出根据各种实施例的取得地址的方法的流程图。
图7是示出根据各种实施例的取得地址的方法的流程图。
参照附图阅读以下阐述的本发明的实施例的详细描述,本发明的特征和优点变得更加明显,在这些附图中,类似的附图标记始终表示相应的要素。在附图中,类似的附图标记一般表示相同、功能上类似并且/或者结构上类似的要素。要素第一次出现的附图由相应附图标记的最左面的数字表示。
具体实施方式
本发明的实施例的以下的详细描述参照示出示例性实施例的附图。这里描述的实施例涉及低功率微处理器。特别地,在这里描述的处理器由于以下提供的改善的方案而具有使用的功率比现有微处理器少的益处。其它的实施例是可能的,并且,在本说明书的精神和范围内,可对实施例提出修改。因此,详细的描述不意味着限制以下描述的实施例。
本领域技术人员很容易理解,可通过图示的软件、硬件、固件和/或实体的许多不同的实施例实现以下描述的实施例。能够专门控制硬件以实现实施例的任何实际的软件代码不限制于本描述。因此,在描述实施例的动作行为时,可以理解,考虑到这里给出的细节的水平,实施例的修改和变更是可能的。
图1是示出根据各种实施例的用于在微处理器中执行的简化流水线100的功能框图。一般地,可以使用流水线以并行执行几个指令。如图1所示,流水线100可包含指令取得级102、解码级104、执行级106和写入级108。动作(例如,动作O1~O5)可进入流水线100并依次流过各级。并且,在任意给定的时间,可在流水线100的部件(102、104、106和108)中的每一个中存在单独的独立的动作。例如,如图1所示,示出等待进入流水线100的动作O5,在流水线的指令取得级102中示出动作O4。指令取得级102负责基于例如与动作相关的程序计数器取得执行动作(例如,O4)所需要的指令。
图1还示出流水线100的解码级104中的O3。解码级104可执行解码指令并更新寄存器重命名地图(未示出)的功能。在解码过程中,各指令可被赋予指令识别标签并且/或者与指令识别标签相关联。
动作O2中图1中被示为处于流水线100的执行级106中。执行级106负责执行指令并可包含执行该任务所需要的逻辑和/或电路。如图1所示,执行级106执行动作(例如,O1)的结果可通过写入级108被写入到存储器。
图2A示出动作如何“流动”通过流水线100。如图2A所示,在时间1,动作O1被置于流水线100的指令取得级102中。在时间2,O1移动到解码级104并且O2被置于指令取得级102中。在时间3,O1移动到执行级106,O2移动到解码级104,并且O3被置于指令取得级102中。在时间4,O1移动到写入级108,O2移动到执行级106,O3移动到解码级104,并且,O4被置于指令取得级102中。从图2A可以看出,在时间4及以后,各级中具有指令,并且,流水线尽可能高效地动作。但是,当各级在各时间周期中不存在指令时,出现低效率情况。
图2B示出根据各种实施例的引入3个时间周期延迟的流水线“流动”。与图2A同样,动作O1在时间1被置于流水线100的指令取得级102中。但是,在时间2上,存在延迟(由“X”代表),并且没有指令被置于指令取得级102中。但是,O1仍移动到解码级104。在时间3,另一延迟被引入流水线中,并且也没有动作置于指令取得级102中。另外,O1移动到执行级106,从而使解码级104也保持为空。在时间4,另一延迟导致在又一时间周期没有指令被置于指令取得级102中。O1移动到写入级108,从而使得解码级104和执行级106也保持为空。因此,可以看出,三个时间周期延迟意味着流水线在至少6个时间周期(例如,时间周期2~7)低效动作。事实上,即使只引入一个延迟,流水线也会在至少4个时间周期(例如,流水线的长度)以低于全效率的效率动作。因此,可以看出,最好尽可能避免延迟。
可避免延迟的一种方式是使用根据实施例的图3所示的分支目标缓冲器(BTB)302。BTB302可形成指令取得级102的一部分。BTB包含存储多个条目(例如,3041、3042、3043、…、304N)的小型高速缓存存储器。各条目包含例如识别以前执行的指令和最近的目标地址的信息。例如,如图3所示,BTB302包含条目3041、3042、3043、…、304N,使得各条目具有标签部分306T和数据部分306D。在实施例中,标签部分306T包含识别以前执行的指令的信息,并且数据部分306D包含识别相应的以前执行的指令的目标地址的信息。
根据各种实施例,BTB302通过将指令地址与包含其例如3041、3042、3043、…、304N的各条目的数据部分306D进行比较来起作用,以确定条目3041、3042、3043、…、304N中是否有与指令地址对应的任意条目。如果存在匹配(或者,有时称为“命中”),那么该条目的相关数据部分306D可被用于确定分支的目标地址。这为流水线节省了与计算目标地址相关的任何延迟。
图4是示出根据各种实施例的BTB302遵循的处理400的流程图。如图4所示,处理400在步骤402中开始。BTB302在步骤404中接收指令地址404。
指令地址然后与各条目(例如,3041、3042、3043、…、304N)相比较。特别地,根据各种实施例,条目的标签部分306T被用于比较条目与指令地址。
在步骤408中,方法400确定是否存在与指令地址匹配或对应的任意的标签部分306T。如果确定在步骤408中存在匹配,那么BTB302使用数据部分306D以确定指令的适当的目标地址。但是,如果确定在步骤408中不存在匹配,那么强制指令取得器102正常地计算目标地址,根据各种实施例,这种计算可引起延迟。在步骤414中,方法400结束。
当返回型指令是BTB302的一部分时,出现有趣的情况。返回型指令包含寄存器间接分支,并因此可具有动态目标预测。即,对于同一程序计数器,下一取得地址可不同,这依赖于取得和执行返回指令的指令代码路径。返回型指令的这种性能给BTB302尺寸施加了压力。但是,能够将BTB302分成专用返回缓冲器和专用非返回缓冲器以减少这种压力。在图5中示出这种方案。
图5是示出包含BTB502和返回预测栈(RPS)510的系统500的功能框图。BTB502包含返回缓冲器504、非返回缓冲器506和多路复用器508。另外,BTB502具有输入512和输出514。
根据各种实施例,返回缓冲器504被配置为存储与返回型指令对应的多个条目。如图5所示,返回缓冲器504能够保持P个条目,每个条目可保持T位标签数据。条目中的每一个代表某种形式的返回型指令的程序计数器。根据一些实施例,返回缓冲器504中的条目可以不具有相关的目标地址或与它们相关的数据部分306D。返回缓冲器也可被配置为基于接收的指令地址是否与其条目中的某一个对应来产生控制信号516。由于返回缓冲器504仅包含标签且不包含目标地址,因此,来自返回缓冲器的命中能够迅速解决。这可导致更有效的返回预测,这又产生更高的处理速度。
非返回缓冲器506包含与非返回型指令有关的M个条目。在实施例中,各条目包含标签部分506T和数据部分506D。标签部分506T可包含识别以前执行的指令的信息,并且,数据部分506D包含识别相应的以前执行的指令的目标地址的信息。根据一些实施例,非返回缓冲器506中的条目的数量M可比返回缓冲器504中的条目的数量P多。
根据各种实施例,多路复用器508在从非返回缓冲器506接收的数据和从RPS510接收的数据之间进行多路复用。多路复用器508可例如从返回缓冲器504接收控制信号516,并且基于控制信号向输出514发送非返回数据506D或来自RPS510的数据。在返回缓冲器具有与输入指令地址对应的条目时,返回缓冲器504产生导致多路复用器508输出来自RPS510的数据的控制信号516。相反,当在返回缓冲器504中不存在与输入指令地址对应的条目时,返回缓冲器504产生导致多路复用器508输出来自非返回缓冲器506的数据506D的控制信号516。
返回预测栈(RPS)510包含用作用于预测返回指令的机制的多个条目。在实施例中,RPS510中的各条目与返回型指令对应,并包含相关指令的目标地址。如上所述,为了提高来自返回缓冲器504并由此来自BTB502的命中速度,返回缓冲器的P个条目都不包含相应指令的目标地址。事实上,返回型指令的目标地址存储于RPS510中。因此,当在返回缓冲器504中存在命中时,从RPS510的头部取得目标地址。这是在出现这种命中时多路复用器508可接收到导致其输出来自RPS的数据(例如,目标地址)的控制信号516的原因。
图6示出根据各种实施例的通过使用BTB302取得目标地址的方法600。方法在步骤602中开始。在步骤604中,接收指令地址以确定该指令地址是否处于BTB302中。
在步骤606中,方法确定接收的指令地址是否处于返回缓冲器504中。根据各种实施例,可通过确定是否存在存储于返回缓冲器504中的任意标签与接收的指令地址对应,来确定接收的地址是否处于返回缓冲器504中。
如果在步骤606中确定指令地址与返回缓冲器504中的某一个条目对应,那么,在步骤608中,在返回缓冲器具有与输入指令地址对应的条目时,返回缓冲器504产生导致多路复用器508输出来自RPS510的数据的控制信号516。
在步骤610中,可基于控制信号输出适当的数据。即,由于返回缓冲器504检测到指令地址与其条目中的某一个对应(例如,“命中”),因此,返回缓冲器产生适当的控制信号以导致多路复用器508输出来自RPS510的数据。来自RPS510的数据与适于指令地址的目标地址对应。一旦通过多路复用器508输出来自RPS510的数据,处理就可在步骤612中结束。
但是,如果在步骤606中确定指令地址不与返回缓冲器中的条目对应,那么在步骤614中确定是否存在非返回缓冲器506中的任意条目与指令地址对应。根据各种实施例,可通过比较非返回缓冲器的标签部分506T与指令地址以确定是否存在相应的条目,来进行这种确定。
如果确定指令地址与非返回缓冲器506中的条目中的某一个对应(例如,如果存在“命中”),那么,在步骤616中,可产生控制信号以输出来自非返回缓冲器506的数据。在步骤610中,多路复用器基于控制信号输出来自非返回缓冲器506的数据506D
如果在步骤614中确定在非返回缓冲器506中不存在“命中”,那么指令取得级102必须计算目标地址并且如上面描述的那样引起延迟。方法600在步骤612中结束。
方法600示出当在步骤606在返回缓冲器中不存在命中时确定是否在非返回缓冲器中存在“命中”。但是,根据各种实施例,也可以简单地在非返回缓冲器中假定“命中”。图7示出这种方案。
图7是示出根据各种实施例的取得目标地址的方法700的流程图。方法在步骤702中开始。在步骤704中,接收指令地址以确定该指令地址是否处于BTB302中。
在步骤706中,方法确定接收的指令地址是否处于返回缓冲器504中。根据各种实施例,可通过确定是否存在存储于返回缓冲器504中的任意标签与接收的指令地址对应,来确定接收的地址是否处于返回缓冲器504中。
如果在步骤706中确定指令地址与返回缓冲器504中的条目中的某一个对应,那么,在步骤708中,当返回缓冲器具有与输入指令地址对应的条目时,返回缓冲器504产生导致多路复用器508输出来自RPS510的数据的控制信号516。
在步骤710中,可基于控制信号输出适当的数据。即,由于返回缓冲器504检测到指令地址与其条目中的某一个对应(例如,“命中”),因此返回缓冲器产生适当的控制信号以导致多路复用器508输出来自RPS510的数据。来自RPS510的数据与适于指令地址的目标地址对应。一旦通过多路复用器508输出来自RPS510的数据,处理就在步骤712中结束。
如果在步骤706中确定指令地址不与返回缓冲器504中的条目对应,那么可假定非返回缓冲器将具有命中并且可基于该假定设定控制信号。因此,控制信号516可被设定,以导致多路复用器508输出来自非返回缓冲器506的506D。并且,在步骤712中,可输出适当的数据。
虽然以上描述了本发明的各种实施例,但应理解,它们是作为例子而不是限制给出的。计算机领域的技术人员很容易理解,在不背离本发明的精神和范围的情况下,可在其中提出形式和细节的各种变化。并且,应当理解,是这里提供的本发明的详细的描述而不是发明内容和摘要部分要被用于解释权利要求。发明内容和摘要部分可阐述发明人设想的本发明的所有示例性实施例中的一个或更多个而不是其全部。
例如,除了使用硬件的实施方式(例如,在中央处理单元(“CPU”)、微处理器、微控制器、数字信号处理器、处理器核、片上系统(“SOC”)或任何其它可编程或电子装置内或者与其耦合)以外,也可通过例如设置在被配置为存储软件的计算机可用(例如,可读)介质中的软件(例如,以诸如源、对象或机器语言等任何形式设置的计算机可读代码、程序代码、指令和/或数据)来实现实施方式。这种软件可启用例如在这里描述的装置和方法的功能、制造、建模、模拟、描述和/或测试。例如,可通过使用一般编程语言(例如,C、C++)、GDSII数据库、包含Verilog HDL、VHDL和SystemC寄存器转换级(RTL)等的硬件描述语言(HDL)或其它可用程序、数据库和/或电路(即,电路原理图)捕获工具来实现它。实施例可被设置在包含半导体、磁盘、光盘(例如,CD-ROM、DVD-ROM等)的任何已知的非暂时性计算机可用介质中。
应当理解,在这里描述的装置和方法实施例可包含于诸如微处理器核(例如,以HDL体现)的半导体IP核中并在集成电路的制造中被转换成硬件。另外,在这里描述的装置和方法可体现为硬件和软件的组合。因此,本发明不应通过上述示例性实施例中的任一个被限定,而应仅根据以下的权利要求和它们的等同被限定。应当理解,可通过启用例如为上述的部件的各种软件例程、模块、要素或指令的功能的硬件部件或者与其协作,实现或制造利用硬件和软件的组合的实施例。
以上借助于示出特定功能及其关系的实现的功能构建块描述了这里的实施例。这里为了便于描述任意地限定了这些功能构建块的边界。只要适当地执行特定功能及其关系,就可限定替代性的边界。
特定实施例的以上描述如此彻底地揭示了本发明的一般本质,以至于其它人在不背离本发明的一般概念的情况下不通过过多的实验就可通过应用本领域中的知识很容易地修改和/或调整诸如特定实施例的各种应用。因此,基于这里给出的教导和指导,这些调整和修改要处于公开的实施例的意思和等同范围内。应当理解,这里的措词或术语是为了描述而非限制,使得要由本领域技术人员鉴于这些教导和指导解释本说明书的术语或措词。

Claims (20)

1.一种分支目标缓冲器BTB,包括:
非返回缓冲器,被配置为存储多个非返回条目,其中每个非返回条目与非返回型指令对应;
返回缓冲器,被配置为存储多个返回条目,并且进一步被配置为产生控制信号,其中每个返回条目与返回型指令对应;和
多路复用器,被配置为接收产生的控制信号并基于控制信号输出来自非返回缓冲器的数据或者来自返回预测栈RPS的数据。
2.根据权利要求1的BTB,其中,返回缓冲器进一步被配置为确定多个返回条目中是否有某一个包含与指令地址对应的标签。
3.根据权利要求2的BTB,其中,返回缓冲器进一步被配置为响应于确定多个返回条目中的某一个包含与指令地址对应的标签而产生控制信号,以使得该控制信号导致多路复用器输出来自RPS的数据。
4.根据权利要求2的BTB,其中,返回缓冲器进一步被配置为响应于确定多个返回条目都不包含与指令地址对应的标签而产生控制信号,以使得该控制信号导致多路复用器输出来自非返回缓冲器的数据。
5.根据权利要求1的BTB,其中,非返回缓冲器被配置为存储数量比返回缓冲器多的条目。
6.根据权利要求1的BTB,其中,多个非返回条目包含与非返回型指令对应的标签部分和数据部分。
7.根据权利要求1的BTB,其中,多个返回条目包含代表返回型指令的程序计数器的标签。
8.根据权利要求1的BTB,其中,非返回缓冲器包含标签部分和数据部分。
9.根据权利要求1的BTB,其中,非返回缓冲器被配置为确定多个非返回条目中是否有某一个与指令地址对应。
10.根据权利要求1的BTB,其中,返回条目不包含目标地址。
11.一种通过使用分支目标缓冲器BTB取得地址的方法,包括:
接收与指令地址有关的数据;
确定存储于返回缓冲器中的多个返回条目中是否有某一个与指令地址对应;
基于所述确定输出来自返回预测栈RPS和非返回缓冲器的数据。
12.根据权利要求11的方法,其中,所述确定包括多个返回条目中是否有某一个包含与指令地址对应的标签。
13.根据权利要求11的方法,还包括基于所述确定产生控制信号。
14.根据权利要求13的方法,还包括当确定多个返回条目中的某一个包含与指令地址对应的标签时,基于产生的控制信号输出来自RPS的数据。
15.根据权利要求13的方法,还包括当确定多个返回条目都不包含与指令地址对应的标签时,基于产生的控制信号输出来自非返回缓冲器的数据。
16.根据权利要求11的方法,还包括在非返回缓冲器中存储多个非返回条目,其中,各条目与非返回型指令对应。
17.根据权利要求16的方法,还包括确定多个非返回条目中的某一个与指令地址对应。
18.根据权利要求16的方法,其中,非返回条目中的每一个包含标签部分和数据部分。
19.根据权利要求11的方法,其中,多个返回条目中的每一个包含代表返回型指令的程序计数器的标签。
20.根据权利要求11的方法,其中,返回条目不包含目标地址。
CN201410069516.1A 2013-03-01 2014-02-28 具有高效返回预测能力的分支目标缓冲器 Expired - Fee Related CN104020982B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/782,600 US20140250289A1 (en) 2013-03-01 2013-03-01 Branch Target Buffer With Efficient Return Prediction Capability
US13/782,600 2013-03-01

Publications (2)

Publication Number Publication Date
CN104020982A true CN104020982A (zh) 2014-09-03
CN104020982B CN104020982B (zh) 2018-06-15

Family

ID=50482770

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410069516.1A Expired - Fee Related CN104020982B (zh) 2013-03-01 2014-02-28 具有高效返回预测能力的分支目标缓冲器

Country Status (4)

Country Link
US (1) US20140250289A1 (zh)
CN (1) CN104020982B (zh)
DE (1) DE102014002898A1 (zh)
GB (1) GB2512732A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111886580A (zh) * 2018-03-29 2020-11-03 Arm有限公司 用于控制分支预测的装置和方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099849B2 (en) * 2016-09-01 2021-08-24 Oracle International Corporation Method for reducing fetch cycles for return-type instructions
US10846089B2 (en) 2017-08-31 2020-11-24 MIPS Tech, LLC Unified logic for aliased processor instructions
US11055098B2 (en) * 2018-07-24 2021-07-06 Advanced Micro Devices, Inc. Branch target buffer with early return prediction
US11080062B2 (en) 2019-01-12 2021-08-03 MIPS Tech, LLC Address manipulation using indices and tags
US20220197657A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Segmented branch target buffer based on branch instruction type

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768576A (en) * 1994-01-04 1998-06-16 Intel Corporation Method and apparatus for predicting and handling resolving return from subroutine instructions in a computer processor
US5978909A (en) * 1997-11-26 1999-11-02 Intel Corporation System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer
US6021489A (en) * 1997-06-30 2000-02-01 Intel Corporation Apparatus and method for sharing a branch prediction unit in a microprocessor implementing a two instruction set architecture
US6253315B1 (en) * 1998-08-06 2001-06-26 Intel Corporation Return address predictor that uses branch instructions to track a last valid return address
US6279106B1 (en) * 1998-09-21 2001-08-21 Advanced Micro Devices, Inc. Method for reducing branch target storage by calculating direct branch targets on the fly
CN1397880A (zh) * 2001-05-04 2003-02-19 智慧第一公司 附有第二预测装置的假想分支目标地址高速缓存
CN102112964A (zh) * 2008-07-29 2011-06-29 飞思卡尔半导体公司 分支目标缓存器分配

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5964868A (en) * 1996-05-15 1999-10-12 Intel Corporation Method and apparatus for implementing a speculative return stack buffer
US5850543A (en) * 1996-10-30 1998-12-15 Texas Instruments Incorporated Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return
US5935238A (en) * 1997-06-19 1999-08-10 Sun Microsystems, Inc. Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US6609194B1 (en) * 1999-11-12 2003-08-19 Ip-First, Llc Apparatus for performing branch target address calculation based on branch type
US6721876B1 (en) * 2000-05-25 2004-04-13 Advanced Micro Devices, Inc. Branch predictor index generation using varied bit positions or bit order reversal
JP3805339B2 (ja) * 2001-06-29 2006-08-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 分岐目標を予測する方法、プロセッサ、及びコンパイラ
US7266676B2 (en) * 2003-03-21 2007-09-04 Analog Devices, Inc. Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
JP2006040173A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd 分岐予測装置および分岐予測方法
US7409535B2 (en) * 2005-04-20 2008-08-05 International Business Machines Corporation Branch target prediction for multi-target branches by identifying a repeated pattern
US8127119B2 (en) * 2008-12-05 2012-02-28 The Board Of Regents Of The University Of Texas System Control-flow prediction using multiple independent predictors
US20110078425A1 (en) * 2009-09-25 2011-03-31 Shah Manish K Branch prediction mechanism for predicting indirect branch targets

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768576A (en) * 1994-01-04 1998-06-16 Intel Corporation Method and apparatus for predicting and handling resolving return from subroutine instructions in a computer processor
US6021489A (en) * 1997-06-30 2000-02-01 Intel Corporation Apparatus and method for sharing a branch prediction unit in a microprocessor implementing a two instruction set architecture
US5978909A (en) * 1997-11-26 1999-11-02 Intel Corporation System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer
US6253315B1 (en) * 1998-08-06 2001-06-26 Intel Corporation Return address predictor that uses branch instructions to track a last valid return address
US6279106B1 (en) * 1998-09-21 2001-08-21 Advanced Micro Devices, Inc. Method for reducing branch target storage by calculating direct branch targets on the fly
CN1397880A (zh) * 2001-05-04 2003-02-19 智慧第一公司 附有第二预测装置的假想分支目标地址高速缓存
CN102112964A (zh) * 2008-07-29 2011-06-29 飞思卡尔半导体公司 分支目标缓存器分配

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111886580A (zh) * 2018-03-29 2020-11-03 Arm有限公司 用于控制分支预测的装置和方法

Also Published As

Publication number Publication date
US20140250289A1 (en) 2014-09-04
CN104020982B (zh) 2018-06-15
GB201403301D0 (en) 2014-04-09
GB2512732A (en) 2014-10-08
DE102014002898A1 (de) 2014-09-04

Similar Documents

Publication Publication Date Title
CN104020982A (zh) 具有高效返回预测能力的分支目标缓冲器
US9715389B2 (en) Dependent instruction suppression
US9817667B2 (en) Techniques for scheduling operations at an instruction pipeline
TW201128534A (en) Method and system for generating software transaction-level modeling (TLM) model
CN101329638A (zh) 程序代码的并行性的分析方法和系统
CN116126333A (zh) 自动化编译的系统和方法
WO2016140756A1 (en) Register renaming in multi-core block-based instruction set architecture
CN105408859A (zh) 用于指令调度的方法和系统
US11636122B2 (en) Method and apparatus for data mining from core traces
US9342334B2 (en) Simulating vector execution
US20140297996A1 (en) Multiple hash table indexing
EP3335109A1 (en) Determining prefetch instructions based on instruction encoding
US9529654B2 (en) Recoverable and fault-tolerant CPU core and control method thereof
JP5514211B2 (ja) 分岐オーバーライドを用いたプロセッサ実行のシミュレーション
CN103098058A (zh) 根据算法和规格的自动最佳集成电路生成器
KR20140068863A (ko) 스케일링가능한 병렬 프로세서를 위한 시스템, 방법 및 장치
CN101561833B (zh) 专用指令集处理器的设计方法
US7110934B2 (en) Analysis of the performance of a portion of a data processing system
US11782897B2 (en) System and method for multiplexer tree indexing
US7308548B2 (en) Processor organizing apparatus and method for organize a pipeline processor
US20170115973A1 (en) Operating method of semiconductor device and semiconductor system
US9330216B2 (en) Integrated circuit design synthesis using slack diagrams
US9652305B2 (en) Tracking source availability for instructions in a scheduler instruction queue
US11048843B1 (en) Dynamic netlist modification of compacted data arrays in an emulation system
Kawashima et al. Register port prediction for a banked register file

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: American California

Patentee after: Imagination Technologies Ltd.

Address before: American California

Patentee before: Imagination Technology Co.,Ltd.

Address after: American California

Patentee after: Imagination Technology Co.,Ltd.

Address before: American California

Patentee before: MIPS Technologies, Inc.

CP01 Change in the name or title of a patent holder
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180615

Termination date: 20200228

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