当前位置: 首页 > 专利查询>英特尔公司专利>正文

利用第二级分支预测表的分支预测的方法和设备技术

技术编号:2883056 阅读:279 留言:0更新日期:2012-04-11 18:40
一种分支预测器。第一分支预测表(100)连接到指令指针发生器(11)以存储标记的分支预测入口并高速地提供分支预测。第二分支预测表(102)也连到指令指针发生器(11)以存储未标记的分支预测入口并提供大得多的分支工作集的分支预测,尽管是以较慢速度进行提供。(*该技术在2019年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及计算机系统,更具体地说,涉及使用第一级和第二级分支预测表进行分支预测的处理器。
技术介绍
先进的处理器采用流水(管道)线技术高速地执行指令。基于这样的处理器,整个机器组织成包括几个硬件级联级的多流水线。指令处理分为一系列的操作,且由相应的流水线级(管道级)的硬件来执行各种操作。来自几条指令的独立操作可由不同的流水线级同时进行,以增加处理器的指令通过量。当一个流水线处理器在每个流水线级包括多个执行资源时,该处理器的指令通过量就能超过每个时钟周期一条指令。为了充分利用这个指令执行能力,必须由正确的执行路径向该处理器的执行资源提供足够的指令。在典型的计算机系统中,指令指针(IP)指示处理器从程序代码的一条指令到下一条指令。一条指令可以正常的程序代码顺序指示这个IP到下一条指令,或者指示该IP跳过部分程序代码并继续执行非正常顺序的指令。这个使处理器或者按顺序连续执行下一条指令或者“转移”到一个不同的非顺序的指令的指令称为分支指令。例如,字处理器在进行拼写检查时,执行软件指令来确认正确地拼写了每个字。只要字拼写正确,指令便顺序地执行。然而一旦发现了拼写有误的字,分支指令便指示IP转向一个子程序,后者提醒用户拼字错误。然后,处理器执行该子程序。分支指令向保持流水线充满来自正确执行路径的指令这一要求提出了挑战。如果执行分支指令并满足分支条件,处理器的控制流就跳向新的代码序列,来自该新的代码序列的指令转向流水线。分支执行一般出现在流水线的后端,而在流水线的前端取指令。如果获取指令依赖分支执行来决定正确的执行路径,则在决定分支条件前,处理器的流水线可能充满来自错误执行路径的指令。因此,必须从流水线中清洗(flush)这些指令,使得获取来自正确执行路径的指令时这些受到影响的流水线级的资源保持空闲。空闲的流水线级称为流水线泡(bubble),因为直到它们被来自正确执行路径的指令填充时才提供有用的输出。先进的处理器在它们流水线的前端加入分支预测模块以减少流水线泡的数量。当分支指令进入到流水线的前端时,分支预测模块预测在流水线的后端执行过程中是否产生该分支指令。如果预测产生分支(非顺序执行指令),则分支预测模块就向指令提取模块提供分支目标地址,通过设置与含有分支程序代码的第一指令的地址相同的IP地址来重新指示IP。含有分支代码的所述第一指令的地址称为“目标地址”。同样位于流水线前端的提取模块从目标地址开始取指令。另一方面,如果分支预测器预测不产生分支(顺序指令执行),分支预测器就递增IP地址,以便IP以正常程序代码顺序指向下一条指令。当分支执行出现在流水线的后端时,处理器能够确认前端所做的预测是否正确。如果不正确,流水线就被清洗。分支预测准确性越高,流水线泡和清洗数就越少。传统的分支预测模块采用分支目标缓冲器(BTB)来存储预测入口,后者包含诸如是否产生分支的信息以及产生分支时可能的目标地址。这些分支预测入口与含有分支指令的IP地址相联系。对每一个在分支预测表中被跟踪的IP地址,其有关的分支预测入口包含IP地址以及有助于预测将来是否产生分支的历史信息。然而,即使是在BTB中寻找指令、确定是否产生分支以及在已做预测的基础上向取指模块提供目标地址这样的过程也会在使处理器重转向(resteer)目标地址时引起延迟。该延迟允许来自错误执行路径的指令进入并沿流水线传播。由于这些指令没有按预测的执行路经加到正向进程,在清洗它们时它们就会在流水线上形成“泡”。更准确且更完备的分支预测算法(用更大的分支表)需要更长的时间来完成并会在重转向过程中产生更大的延迟。重转向流水线需要的时钟周期数越大,在流水线中产生的泡数就越多。因此,在进入分支预测结构的速度与这些结构中内容的大小和准确性之间存在折中。由于速度和费用的原因,现代处理器常限制所采用的BTB的容量。特别是在大工作负荷时,这降低了分支检测和预测的准确性。假如BTB的容量较小,则某个新分支预测入口有时必须重写某个旧分支预测入口。如果与重写的分支预测入口相联系的分支指令之后由处理器重执行,则没有历史信息来帮助分支预测器预测是否应该产生分支。结果,分支预测准确性下降,降低了处理器的性能。随着软件应用程序规模增大,这些应用程序中分支指令数目增加,分支预测表的有限容量就成为一个重要的问题。因此,有必要提供一种解决方案为最频繁出现的分支子集(具有高局部性的那些)产生小的等待时间并为整个工作集提供有意义的预测。专利技术概述描述了一种分支预测器。第一级分支预测表与IP发生器连接以存储分支预测入口。第二级分支预测表也与IP发生器连接以存储更多分支预测入口。按照本专利技术实施例,尽管降低了速度,然而可以发现两级分支预测结构充分地将高速(小的等待时间)分支预测和分支的最高局部性的重转向的益处与全工作集的全局高准确分支检测和预测结合在一起。这在没有显著增加小片尺寸情况下也可完成。通过附图和以下的详细描述,本专利技术的其它特征和优点将一清二楚。附图简介通过附图中的示例而非限制来说明本专利技术,图中用相同标号表示类似的单元。附图中附图说明图1是一个表示本专利技术的方法的流程图;图2表示按照本专利技术实施例的分支预测流水线;和图3表示图2的分支预测器。详细描述描述了一种用于带有第一级和第二级分支预测表的处理器的分支预测器。IP发生器产生初始指令指针(IP)地址。为与初始IP地址相关联的分支预测入口搜索第一级(L1)BPT(分支预测表)和第二级(L2)BPT。对本专利技术的一个实施例,L1 BPT是相联的(即完全相联或多路集相联)而L2 BPT则是直接映射。因为L1 BPT是关联的,所以分支预测入口加上标记并将这些标记与预测信息一起存于L1 BPT中。未对直接映射的L2 BPT中的分支预测入口作标记,故L2 BPT中只存有分支预测信息。因为L1 BPT中的分支预测入口大于L2 BPT中的分支预测入口,在等量空间中,L2 BPT可比L1 BPT有更多的分支预测入口。因此尽管L1 BPT可能比L2 BPT更快更准确,然而L2 BPT作为L1 BPT的“备份”,使得可以较小增加处理器尺寸来存储附加分支预测信息。由于在一个处理器中既包含L1 BPT又包含L2 BPT,则无须增加太多硬件成本便可同时提高分支预测的准确性和整体速度。另外,L2 BPT容量的少量增加还可提高整体存储容量可以容纳具有大工作集的程序中的大量分支。如果在L1 BPT中找到与初始IP地址有关的分支预测入口(称在L1 BPT中“命中(hit)”),则使用与入口有关的分支预测信息来预测产生分支还是不产生分支(即预测后来的IP地址)。如果在L1 BPT中没发现与初始IP地址有关的分支预测入口(称在L1 BPT中“未命中(miss)”),则对与IP地址有关的指令进行解码来确定它是否为分支指令。如果是分支指令,则使用来自L2 BPT的分支预测信息来预测产生分支还是不产生分支。对本专利技术的另一个实施例,软件给处理器提供提示以帮助分支预测。对这个实施例,用这些提示确定是否使用L2 BPT的分支预测信息或在软件自身中编码的分支预测信息来预测产生分支还是不产生分支。可以发现这样的两层预测器设计对那些被指派执行大型应用程序任务的处理器特别有用,例如那些在服务器和工作站上运行的大型应本文档来自技高网...

【技术保护点】
一种分支预测器包括:连至指令指针(IP)发生器的第一分支预测表(BPT),用于存储多个分支预测入口;和连至所述IP发生器的第二BPT,用于存储更多个分支预测入口。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:TY叶HP沙朗帕尼
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1