一种用以储存目标地址的分支目标缓冲器系统及方法

文档序号:6461455阅读:126来源:国知局
专利名称:一种用以储存目标地址的分支目标缓冲器系统及方法
技术领域
本发明有关于计算机架构(computer architecture)中的处理器(processor) 的分支目标緩冲器(BTB),尤其有关于一种用以储存目标地址的分支目标緩 冲器系统及方法,应用于16位元、32位元、64位元或更多位元的处理器架构, 在储存分支指令的目标地址时,分支目标緩冲器无须储存目标地址的全部位 元,而^又须储存目标地址的变动范围、进位位元(Carry bit)、以及减/加位元 (Sub/Addbit),为针对处理器(processor)中的分支目标緩冲器(BTB),提 出减少目标地址栏位(target address field)位元个数的系统及方法。
背景技术
分支目标緩沖器(BTB )是用来储存分支指令(branch instruction)的目标 地址(targetaddress),并常被用来判断是否为分支指令,如果某一指令已被认 定为分支指令,再由分支预测器(branch predictor)根据此分支指令跳跃的历 史,来判断此分支指令是否会跳跃(taken or not),若分支预测器预测执行方 向改变而并非为循序执行,则由分支目标緩沖器的目标地址栏位(target address field)提供目标地址,让程式继续执行下去。
图1为一示意图,用以显示说明现有技术中用以储存分支指令(branch instruction)的目标地址(target address)的分支目标緩冲器的运作情形。如图 1中所示,分支目标緩冲器IO储存了曾执行过的目标分支(target branch)的 历史记录,分支目标缓沖器10具有多个进入点(entry) 101,而进入点101 的个数可为,例如,512个(512-entry),即,在分支目标緩沖器10中,例如, 具有512个进入点101 (512-entry)。
在分支目标緩冲器10中的一进入点(entry) 101包含标签(tag) 102、以 及资料(data) 103,标签102为先前执行过的分支指令地址的[31:9]位元(在 此,以512-entry为例),而资料(data) 103包含了前一个执行过的分支指令的目标地址(target address) ([31:0]) 104、以及二个位元的历史资讯105。
分支目标缓沖器10会抓取目前的指令地址,然后检查该指令地址是否为 之前所曾执行过的分支指令。使用目前地址的[8.'2]位元来读出标签(tag) 102, 然后跟目前指令地址的[31:9]位元做比对。如果目前分支指令地址和快取中的 标签(tag) 102相同,资料103中的记录历史资讯的二位元历史资讯105会指 出该分支指令常被抓取,分支目标緩冲器IO将使用目标地址104做为下一个 要传送到指令快取的指令地址。资料103中的二个历史记录位元历史资讯105 代表了四种在分支目标緩冲器IO的分支进入点(entry) 101里可能的状况。
纵观现有技术,分支目标缓冲器在储存分支指令的目标地址(target address)时,必须4渚存全部的目标地址栏位位元,因而,分支目标緩冲器所含 的位元数总数无法降低,致使晶片的面积以及耗电功率无法进一步降低,因此, 如何能让分支目标緩冲器所必须储存、使用的位元数总数减少,并可应用于 16位元、32位元、64位元或更多位元的处理器架构,但确可产生出完整的目 标地址,并可达到相同的运算效能,以及达到降低晶片的面积以及耗电功率的 目的,乃是待解决的问题。

发明内容
本发明的主要目的便是在于提供一种用以储存目标地址的分支目标緩冲 器系统及方法,应用于16位元、32位元、64位元或更多位元的处理器架构, 分支指令的目标地址储存环境,在储存分支指令的目标地址时,分支目标緩沖 器无须储存目标地址的全部位元,而仅须储存目标地址的变动范围、进位位元 (Carry bit )、以及减/加位元(Sub/Add bit )。
本发明的又一 目的便是在于提供一种用以储存目标地址的分支目标緩沖 器系统及方法,应用于16位元、32位元、64位元或更多位元的处理器架构, 无须储存分支指令地址(branch instruction address)与目标地址(target address) 相似的部分,因而减少了分支目标緩冲器(BTB )所须储存的目标地址栏位的 位元个数。
本发明的再一 目的便是在于提供一种用以储存目标地址的分支目标緩冲 器系统及方法,应用于16位元、32位元、64位元或更多位元的处理器架构,虽使用较少的目标地址栏位位元个数,但确可产生出完整的目标地址,而并无 运算效能的损失。
根据以上所述的目的,本发明提供了一种新颖的用以储存目标地址的分支
目标緩沖器系统,可应用于16位元、32位元、64位元或更多位元的处理器架 构,该分支目标緩冲器系统包含分支目标緩沖器、指令地址加l单元、以及指 令地址减1单元。该分支目标緩沖器用以储存目标地址的变动范围、进位位元、 以及减/加位元;按不同的进位位元值、以及减/加位元值,指令地址加1单元 可对所送达的指令地址的某些部份执行加1的运算,而指令地址减1单元则可 对所送达的指令地址的某些部份执行减1的运算,或者,指令地址加1单元、 以及指令地址减1单元无须执行任何运算,视进位位元值、以及减/加位元值 而定。指令地址加1单元或指令地址减1单元,对指令地址的某些部份执行加 1或减1的运算后,且将所运算的结果输回至分支目标緩冲器。
在查找(Look up)分支目标缓冲器的同时,该指令地址加l单元可对目 标地址的变动范围以上的部分执行加1的运算,而指令地址减1单元则可对目 标地址的变动范围以上的部分做减1的运算。
应用本发明的用以储存目标地址的分支目标緩沖器方法时,分支目标緩沖 器无须储存目标地址的全部位元,而是储存目标地址的变动范围、进位位元、 以及减/加位元,虽使用较少的位元个数,但确可产生出完整的目标地址,且 于产生目标地址的过程时,不会增加时间延迟,并无运算效能的损失。
本发明的用以储存目标地址的分支目标缓冲器方法流程,首先,判别、设 定分支指令地址与目标地址的相同的地址栏位部分;接着,在查找(Lookup) 分支目标緩沖器的同时,通过判断出的进位位元值、以及減/加位元值,使指 令地址加1单元对所送达的指令地址的某些部份执行加1的运算,或,使指令 地址减1单元对所送达的指令地址的某些部份执行减1的运算,或者,指令地 址加1单元、以及指令地址减1单元无须执行任何运算,视进位位元值、以及 减/加位元值而定,在此,该指令地址的某些部份为目标地址的变动范围以上 的部分,指令地址加1单元或指令地址减1单元,对目标地址的变动范围以上 的部分执行加1或减1的运算后,且将所运算的结果输回至分支目标緩冲器; 最后,分支目标緩冲器将分支指令地址与目标地址的相同部份、以及经运算后的目标地址的变动范围以上的部分予以组合成目标地址并予以输出。
本发明的用以储存目标地址的分支目标緩冲器系统及方法,利用较少的位 元数而达成相同功能,并可降低晶片的面积、以及耗电功率。本发明可应用于
16位元、32位元、64位元或更多位元的处理器架构,以32位元MIPS指令集 为例,利用本发明的方法,每一个目标地址栏位(target address field)可减少 15个位元,也就是原本需要储存32个位元,而使用本发明的方法则仅须储存 17个位元,因而减少了 46.88%的位元数总数使用量。又,以32位元ARM指 令集为例,利用本发明的方法,每一个目标地址栏位(targetaddress field),可 减少7个位元,也就是原本需要储存32个位元,而使用本发明的方法则仅须 储存25个位元,因而减少了 21.88%的位元数总数使用量。本发明的用以储存 目标地址的分支目标緩冲器系统及方法可适用于任何指令集,对于不同指令集 而言,所可节省的最大位元个数也不同。
以512进入点(512-entry)的分支目标緩冲器为例,对于32位元MIPS 指令集而言,总共可减少7680 ( 15x512=7680)个位元,而对32位元ARM指 令集而言,总共可减少3584 (7x512=3584)个位元。对于64位元或是更高位 元的计算机架构而言,更可节省更多的位元总数使用量。若分支目标緩冲器的 进入点entry数目越多,则可省下的位元个数也会越多。
本发明的用以储存目标地址的分支目标緩冲器方法,包括(a)不储存目 标地址的全部位元,而储存位元个数较少的偏移目标(Offset target),偏移目 标分成三个部分,目标地址的变动范围、进位位元(Carry bit)、减/加位元 (Sub/Add bit),在此,在本发明中,偏移目标(offsettarget)用来取代32位 元目标地址,并储存于分支目标緩冲器中,以此来达到降低储存的位元个数, 偏移目标的总位元个数为变动范围的位元数再增加2个位元;(b)利用指令地 址加1单元、以及指令地址减1单元,在查找(Look up )分支目标緩冲器(BTB ) 的同时,可对分支指令地址的变动范围以上的部分执行加或减的运算。
其中(a),偏移目标的目标地址的变动范围的位元个数并不固定,而为指 令集的分支指令格式的偏移量的栏位的位元个数减去符号位元,若偏移目标的 目标地址的变动范围多储存几个位元,相对地,两个对指令地址的变动范围以 上的部分做加或减的指令地址加1或减1单元,所运算的位元个数即可减少几个位元。
其中(b),对分支指令地址的变动范围以上的部分执行力。或减的运算,可 用加法器(Adder)或计数器(Counter)而予以施行。 本发明具有以下有益效果
通过使用本发明,在储存分支指令的目标地址时,分支目标緩冲器无须储 存目标地址的全部位元,而仅须储存目标地址的变动范围、进位位元(Carry bit)、以及减/加位元(Sub/Add bit),由于本发明的分支目标緩沖器无须储存 分支指令地址与目标地址相似的部分,因而减少了分支目标緩冲器所须〗诸存的 目标地址栏位的位元个数。本发明虽使用较少的目标地址栏位位元个数,但确 可产生出完整的目标地址,而并无运算效能的损失。


图1为一示意图,用以显示说明现有技术的用以储存分支指令(branch instruction)的目标地址(target address)的分支目标緩冲器的运作情形;
图2为一示意图,用以显示说明本发明的用以储存目标地址的分支目标緩 冲器系统的系统方块图3为一示意图,用以显示说明于图2中本发明的用以储存目标地址的分 支目标緩冲器系统的分支目标緩冲器的一实施例;
图4为一示意图,用以显示说明于图2中本发明分支目标緩沖器系统的指 令地址加1单元的一实施电路;
图5为一示意图,用以显示说明于图2中本发明分支目标緩冲器系统的指 令地址减1单元的一实施电路;
图6为一流程图,用以显示说明本发明的用以《渚存目标地址的分支目标緩 沖器方法的流程步骤;
图7为一示意图,用以显示说明32位元MIPS指令集的分支指令格式;
图8为一示意图,用以显示说明32位元ARM指令集的分支指令格式;
图9为一示意图,用以显示说明MIPS指令集的分支指令地址与目标地址 的比较情形;
图10为一示意图,用以显示说明ARM指令集的分支指令地址与目标地址的比较情形;
图ll为一示意图,用以显示说明ARM指令集的偏移目标(offsettarget) 格式;
图12为一示意图,用以显示说明现有的分支目标緩冲器读取时间情形; 图13为一示意图,用以显示说明MIPS指令集的根据分支指令地址获取目 标地址的一实施例。
主要元件符号说明
1分支目标緩沖器系统2分支目标緩冲器3指令地址加1单元
4指令地址减1单元10分支目标緩冲器101进入点
102标签
103资料
104目标地址
105历史资讯
2021 22 23模组
2425 26 27多工器
2829 30 31机制
32多工器
具体实施例方式
为使本领域的技术人员了解本发明的目的、特征及功效,通过下述具体实
施例,并配合附图,对本发明进行详加说明
图2为一示意图,用以显示说明本发明的用以储存目标地址的分支目标緩 冲器系统的系统方块图。本发明可应用于16位元、32位元、64位元或更多位 元的处理器架构,如图2中所示,分支目标緩冲器系统1包含分支目标緩冲器 2、指令地址加1单元3、以及指令地址减1单元4。该分支目标緩沖器2用以储存目标地址的变动范围、进位位元、以及减/ 加位元。按不同的进位位元值、以及减/加位元值,指令地址加1单元3可对 所送达的指令地址的某些部份执行加1的运算,或,指令地址减1单元4则可 对所送达的指令地址的某些部份执行减1的运算;又或者,指令地址加1单元 3、以及指令地址减1单元4无须执行任何运算,视进位位元值、以及减/加位 元值而定。指令地址加1单元3或指令地址减1单元4,对指令地址的某些部 份执行加1或减1的运算后,且将所运算的结果输回至分支目标緩冲器2。
在查找(Look up )分支目标缓冲器2的同时,该指令地址加1单元3可对 目标地址的变动范围以上的部分执行加1的运算,或者,指令地址减1单元4 则可对目标地址的变动范围以上的部分做减1的运算。
在此,以32位元指令地址为例,在读取分支目标緩沖器2的过程,在以 指令地址查找(look up )分支目标緩沖器2之时,同时也将指令地址送到指令 地址加1单元3、以及指令地址减1单元4。该指令地址加1单元3可对目标 地址的变动范围以上的部分执行加1的运算,在此,指令地址加1单元3对指 令地址[31:25]部分执行加1的运算(指令地址[31:25]+1);或者,指令地址减 l单元4则可对目标地址的变动范围以上的部分做减1的运算,在此,指令地 址减1单元4功能单元对指令地址[31:25]部分执行减1的运算(指令地址[31:25] -l)。
指令地址加1单元3对指令地址的某些部份执行力。1的运算(指令地址 [31:25]+1)后,或者,指令地址减1单元4对指令地址的某些部份执行减1 的运算(指令地址[31:25] - l)后,会将所运算的结果输回至分支目标缓沖器 2。
图3为一示意图,用以显示说明于图2中本发明的用以储存目标地址的分 支目标緩冲器系统的分支目标緩冲器的一实施例。图3为分支目标緩冲器2 的一实施例,如图3中所示,分支目标緩冲器2包含模组20 (way 0)、模组
21 (way 1)、模组22 (way2)、模组23 (way3)、多工器24、多工器25、多 工器26、多工器27、机制28、机制29、机制30、机制31、以及多工器32。
根据进位与减/加这两个位元,模组20(way0)、模组21 (wayl)、模组
22 (way 2)、模组23(way3),分别地将选择讯号S传送到多工器24、多工器25、多工器26、多工器27。多工器24、多工器25、多工器26、多工器27 分别地根据所接收到的选择讯号S,而选取指令地址[31:25]部分已执行减1的 运算的指令地址[31:25] -1,或指令地址[31:25]部分已执行加1的运算的指令 地址[31:25]+1,或指令地址[31:25]部分未执行减1或加1的运算的指令地址 [31:25],并将所选取的指令地址[31:25] - 1或指令地址[31:25]+1或指令地址 [31:25]予以输出传送至多工器32。
目标地址的变动范围以上的部分,即,目标地址[31:25](指令地址[31:25〗), 再与目标地址的变动范围(目标地址[24: O])合并,其中目标地址的第0个 位元与第1个位元的值直接设定为0。机制28、机制29、机制30、机制31 分别地将来自于模组20 (way 0 )、模组21 (way 1 )、模组22 (way 2 )、模组 23 (way 3)的标签与目前的指令地址的标签予以做比较,然后依照标签比较 的结果,从多工器32中选择某一个要读取的目标地址输出,即为此分支指令 所对应的32位元目标地址(32-bit target address )。
图4为一示意图,用以显示说明于图2中本发明分支目标緩冲器系统的 指令地址加1单元的一实施电路。如图4中所示,为指令地址加1单元3 (r指 令地址[31:25]+1」)的功能单元的内部电路,各个位元的运算都是独立的,而 且运算时间并不长,可以在预定时间内做完而执行加1的运算。
图5为一示意图,用以显示说明于图2中本发明分支目标缓冲器系统的 指令地址减1单元的一实施电路。如图5中所示,为指令地址减1单元4(r指 令地址[31:25] - 1」)的功能单元的内部电路,各个位元的运算都是独立的, 而且运算时间并不长,可以在预定时间内做完而执行减1的运算。
图6为一流程图,用以显示说明本发明的用以储存目标地址的分支目标 緩沖器方法的流程步骤。如图6中所示,首先,在步骤11中,分支目标緩冲 器系统1判别、设定分支指令地址与目标地址的相同的地址栏位部分,并进到 步骤12。
接着,在步骤12中,在查找(Lookup)分支目标缓冲器2的同时,通过 判断出的进位位元值、以及减/加位元值,使指令地址加1单元3对所送达的 指令地址的某些部份执行加1的运算,或,使指令地址减1单元4对所送达的 指令地址的某些部份执行减1的运算,或者,指令地址加1单元3、以及指令地址减1单元4无须执行任何运算,视进位位元值、以及减/加位元值而定,
在此,该指令地址的某些部份为目标地址的变动范围以上的部分,指令地址加
1单元3或指令地址减1单元4,对目标地址的变动范围以上的部分执行加1 或减1的运算后,且将所运算的结果输回至分支目标緩冲器2,并进到步骤13。 在步骤13中,分支目标緩沖器2将分支指令地址与目标地址的相同部份、 以及经运算后的目标地址的变动范围以上的部分予以组合成目标地址并予以 输出。
本发明利用分支指令地址与目标地址有部分相似的部分,两者相似的部 分就不储存在分支目标緩沖器(BTB )中,利用这一点来达到減少目标地址栏 位(targetaddress field)的位元个数,至于两者相似的部分为何,就要从指令 集的分支指令格式来说明。
图7为一示意图,用以显示说明32位元MIPS指令集的分支指令格式。 图8为一示意图,用以显示说明32位元ARM指令集的分支指令格式。以下 所述的,第1例为32位元MIPS指令集分支指令的跳跃范围说明,第2例为 32位元ARM指令集分支指令的跳跃范围说明,而第3例则为32位元MIPS 指令集跳跃指令跳跃到相对地址的说明。由这三个例子可知分支指令跳跃的距 离是有固定范围的,偏移量(offset)的值会受到限制,而且不同指令集的分 支指令跳跃范围也不尽相同。
第1例
BNER3, R4, name if(Regs[R3]!=Regs[R4])PC — name; ((PC+4 ) -217) <= name < ((PC+4 ) +217) 在此,在图7中,MIPS指令集的分支指令格式中的immediate栏位的值 为偏移量(offset )。
第2例
BEQ name if(Zset)PC — name;((PC+8 ) - 225) <=醒e < ((PC+8)十225) 在此,在图8中,ARM指令集的分支指令格式中的offset栏位的值为偏 移量(offset )。
第3例3: j$rt
以下的第4例是一个位元个数较少的简单例子,如图13所示,以32位元 MIPS指令集为例(图13中从右至左,为第0位元至第9位元),两个位元位 数不相同的二进制数字相加,其中casel的偏移量为正数最大,而case2的偏 移量为负数最小。在此,正数最大的偏移量为(01111) 5个位元,而其正号 以符号位元0来表示;负数最小的偏移量为(10000) 5个位元,而其负号以 符号位元1来表示。在执行相加动作之前,在casel以及case2中,偏移量的 值必须先向左位移(shift)两个位元,而空出来的两个位元的值,直接设定为 0,此时,各个偏移量的值均为6个位元;另外,由于偏移量的符号位元个数 较少仅为l位元,因此,还必须做符号延伸(sign extended)才能与『分支指 令地址+4』做加法运算,因而,偏移量的符号位元个数将由1位元而做符号延 伸为4位元,而运算结杲即为目标地址。分支指令地址的变动为每次加4的原 因为,第0位元以及第1位元为Byte offset;目标地址由右至左为第0位元至 第9位元,其中,偏移量的变动范围以上部分,即为第6位元至第9位元,而 第6位元为偏移量的符号位元,其余的第7位元至第9位元则为符号延伸(sign extended )。
由此可知,如果有进位产生,会造成两者的变动范围以上的部分即第6 位元至第9位元,会有加1或减1的差异,若没有进位则为相同而并无差异的 情况产生。
图9为一示意图,用以显示说明MIPS指令集的分支指令地址与目标地址 的比较情形。图10为一示意图,用以显示说明ARM指令集的分支指令地址 与目标地址的比较情形。在图9、图10中,将分支指令地址与目标地址予以 比较,可知,分支指令地址与目标地址的差异主要是在变动范围的部分,而目 标地址的变动范围以上的部分,若没有进位会与原来分支指令地址相同,若有进位,则目标地址的变动范围以上的位元部分会有加1或减1的变化。
另外byte offset这部分是不会改变的(因为PC每次都加4),所以只需要 储存变动范围再加上两个额外的位元,用来记录有无进位以及是^f故加或减调整
本发明适用于各种指令集的分支目标緩冲器,以下说明均以32位元ARM 指令集为例,其他指令集同理。在本发明中,使用偏移目标(offsettarget)取 代了原本储存在分支目标緩冲器中的32位元目标地址,偏移目标的格式请参 考图11,图11为 一示意图,用以显示说明ARM指令集的偏移目标(offset target) 格式,其中目标地址的变动范围这个部分很明显,无须再予以说明。
进位(Carry)位元是用来判断有无进位到目标地址的变动范围以上的部 分,即有无进位到第25位元及以上,而影响了第25位元至第31位元的值。 比较分支指令地址与目标地址的第31位元到第25位元,在此位元范围的间的 每一个位元,若有某一个位元不同,则判断结果为有进位的情况产生,而图 11中进位位元的计算方程式,即是判断分支指令地址与目标地址的第31位元 到第25位元的每一个位元有无相等的作法,若相等则进位位元的值为0,表 示没有进位,若不相等则进位位元的值为1,表示有进位,而减/加(Sub/Add) 这个位元,则是依照原分支指令的偏移量为正数或负数来决定,若是正数则减 /加(Sub/Add)位元的值为0,若是负数则减/加(Sub/Add)位元的值为1, 接下来是说明如何利用偏移目标,而得到32位元目标地址的算法。
第1行targetaddress[24:2]-offsettarget[24:2]
第2行If ((Carry = 1) && ( Sub/add == 1))
第3行target address[31:25] = pc[31:25] - 1;
第4行else if (( Carry == 1 ) && (Sub/add == 0 ))
第5行target address[31:25] = pc[31:25] + 1;
第6行else
第7行target address[31:25] = pc[31:25]; 第8行target address[l :0〗=pc[l :0〗;
其中,在第1行,将偏移目标的[24:2]位元予以设定为目标地址的[24:2] 位元;在第2行中,判断进位位元的值是否为1、且减/加位元的值是否也为1,若进位位元的值为1、且减/加位元的值为1,则进行第3行,若进位位元的值 为0,则进行第7行;在第4行,若进位位元的值为1、且减/加位元的值为0, 则进行第5行;在第2至第7行后,进行第8行。
图12为一示意图,用以显示说明现有的分支目标緩沖器读取时间情形。 如图中所示,图12为一般的分支目标緩冲器(BTB)的读取过程,其过程大 致为先解码(decode)选出要读RAM的哪一个集合(set),再读出在RAM所 对应集合中的每一笔资料,比较各笔资料的标签(tag),在依照标签比较之后 的结果,用多工器选出真正要读取的目标地址,之后就将目标地址送到NPC (NextPC )。
而本发明对目标地址的变动范围以上的部分,做加1与减l运算的调整需 在比较标签(tag)之前做完,这样子的作法没有增加时间延迟(time delay )。 本发明的附图、元件符号或名词定义可参考如下
1. 目标地址(target address)为分支指令(branch instruction)浪匕i 夭的目的 地地址。
2. 指令地址[31:25]的意思为32位元的指令地址中的第25位元到第31位 元,总共有7个位元,其余以此类推/
3. 分支目标緩冲器(BTB, Branch Target Buffer)为存放分支指令对应的 目标地址。
4. MIPS指令集的分支指令格式中的immediate栏位与ARM指令集的分支 指令格式中的offset栏位的值就是本发明提到的偏移量(offset )。
5. 偏移目标(offset target)为本发明用来取代32位元目标地址,储存在 分支目标緩冲器中,以此来达到降低储存的位元个数。偏移目标的总位元个数 为变动范围的位元数再增加2个位元。
6. 分支预测器(branchpredictor),根据分支指令的跳跃历史,来判断此分 支指令是否会跳跃(taken or not )。
7. 变动范围为分支指令地址与目标地址比较的主要差异部分,根据本发明 的设计,变动范围的位元个数为指令集的分支指令格式(branch instruction format)中的偏移量的栏位位元个数减去符号位元(signbit)。
8. byte offset为指令地址的第0个位元与第1个位元,在32位元指令集中是固定不会变动的部分,而如果是64位元指令集byte offset则会有3个位元 是不会变动的。(本发明举的位元例子都是从O开始)
9.示意图中,如果线与线之间有圆点,表示两条线有互相连接,若没有圓 点,表示两条线没有互相连接。
以上所述仅为本发明之较佳实施例而已,并非用以限定本发明的范围;凡 其它未脱离本发明所揭示之精神下所完成的等效改变或修饰,均应包含在下述 的专利范围内。
权利要求
1. 一种用以储存目标地址的分支目标缓冲器方法,应用在16位元、32位元、64位元或更多位元的处理器架构,其特征在于,包含以下程序判别、设定分支指令地址与目标地址的相同的地址栏位部分;在查找分支目标缓冲器时,通过判断出的进位位元值、以及减/加位元值,使指令地址加1单元对所送达的目标地址的变动范围以上的部分执行加1的运算,或,使指令地址减1单元对所送达的指令地址的某些部份执行减1的运算,又或者,指令地址加1单元、以及指令地址减1单元无须执行任何运算,视进位位元值、以及减/加位元值而定,指令地址加1单元或指令地址减1单元,对目标地址的变动范围以上的部分执行加1或减1的运算后,且将所运算的结果输回至分支目标缓冲器;以及分支目标缓冲器将分支指令地址与目标地址的相同部份、以及经运算后的目标地址的变动范围以上的部分予以组合成目标地址并予以输出。
2. 如权利要求1所述用以储存目标地址的分支目标緩冲器方法,其特征 在于,指令地址的某些部分为目标地址的变动范围以上的部分。
3. 如权利要求2所述用以4渚存目标地址的分支目标緩冲器方法,其特征 在于,目标地址的变动范围的位元个数为指令集的分支指令格式的偏移量的栏 位的位元个数减去符号位元。
4. 如权利要求2所述用以储存目标地址的分支目标緩沖器方法,其特征 在于,目标地址的变动范围以上的部分为自0位元开始的32位元指令地址的 第17位元至第31位元。
5. 如权利要求2所述用以储存目标地址的分支目标緩冲器方法,其特征 在于,目标地址的变动范围以上的部分为自0位元开始的32位元指令地址的 第25位元至第31位元。
6. —种用以储存目标地址的分支目标緩冲器系统,应用于16位元、32 位元、64位元或更多位元的处理器架构,其特征在于,包含分支目标緩沖器,该分支目标緩冲器用以储存目标地址的变动范围、进位 位元、以及减/力口位元;指令地址加1单元,在查找分支目标緩沖器时,该指令地址加1单元按不 同的进位位元值、以及减/加位元值,可对所送达的指令地址的某些部份执行加1的运算,且将所运算的结果输回至分支目标緩冲器;以及指令地址减1单元,在查找分支目标緩冲器时,该指令地址减1单元按不 同的进位位元值、以及减/加位元值,可对所送达的指令地址的某些部份执行 减l的运算,且将所运算的结果输回至分支目标緩沖器,或者,指令地址加1单元、以及指令地址减1单元无须执行任何运算,视 进位位元值、以及减/加位元值而定,且将指令地址的某些部分输回至分支目 标援冲器;分支目标缓冲器将分支指令地址与目标地址的相同部份、以及经运 算后的指令地址的某些部分予以组合成目标地址并予以输出。
7. 如权利要求6所述用以储存目标地址的分支目标緩沖器系统,其特征 在于,指令地址的某些部分为目标地址的变动范围以上的部分。
8. 如权利要求7所述用以储存目标地址的分支目标緩冲器系统,其特征 在于,目标地址的变动范围的位元个数为指令集的分支指令格式的偏移量的栏 位的位元个数减去符号位元。
9. 如权利要求7所述用以储存目标地址的分支目标緩冲器系统,其特征 在于,目标地址的变动范围以上的部分为自0位元开始的32位元指令地址的 第17位元至第31位元。
10. 如权利要求7所述用以储存目标地址的分支目标緩冲器系统,其特征 在于,目标地址的变动范围以上的部分为自0位元开始的32位元指令地址的 第25位元至第31位元。
全文摘要
一种用以储存目标地址的分支目标缓冲器系统及方法,应用于16位元、32位元、64位元或更多位元的处理器架构,分支指令的目标地址储存环境,在储存分支指令的目标地址时,分支目标缓冲器无须储存目标地址的全部位元,而仅须储存目标地址的变动范围、进位位元、以及减/加位元。由于本发明的分支目标缓冲器无须储存分支指令地址与目标地址相似的部分,因而减少了分支目标缓冲器所须储存的目标地址栏位的位元个数。本发明虽使用较少的目标地址栏位位元个数,但确可产生出完整的目标地址,而并无运算效能的损失。
文档编号G06F9/38GK101533344SQ20081008374
公开日2009年9月16日 申请日期2008年3月10日 优先权日2008年3月10日
发明者王得安 申请人:王得安
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1