具有高效返回预测能力的分支目标缓冲器的制造方法

文档序号:6539016阅读:207来源:国知局
具有高效返回预测能力的分支目标缓冲器的制造方法
【专利摘要】提供具有高效返回预测能力的分支目标缓冲器,并提供改善的分支目标缓冲器(BTB)和在具有流水线的微处理器中处理数据的方法。根据各种实施例,提供包含非返回缓冲器、返回缓冲器和多路复用器的BTB。非返回缓冲器被设计为存储多个非返回条目。各非返回条目与非返回型指令对应。返回缓冲器被设计为存储分别与返回型指令对应的多个返回条目。另外,返回缓冲器可产生控制信号。多路复用器也产生控制信号并输出来自非返回缓冲器的数据或者来自返回预测栈(RPS)的数据。多路复用器是从非返回缓冲器还是从RPS返回数据依赖于控制信号。
【专利说明】具有高效返回预测能力的分支目标缓冲器
【技术领域】
[0001]本发明一般涉及微处理器,特别是涉及使用具有分支目标缓冲器(BTB)的流水线的微处理器。
【背景技术】
[0002]BTB 一般是与处理器中的流水线相关的存储器的小型高速缓存。BTB被用于通过比较指令地址与存储于BTB中的以前执行的指令地址来预测可能采取的分支的目标。这可节省处理时间,原因是它允许处理器“跳过”计算目标地址的步骤;事实上,它可只是在BTB中查看它。因此,BTB可产生对目标地址的“命中”的频率直接影响指令执行的速度。即,执行的速度直接与BTB可存储的条目的数量有关。常规上,仅有的增加BTB可存储的条目的数量的方式是通过增加缓冲器的尺寸。

【发明内容】

[0003]考虑到空间在现代的微处理器中十分珍贵,会希望在不必增加缓冲器自身的尺寸的情况下提高BTB性能。因此,所需要的是相对于以前的缓冲器具有优化的命中率和改善的性能的改善的BTB。
[0004]因而,本公开的实施例涉及针对这些问题得以改善的BTB和处理数据的方法。改善的BTB有利于改善功率利用、加快执行和提高返回预测的效率。根据各种实施例,提供包含非返回缓冲器、返回缓冲器和多路复用器的BTB。非返回缓冲器被设计为存储多个非返回条目。各非返回条目与非返回型指令(例如,无条件跳转、条件分支等)对应。返回缓冲器被设计为存储分别与返回型指令对应的多个返回条目。另外,返回缓冲器可产生控制信号。多路复用器也产生控制信号并输出来自非返回缓冲器的数据或者来自返回预测栈(RPS)的数据。多路复用器是返回来自非返回缓冲器的数据还是来自RPS的数据依赖于控制信号。
[0005]根据各种实施例,返回缓冲器确定多个返回条目中是否有某一个包含与指令地址对应的标签。并且,返回缓冲器产生控制信号,以使得该控制信号在返回缓冲器确定标签与指令地址对应时导致多路复用器输出来自RPS的头部的数据,并在确定多个返回条目都不包含与指令地址对应的标签时输出来自非返回缓冲器的数据。非返回缓冲器还可确定多个非返回条目中是否有某一个与指令地址对应。
[0006]根据各种实施例,提供通过使用BTB取得地址的方法。根据该方法,接收与指令地址有关的数据。然后可确定存储于返回缓冲器中的多个返回条目中是否有某一个与指令地址对应。可基于预测来输出来自返回预测栈(RPS)的数据和来自非返回缓冲器的数据。
[0007]确定返回条目是否与指令地址对应包含确定多个返回条目中是否有某一个包含与指令地址对应的标签。另外,可基于确定产生控制信号。当确定返回条目中的某一个与指令地址对应时,控制信号导致输出来自RPS的数据。相反,当确定返回条目都不与指令地址对应时,可产生控制信号以导致输出来自非返回缓冲器的数据。【专利附图】

