泡泡网CPU频道 PCPOP首页      /      CPU     /      评测    /    正文

性能之王还是不进反退,Prescott全

    要理解前页所述的改进,我们就必须首先了解分支预测的一些基本原理。   

    同大多数处理器一样,Prescott处理器的分支预测机构可以分为动态分支预测机构以及静态分支预测机构两大类,而其中动态分支预测机构由分支目标缓冲(Branch Target Buffer ,以下简称BTB)以及预测跳转条件是否满足的动态预测机构组成:


 分支预测原理图(点击放大)

    图中可见,BTB与我们熟悉的一级、二级缓存十分类似,只不过缓存的对象不同而已,前者缓存了分支指令及其挑转目标的地址,而后两者则缓存具体的数据或指令。在每一个BTB的条目中,集中存储了分支指令地址、跳转地址以及分支指令的跳转历史纪录。需要注意的是,由于P4对于其分支预测机构的细节一直不愿意做过多的透露,因此其中实际的分支预测机构组成状况,与上图所表示的结构必然在细节上存在许多不同之处,但从原理上说,二者是基本相同的。

    大致了解了分支预测的原理之后,再回过头来看Prescott中的分支预测改进状况,就较好理解了。

    ◎ 动态分支预测方面,与其它处理器不太相同,P4处理器在指令预取单元和Tace Cache单元上,各放置了一套BTB机构,但两套BTB机构的作用和工作原理是类似的。增加BTB条目数,能够纪录的分支指令数就越多,当遇上分支指令较密集,分支指令跳转情况变化较复杂的程序时,将体现出一定的优势。

    ◎ 此外,由于分支预测指令中的跳转地址有可能使用变量表示,而不是如我们上面举例的那样总是5、150这样的常数;这种情况我们称为非直接跳转分支(Indirect Branch)。如果此时仍然使用图中的机构,显然将造成BTB的频繁预测失败(储存在BTB中的分支跳转地址可能是不断变化的)。Intel宣称在Prescott的动态分支预测机构中加入由Pentiumn M(Banis)中引用的非直接跳转分支预测功能。这样,就提高了执行非直接跳转分支时的预测成功率。

    ◎ 作为动态分支预测的一种侯补方案,静态分支预测的性能对于处理器来说也具备一定的重要性。静态分支预测方面,在过去的P4里,一直奉行以下的原则:

 如果分支所跳转的地址为逆向跳转,则静态预测为分支跳转成立,执行跳转;而如果分支所跳转的地址为正向跳转,则静态预测为分支跳转不成立,按照编译顺序读取下一条指令,下图表示了这种静态策略:

  

 Northwood的静态分支预测(点击放大)

    的确,在分支循环次数较多的程序中,这样的静态预测方案所得到的预测命中率较高。但是如果遇到的不是循环用分支语句,如果还这样预测就不行了。所幸大多数情况下,分支循环程序所包含的指令数目都比较小(意味着循环跳转的地址偏移量不会很大),因此在Prescott中,Intel在原有的静态分支策略中加入了距离判断算法,仅在所跳转的地址为逆向跳转,且跳转的地址距离分支指令本身的地址偏移量较小时,才执行跳转。下图表示Prescott与旧P4在这方面的区别:

 更智能化的Prescott静态分支预测

    显然,这样的静态分支预测办法显得比以前所使用的方法更加“智能化“一些。<

0人已赞

关注我们

泡泡网

手机扫码关注