码迷,mamicode.com
首页 > 其他好文 > 详细

指令级并行:动态分支预测技术

时间:2021-05-24 12:29:24      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:好的   记录   mips   常见   循环   地址   目标   使用   没有   

动态分支预测技术用于处理控制冒险。其基本思想是,在遇到控制冒险时,预测转移方向,并执行该方向的指令,猜对时继续执行后续指令,猜错时回头执行另一方向的指令。

分支预测算法分为静态和动态两种。静态预测算法直接进行固定的猜测或按指令能容进行猜测,其常见时机则分别为IF段和ID段。动态预测算法根据转移历史来预测新的转移方向,其主要类型有饱和计数预测、相关预测、自适应预测等,均可以用于IF段预测。

基本预测器即饱和计数预测器通常将分支历史用两个二进制位表示,根据高位来预测,根据结果来更新,其本质是一个具有4各状态的DFA。它只根据当前分支的分支历史来预测,在连续两次错误预测时改变预测方向,用于循环时性能较好。实现上,需要用分支历史表来记录各分支指令地址对应的分支历史信息,设置查找更新机构来实现数据的更新。

相关预测器使用其它分支的行为来预测当前分支,(m,n)预测器包含m位全局历史和n*2^m位模式历史,根据前m个分支的行为去选一个预测器,根据这个预测器内的分支历史来预测当前方向。其性能远好于基本预测器。在此基础上再做改进,有锦标赛预测器,即全局/局部自适应预测器,由自适应选择器来决定是使用全局预测器还是局部预测器。锦标赛预测器是目前最好的预测器。

预测时应当可以获得分支目标地址,否则预测是没有意义的,因此,仅有分支历史表BHT的信息不足以进行动态分支预测的实现,我们通常需要分支目标缓冲器BTB来实现转移历史的管理。BTB是一个类似Cache的结构。查找时,用PC查BTB,当标记与PC内容相等时命中。当BTB缺失且执行结果为转移时建立新行。当BTB命中时根据执行结果更新对应行的转移历史。

在设置BTB后,IF段时查BTB,命中时写入PC,否则PC正常自增。ID段判断是否为BTB缺失的分支指令,此处可以进行静态预测。EX段根据执行结果更新BTB。当出现错误预测时,需要清空流水线以恢复现场,并重置PC。

采取动态分支预测的MIPS流水线,若在IF段预测,则预测正确时停顿0拍,错误时比阻塞法多停顿一拍。若在ID段预测,则预测正确时停顿1拍,错误时比阻塞法多停顿一拍。当然,如果没有BTB只有BHT,那么预测应当在转移目标地址产生时进行预测,通常为ID段。

指令级并行:动态分支预测技术

标签:好的   记录   mips   常见   循环   地址   目标   使用   没有   

原文地址:https://www.cnblogs.com/mollnn/p/14773588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!