使用可变长度指令集处理器中分支目标地址缓存的分支预测.pdf

上传人:111****112 文档编号:973136 上传时间:2018-03-22 格式:PDF 页数:15 大小:743.79KB
返回 下载 相关 举报
摘要
申请专利号:

CN200780029359.X

申请日:

2007.08.07

公开号:

CN101681258A

公开日:

2010.03.24

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 9/30申请公布日:20100324|||实质审查的生效IPC(主分类):G06F 9/30申请日:20070807|||公开

IPC分类号:

G06F9/30; G06F9/38

主分类号:

G06F9/30

申请人:

高通股份有限公司

发明人:

布莱恩·迈克尔·斯坦普尔; 罗德尼·韦恩·史密斯

地址:

美国加利福尼亚州

优先权:

2006.8.9 US 11/463,370

专利代理机构:

北京律盟知识产权代理有限责任公司

代理人:

刘国伟

PDF下载: PDF下载
内容摘要

在其中每一指令的长度是最小指令长度粒度的倍数的可变长度指令集中,所采用的分支指令的最后粒度(即,结尾)的指示存储在分支目标地址高速缓冲存储器(BTAC)中。如果预测稍后在所述BTAC中命中的分支指令被采用,那么直接越过所述分支指令的所述所指示的结尾开始从管线中冲洗先前所取出的指令。此技术通过避免将所述分支指令的长度存储在所述BTAC中的需要来节省BTAC空间,并通过消除计算从何处开始冲洗(基于所述分支指令的长度)的必要性而改进性能。

权利要求书

1.  一种执行来自可变长度指令集的指令的方法,其中每一指令的长度是最小指令长度粒度的倍数,所述方法包括:
将评估为被采用的分支指令的分支目标地址(BTA)存储在分支目标地址高速缓冲存储器(BTAC)中;
将所述分支指令的最后粒度的指示符与所述BTA一起存储;以及
在随后在所述BTAC中命中后,冲洗越过所述命中分支指令的所述最后粒度而取出的所有指令。

2.
  根据权利要求1所述的方法,其中以取出群组的形式取出所述分支指令,且其中通过所述取出群组中的第一指令的地址将含有所述BTA的BTAC条目编入索引。

3.
  根据权利要求2所述的方法,其中所述分支指令的所述最后粒度的所述指示符指示所述分支指令的所述最后粒度的结尾在所述取出群组内的相对位置。

4.
  根据权利要求1所述的方法,其中所述分支指令与指令区块相关联,且其中通过所述区块中所有指令的共用地址位将所述含有所述BTA的BTAC条目编入索引。

5.
  根据权利要求4所述的方法,其中所述分支指令的所述最后粒度的所述指示符指示所述分支指令的所述最后粒度的结尾在所述指令区块内的相对位置。

6.
  根据权利要求1所述的方法,其进一步包括,在随后在所述BTAC中命中后,至少部分地基于所述命中分支指令的所述最后粒度的所述指示符而存取分支历史表(BHT)。

7.
  根据权利要求1所述的方法,其进一步包括,在冲洗越过所述命中分支指令的所述最后粒度而取出的所有指令之后,取出以所述BTA开始的指令。

8.
  一种执行来自可变长度指令集的指令的处理器,其中每一指令的长度是最小指令长度粒度的倍数,所述处理器包括:
指令高速缓冲存储器,其存储多个指令;
分支目标地址高速缓冲存储器(BTAC),其存储分支目标地址(BTA)和先前已评估为被采用的分支指令的最后粒度的指示符;
分支预测单元(BPU),其预测当前分支指令将评估为被采用或是不被采用;
指令执行管线,其执行指令;
一个或一个以上控制电路,其操作以使用当前指令地址同时存取所述指令高速缓冲存储器和所述BTAC;且进一步操作以响应于所采用分支预测和先前所评估的分支指令的最后粒度的指示符而冲洗在分支指令之后取出的所有指令的管线。