【附图说明】
[0008]在这里加入并形成说明书的一部分的附图示出本发明,并与说明一起进一步用于解释本发明的原理并使得本领域技术人员能够实施和使用本发明。
[0009]图1是示出根据各种实施例的指令流水线的功能框图。
[0010]图2A和图2B示出根据各种实施例的指令流水线的动作。
[0011]图3示出根据各种实施例的存储于分支目标缓冲器中的数据。
[0012]图4是示出根据各种实施例的取得地址的方法的流程图。
[0013]图5是示出根据各种实施例的分支目标缓冲器的功能框图。
[0014]图6是示出根据各种实施例的取得地址的方法的流程图。
[0015]图7是示出根据各种实施例的取得地址的方法的流程图。
[0016]参照附图阅读以下阐述的本发明的实施例的详细描述,本发明的特征和优点变得更加明显,在这些附图中,类似的附图标记始终表示相应的要素。在附图中,类似的附图标记一般表示相同、功能上类似并且/或者结构上类似的要素。要素第一次出现的附图由相应附图标记的最左面的数字表示。
【具体实施方式】
[0017]本发明的实施例的以下的详细描述参照示出示例性实施例的附图。这里描述的实施例涉及低功率微处理器。特别地,在这里描述的处理器由于以下提供的改善的方案而具有使用的功率比现有微处理器少的益处。其它的实施例是可能的,并且,在本说明书的精神和范围内,可对实施例提出修改。因此,详细的描述不意味着限制以下描述的实施例。
[0018]本领域技术人员很容易理解,可通过图示的软件、硬件、固件和/或实体的许多不同的实施例实现以下描述的实施例。能够专门控制硬件以实现实施例的任何实际的软件代码不限制于本描述。因此,在描述实施例的动作行为时,可以理解,考虑到这里给出的细节的水平,实施例的修改和变更是可能的。
[0019]图1是示出根据各种实施例的用于在微处理器中执行的简化流水线100的功能框图。一般地,可以使用流水线以并行执行几个指令。如图1所示,流水线100可包含指令取得级102、解码级104、执行级106和写入级108。动作(例如,动作01?05)可进入流水线100并依次流过各级。并且,在任意给定的时间,可在流水线100的部件(102、104、106和108)中的每一个中存在单独的独立的动作。例如,如图1所示,示出等待进入流水线100的动作05,在流水线的指令取得级102中示出动作04。指令取得级102负责基于例如与动作相关的程序计数器取得执行动作(例如,04)所需要的指令。
[0020]图1还示出流水线100的解码级104中的03。解码级104可执行解码指令并更新寄存器重命名地图(未示出)的功能。在解码过程中,各指令可被赋予指令识别标签并且/或者与指令识别标签相关联。
[0021]动作02中图1中被示为处于流水线100的执行级106中。执行级106负责执行指令并可包含执行该任务所需要的逻辑和/或电路。如图1所示,执行级106执行动作(例如,01)的结果可通过写入级108被写入到存储器。
[0022]图2A示出动作如何“流动”通过流水线100。如图2A所示,在时间1,动作01被置于流水线100的指令取得级102中。在时间2,01移动到解码级104并且02被置于指令取得级102中。在时间3,Ol移动到执行级106,02移动到解码级104,并且03被置于指令取得级102中。在时间4,01移动到写入级108,02移动到执行级106,03移动到解码级104,并且,04被置于指令取得级102中。从图2A可以看出,在时间4及以后,各级中具有指令,并且,流水线尽可能高效地动作。但是,当各级在各时间周期中不存在指令时,出现低效率情况。
[0023]图2B示出根据各种实施例的引入3个时间周期延迟的流水线“流动”。与图2A同样,动作01在时间I被置于流水线100的指令取得级102中。但是,在时间2上,存在延迟(由“X”代表),并且没有指令被置于指令取得级102中。但是,01仍移动到解码级104。在时间3,另一延迟被引入流水线中,并且也没有动作置于指令取得级102中。另外,01移动到执行级106,从而使解码级104也保持为空。在时间4,另一延迟导致在又一时间周期没有指令被置于指令取得级102中。01移动到写入级108,从而使得解码级104和执行级106也保持为空。因此,可以看出,三个时间周期延迟意味着流水线在至少6个时间周期(例如,时间周期2~7)低效动作。事实上,即使只引入一个延迟,流水线也会在至少4个时间周期(例如,流水线的长度)以低于全效率的效率动作。因此,可以看出,最好尽可能避免延迟。
[0024]可避免延迟的一种方式是使用根据实施例的图3所示的分支目标缓冲器(BTB)302。BTB302可形成指令取得级102的一部分。BTB包含存储多个条目(例如,304^304、3043、…、304N)的小型高速缓存存储器。各条目包含例如识别以前执行的指令和最近的目标地址的信息。例如,如图3所示,BTB302包含条目304^304^3043^…、304N,使得各条目具有标签部分306τ和数据部分306d。在实施例中,标签部分306τ包含识别以前执行的指令的信息,并且数据部分306d包含识别相应的以前执行的指令的目标地址的信息。
[0025]根据各种实施例,BTB302通过将指令地址与包含其例如304^304^304^...、304N的各条目的数据部分306D进 行比较来起作用,以确定条目30^30^30^…、304N中是否有与指令地址对应的任意条目。如果存在匹配(或者,有时称为“命中”),那么该条目的相关数据部分306d可被用于确定分支的目标地址。这为流水线节省了与计算目标地址相关的任何延迟。
[0026]图4是示出根据各种实施例的BTB302遵循的处理400的流程图。如图4所示,处理400在步骤402中开始。BTB302在步骤404中接收指令地址404。
[0027]指令地址然后与各条目(例如,30^30^30^…、304N)相比较。特别地,根据各种实施例,条目的标签部分306τ被用于比较条目与指令地址。
[0028]在步骤408中,方法400确定是否存在与指令地址匹配或对应的任意的标签部分306τ。如果确定在步骤408中存在匹配,那么ΒΤΒ302使用数据部分306D以确定指令的适当的目标地址。但是,如果确定在步骤408中不存在匹配,那么强制指令取得器102正常地计算目标地址,根据各种实施例,这种计算可引起延迟。在步骤414中,方法400结束。
[0029]当返回型指令是BTB302的一部分时,出现有趣的情况。返回型指令包含寄存器间接分支,并因此可具有动态目标预测。即,对于同一程序计数器,下一取得地址可不同,这依赖于取得和执行返回指令的指令代码路径。返回型指令的这种性能给BTB302尺寸施加了压力。但是,能够将BTB302分成专用返回缓冲器和专用非返回缓冲器以减少这种压力。在图5中示出这种方案。
[0030]图5是示出包含BTB502和返回预测栈(RPS)510的系统500的功能框图。BTB502包含返回缓冲器504、非返回缓冲器506和多路复用器508。另外,BTB502具有输入512和输出514。
[0031]根据各种实施例,返回缓冲器504被配置为存储与返回型指令对应的多个条目。如图5所示,返回缓冲器504能够保持P个条目,每个条目可保持T位标签数据。条目中的每一个代表某种形式的返回型指令的程序计数器。根据一些实施例,返回缓冲器504中的条目可以不具有相关的目标地址或与它们相关的数据部分306d。返回缓冲器也可被配置为基于接收的指令地址是否与其条目中的某一个对应来产生控制信号516。由于返回缓冲器504仅包含标签且不包含目标地址,因此,来自返回缓冲器的命中能够迅速解决。这可导致更有效的返回预测,这又产生更高的处理速度。
[0032]非返回缓冲器506包含与非返回型指令有关的M个条目。在实施例中,各条目包含标签部分506τ和数据部分506d。标签部分506τ可包含识别以前执行的指令的信息,并且,数据部分506D包含识别相应的以前执行的指令的目标地址的信息。根据一些实施例,非返回缓冲器506中的条目的数量M可比返回缓冲器504中的条目的数量P多。
[0033]根据各种实施例,多路复用器508在从非返回缓冲器506接收的数据和从RPS510接收的数据之间进行多路复用。多路复用器508可例如从返回缓冲器504接收控制信号516,并且基于控制信号向输出514发送非返回数据506D或来自RPS510的数据。在返回缓冲器具有与输入指令地址对应的条目时,返回缓冲器504产生导致多路复用器508输出来自RPS510的数据的控制信号516。相反,当在返回缓冲器504中不存在与输入指令地址对应的条目时,返回缓冲器504产生导致多路复用器508输出来自非返回缓冲器506的数据506D的控制信号516。
[0034]返回预测栈(RPS) 510包含用作用于预测返回指令的机制的多个条目。在实施例中,RPS510中的各条目与返回型指令对应,并包含相关指令的目标地址。如上所述,为了提高来自返回缓冲器504并由此来自BTB502的命中速度,返回缓冲器的P个条目都不包含相应指令的目标地址。事实上,返回型指令的目标地址存储于RPS510中。因此,当在返回缓冲器504中存在命中时,从RPS510的头部取得目标地址。这是在出现这种命中时多路复用器508可接收到导致其输出来自RPS的数据(例如,目标地址)的控制信号516的原因。
[0035]图6示出根据各种实施例的通过使用BTB302取得目标地址的方法600。方法在步骤602中开始。在步骤604中,接收指令地址以确定该指令地址是否处于BTB302中。
[0036]在步骤606中,方法确定接收的指令地址是否处于返回缓冲器504中。根据各种实施例,可通过确定是否存在存储于返回缓冲器504中的任意标签与接收的指令地址对应,来确定接收的地址是否处于返回缓冲器504中。
[0037]如果在步骤606中确定指令地址与返回缓冲器504中的某一个条目对应,那么,在步骤608中,在返回缓冲器具有与输入指令地址对应的条目时,返回缓冲器504产生导致多路复用器508输出来自RPS510的数据的控制信号516。
[0038]在步骤610中,可基于控制信号输出适当的数据。即,由于返回缓冲器504检测到指令地址与其条目中的某一个对应(例如,“命中”),因此,返回缓冲器产生适当的控制信号以导致多路复用器508输出来自RPS510的数据。来自RPS510的数据与适于指令地址的目标地址对应。一旦通过多路复用器508输出来自RPS510的数据,处理就可在步骤612中结束。[0039]但是,如果在步骤606中确定指令地址不与返回缓冲器中的条目对应,那么在步骤614中确定是否存在非返回缓冲器506中的任意条目与指令地址对应。根据各种实施例,可通过比较非返回缓冲器的标签部分506τ与指令地址以确定是否存在相应的条目,来进行这种确定。
[0040]如果确定指令地址与非返回缓冲器506中的条目中的某一个对应(例如,如果存在“命中”),那么,在步骤616中,可产生控制信号以输出来自非返回缓冲器506的数据。在步骤610中,多路复用器基于控制信号输出来自非返回缓冲器506的数据506d。
[0041]如果在步骤614中确定在非返回缓冲器506中不存在“命中”,那么指令取得级102必须计算目标地址并且如上面描述的那样引起延迟。方法600在步骤612中结束。
[0042]方法600示出当在步骤606在返回缓冲器中不存在命中时确定是否在非返回缓冲器中存在“命中”。但是,根据各种实施例,也可以简单地在非返回缓冲器中假定“命中”。图7示出这种方案。
[0043]图7是示出根据各种实施例的取得目标地址的方法700的流程图。方法在步骤702中开始。在步骤704中,接收指令地址以确定该指令地址是否处于BTB302中。
[0044]在步骤706中,方法确定接收的指令地址是否处于返回缓冲器504中。根据各种实施例,可通过确定是否存在存储于返回缓冲器504中的任意标签与接收的指令地址对应,来确定接收的地址是否处于返回缓冲器504中。
[0045]如果在步骤706中确定指令地址与返回缓冲器504中的条目中的某一个对应,那么,在步骤708中,当返回缓冲器具有与输入指令地址对应的条目时,返回缓冲器504产生导致多路复用器508输出来自RPS510的数据的控制信号516。
[0046]在步骤710中,可基于控制信号输出适当的数据。即,由于返回缓冲器504检测到指令地址与其条目中的某一个对应(例如,“命中”),因此返回缓冲器产生适当的控制信号以导致多路复用器508输出来自RPS510的数据。来自RPS510的数据与适于指令地址的目标地址对应。一旦通过多路复用器508输出来自RPS510的数据,处理就在步骤712中结束。
[0047]如果在步骤706中确定指令地址不与返回缓冲器504中的条目对应,那么可假定非返回缓冲器将具有命中并且可基于该假定设定控制信号。因此,控制信号516可被设定,以导致多路复用器508输出来自非返回缓冲器506的506d。并且,在步骤712中,可输出适当的数据。
[0048]虽然以上描述了本发明的各种实施例,但应理解,它们是作为例子而不是限制给出的。计算机领域的技术人员很容易理解,在不背离本发明的精神和范围的情况下,可在其中提出形式和细节的各种变化。并且,应当理解,是这里提供的本发明的详细的描述而不是
【发明内容】
和摘要部分要被用于解释权利要求。
【发明内容】
和摘要部分可阐述发明人设想的本发明的所有示例性实施例中的一个或更多个而不是其全部。
[0049]例如,除了使用硬件的实施方式(例如,在中央处理单元(“CPU”)、微处理器、微控制器、数字信号处理器、处理器核、片上系统(“S0C”)或任何其它可编程或电子装置内或者与其耦合)以外,也可通过例如设置在被配置为存储软件的计算机可用(例如,可读)介质中的软件(例如,以诸如源、对象或机器语言等任何形式设置的计算机可读代码、程序代码、指令和/或数据)来实现实施方式。这种软件可启用例如在这里描述的装置和方法的功能、制造、建模、模拟、描述和/或测试。例如,可通过使用一般编程语言(例如,C、C++)、⑶SII数据库、包含Verilog HDL,VHDL和SystemC寄存器转换级(RTL)等的硬件描述语言(HDL)或其它可用程序、数据库和/或电路(即,电路原理图)捕获工具来实现它。实施例可被设置在包含半导体、磁盘、光盘(例如,CD-ROM、DVD-ROM等)的任何已知的非暂时性计算机可用介质中。
[0050]应当理解,在这里描述的装置和方法实施例可包含于诸如微处理器核(例如,以HDL体现)的半导体IP核中并在集成电路的制造中被转换成硬件。另外,在这里描述的装置和方法可体现为硬件和软件的组合。因此,本发明不应通过上述示例性实施例中的任一个被限定,而应仅根据以下的权利要求和它们的等同被限定。应当理解,可通过启用例如为上述的部件的各种软件例程、模块、要素或指令的功能的硬件部件或者与其协作,实现或制造利用硬件和软件的组合的实施例。
[0051]以上借助于示出特定功能及其关系的实现的功能构建块描述了这里的实施例。这里为了便于描述任意地限定了这些功能构建块的边界。只要适当地执行特定功能及其关系,就可限定替代性的边界。
[0052]特定实施例的以上描述如此彻底地揭示了本发明的一般本质,以至于其它人在不背离本发明的一般概念的情况下不通过过多的实验就可通过应用本领域中的知识很容易地修改和/或调整诸如特定实施例的各种应用。因此,基于这里给出的教导和指导,这些调整和修改要处于公开的实施例的意思和等同范围内。应当理解,这里的措词或术语是为了描述而非限制,使得要由本领域技术人员鉴于这些教导和指导解释本说明书的术语或措词。
【权利要求】
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的方法,其中,返回条目不包含目标地址。
【文档编号】G06F9/38GK104020982SQ201410069516
【公开日】2014年9月3日 申请日期:2014年2月28日 优先权日:2013年3月1日
【发明者】P·博塔, S·帕塔尔 申请人:Mips技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1