数据处理器中的分支目标缓存器寻址技术领域
本公开总体上涉及数据处理器,更具体地涉及数据处理器对分支
指令的执行。
背景技术
在数据处理系统内部,分支目标缓存器(BTB)通常用于预测分
支的结果和该分支的所采取的目标地址以改善性能。随着数据处理系
统内部的流水线阶数目的增加,为了提高命中率并且减少分支误预测
性能损失,分支目标缓存器(BTB)的尺寸典型地也随之增大。但是,
增大BTB的尺寸导致管芯尺寸、存取时间、以及BTB及其运行所需
的功率的增加。
附图说明
通过举例图解本发明,但是本发明不受附图限制。在附图中,相
同的附图标记指示类似的元件。出于简洁清楚的目的图解附图中的元
件,但是这些元件不一定必须按照尺寸来绘出。
图1以方框图的形式示出了根据本发明的一个方面的具有分支目
标缓存器(BTB)的数据处理系统;
图2以方框图的形式示出了根据本发明的一个方面的图1中的数
据处理系统的中央处理单元(CPU)的一部分;
图3以方框图的形式示出了根据本发明的一个方面的图1中的
BTB的一部分;
图4以图表的形式示出了根据本发明的一个方面的图3中的BTB
的标签和目标的实施例;
图5至图8以图表的形式示出了根据本发明的各个方面的图3中
的BTB中的条目;
图9以方框图的形式示出了根据本发明的一个方面的图3中的
BTB的相同页面指示符生成器的实施例;
图10以流程图的形式示出了根据本发明的一个方面的用于生成
分支目标地址的方法;
图11和图12以流程图的形式示出了根据本发明的一个方面的用
于在BTB中分配的方法;
图13以图表的形式示出了根据本发明的一个方面的图3中的
BTB的标签和目标的实施例;
图14以方框图的形式示出了根据本发明的一个方面的图3中的
分支目标生成器的实施例;
图15以方框图的形式示出了根据本发明的一个方面的图3中的
BTB的相同页面指示符生成器的实施例。
具体实施例
如上所述,随着BTB尺寸的增大,面积要求增多,功率需求增
大,并且存取时间增长。因此,在一个实施例中,在保持性能的同时
减小BTB的尺寸。在一个实施例中,实现一组相关联的多路BTB,
其中,BTB的不同路可以存储标签尺寸和目标地址尺寸的不同组合。
在一个实施例中,标签尺寸基于存储器的页面边界,从而,对于跨过
页面边界的分支指令,在BTB中存储完整标签,而对于在相同页面内
的分支指令,在BTB中存储短标签(相对完整标签,其需要较少位)。
在一个实施例中,对于存储短标签的那些BTB条目,使用额外的页面
地址缓存器(例如,页面地址内容可寻址存储器(CAM))来存储用
于这些较短标签的页面地址。对于存储短标签的每一个条目,还存储
对应的选择值,并且使用该对应的选择值来选择页面地址CAM的适
当条目。此外,基于分支目标是否跨过页面边界,可以在BTB内的每
个条目的目标地址部分中存储完整目标地址或者短目标地址。
如在此所使用的,术语“总线”用来指多个信号或导体,该多个信
号或导体可以用来传输一种或多种类型的信息,诸如,数据、地址、
控制或状态。可以关于单个导体、多个导体、单向导体或双向导体来
示出或描述在此所讨论的导体。然而,不同的实施例可能会改变导体
的实现方式。例如,可以使用单独的单向导体而非双向导体,反之亦
然。而且,可以使用逐次地或者按照时分复用的方式传输多个信号的
单个导体来取代多个导体。同样地,也可以将携带多个信号的单个导
体分离成携带这些多个信号的多个子集的各种不同导体。因此,存在
多个用于传输信号的选项。
当涉及致使信号、状态位、或类似的装置分别进入其逻辑真状态
或者逻辑假状态时,使用术语“断言(assert)”或“置位”和“否定”(或
“无效”或“清除”)。如果逻辑真状态是逻辑电平1,那么逻辑假状态
是逻辑电平0。并且,如果逻辑真状态是逻辑电平0,那么逻辑假状态
是逻辑电平1。在此所描述的每个信号可以被指定为正逻辑或负逻辑。
在负逻辑信号的情况下,该信号是低有效的,其中逻辑真状态对应于
逻辑电平0。在正逻辑信号的情况下,该信号是高有效的,其中逻辑
正状态对应于逻辑电平1。注意,在此所描述的任何信号均可被指定
为负逻辑信号或者正逻辑信号。
图1以方框图的形式示出了根据本发明的一个实施例的数据处理
系统10。数据处理系统10包括处理器12、系统总线14、存储器16、
以及多个外围设备,该多个外围设备诸如是外围设备18、外围设备20,
以及,在某些实施例中,是如图1中的点所示的将外围设备18与外围
设备20分开的其他外围设备。存储器16是通过双向导体耦合至系统
总线14的系统存储器,该双向导体在一种形式中具有多个导体。在所
示出的形式中,外围设备18和外围设备20中的每一个都通过多个双
向导体耦合至系统总线14,处理器12也同样如此。处理器12包括经
由具有多个导体的双向总线耦合至系统总线14的总线接口单元(BIU)
22。BIU22经由双向导体耦合至内部总线24。内部总线24是多导体
通信总线。指令缓存26、分支目标缓存器(BTB)28、中央处理单元
(CPU)30、以及存储管理单元(MMU)32均经由各自的双向导体
耦合至内部总线24。CPU30是用于实现数据处理操作的处理器。
CPU30内部存在程序计数器31,该程序计数器31是用于保存计数值
的诸如寄存器的存储设备。指令缓存26、BTB28、CPU30、以及MMU32
中的每一个均经由各自的输入/输出(I/O)端口或端子耦合至内部总
线24。在替代实施例中,系统总线14可以实现为交叉开关或者互联
结构。
在操作中,处理器12通过执行多个数据处理指令来实现多种数
据处理功能。指令缓存26是用于CPU30可能需要的常用信息的临时
数据存储。CPU30所需的不在缓存26内部的信息被存储在存储器16
中。MMU32控制CPU30和指令缓存26和存储器16之间的信息交互。
例如,MMU32在虚拟地址(例如,在CPU30内部所使用的)和物理
地址(例如,如指令缓存26和存储器16所使用的)之间进行转换。
BIU22可以是处理器12和系统总线14之间的几个接口单元中的一个
接口单元。BIU22协调与包括CPU30的分支指令执行的指令执行相关
的信息流。经由BIU22在CPU30和系统总线14之间交换源自分支指
令执行的数据和控制信息。BTB28是用于存储多个条目的缓存器。每
个条目存储对应于分支指令的指令地址、分支指令的对应分支目标地
址、对应的状态信息、以及对应的分支预测信息。在每个条目中可以
存储较少的信息或附加的信息。CPU30生成提供给CPU30内部的指
令流水线并且经由内部总线24发送至BTB28的指令地址。BTB28包
含可以由CPU30生成的指令地址的子集。响应于接收来自CPU30在
BTB28中命中的指令地址,BTB28将分支目标地址和相关联的状态信
息提供给CPU30。注意,如下面将要详细描述的,BTB28所提供的分
支目标地址是推测性的,因此可能导致误预测。
图2示出了图1中的CPU30的与指令的执行和BTB28的使用相
关的更加详细的部分。CPU30包括控制与接口单元52、指令取回单元
40、指令解码单元46、(多个)执行单元48、以及注册文件50。控
制与接口单元52包括地址生成电路54、相同页面状态计数器55、以
及相同页面阀值57,并且双向地耦合至指令取回单元42、指令解码单
元46、(多个)执行单元48、以及注册文件50中的每一个。地址生
成电路54将指令地址100提供给总线24并且从总线24接收BTB目
标地址、相同页面指示符、以及BTB预测信息。地址生成电路54也
可以与总线24进行其它数据/控制信息的通信。指令取回单元40包括
指令缓存器44和指令寄存器42。指令缓存器44具有连接至指令寄存
器42的输入的输出。指令缓存器双向地耦合至指令解码单元46。(多
个)执行单元包括分支执行单元49,并且可能包括一个或多个额外的
执行单元,如CPU30内部所需的。
在该部分CPU30的所示出的形式中,控制与接口单元52控制指
令取回单元40以实现从指令缓存26或存储器16取回指令。指令解码
单元46针对一个或多个执行单元48进行指令解码。注册文件50用于
支持(多个)执行单元48。控制与接口单元52的内部存在地址生成
电路54。地址生成电路54发送指令地址至BTB28,并且,作为响应,
可以接收BTB目标地址、相同页面指示符和BTB预测信息。如果BTB
目标地址不存在并且在指令缓存26内部有效,则CPU30使用该BTB
目标地址以从指令缓存26或存储器16获得该目标地址处的指令。
图3示出了根据一个实施例的BTB28的进一步的细节。BTB28
从CPU30接收指令地址100,其中指令地址100包括页面地址部分、
标签部分和索引部分。在所示出的实施例中,页面地址部分包括指令
地址100的20个最高位,标签部分包括接下来的4个最高位,索引部
分包括接下来的6个最高位。在一个实施例中,指令地址100包括总
共32个位,其中2个最低位不被BTB28使用。BTB28包括BTB阵
列106、BTB控制电路102、用于路线0-5的比较器108、用于路线6
和7的比较器116、页面地址内容可寻址存储器(CAM)104、匹配
指示符选择110、与门112和114、分支目标生成器119、以及分支目
标地址选择器124。在所示实施例中,BTB28是多路组相关联的BTB,
其中,BTB阵列106包括8个路线(路线0至路线7)以及64个组(组
0至组63)。由此,BTB28的一个条目是指一个组和一个路线的交集,
使得,例如BTB28的每个路线包括64个条目。注意,BTB28可以包
括任何数目的路线和任何数目的组,或者备选地,可以是直接映射的
BTB。此外,注意,路线0至路线7中的每一个可以被分别称为w0
至w7。BTB阵列106接收指令地址100并且双向地耦合至BTB控制
电路102。BTB控制电路102还接收来自CPU30的分支执行单元49
的信息(诸如,例如,分支指令地址,分支目标地址,和分支状态),
并且还双向地耦合至页面地址CAM104。BTB阵列106将w0标签至
w5标签提供给比较器108,将w0sel至w5sel提供给匹配指示符选择
110,并且将w6标签至w7标签提供给比较器116。比较器108还接
收指令地址100的标签部分(也称为短标签地址),并且将w0标签
匹配提供给与门112的第一输入,将w5标签匹配提供给与门114的
第一输入。匹配指示符选择110接收来自页面地址CAM104的页面地
址匹配指示符,并且将w0页面匹配提供给与门112的第二输入,将
w5页面匹配提供给与门114的第二输入。与门112在其输出处提供命
中路线0信号,与门114在其输出处提供命中路线5信号。BTB28还
包括如与门112和114之间的3个点所示的额外的与门,其中,每个
与门在第一输入处接收来自比较器108的路线标签匹配信号,在第二
输入处接收来自匹配指示符选择110的路线页面匹配信号,并且在输
出处提供对应的路线命中信号。因此,在所示的实施例中,存在4个
额外的与门以提供命中路线1信号至命中路线4信号。比较器116接
收指令地址100的完整标签地址(对应于指令地址100的标签部分和
页面地址部分)并且提供命中路线6信号和命中路线7信号。注意,
比较器108和116中的每一个还接收来自BTB阵列106的状态位。例
如,比较器108和116中的每一个可以使用有效位来批准(qualify)
匹配。
级联目标地址(TA)118是存储器电路,其接收指令地址100的
页面地址部分和来自BTB106的w0 TA并且保存与w0 TA级联的页
面地址。级联目标地址(TA)120是存储器电路,其接收指令地址100
的页面地址部分和来自BTB106的w3 TA并且保存与w3 TA级联的
页面地址。w1 TA和w2 TA中的每一个也被提供给级联目标地址存储
器电路,使得指令地址100的指令的页面地址部分可以被级联至w1
TA和w2 TA中的每一个。用于w0 TA至w3 TA中的每一个以及w6
TA的级联地址被提供给分支目标地址选择器124。w4 TA、w5 TA、
w7 TA中的每一个都被提供给分支目标地址选择器124。分支目标地
址选择器124还接收命中路线信号(命中路线0至命中路线7)中的
每一个,并且输出分支目标地址。BTB阵列106还提供相同页面指示
符和预测指示符。来自分支目标地址选择器124的分支目标地址以及
来自BTB阵列106的相同页面指示符和预测指示符中的每一个均可经
由总线24被提供给控制与接口单元52(例如,提供给地址生成电路
54)。分支目标生成器119接收w0 TA至w7 TA中的每一个,将目
标地址提供给分支目标地址选择器124,并且包括级联TA118、级联
TA120、以及级联TA122。
参照图2和图3,BTB28接收来自CPU30的指令地址100并且
确定指令地址100是否在BTB28内导致命中。返回至CPU30的指令
地址100的BTB预测信息可以包括(基于命中路线信号(命中路线0
至命中路线7)的)命中指示和预测信息。而且,来自分支目标地址
选择器124的分支目标地址作为BTB目标地址被提供给CPU30。在
一个实施例中,指令地址由指令取回单元40从指令缓存26或存储器
16中(个别地或者一次两个或多个成组地)取回。指令取回单元40
所取回的每个指令被放入指令缓存器44中并且作为指令地址100被提
供给BTB28,以确定BTB28是否指示该指令地址对应于分支指令。
例如,如果指令地址100在BTB28中导致不命中,则认为该指令地址
100不是分支指令,继续指令地址100的处理直至CPU30的指令流水
线(并且不命中的指示经由BTB预测信息被提供给CPU)。然而,
如果指令地址100在BTB28中导致命中,则认为该指令地址100是分
支指令,并且使用BTB预测信息来确定是否应该采取该分支指令。例
如,如果指令地址100在BTB28中命中并且从BTB28接收的BTB预
测信息指示所采取的分支,那么控制与接口单元52可将(从BTB28
接收的)BTB目标地址提供给指令取回单元40,使得取回可以推测性
地在该分支目标地址处开始。最终,指令地址100到达指令寄存器42
并且前行通过CPU30的指令流水线。也就是,指令地址100从指令寄
存器42被提供给指令解码单元46进行解码,然后被提供给(多个)
执行单元48进行执行(如果需要,可以访问注册文件50)。如果指
令地址100作为分支指令被解码,则其由分支执行单元49解析。当指
令地址100被解析,则可以知道BTB28是否正确地预测了所采取的指
令地址100的分支指令。如果正确地预测了分支,则执行从当前位置
继续。如果分支被误预测,则CPU30可以处理该误预测,按照需要冲
刷(flush)流水线,并且将执行返回至误预测发生的点(例如,返回
至指令地址100并且取回下一个顺序指令)。因此,当在BTB28中发
生命中但是分支没有被正确地预测为是被采取还是不被采取时,或者,
如果BTB28正确地预测分支被采取但是没有正确地预测目标地址,则
可能会出现误预测。而且,如果指令地址100在BTB28中命中但却没
有成为分支指令,也可能会出现误预测。例如,可以由指令解码单元
46确定指令地址100实际上不是分支指令,这也导致需要由CPU30
处理的误预测。
此外,对于每一个指令地址100,可以按照需要分配或者更新
BTB28。例如,当指令在BTB28中导致不命中并且该指令由指令解码
单元46解码为采取的分支指令时,可以为该分支指令分配一个新的条
目至BTB28中。并且,如果在BTB28中命中的分支导致了误预测,
则其在BTB28中的对应的条目被适当地更新。下面,参照图4至图
12更加详细地描述BTB28的操作。
参照图3,BTB阵列106中的路线0至路线7中的每一个包括多
个条目。在所示的实施例中,这些条目中的每一个条目包括存储标签
地址的标签字段、存储状态信息的状态字段、存储目标地址的TA字
段、以及存储预测信息的预测字段。但是,如将要参照图4至8以及
图13描述地,每个路线中的条目根据该路线而不同。
例如,参照图4,可以将每个路线配置为存储不同长度的标签和
目标地址(TA)。例如,路线0至路线3的每一个路线中的条目存储
短标签地址和短TA。路线4和路线5的每一个路线中的条目存储短
标签地址和完整TA。路线6中的条目存储完整标签地址和短TA,路
线7中的条目存储完整标签地址和完整TA。在一个实施例中,假定
页面尺寸为4K,那么完整标签地址可以是24位的值而短标签地址是
仅4位的值。该4位的值可以实现至特定页面的索引。因此,在一个
实施例中,完整标签地址是不需要任何更多的位来完成寻址的地址,
而短标签地址需要额外的位来完成完整标签地址。而且,存储短标签
地址的每个条目也包括选择字段。该选择字段用于提供标签地址的剩
余上部位(upper bit)。例如,在当前示例中,该选择字段用于提供
对应于页面地址的标签地址的剩余上部20个位。在一个实施例中,用
于存储在路线0至路线5内的短标签的页面地址被存储在页面地址
CAM104中。页面地址CAM104可以具有任何数目的条目,并且在一
个实施例中,包括8个条目。在当前示例中,假定页面尺寸是4K,则
CAM104中的每一个条目存储20位的页面地址。在一个实施例中,
CAM104执行指令地址100的页面地址部分之间的匹配并且为其条目
中的每一个条目提供一个页面地址匹配指示符,如图3所示。因此,
该选择字段可以是用于从8个页面地址匹配指示符中选择合适的页面
地址匹配指示符的3位的值。该选择字段的大小由此取决于页面地址
CAM104内的条目的数目。对于存储完整标签地址的那些条目,由于
不需要额外的地址位来完成地址标签,所以不需要选择字段。
仍然参照图4,路线0至3以及路线6中的条目均存储短TA,
而路线4、路线5和路线7中的条目均存储完整目标地址。在一个实
施例中,每个短TA可以是仅10位,而完整TA可以是30位。因此,
在一个实施例中,完整TA是不需要任何更多的位来完成所期望数据
的寻址的地址,而短TA需要额外的位来完成完整TA。在一个实施例
中,当提供了来自路线0至路线3或者来自路线6中的任何一个的TA
时,它首先级联至指令地址100的页面地址部分以提供完整TA。也
就是,如图3所示,w0 TA至w3 TA以及w6 TA在被提供给分支目
标地址选择器之前均被级联至页面地址部分。但是,由于w4 TA、w5
TA、以及w7 TA是完整TA,所以它们被直接提供给分支目标地址选
择器124。如将要更加详细描述地,分支目标地址选择器124基于指
示符命中路线0至命中路线7选择所接收的完整TA中的一个完整TA
以提供作为分支目标地址。
图5以图表的形式示出了其条目存储短标签和短TA的路线的示
例性条目150的更加详细的视图。例如,条目150可以是用于路线0
至3中的条目的格式。条目150包括4位标签地址、3位选择字段、
状态字段、10位TA字段、以及预测字段。在一个示例中,状态字段
包括诸如指令类型字段、有效字段、和最近最少使用(LRU)字段(例
如,在分配至BTB28的期间被使用)之类的各种字段。注意,这些
LRU字段可以独立于BTB阵列106存储,并且每个LRU字段可以对
应于整个组。预测字段可以包括预测信息,诸如,对应于标签地址的
分支是被预测为被采取还是不被采取。
图6以图表的形式示出了其条目存储短标签和完整TA的路线的
示例性条目152的更加详细的视图。例如,条目152可以是用于路线
4和5中的条目的格式。条目152包括4位标签地址、3位选择字段、
状态字段、30位TA字段、以及预测字段。在一个示例中,状态字段
包括诸如指令类型字段、有效字段、LRU字段(例如,在分配至BTB28
的期间被使用)、和相同页面指示符字段之类的各种字段。在一个实
施例中,相同页面指示符是指示完整TA是否与分支地址位于相同页
面上的单个位字段。预测字段可以包括预测信息,诸如,对应于标签
地址的分支是被预测为被采取还是不被采取。
图7以图表的形式示出了其条目存储完整标签和短TA的路线的
示例性条目154的更加详细的视图。例如,条目154可以是用于路线
6中的条目的格式。条目154包括24位标签地址、状态字段、10位
TA字段、以及预测字段。在一个示例中,状态字段包括诸如指令类
型字段、有效字段、和LRU字段(例如,在分配至BTB28的期间被
使用)之类的各种字段。预测字段可以包括预测信息,诸如,对应于
标签地址的分支是被预测为被采取还是不被采取。
图8以图表的形式示出了其条目存储完整标签和完整TA的路线
的示例性条目156的更加详细的视图。例如,条目156可以是用于路
线7中的条目的格式。条目156包括24位标签地址、状态字段、30
位TA字段、以及预测字段。在一个示例中,状态字段包括诸如指令
类型字段、有效字段、LRU字段(例如,在分配至BTB28的期间被
使用)、和相同页面指示符字段之类的各种字段。在一个实施例中,
相同页面指示符是指示完整TA是否与分支地址位于相同页面上的单
个位字段。预测字段可以包括预测信息,诸如,对应于标签地址的分
支是被预测为被采取还是不被采取。
注意,对于图5至图8中的各个示例性条目中的每一个,用于每
个字段的位的数目可以根据应用有所变化,并且可以存在比示出的多
或者少的字段。此外,每个条目的格式可以不同于所示出的格式。
注意,在备选实施例中,短标签可以是地址的任何部分,在此,
可以使用诸如CAM的单独的存储器单元来存储完整标签地址的剩余
最高有效部分。也就是说,它不需要取决于页面或者页面尺寸。在这
种情况下,可以适当地使用任何尺寸的CAM,并且可以适当地使用
任何尺寸的选择字段。而且,在备选实施例中,可以使用任何类型的
页面地址缓存器来取代页面缓存器CAM104。另外,注意,图4所示
出的路线0至路线7的组织仅仅是一个示例。也就是说,在备选实施
例中,对于每个路线可以使用短标签/完整标签和短TA/完整TA的任
何组合,而并不局限于图4的特定示例。例如,在一个备选实施例中,
每个路线可以为所有条目存储完整TA。在另一个示例中,可以仅有
一个路线存储完整标签地址,而剩余的路线存储具有选择位的短标签。
例如,下面将参照图13描述一个备选实施例。因此,图5至8以及图
13中示出的条目中的每一个仅仅是基于根据图4的示例建立的BTB
的例子而已。
图9示出了相同页面指示符生成器158,该相同页面指示符生成
器158例如可以在BTB28内部使用以生成相同页面指示符。相同页面
指示符生成器158从路线4、5和7中的每一个的状态字段接收相同页
面指示(例如,w4相同页面指示符,w5相同页面指示符,和w7相
同页面指示符),并且还从路线0至3以及路线6中的每一个接收命
中指示符(例如,命中路线0至命中路线3以及命中路线6)。基于
命中路线0至命中路线7(其指示哪个路线(如果有的话)导致针对
指令地址100的命中),相同页面指示符生成器158生成相同页面指
示符,该相同页面指示符指示分支目标地址选择器124提供的分支目
标地址是否与指令地址100位于相同页面上。注意,由于路线0至3
以及路线6中的每一个均存储短TA,所以认为这些路线的任何一个
中命中均发生在与指令地址100相同的页面上。但是,由于路线4、5
和7存储完整TA,所以不知道TA是否位于相同页面上。因此,路线
4、5和7中的条目中的每一个还存储相同页面指示符,以提供这样的
信息。相同页面指示符生成器158提供的相同页面指示符使得可以做
出如下判定,即,对于分支TA是否需要MMU32进行地址转换。也
就是说,如果如同相同页面指示符所指示的那样位于相同页面上,则
可以旁路MMU32。但是,如果不是位于相同页面上,则MMU32需
要提供地址转换。
图10以流程图的形式示出了根据本发明的一个实施例的用于通
过BTB28生成分支目标地址的方法200。方法200开始于方框202,
在此,接收到指令地址(其可以对应于图3中的指令地址100)。然
后,流程行进至方框204,在此,指令地址的索引部分被用来从组0
至组63中选择一个组。例如,参照图3,BTB阵列106接收选择组0
至组63中的一个组的指令地址100的索引部分。因此,路线标签(w0
标签至w7标签)和选择字段(w0sel至w5sel)对应于存储在所选择
的组中的路线标签和选择字段。类似地,路线TA(w0TA至w7TA)
对应于存储在所选择的组中路线TA。
对于路线0至路线5,方法200继续至方框206,在此,指令地
址100的标签部分被用来确定所选择的组中的路线标签匹配(例如,
w0标签匹配至w5标签匹配)。参照图3,用于路线0至5的比较器
108从BTB阵列106接收所选择的组的w0标签至w5标签中的每一
个,并且把它们均与指令地址100的标签部分进行比较。比较器108
由此输出w0标签匹配至w5标签匹配,指示对于路线0至5中的每一
个是否发生了与指令地址100的标签部分的匹配。(注意,w0标签匹
配至w5标签匹配也可以被称为路线标签匹配信号或短路线标签匹配
信号。)注意,比较器108使用所选择的组的有效位来批准匹配,使
得w0标签匹配信号至w5标签匹配信号中的每一个仅被断言以指示,
如果匹配的来自所选择的组的对应标签是来自于有效条目(如条目的
状态位所指示的)则发生了匹配。然后,方法200继续至方框208,
在此,指令地址100的页面地址部分与页面地址CAM104的条目进行
比较以生成页面地址匹配指示符。参照图3,页面地址CAM104接收
指令地址100的页面地址部分,并且针对CAM104中的每一个条目输
出一个页面地址匹配指示符,以指示该条目是否与指令地址100的页
面地址部分匹配。方法200继续至方框210,在此,基于所选择的组
的选择字段(例如,w0sel至w5sel)根据页面地址匹配指示符生成路
线页面匹配(例如,w0页面匹配至w5页面匹配)。参照图3,对于
路线0至5中的每一个,对应的选择字段被用来选择页面地址CAM104
提供的页面地址匹配指示符,并且匹配指示符选择110提供所选择的
页面地址匹配指示符作为路线页面匹配。例如,对于路线0,匹配指
示符选择110使用w0sel的3位值从页面地址匹配指示符选择8个页
面地址匹配指示符中的一个,并且提供该选择的页面地址匹配指示符
作为w0页面匹配。因此,在一个实施例中,页面地址CAM104可以
还包括用于生成由匹配指示符选择110使用的页面地址匹配指示符的
比较器。或者,匹配指示符选择110可以包括比较器,从而,页面地
址CAM104将页面地址提供给匹配指示符选择110,并且匹配指示符
选择110接收指令地址100的页面地址部分并执行比较以生成页面地
址匹配指示符。因此,在该实施例中,可以使用选择字段从页面地址
CAM104选择合适的页面地址,利用该页面地址CAM104执行用于生
成对应的路线页面匹配的页面地址比较。
在方框210之后,方法200继续至方框212,在此,路线标签匹
配和路线页面匹配被用来生成命中路线信号(命中路线0至命中路线
5)。(注意,命中路线0至命中路线5也可以被称为短命中路线信号。)
参照图3,诸如与门112和114的与门接收路线标签匹配信号和对应
的路线标签匹配信号的每一个以生成对应的路线命中信号。例如,对
于路线0,与门112接收w0标签匹配和w0页面匹配,并且在其输出
处提供命中路线0。因此,只有当w0标签匹配被断言(指示所选择的
组的w0标签是有效的且与访问地址100的标签部分匹配)并且w0页
面匹配被断言(指示如由w0sel所选择的页面地址CAM104中的所选
择的页面地址与指令地址100的页面地址部分匹配)时,断言命中路
线0以指示路线0的命中。按照这种方式,对于路线0至5中的每一
个,进行短标签的比较并且进行与(由所选择的组的选择字段选择的)
适当选择的页面地址的比较以生成命中路线信号。因此,方法200可
以针对存储短标签地址的那些路线执行方框206、208、210和212的
方法。注意,用于生成短命中路线信号的与门也可以被称为逻辑电路,
并且,在备选实施例中,可以使用不同的逻辑电路来生成短命中路线
信号。
再次参照方框204,对于路线6和7,流程行进至方框214,在此,
指令地址100的页面地址和标签部分被用作指令地址100的完整标签
地址,以确定在所选择的组内的路线命中。参照图3,用于路线6和7
的比较器116接收针对所选择的组的路线6和7的完整地址标签(w6
标签和w7标签),并且接收指令地址100的页面地址和标签部分作
为指令地址100的完整标签地址。方法200行进至方框216,在此,
基于路线命中信号生成命中路线信号(命中路线6和命中路线7)。
例如,比较器116分别将w6标签和w7标签中的每一个与指令地址
100的完整标签地址部分进行比较,并且分别生成命中路线6和命中
路线7。例如,在一个实施例中,如果w6标签与指令地址100的完整
标签地址部分匹配,则命中路线6被断言。注意,比较器116还使用
所选择的组的有效位来批准匹配,使得命中路线6和命中路线7中的
每一个仅被断言以指示,如果匹配的来自所选择的组的对应标签是来
自于有效条目(如由条目的状态位所指示的),则发生了匹配。因此,
对于存储完整标签地址的那些路线,方法200可以执行方框214和216
的方法。注意,命中路线6和命中路线7也可以被称为完整命中路线
信号。
在方框212或方框216之后,方法200继续至方框218,在此,
对于路线0至3以及路线6(它们存储短TA),指令地址100的页面
地址部分与所选择的组的对应目标地址(例如,w0 TA至w3 TA和
w6TA)级联以生成路线分支目标。例如,路线分支目标可以对应于
级联存储器电路(诸如,级联存储器电路118、120和122)的输出,
该级联存储器电路将指令地址100的页面地址部分与对应的路线TA
级联。然后,将级联存储器电路的输出提供给分支目标地址选择器
124。仍然参照方框218,对于路线4、5和7(它们存储完整TA),
提供来自所选择的组的TA作为路线分支目标。因此,由于来自这些
路线的TA是完整TA,它们可以被直接提供给分支目标地址选择器
124。然后,方法200继续至方框220,在此,使用路线命中信号(命
中路线0至命中路线7)来选择路线分支目标作为分支目标地址。例
如,分支目标地址选择器124基于断言了哪一个命中路线信号被断言
来选择用于对应路线的分支目标地址。分支目标地址选择器24所选择
的分支目标地址由此可以作为BTB目标地址被提供给CPU30的控制
与接口单元52。方法200继续至方框222,在此,可以将(对应于导
致命中的所选择的组的路线的)预测信息和相同页面指示符提供给
CPU30的控制与接口单元52作为预测信息和相同页面指示符。注意,
在一个实施例中,如果所选择的组的路线都不导致命中,则该不命中
信息可以通过单独命中/不命中指示符的方式或者通过预测信息的方
式被提供给CPU30。
图11和图12以流程图的形式示出了根据本发明的一个方面的用
于BTB28中的分配的方法250。方法250开始于方框252,在此,接
收有效指令进行解码。例如,参照图2,指令寄存器42中的有效指令
由指令取回单元40提供给指令解码单元46。方法250继续至方框254,
在此,为指令计算顺序指令地址。方法行进至判决方块256,在此,
确定顺序指令地址是否使指令流跨过页面边界。(例如,这可以由控
制与接口单元52执行或者在指令解码单元46内执行。)如果是,流
程行进至方框258,在此,重置相同页面计数器。例如,参照图2,该
相同页面计数器可以是相同页面状态计数器55,并且,在方框258中,
可以将计数器55重置为第一预定值,例如,零。在方框258之后,或
者如果在判决方块256中页面边界没有被跨过,方法250行进至判决
方块260,在此,确定有效指令是否是分支指令。例如,作为解码指
令的结果,指令解码单元46可以确定该指令是否实际上是分支指令。
如果不是,方法250返回至方框252,在此,指令解码单元46接收下
一个有效指令。如果确定为是分支指令,方法250行进至方框262,
在此,或者计算或者取回分支指令的分支目标地址。例如,这可以作
为由分支执行单元49执行的分支解析的一部分来完成。然后,方法
250行进至判决方块264,在此,确定该分支是否被误预测。例如,该
分支可能在其实际上不被采取的时候被(诸如来自BTB28的预测信
息)误预测为被采取,反之亦然。如果该分支没有被误预测,分支指
令的处理继续通过流水线,并且方法250返回至方框252,在此,指
令解码单元46接收下一个有效指令。
如果在判定方块264处确定分支被误预测,方法250进行至判定
方块266,在此,确定该分支指令是否被BTB28预测为分支指令。如
果是,方法250进行至方框268,在此,按照需要更新BTB28。例如,
如果指令在BTB28中导致命中,则该指令被预测为分支指令。然而,
尽管该分支指令导致命中,提供有来自BTB28的命中的预测信息导致
分支误预测。因此,可能需要更新对应于被误预测的分支指令的
BTB28的条目。如果在判定方块266处分支指令没有被预测为分支指
令(由于,例如,在BTB28中没有被命中),方法250行进至判定方
块270。在此时,由于当前有效指令实际上是分支指令但是在BTB28
中没有被命中,所以可以为该分支指令分配BTB28中的新的条目,如
下面将要参照方法250的剩余部分描述的。
参照判定方块270,如果相同页面计数器不大于零,方法250行
进至方框272,在此,将相同页面计数器设置为1。注意,如果下一个
顺序指令地址至当前地址导致跨过页面边界,则在方框258中将该相
同页面计数器(例如,图2中的计数器55)设置为0。因此,由于跨
过页面边界,完整标签地址应该被分配至BTB28中。从方框272开始,
方法250行进至方框278,在此,由于在所示实施例中仅路线6和7
被配置为存储完整标签地址,所以选择路线6或路线7以针对当前分
支地址进行分配。当条目被分配至路线6或路线7的选择路线中时,
在该条目中存储完整标签地址。然后,可以基于分支目标地址,确定
选择路线6或路线7中的哪个路线,如下面将要参照图12中的方法
250的部分描述的。
再次参照判定方块270,如果相同页面计数器大于0,方法250
行进至判定方块290,在此,确定当前页面地址(例如,当前分支指
令的页面地址)是否已经在页面地址CAM104中。例如,控制与接口
单元52可以与BTB28的BTB控制电路102通信,以确定当前页面地
址是否在页面地址CAM104中。如果是,方法250行进至方块296,
在此,可以选择路线0至5中的一个路线用于分配,并且可以将页面
地址CAM104中的现有条目用于该分配。也就是说,当一个条目被分
配至路线0至5的所选择的路线中时,可以在该条目中存储当前分支
指令地址的标签部分,并且可以设置该条目的选择值以选择页面地址
CAM104中的现有条目。然后,可以基于分支目标地址,进一步地确
定选择路线0至5中的哪个路线,如下面将要参照图12中的方法250
的部分描述的。
再次参照判定方块290,如果当前页面地址不在页面地址
CAM104中,方法250行进至判定方块292,在此,确定是否满足相
同页面的阀值。例如,在一个实施例中,可以使用位于CPU30的控制
与接口单元52中的相同页面阀值57来确定是否分配页面地址
CAM104中的新的条目。在一个实施例中,不分配页面地址CAM104
中的新的条目,直至在存储器的相同页面上出现了一定数量的分支指
令。例如,在一个实施例中,仅当在存储器的特定页面(其页面地址
还未存在于页面地址CAM104中)上第三次出现分支指令时才分配新
的条目。因此,参照判定方块292,如果对于当前页面地址没有满足
相同页面阀值,方法250行进至方框298,在此,相同页面计数器55
递增。因此,当随后的分支指令发生在相同页面上时(由此从方框254
行进至判定方块256,至判定方块260,至方框262,并且再次向下继
续至判定方块292),可以再次递增相同页面计数器55,直至分支指
令满足相同页面阀值。注意,一旦分支指令跨过页面边界,相同页面
计数器55被重置为零(在方框258中)。在方框298之后,方法250
继续至方框278,在此,可以选择路线6或7用于针对当前分支指令
进行分配。也就是说,由于没有满足相同页面的阀值,所以没有分配
页面地址CAM104中的新的条目,并且由此在分配时需要将完整标签
地址存储至BTB28。在当前示例中,仅路线6和7允许存储完整目标
地址。然后,可以基于分支目标地址,进一步地确定选择路线6和7
中的哪个路线,如下面将参照图12的方法250的部分详细描述的。
再次参照判定方块292,如果满足了相同页面的阀值(即,在存
储器的相同页面内出现了足够的分支指令),方法250行进至方框294,
在此,可以分配页面地址CAM中的一个条目用于存储当前分支指令
的页面地址。可以使用任何协议来确定分配页面地址CAM104中的哪
个条目,诸如,最近最少使用(LRU),伪LRU(PLRU),循环法,
等等。然后,方法250继续至方框295,在此,可以选择路线0至5
中的一个路线用于分配,并且可以将页面地址CAM104中的现有条目
用于该分配。也就是说,当条目被分配至BTB阵列106中的路线0
至5的所选择的路线中时,可以在该条目中存储当前分支指令地址的
标签部分,并且可以设定该条目的选择值以选择页面地址CAM104中
的最新分配的条目。然后,可以基于分支目标地址,进一步地确定选
择路线0至5中的哪个路线,如下面将参照图12中的方法250的部分
描述的。
方法250继续至图12中的点A。在方框278、295和296的每一
个之后,方法250经由点A继续至位于图12中的方框280。在方框
280中,将(例如在方框262中确定的)当前分支指令的分支目标地
址的页面地址与当前分支指令地址的页面地址进行比较。方法250继
续至判定方块282,在此,确定分支目标地址的页面地址是否与分支
指令地址的页面地址匹配。如果是,方法250继续至方框288,在此,
如果选择路线6或7用于分配(例如,当方法250从方框278进入点
A),那么路线6被选择用于分配,并且,如果选择路线0至5用于
分配(例如,当方法250从方框295或296进入点A),那么路线0
至3中的一个被选择用于分配。也就是说,如果在判定方块282处页
面地址匹配,那么分支目标位于与分支指令相同的存储器页面上。在
这种情况下,可以选择BTB28的一个路线用于分配,其允许存储短
TA,并且,在当前示例中,路线0至3和路线6中的条目存储短TA,
如上面所述的。注意,BTB控制电路102可以使用任何方法来选择路
线0至3中的一个用于分配,诸如,LRU,PLRU,循环法,等等。
在分配路线6或路线0至3的一个路线中的条目时,BTB控制电路102
可以使用从CPU30的分支执行单元49接收的信息(例如,分支地址,
分支TA,分支状态)将必要的信息存储到所选择的路线的条目中。
此外,BTB控制电路102可以使用分支目标地址的索引部分来选择要
存储新的BTB条目的所选择的路线的组。
再次参照判定方块282,如果分支目标地址的页面地址与分支指
令不匹配,那么方法250行进至方框284,在此,再次重置相同页面
计数器55。然后,方法行进至方框286,在此,如果选择路线6或7
用于分配(例如,当方法250从方框278进入点A时),那么路线7
被选择用于分配,并且,如果选择路线0至5用于分配(例如,当方
法250从方框295或296进入点A时),那么路线4或5中的一个被
选择用于分配。也就是说,如果在判定方块282处页面地址不匹配,
那么分支目标没有位于与分支指令相同的存储器页面上。在这种情况
下,选择BTB28的一个路线用于分配,其允许存储完整TA,并且,
在当前示例中,路线4、5和6中的条目均存储完整TA,如上面所述
的。注意,BTB控制电路102可以使用任何方法来选择路线4或5中
的一个用于分配,例如,LRU,PLRU,循环法,等等。当分配路线7
或者路线4或5的一个路线中的条目时,BTB控制电路102可以使用
从CPU30的分支执行单元49接收的信息(例如,分支地址,分支TA,
分支状态)将必要的信息存储至所选择的路线的条目中。此外,BTB
控制电路102可以使用分支目标地址的索引部分来选择要存储新的
BTB条目的所选择的路线的组。在方框288和286之后,方法250结
束。
图13示出了可以如何组织BTB28中的路线0至7的另一个示例。
例如,参照图13,用于每个路线的标签条目可以与图4中的相同,其
中上述关于图4所提供的描述在此也适用。也就是说,路线0至路线
5的每一个路线中的条目存储短标签地址以及该短标签地址的对应的
选择位,并且路线6和7的每一个路线中的条目存储完整标签地址。
因此,如上所述,使用选择字段来提供标签地址的剩余上部位,例如,
通过选择由页面地址CAM104提供的适当的页面地址匹配指示符。然
而,不同于图4的实施例,图13的实施例指示了每个路线中的每个条
目存储短TA以及该短TA的对应的选择字段。在这个示例中,可以
使用TA页面地址缓存器(如图14中所示)来存储TA的上部位,并
且可以使用每个条目的选择字段来选择TA的剩余上部位。在上面提
供的假定页面尺寸为4K字节的示例中,短TA是10位,并且正在生
成的完整TA是30位。选择字段包括足够的位来从TA页面地址缓存
器选择适当的条目以完成完整的TA。例如,如下面将要描述的,用
于短TA的选择字段也可以是3位。
图14示出了根据图13的示例的分支目标生成器401,其中,图
14中的分支目标生成器401可以被用于替代图1中的分支目标生成器
119。分支目标生成器401从BTB阵列106的所选择的组接收w0 TA
至w7 TA中的每一个。在这个示例中,w4 TA,w5 TA,和w7 TA中
的每一个也可以是短目标地址,如同w0 TA至w3 TA和w6 TA。分
支目标生成器401还从所选择的组接收w0 TAsel至w7 TAsel中的每
一个。分支目标生成器401包括TA页面地址缓存器410和针对每一
个路线的多路器(包括针对w0的多路器(MUX)400和针对w7的多
路器(MUX)402)。TA页面地址缓存器410包括7个条目,每个条
目均存储20位的TA页面地址(对应于完整TA的剩余上部的20位)。
每个MUX(诸如MUX400和MUX402)接收当前页面地址(指令地
址100的页面地址部分)和TA页面地址缓存器410的7个条目中的
每一个,并且每个MUX基于其对应的选择信号(w0 TAsel至w7 TAsel
中的一个)输出所选择的TA页面地址。因此,在所示的TA页面地
址缓存器410包括7个条目的实施例中,每个TA选择字段包括3位,
其中,值“000”可选择图2中的指令地址100的当前页面地址部分,值
“001-111”选择缓存器410的7个条目中的一个条目。例如,参照对应
于w0的MUX400,针对w0 TAsel的值“000”导致当前页面地址由
MUX400输出,值“001”导致缓存器410的第一条目由MUX400输出,
值“010”导致缓存器410的第二条目由MUX400输出,等等。然后,
在每个MUX的输出处提供级联电路(诸如,级联电路404和406),
以生成要提供给分支目标地址选择器124的完整TA,如上所述。例
如,级联电路404将MUX400提供的TA页面地址与w0 TA(其是短
TA)级联。类似地,MUX402使用w7 TAsel选择要提供至级联电路
406以与w7 TA级联的适当的TA页面地址。
!图15示出了相同页面指示符生成器408,其可以用于图13和
14的示例,取代图9的相同页面指示符生成器158,以生成相同页面
指示符。相同页面指示符生成器408接收针对每个路线的指示符(包
括指示符411和412),其指示目标地址是否如同当前页面地址那样
位于相同页面上。也就是说,如果对应的选择信号等于“000”(其指示
当前页面地址被分支目标生成器401选择用于与短TA的级联),则
指示符(诸如指示符411和412)中的每一个被断言。使用命中信号
(命中路线0至命中路线7)选择由相同页面指示符生成器408接收
的适当的指示符,以提供该指示符作为相同页面指示符。注意,如果
对应的TAsel信号根本不是“000”,那么认为(从TA页面地址缓存器
410选择的)页面地址没有像当前页面地址那样(像当前分支指令那
样)位于相同页面上。
因此,注意,可以相应地修改上述方法10至12,使其既用于生
成分支目标地址,又用于分配,以适应上述参照图13至15描述的短
TA及其对应的选择字段。而且,注意,在备选实施例中,仅路线的
一个子集就可存储短TA及其对应的选择字段,而剩余路线可以存储
完整TA。
至此,应该理解,已经提供了具有改善的存储效率的BTB。在一
个实施例中,可以使用BTB的不同路线来存储不同尺寸的标签地址以
及不同尺寸的TA。例如,可以使用BTB的某些路线的条目来存储短
标签地址,并且可以使用BTB的其它路线的条目来存储完整标签地
址。类似地,可以使用BTB的某些路线的条目来存储短TA,并且可
以使用BTB的其它路线的条目来存储完整TA。对于任何特定的路线,
可以将条目配置为存储短/完整标签地址和短/完整TA的任何组合。此
外,可以存储用于存储短标签地址的那些条目以及额外的选择字段,
以指示短标签地址的剩余地址位。例如,短标签地址的剩余地址位可
以对应于短标签地址的页面地址,并且可以存储在页面地址缓存器中,
其中,选择字段被用于从页面地址缓存器选择适当地页面地址。按照
这种方式,可以减小用于BTB的存储空间。类似地,用于存储短TA
的那些条目也可以包括用于提供来自TA页面地址缓存器的短TA的
剩余地址位的对应的选择字段。
由于实现本发明的装置在极大程度上是由本领域技术人员熟知
的电子部件和电路组成的,为了理解和评价本发明的潜在概念并且为
了不模糊或者偏离本发明的教导,不会按照比如上所述认为必要的程
度更详细的程度来解释电路细节。
适用时上述实施例中的某些实施例可以使用多种不同的信息处
理系统来实现。例如,尽管图1及其讨论描述了一个示例性信息处理
架构,但是给出该信息处理架构仅为了在讨论本发明的不同方面时提
供有用的参照。当然,为了讨论的目的,简化了对该架构的描述,其
仅是可根据本发明使用的多种不同类型的架构中的一种。本领域技术
人员可以理解,逻辑方框之间的边界仅仅是说明性的,并且备选的实
施例可以合并逻辑方框或电路元件或者对各种逻辑方框或电路元件进
行功能的分解。
因此,应该理解,在此所描述的架构仅仅是示例性的,并且,实
际上,也可以实现许多其它能实现相同功能的架构。从抽象但却明确
的意义上来说,任何实现相同功能的部件的布置都有效地“关联”,使
得可以实现所期望的功能。因此,此处被组合起来实现某个特定功能
的任何两个部件可以被看作是彼此“相互关联的”,使得可以实现所期
望的功能,而与架构或中间部件无关。同样地,如此关联的任何两个
部件也可以被看作是彼此“操作性地连接”或者“操作性地耦合”以实现
所希望的功能。
而且,例如,在一个实施例中,数据处理系统10的所示出的元
件是位于单个集成电路上或者位于相同器件内的电路。可选地,数据
处理系统10可以包括任何数量的相互连接的单独集成电路或单独器
件。例如,存储器16可以与处理器12位于相同的集成电路上,或者
位于单独的集成电路上,或者位于与数据处理器系统10的其它元件分
离开的另一外围设备或从属设备内。外围设备18和20也可以位于单
独的集成电路或设备上。
此外,本领域技术人员将认识到,上述操作的功能之间的边界仅
仅是说明性的。多个操作的功能可以被组合到一个单独的操作中,和/
或一个单独的操作的功能可以被分配到额外的操作中。而且,备选实
施例可包括特定操作的多个实例,并且在多种其它实施例中,操作的
顺序可以被改变。
例如,此处描述的软件的全部或部分可以是数据处理系统10的
从诸如存储器16的计算机可读介质或在其它计算机系统上的其它介
质接收的元件。这种计算机可读介质可以永久地、可移除地或者远程
地耦合至诸如数据处理系统10的信息处理系统。计算机可读介质可以
包括,例如但不限于,任何数量的下述介质:包括磁盘和磁带存储介
质的磁存储介质;诸如压缩磁盘介质(例如,CD-ROM,CD-R等)
和数字视频盘存储介质的光存储介质;包括诸如FLASH存储器、
EEPROM、EPROM、ROM的基于半导体的存储器单元的非易失性
存储器存储介质;铁磁数字存储器;MRAM;包括寄存器、缓存器或
缓存、主存储器、RAM等的易失性存储介质;以及包括计算机网络、
点到点通信设备、和载波传输介质的数据传输介质,仅以这些为例。
在一个实施例中,数据处理系统10是诸如个人计算机系统的计
算机系统。其它实施例可以包括不同类型的计算机系统。计算机系统
是可以被设计成给一个或多个用户提供独立计算功率的信息处理系
统。计算机系统可以呈多种形式,包括但不限于,大型计算机、微型
计算机、服务器、工作站、个人计算机、笔记本、个人数字助理、电
子游戏机、汽车或其它嵌入系统、移动电话、以及各种其它无线设备。
典型的计算机系统包括至少一个处理单元、相关联的存储器和多个输
入/输出(I/0)设备。
计算机系统根据程序处理信息并且经由I/O设备产生作为结果的
输出信息。程序是一列诸如特定应用程序和/或操作系统的指令。计算
机程序典型地内部地存储在计算机可读存储器介质上,或者经由计算
机可读传输介质传输至计算机系统。计算机进程典型地包括执行(运
行)程序或程序的部分、当前程序值和状态信息、以及操作系统用来
管理进程的执行的资源。父进程可以产生其它子进程以帮助执行父进
程的整体功能。由于父进程明确地产生子进程以执行父进程的整体功
能的一部分,所以由子进程(以及孙子进程等)执行的功能有时候也
被描述为由父进程执行。
尽管此处参照特定实施例来描述本发明,但是在不脱离下述权利
要求所述的本发明的范围的情况下可以做出各种修改和变型。例如,
可以基于系统要求修改地址字段中使用的位的数目。相应地,说明书
和附图应该被视为是说明性的而非限制性的,并且所有这样的修改都
应该意图包括在本发明的范围内。在此关于特定实施例描述的益处、
优点或问题的解决方案都不应该被解释为是任何权利要求或所有权利
要求的关键的、必须的或者本质的特征或元件。
如在此所使用的,术语“耦合”不意图局限于直接耦合或者机械耦
合。
此外,如在此所使用的,术语“一个”被限定为一个或者多于一个。
而且,权利要求中的诸如“至少一个”和“一个或多个”之类的引导短语
的使用不应该被理解为是暗示由不定冠词引导的另一个保护元件将包
含这样引导的保护元件的任何特定权利要求限制为仅包括这种元件的
发明,即使相同的权利要求包括“一个或多个”或“至少一个”的引导短
语以及不定冠词。这对于定冠词的使用也是成立的。
除非另外指出,诸如“第一”和“第二”之类的术语被使用以任意地
对这种术语所描述的元件进行区别。因此,这些术语没有必要意图指
示这些元件的时间顺序或其它的优先性。
下面包括本发明的各种实施例。
项目1包括具有分支目标缓存器(BTB)的数据处理器,该分支
目标缓存器(BTB)包括按路线分组的多个BTB条目,其中,这些路
线的一个路线中的BTB条目包括短标签地址,这些路线的另一个路线
中的BTB条目包括完整标签地址。项目2包括项目1的处理器,并且
进一步包括:这些路线的一个路线中的BTB条目包括短标签地址,这
些路线的另一个路线中的BTB条目包括完整标签地址。项目3包括项
目1的处理器,并且进一步包括控制与接口单元,该控制与接口单元
被配置为:记录分配在BTB中的位于相同页面上的多个分支指令条
目;保持相同页面状态计数器以指示位于相同页面上的先前接收的分
支指令的数目;其中,当分支指令条目的数目达到阀值数目时,如果
在页面地址缓存器中还没有条目,那么BTB在页面地址缓存器中分配
条目。项目4包括项目1的处理器,并且进一步包括页面地址缓存器,
该页面地址缓存器包括与短标签地址相关的用于多个先前接收的分支
指令的页面地址部分的条目;其中,包括短标签地址的BTB中的条目
进一步包括用于选择页面地址缓存器中的多个条目中的一个条目的选
择字段。项目5包括项目1的处理器,并且进一步包括存储短目标地
址的BTB条目;包括用于分支指令的多个先前接收的目标地址的页面
地址部分的条目的页面目标地址缓存器;并且BTB条目包括用于选择
页面目标地址缓存器中的多个条目中的一个条目的目标选择字段。项
目6包括项目2的处理器,其中,BTB被配置为:针对短目标地址,
将具有相同页面地址的当前分支指令的页面地址部分级联至所选择的
短目标地址,以确定该指令的分支目标地址。项目7包括项目5的处
理器,其中,BTB被配置为:将当前分支指令的页面地址部分或者将
来自具有相同页面地址的页面目标地址缓存器的先前接收的页面地址
部分与所选择的短目标地址级联,以确定当前分支指令的分支目标地
址。
项目8包括具有组相关联分支目标缓存器(BTB)阵列的数据处
理器,该组相关联分支目标缓存器(BTB)阵列包括按路线分组的BTB
条目的组,其中,这些路线的第一路线的组中的BTB条目包括短标签
地址字段,这些路线的第二路线的组中的BTB条目包括完整标签地址
字段。项目9包括项目8的处理器,并且进一步包括:控制与接口单
元,该控制与接口单元被配置为保持相同页面状态计数器以指示位于
相同页面上的多个分支指令;以及,页面地址缓存器,该页面地址缓
存器包括用于位于相同页面上的分支指令的页面地址条目。项目10
包括项目8的处理器,其中,为短标签地址字段分配的位的数目是由
以下数目组成的组中的一个:小于为完整标签地址字段分配的位的数
目,并且基于存储器管理单元(MMU)的页面地址。项目11包括项
目8的处理器,并且进一步包括第一比较器,该第一比较器被配置为
接收来自输入指令的短标签地址以及来自包括短标签地址字段的那些
路线中的所选择的组的短标签地址,该第一比较器还被配置为输出指
示来自输入指令的短标签地址是否等于来自包括短标签地址字段的那
些路线中的所选择的组的短标签中的一个短标签的短路线标签匹配信
号。项目12包括项目11的处理器,并且进一步包括:页面地址缓存
器,该页面地址缓存器被配置为存储包括来自先前接收的指令地址的
页面地址的条目;匹配指示符选择单元,该匹配指示符选择单元被配
置为接收来自页面地址缓存器的条目以及来自包括短标签地址字段的
那些路线中的所选择的组的选择字段;并且,其中,那些路线的第一
路线的组中的BTB条目包括指示针对所选择的组的页面地址缓存器
中的条目的选择字段。项目13包括项目12的处理器,并且进一步包
括第二比较器,该第二比较器被配置为接收来自输入指令的完整标签
地址以及来自包括完整标签地址字段的那些路线中的所选择的组的完
整标签地址,该第二比较器还被配置为输出指示来自输入指令的完整
标签地址是否等于来自包括完整标签地址字段的那些路线中的所选择
的组的完整标签地址中的一个完整标签地址的长命中路线信号。项目
14包括项目12的处理器,并且进一步包括逻辑电路,该逻辑电路被
配置为接收来自第一比较器的短路线标签匹配信号和来自匹配指示符
选择单元的路线页面匹配信号,该逻辑电路还被配置为输出指示输入
指令地址的页面地址是否已经存在于页面地址缓存器中的短命中路线
信号。
项目15包括在具有分支目标缓存器(BTB)的处理器中的方法,
该分支目标缓存器(BTB)包括按路线分组的BTB条目的组,其中,
该方法包括:接收分支指令地址;并且使用该指令地址的索引部分来
选择多个组中的一个组,其中,第一批多个路线的组中的BTB条目包
括短标签地址部分,第二批多个路线的组中的BTB条目包括完整标签
地址部分。项目16包括项目15的方法,并且进一步包括:针对第一
批多个路线,确定所选择的组中的短标签地址部分是否与分支指令地
址的标签部分匹配;通过比较指令地址的页面地址部分和页面地址缓
存器中的条目,生成页面地址匹配指示符,其中,页面地址缓存器中
的条目包括来自先前接收的指令地址的页面地址;以及,基于所选择
的组的选择字段根据页面地址匹配指示符生成路线页面匹配。项目17
包括项目16的方法,并且进一步包括:针对第一批路线,基于路线标
签匹配和路线页面匹配生成命中路线信号;以及,通过将指令地址的
页面地址部分级联至所选择的组的目标地址,生成路线分支目标地址。
项目18包括项目16的方法,并且进一步包括:记录位于相同页面上
的在BTB中分配的多个分支指令条目;并且当分支指令条目的数目达
到阀值数目时,如果在页面地址缓存器中不存在条目,则在页面地址
缓存器中分配条目。项目19包括项目18的方法,并且进一步包括:
针对第二批多个路线,通过确定指令地址的标签部分和页面地址部分
是否等于所选择的组的完整标签地址部分,生成针对所选择的组的命
中路线信号;以及,提供所选择的组的目标地址作为路线分支目标地
址。项目20包括项目19的方法,并且进一步包括:将具有路线分支
目标地址的预测信息和相同页面指示符提供给处理器。