9.
  根据权利要求8所述的处理器,其中所述BTAC是通过包含先前已评估为被采用的分支指令的取出群组中的第一指令的地址而编入索引的滑动窗BTAC。

10.
  根据权利要求9所述的处理器,其中所述先前已评估为被采用的分支指令的所述最后粒度的所述指示符指示所述分支指令的所述最后粒度在所述取出群组内的相对位置。

11.
  根据权利要求8所述的处理器,其中所述BTAC是通过包含先前已评估为被采用的分支指令的指令区块中的所有指令的共用地址位而编入索引的基于区块的BTAC。

12.
  根据权利要求11所述的处理器,其中所述先前已评估为被采用的分支指令的所述最后粒度的所述指示符指示所述分支指令的所述最后粒度在所述指令区块内的相对位置。

13.
  根据权利要求8所述的处理器,其进一步包括存储先前分支评估信息的分支历史表(BHT),所述BHT至少部分地通过所述先前已评估为被采用的分支指令的所述最后粒度的所述指示符而编入索引。

14.
  根据权利要求13所述的处理器,其中所述分支预测至少部分地基于所述BHT的输出。

15.
  一种包括多个条目的分支目标地址高速缓冲存储器(BTAC),每一条目通过标签与存储分支目标地址(BTA)以及先前已评估为被采用的分支指令的最后粒度的指示符而编入索引。

16.
  根据权利要求15所述的BTAC,其中所述标签包括包含先前已评估为被采用的分支指令的取出群组中的第一指令的地址。

17.
  根据权利要求16所述的BTAC,其中所述先前已评估为被采用的分支指令的所述最后粒度的所述指示符指示所述分支指令的所述最后粒度在所述取出群组内的相对位置。

18.
  根据权利要求15所述的BTAC,其中所述标签包括包含先前已评估为被采用的分支指令的指令区块中的指令的共用地址位。

19.
  根据权利要求18所述的BTAC,其中所述先前已评估为被采用的分支指令的所述最后粒度的所述指示符指示所述分支指令的所述最后粒度在所述指令区块内的相对位置。

说明书

