安腾处理器中多级分支预测机制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

安腾处理器中多级分支预测机制

苏铭赵荣彩宋宗宇

(解放军信息工程大学郑州 450002)

E-mail: mingsu@

摘要:分支预测技术可消除分支指令之后损失的周期,防止流水线断流。高比率

的分支预测精确度是高性能微处理器性能的保证。本文详细分析了安腾处理器

(Itanium)多级分支预测机制,并研究了每级预测器的具体实现。

关键词: 分支预测 安腾处理器

中图分类号:TP311.11 文献标识码:①

项目基金资助:河南杰出人才创新基金(基金编号:0521000200)

Multi-level Branch Prediction Strategy in

Itanium Processor

Su Ming Zhao rong cai Song zong yu

The Information and Engineering University Zheng Zhou 450002 Abstract: Multi-level prediction strategy enhance prediction precision and improve

performance. In this paper, we analyze multi-level branch prediction in the front end

and study the implementation of each-level predictor on the basis of Itanium processor

which is a commercial EPIC processor.

key word:Branch prediction EPIC

1.引言

频繁的分支指令改变了程序的正常控制流,制约了指令并行性的开发,而且这种性能损失对于宽发射深流水结构的高性能处理器来说更为严重,所以必须采取一种有效的措施来解决上述瓶颈。在EPIC体系结构中使用了判断执行技术来消除分支指令及其带来的影响,但判断执行技术不能去除全部的分支指令,只能去除部分分支指令——if分支指令。针对无法消除的分支指令,为了减小对性能的影响,EPIC延用了传统体系结构中的处理方式,使用分支预测技术。

分支预测技术是指在分支条件计算出来之前对分支执行路径进行猜测的过程。如果猜测结果正确将会减少处理器停顿、提高性能。对于分支预测来说,目标就是提高预测率,尽可能地减少误预测及其开销。本文以第一个商业可得的EPIC指令系统体系结构——IA-64为背景,以IA-64的第二代处理器芯片ItaniumⅡ为基础,详细分析了多级分支预测结构在提高预测率、减少误预测的开销方面的技术思路。

2.多级分支预测结构框架

由于判断执行技术的引入,与传统的分支预测结构相比,安腾处理器增添了许多新的预测结构[1]。图1给出了流水线前端的多级分支预测结构图。从图上看出可分为4级预测结构,第一级预测结构采用了一个目标地址寄存器(TAR)表来保存分支的目标地址。第二级预测结构中,除了采用传统的动态预测表(BPT)对单分支指令进行预测外,还建立了动态多分支预测表(MBPT)对多路分支给予支持,同时使用返回栈缓冲区(RSB)结构对调用和返回分支指令进行预测。第三和第四级预测结构采用了分支地址计算(BAC1、BAC2)对无条件分支指令的预测进行支持,同时在第三级预测结构中针对循环指令最后一次循环退出时的误预测,使用了循环退出校正器结构(loop exit corrector)结构给予纠正,比较巧妙地实现了对循环结构的预测。

图1多级分支预测结构图

由于使用多级预测结构,可能就会存在多个预测返回的结果同时修改当前IP的情况。所以要想正确而有效的处理指令,就必须定义各级预测的优先级。一般采用的原则是:不同时刻的同一指令按照图1自左向右的顺序优先级降低;对于同一时刻的不同指令,前面进入流水线的指令优先级要高于后面进入流水线的指令优先级。图2给出了多级分支预测结构的优先原则。

图2多级分支预测结构优先原则

前端的多级分支预测包括两个层次:动态预测和静态预测。动态预测是使用预测硬件根据程序执行的历史来预测分支。静态预测是使用编译器提供的提示信息来确定预测的方向。图3给出了多级分支预测层次示意图。

图3多级分支预测层次示意图

下面我们将从硬件机制对于多级分支动态预测的支持和软件提示对于静态预测的支持两个方面进行具体描述。

3.分支预测的硬件机制

3.1单周期预测器

单周期预测器用于多级预测结构的第一级预测,其使用的数据结构是目标地址寄存器(TAR)。TAR包括四个寄存器,采用全相联的组织结构,能够提供对分支指令的快速预测。TAR由当前指令束(bundle)地址和分支目标地址构成,使用指令束地址进行查找。图4给出了TAR结构示意图。

图3-5TAR结构示意图

其中TAR Data保存预测的分支目标地址,TAR Tag保存相应的指令束地址。由于对TAR的访问是单周期的,且对TAR的读取和分支指令的发射是同时的,所以在这种情况下流水线没有气泡产生,是零延迟的。当编译器在进行全局指令调度时,在分支指令前几个节拍插入分支预测指令(brp),然后由brp指令中的提示信息来修改TAR。

通过这种硬件和编译器结合的机制就实现了高预测率的单周期预测器。

3.2两级自适应的分支预测器和返回预测器

两级自适应的分支预测器和返回预测器用于多级预测结构的第二级预测。其硬件结构包括BPT、MBPT、目标地址缓存(TAC)和RSB,其中BPT、MBPT和TAC用于单分支和多分支类型的预测,而RSB用于调用返回分支类型的预测。

两级自适应的分支预测器不仅使用本条指令的执行信息,而且利用邻近分支指令的执行情况来更准确预测当前指令的执行结果。其第一级历史被记录在一个或多个称为分支历史寄存器(BHR)的K位移位寄存器中。其第二级历史被记录在一个或多个由2位饱和计数器组成的模式历史表(PHT)中。用第一级表信息索引到第二级历史表,在根据所选择2位饱和计数器的指示做出方向预测。在程序开始执行的时候,分支预测表为空,随着程序的执行分支预测表慢慢被填满,这时候就能够提供相应的分支预测信息。由于分支预测是根据程序执行时候的动态信息进行,所以称这种预测算法为动态预测算法[2]。

返回预测器主要是针对调用返回分支指令的预测。调用返回类型的分支有其自身的特点:调用时即可知道它的返回地址;调用和返回是成对出现的。针对这些特点,我们提供了RSB的栈缓冲硬件机制对调用返回类型的分支预测给予支持。

3.3分支地址计算和修改预测器

第三、第四级分支预测主要用于对先前的预测进行修正,减少流水线的排空时间。

分支地址计算和修改预测器包括两个计算和修改结构:BAC1和BAC2。它们在流水线的第三阶段启动,其修正过程是先获得分支指令的操作码,然后从指令编码中抽取静态的预测信息和地址信息,利用这些信息进行目标地址的计算,根据计算结果修改前端的指令指针IP。

相关文档
最新文档