使用可变长度指令集处理器中分支目标地址缓存的分支预测
技术领域
本发明大体上涉及可变长度指令集处理器的领域,且明确地说,涉及存储所采用分支指令的最后粒度的指示符的分支目标地址高速缓冲存储器。
背景技术
微处理器在多种应用中执行计算任务。改进处理器性能是通过实现较快操作和/或通过增强型软件增加功能性来驱动产品改进的永恒设计目标。在许多例如便携式电子装置的嵌入式应用中,省电和减小芯片大小也是处理器设计和实施中的重要目标。
多数现代处理器使用管线结构,其中每一者具有多个执行步骤的循序指令在执行中重叠。这种开发循序指令流中的指令之间的并行性的能力显著有助于改进的处理器性能。在理想条件下且在于一个循环中完成每一管级的处理器中,在填充管线的简要初始过程之后,指令可在每一循环完成执行。
由于包含指令之间的数据相依性(数据冒险(data hazard))、例如分支的控制相依性(控制冒险)、处理器资源分配冲突(结构冒险)、中断、高速缓存未命中等的多种因素,此些理想条件在实践中从未实现。处理器设计的主要目标是避免这些冒险,并保持管线“全满”。
所有真实世界程序都包含分支指令,所述分支指令可包括无条件或有条件分支指令。分支指令的实际分支行为常常直到指令在管线深处被评估才为人所知。由于处理器不知道在分支指令之后取出哪些指令,且将直到所述分支指令评估时才知道,所以上述情况产生使管线停止的控制冒险。多数现代处理器使用各种形式的分支预测,借此在管线中早期预测有条件分支指令的分支行为和分支目标地址,且处理器基于所述分支预测而推测性地取出并执行指令,因此保持管线全满。如果所述预测是正确的,那么性能增至最大且功率消耗减到最小。当实际评估所述分支指令时,如果分支被误预测,那么被推测性地取出的指令必须从所述管线冲洗出去,且从正确的分支目标地址取出新的指令。误预测的分支不利地影响处理器性能和功率消耗。
存在两个分量用于分支预测;条件评估和分支目标地址。条件评估(仅与有条件分支指令相关)是二元决策(binary decision):分支被采用,致使执行跳到不同的代码序列;或分布不被采用,在此情况下,处理器在有条件分支指令之后执行下一个循序指令。分支目标地址(BTA)是控制针对评估为被采用的无条件分支指令或有条件分支指令而分支到的地址。一些分支指令包含指令运算码(instruction op-code)中的BTA,或包含偏移,借此可容易地计算BTA。对于其它分支指令,直到在管线深处才计算BTA,且因此必须预测BTA。
一种已知BTA预测技术利用分支目标地址高速缓冲存储器(Branch Target AddressCache,BTAC)。如现有技术中已知的BTAC是通过分支指令地址(BIA)编入索引的高速缓冲存储器,其中每一数据位置(或高速缓冲存储器“线”)含有一个BTA。当分支指令在管线中评估为被采用,且其实际BTA被计算时,将所述BIA写入到BTAC中的内容可寻址存储器(Content-Addressable Memory,CAM)结构,且将所述BTA写入到BTAC中的相关联RAM位置(例如,在回写管线级期间)。当取出新的指令时,BTAC的CAM与指令高速缓冲存储器并行被存取。如果指令地址在BTAC中命中,那么处理器知道所述指令是分支指令(在从指令高速缓冲存储器取出的指令被解码之前),且预测BTA是从BTAC的RAM提供的,所述预测BTA是所述分支指令的先前执行的实际BTA。如果分支预测电路预测分支将被采用,那么推测性指令取出在预测BTA处开始。如果预测分支不被采用,那么指令取出循序地继续。
注意,术语“BTAC”在此项技术中也用于表示使饱和计数器与BIA相关联的高速缓冲存储器,因此仅提供条件评估预测(即,被采用或不被采用)。那并非如本文中所使用的此术语的意义。
高性能处理器一次可从指令高速缓冲存储器中以群组形式取出一个以上指令,所述群组在本文中被称为取出群组。取出群组可能(但并非必须)与指令高速缓冲存储器线相关。举例来说,可将具有四个指令的取出群组取出到指令取出缓冲器中,指令取出缓冲器将所述指令循序地馈送到管线中。
转让给本申请案的受让人且以引用的方式并入本文中的题为“基于区块的分支目标地址高速缓冲存储器(Block-Based Branch Target Address Cache)”的第11/382,527号专利申请案揭示一种存储多个条目的基于区块的BTAC,每一条目与一个指令区块相关联,其中所述区块中的指令中的一者或一者以上是已评估为被采用的分支指令。BTAC条目包含指示相关联区块内哪一指令是所采用的分支指令的指示符,以及所采用分支的BTA。BTAC条目通过区块中所有指令共用的地址位(即,通过截去选择所述区块内的指令的较低阶地址位)而编入索引。区块大小和相对区块边界因此都是固定的。
转让给本申请案的受让人且以引用的方式并入本文中的题为“滑动窗,基于区块的分支目标地址高速缓冲存储器(Sliding-Window,Block-Based Branch Target AddressCache)”的第11/422,186号专利申请案揭示一种基于区块的BTAC,其中每一BTAC条目与一个取出群组相关联,且通过所述取出群组中的第一指令的地址而编入索引。因为取出群组可以不同方式形成(例如,以分支的目标开始),所以由每一BTAC条目表示的指令群组是不固定的。每一BTAC条目包含指示取出群组内哪一指令是所采用的分支指令的指示符,以及所采用分支的BTA。
当分支指令在BTAC中命中并预测为被采用时,将在已经取出的分支指令后的循序指令(例如,是同一取出群组的部分)从管线中冲洗出去,且推测性地将开始于从BTAC检索到的BTA的指令取出到所述分支指令后的管线中。如上文所述,当BTAC条目与单个以上分支指令相关联时,指示区块或群组内哪一指令是所采用的分支指令的某一指示符作为每一BTAC条目的一部分而存储,使得在所述分支指令后的指令可被冲洗。对于所有指令都具有同一长度的指令集来说,存储指示分支指令的开头的指示符便已足够;在越过所述分支指令的指令地址的下一指令地址处开始冲洗指令。
然而,对于可变长度指令集来说,还必须存储分支指令自身长度的某一指示,使得可计算所述分支指令后的第一指令的地址。这不仅浪费BTAC中的存储空间,而且需要计算来确定在何处开始冲洗,其因为限制循环时间而不利地影响性能。
发明内容
根据一个或一个以上实施例,在可变长度指令集中,所采用分支指令的结尾的指示存储在分支目标地址高速缓冲存储器(BTAC)中。作为非限制性实例,ARM指令集结构的一些型式包含32位ARM模式分支指令和16位拇指模式(Thumb mode)分支指令两者。在此情况下,根据本发明,所采用分支指令的最后半字(halfword)(例如,16个位)的指示存储在每一BTAC条目中。对于16位分支指令,所述指示对应于分支指令地址(BIA),且对于32位分支指令,所述指示对应于最后半字。在任一情况下,如果在BTAC中命中的分支指令预测为被采用,那么可直接越过所指示的半字开始从管线中冲洗先前取出的指令,而不考虑指令长度。
一个实施例涉及一种执行来自可变长度指令集的指令的方法,其中每一指令的长度是最小指令长度粒度的倍数。评估为被采用的分支指令的分支目标地址存储在分支目标地址高速缓冲存储器中。分支指令的最后粒度的地址的指示符与分支目标地址一起存储。在随后在分支目标地址高速缓冲存储器中命中后,冲洗越过命中分支指令的最后粒度而取出的所有指令。
另一实施例涉及一种执行来自可变长度指令集的指令的处理器,其中每一指令的长度是最小指令长度粒度的倍数。所述处理器包含:指令高速缓冲存储器,其存储多个指令的;以及分支目标地址高速缓冲存储器,其存储分支目标地址和先前已评估为被采用的分支指令的最后粒度的指示符。所述处理器还包含:分支预测单元,其预测当前分支指令将评估为被采用还是不被采用;以及指令执行管线,其执行指令。所述处理器进一步包含一个或一个以上控制电路,其操作以使用当前指令地址同时存取指令高速缓冲存储器和分支目标地址高速缓冲存储器,且进一步操作以响应于所采用分支预测和先前已评估的分支指令的最后粒度的指示符而冲洗在分支指令后取出的所有指令的管线。
又一实施例涉及一种包括多个条目的分支目标地址高速缓冲存储器,每一条目通过标签和存储分支目标地址以及先前已评估为被采用的分支指令的最后粒度的指示符而编入索引。
附图说明
图1是处理器的功能框图。
图2是处理器的取出级的功能框图。
图3是BTAC的功能框图。
图4描绘三个处理器指令,以及描绘所述指令的执行的寄存器内容的循环图。
具体实施方式
图1描绘处理器10的功能框图。处理器10包含指令单元12和一个或一个以上执行单元14。指令单元12提供对到达执行单元14的指令流的集中控制。指令单元12从指令高速缓冲存储器(指令高速缓冲存储器)16取出指令,其中存储器地址翻译和许可由指令侧翻译后备缓冲器(instruction-side Translation Lookaside Buffer,ITLB)18管理。
执行单元14执行由指令单元12调度的指令。执行单元14对通用寄存器(GeneralPurpose Register,GPR)20进行读取和写入,并从数据高速缓冲存储器24存取数据,其中存储器地址翻译和许可由主翻译后备缓冲器(TLB)24管理。在各种实施例中,ITLB18可包括TLB 24的一部分的拷贝。或者,ITLB 18与TLB 24可为一体式的。类似地,在处理器10的各种实施例中,指令高速缓冲存储器16与数据高速缓冲存储器22可为一体式的或合为一体的。指令高速缓冲存储器16和/或数据高速缓冲存储器22中的未命中导致对第二级或L2高速缓冲存储器26(在图1中描绘为合为一体的指令与数据高速缓冲存储器26)的存取,但其它实施例可包含单独的L2高速缓冲存储器。在存储器接口30的控制下,L2高速缓冲存储器26中的未命中导致对主(芯片外)存储器28的存取。
指令单元12包含处理器10管线的取出级34和解码级36。取出级32执行对指令高速缓冲存储器16的存取,以检索指令,如果所需指令未分别驻留在指令高速缓冲存储器16或L2高速缓冲存储器26中,那么所述存取可包含对L2高速缓冲存储器26和/或存储器28的存取。解码级28对检索到的指令进行解码。指令单元12进一步包含:指令队列38,其存储由解码级28解码的指令;以及指令调度单元40,其将经列队的指令调度到适当的执行单元14。
分支预测单元(branch prediction unit,BPU)42预测有条件分支指令的执行行为。取出级32中的指令地址与从指令高速缓冲存储器16取出指令并行地存取分支目标地址高速缓冲存储器(BTAC)44和分支历史表(branch history table,BHT)46。BTAC 44中的命中指示先前评估为被采用的分支指令,且BTAC 44提供所述分支指令的最后执行的分支目标地址(BTA)。BHT 46保存对应于所解析的分支指令的分支预测记录,所述记录指示已知分支先前已评估为被采用或是不被采用。BHT 46的记录可(例如)包含提供分支将基于分支指令的先前评估而被采用或不被采用的弱到强预测的饱和计数器。BPU 42估定来自BTAC 44的命中/未命中信息以及来自BHT 46的分支历史信息,以用公式表示分支预测。
图2是更详细地描绘取出级32和指令单元12的分支预测电路的功能框图。注意,图2中的虚线描绘功能存取关系,不一定是直接连接。取出级32包含从多个来源选择指令地址的高速缓冲存储器存取导引逻辑48。每循环将一个指令地址发射到指令取出管线中,所述指令取出管线在此实施例中包括三个级:FETCH1级50、FETCH2级52、和FETCH3级54。
高速缓冲存储器存取导引逻辑48从多种来源选择指令地址以发射到取出管线中。在此处具有特定相关性的两个指令地址来源包含由对FETCH1管线级50的输出进行操作的递增器56产生的下一循序指令、指令区块或指令取出群组地址,以及响应于来自BPU 42的分支预测而推测性地取出的非循序分支目标地址。其它指令地址来源包含异常处置器(exception handler)、中断向量地址等。
FETCH1级50和FETCH2级52执行对指令高速缓冲存储器16、BTAC 44和BHT 46的同时并行双级存取。明确地说,在第一高速缓冲存储器存取循环期间,FETCH1级50中的指令地址存取指令高速缓冲存储器16和BTAC 44,以确定与所述地址相关联的指令是否贮存在指令高速缓冲存储器16中(经由指令高速缓冲存储器16中的命中或未命中)以及已知分支指令是否与所述指令地址相关联(经由BTAC 44中的命中或未命中)。在随后的第二高速缓冲存储器存取循环中,指令地址移动到FETCH2级52,且如果所述指令地址在相应的高速缓冲存储器16、44中命中,那么可从指令高速缓冲存储器16得到指令,且/或可从BTAC 44得到分支目标地址(BTA)。
如果所述指令地址在指令高速缓冲存储器16中未命中,那么其进行到FETCH3级54以发射对L2高速缓冲存储器26的存取。所属领域的技术人员将容易认识到,取出管线可依据(例如)指令高速缓冲存储器16和BTAC 44的存取时序而比图2中所描绘的实施例包括更多或更少的寄存器级。
图3中描绘BTAC 44的一个实施例的功能框图。BTAC 44包括CAM结构60和RAM结构62。在代表性条目中,CAM结构60可包含状态信息64、地址标签66和有效位68。如上文所论述且在以引用的方式并入的申请案中,一个实施例中的标签66可包括单个分支指令地址(BIA)。在另一实施例(本文称之为基于区块的BTAC 44)中,标签66可包括指令区块或群组的共用地址位(即,最低有效位被截去)。在另一实施例(本文称之为滑动窗BTAC 44)中,标签66可包括指令取出群组中的第一指令的地址。
然而,BTAC 44经构造,标签66对应于先前评估为被采用的分支指令,且命中(或FETCH1级54中的地址与标签66之间的匹配)指示区块或取出群组中的指令是分支指令。响应于CAM 60中的命中,在同一BTAC 44条目的RAM结构62中设置对应的命中位70。在一些实施例中,命中位70可包括非时控单调存储装置,例如0捕捉器(zero-catcher)、1捕捉器(one-catcher)或干扰锁存器(jam latch)。高速缓冲存储器设计的细节与本发明的描述内容无关,且本文中不作进一步论述。
在第二高速缓冲存储器存取循环期间,从RAM结构62读取来自由命中位70识别的BTAC 44条目的数据。这些数据包含分支目标地址(BTA)72,且可包含与分支指令相关联的额外信息,例如指示所述指令是否是链接堆叠用户的链接堆叠位74,和/或指示无条件分支指令的无条件位76。如任何特定应用所要求或希望,其它数据可存储在BTAC 44的RAM 62中。
指示相关联分支指令的最后粒度的位置位78也存储在BTAC 44条目中。对于每一标签66仅与一个BIA相关联的BTAC 44来说,位置位78(例如)通过与BIA的偏移来识别分支指令的结尾。在此情况下,位置位78本质上识别分支指令长度。对于基于区块的或滑动窗BTAC 44(即,如果标签66与一个以上指令相关联),位置位78识别与BTA 72相关联的所采用分支指令的最后粒度在指令区块或取出群组内的位置。即,位置位78识别分支指令的结尾在指令区块或取出群组内的位置。
图4描绘包括三个指令的说明性代码段(code snippet),所述指令中的一者是先前评估为被采用的32位有条件分支指令。在此实例中,取出管线寄存器每一者保存四个半字。图4将这些寄存器的每一者中的指令地址另外描绘为指令是从指令高速缓冲存储器16取出的。在第一循环中,FETCH1级50保存指令地址0800、0802、0804和0806。在滑动窗BTAC 44情况下,将地址0800应用于指令高速缓冲存储器16和BTAC 44;在基于区块的BTAC 44的情况下,在BTAC 44查找之前,将两个最低有效位截去。在第一循环结束时,BTAC 44报告命中,所述命中指示分支指令存在于区块或群组内且其先前评估为被采用。在第二循环期间,从BTAC 44检索BTA(在此实例中,地址B)和位置位78。同时,地址0800到0806降入FETCH2级52中,且接下来的循序地址0808到080E被加载到FETCH1级50中(经由递增器56)。
并行于指令高速缓冲存储器16和BTAC 44查找,存取BHT 46,且将相关联分支指令的过去分支评估行为提供给分支预测单元(BPU)42。基于从BTAC 44和BHT 46检索到的信息,BPU 42预测与当前指令地址相关联的分支指令将评估为被采用或是不被采用。如果BPU 42预测分支指令将评估为不被采用,那么循序地址(例如,0808到080E)流经取出级32,从而导致指令高速缓冲存储器16和BTAC 44通过0808而存取。另一方面,如果BPU 42预测分支指令将评估为被采用,那么必须从取出管线寄存器50、52冲洗所述分支指令后的所有指令地址,且针对指令高速缓冲存储器16和BTAC 44的下一存取,替代地使用从BTAC 44检索到的BTA。
位置位按照惯例将指示分支指令开头在区块或群组内的位置,例如,4′b0010(假定地址在寄存器中从右到左递增)。然而,分支指令的开头仅对随后计算指令结束的位置有用,此计算需要关于指令长度的信息(例如,16个或32个位)。此外,此计算需要额外的逻辑电平,这增加了循环时间且不利地影响性能。根据本文所揭示的一个或一个以上实施例,位置位78指示分支指令在区块或群组内的最后指令长度粒度。在当前实例中,位置位78指示最后半字在区块或群组内的位置,例如,4′b0100。这消除了存储关于分支指令长度的信息的需要,且避免了确定从管线冲洗哪些指令地址的计算。
返回到图4,在第三循环中(响应于来自BPU 42的所采用分支预测),FETCH3级54含有指令地址0800到0804。地址0804由位置位78的值4′b0100识别为分支指令的结尾。从FETCH3级54冲洗地址0806的指令,从FETCH2级52冲洗地址0808到080E,且将在循环2中从BTAC 44检索到的B的BTA加载到FETCH1级50中以从所述位置推测性地取出指令。
如上文所述,BHT 46与指令高速缓冲存储器16和BTAC 44并行被存取。在一个实施例中,BHT 46包括(例如)二位饱和计数器的阵列,每个二位饱和计数器与一个分支指令相关联。在一个实施例中,计数器可在每次分支指令评估为被采用时递增,且在分支指令评估为不被采用时递减。计数器值接着指示预测(通过仅考虑最高有效位)和所述预测的强度或置信度两者,例如:
11-强烈预测被采用
10-微弱预测被采用
01-微弱预测不被采用
00-强烈预测不被采用
BHT 46可通过分支指令地址(BIA)的一部分(例如,当BTAC 44指示命中时FETCH1级50中的指令地址)而编入索引,从而将指令识别为先前评估为被采用的分支指令。为了改进BHT 46的准确性且更高效地利用BHT 46,在将BHT 46编入索引之前,局部BIA可与新近全局分支评估历史(全局选择(gselect)或全局共享(gshare))逻辑组合。
BHT 46设计的一个问题由于分支指令可具有不同长度的可变长度指令集而出现。一种已知解决方案是基于最大指令长度而设计BHT 46的大小,但基于最小指令长度对其进行寻址。当寻址是基于分支指令的开头时,此解决方案在表中留下大片空白,或具有与较长分支指令相关联的重复条目。通过用与分支指令的结尾相关联的信息将BHT 46编入索引,BHT 46的效率增加。与分支指令的长度无关,仅存取单个BHT 46条目。
如本文中所使用,可变长度指令集的粒度或区组(granule)是指令长度可相差的最小量,其通常也是最小指令长度。尽管本发明已在本文中相对于本发明的特定特征、方面和实施例而进行描述,但将明白,在本发明的广泛范围内,大量变化、修改和其它实施例是可能的,且因此,所有变化、修改和实施例都应被视为在本发明的范围内。因此,本实施例在所有方面都将被解释为说明性的而非限制性的,且希望在所附权利要求书的意义和等效范围内的所有改变都包含于本发明中。

使用可变长度指令集处理器中分支目标地址缓存的分支预测.pdf_第1页
第1页 / 共15页
使用可变长度指令集处理器中分支目标地址缓存的分支预测.pdf_第2页
第2页 / 共15页
使用可变长度指令集处理器中分支目标地址缓存的分支预测.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《使用可变长度指令集处理器中分支目标地址缓存的分支预测.pdf》由会员分享,可在线阅读,更多相关《使用可变长度指令集处理器中分支目标地址缓存的分支预测.pdf(15页珍藏版)》请在专利查询网上搜索。

在其中每一指令的长度是最小指令长度粒度的倍数的可变长度指令集中,所采用的分支指令的最后粒度(即,结尾)的指示存储在分支目标地址高速缓冲存储器(BTAC)中。如果预测稍后在所述BTAC中命中的分支指令被采用,那么直接越过所述分支指令的所述所指示的结尾开始从管线中冲洗先前所取出的指令。此技术通过避免将所述分支指令的长度存储在所述BTAC中的需要来节省BTAC空间,并通过消除计算从何处开始冲洗(基于所述。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1