一种嵌入式处理器分支预测的方法

文档序号:6575863阅读:191来源:国知局
专利名称:一种嵌入式处理器分支预测的方法
技术领域
本发明属于计算机技术领域,涉及一种微处理器的反向分支预测方法。
背景技术
众所周知,分支预测技术一直是提高通用处理器性能的重要方法。分支 预测的本质是克服指令控制相关,提高指令并行度,使得处理器的性能得到 提高。在这方面学术界和工业界都进行了大量的研究和实践。现在的通用处 理器大多采用深度流水线和宽发射机制,分支预测是两者的关键支撑技术。 当前处理器靠深度流水提高主频一直还一直令人们不太满意,但是同时应该 注意到没有一定深度的流水,处理器频率就不可能太高,也就不会有很高的
性能。目前一般处理器的流水线都在10 30之间跳跃。耶鲁,帕特预测宽发射 将成为单芯片集成10亿晶体管主要解决方案,而且宽发射也是提高单片处理 器性能的重要手段之一。最近英特尔的新处理器Conroe就从原先奔腾的三发 射提高到四发射,使得处理器性能提高30%。分支预测技术不仅在高性能通 用处理器中采用,而且在嵌入式处理器也广泛采用。

发明内容
本发明的目的是提供一种硬件复杂度低,能有效提高预测精度、改善分 支指令在管线执行中所导致的效能损失的分支预测方法。
本发明方法是基于反向分支预测机制的改进,具体是改进反向分支预测 机制的存储管理策略和指标控制,使其在遭遇复杂的巢状循环时不须立即清 除原有记录,能充分利用储存空间以保留不同的巢状循环结构并精确地选择 对应的分支记录进行预测。
本发明方法具体是这样实现的
步骤(l).计算机提取指令,并将提取的指令与机制中内存栈首指针所指 的记录对比,分别进行操作a. 如果提取的指令为机制中记录过的指令,则送出预测分支指令的目
的地址作为下一指令抓取指令的地址。
b. 如果提取的指令不是机制中记录过的指令,则反向分支预测机制不做 特定动作,管线正常执行。
步骤(2).对歩骤(1)提取的指令进行处理,具体是
C.如果提取的指令为以往执行过的反向跳跃指令,并已在前一阶段产生 预测分支的效果,当指令与反向分支预测中已经记录过的指令相符,则表示
改进的反向分支预测机制预测正确;如果当指令与反向分支预测中已经记录 过的指令不相符,则表示预测错误,清除改进的反向分支预测机制抓取的指 令,并恢复管线抓取正确的指令地址。
d. 如果指令不是记录在改进的反向分支预测机制中的目前预测的反向分 支指令,当执行指令经译码判断为分支指令时,若分支指令为回向分支指令 且发生跳跃时,判断其跳跃的目的地址与改进的反向分支预测机制中最外层 巢状记录指标所对应的跳跃记录是否构成巢状,若未构成巢状则表示已脱离 改进的反向分支预测机制已记录的巢状回路,两者皆在指令执行阶段更新其 对应的改进的反向分支预测机制空间记录;如果为其他情况,则不做处理。
步骤(3).根据步骤(2)的判断结果执行指令,此时进行存储档位的指标调 整,分为以下部分进行
e. 当改进的反向分支预测机制已记录的反向分支指令再一次被执行,预 测其跳跃的确发生跳跃,此时改进的反向分支预测机制预测正确,若没有其 它分支指令更改程序流程,储存档位回到改进的反向分支预测机制所构建之 巢状循环最内层;改进的反向分支预测机制将在比较该分支跳跃地址与原有 记录而判断出巢状循环的最内层后,更改读出预测地址的读出数据指标栈首 指针令其指向巢状循环的最内层,其余指标保持不动。
f. 当改进的反向分支预测机制已记录的反向分支指令再一次被执行,预 测其跳跃,改进的反向分支预测机制读出预测地址读出数据指标栈首指针指 向下一个储存档位(即指向下一层循环圈)以进行预测,其余指标则保持不动。
5g. 当指令经过指令译码阶段的流程确认此指令为一不存在改进的反向分 支预测机制记录档位中,且发生跳跃的反向分支指令,并经由地址比较发现 该指令与改进的反向分支预测机制档位所储存指令构成巢状循环此时,若改进 的反向分支预测机制未曾储存到末端档位而发生循环,则此分支指令根据数 据写入指标栈尾指标接续存入改进的反向分支预测机制档位中,并将读出数 据指标栈首指针调到巢状结构最内层指针指向新建立之分支档位而写入数据 指标栈尾指针,向下调整一个档位。
h. 当指令经过指令译码阶段的流程确认此指令为一不存在改进的反向分 支预测机制记录档位中,且发生跳跃的反向分支指令,并经由地址比较发现该 指令与改进的反向分支预测机制档位所储存指令构成巢状循环,此时若改进的 反向分支预测机制已储存到末端档位而发生循环,改进的反向分支预测机制由 最初档位开始覆盖原有记录。
i. 若指令为前置分支指令且跳跃地址未超出改进的反向分支预测机制中 已存反向分支的PC范围,在比较各存储档位与此前置跳跃地址后改进的反 向分支预测机制将控制栈首栈尾,任意指针调整到对应地址。
j.若指令为跳跃地址超出改进的反向分支预测机制中已存反向分支的 PC范围的前置分支指令或其它非分支指令,由在此类行为不会对程序流程造 成改变,此时改进的反向分支预测机制将保持不变。
本发明针对嵌入式处理器的特定应用环境通过对反向分支预测机制的分 支预测方法的改进,结合定制的分支目标缓冲,提出了一种动态的分支预测 机制,该机制基在全局索引方式,对反向分支预测机制结构进行了改进设计, 实现了对循环逻辑中反向分支指令的精确预测。


图l为本发明包含子过程调用的大型巢状循环图; 图2为本发明六组六向分支构成之大型巢状循环图。
具体实施例方式
下面结合附图和实例来对本发明所述的一种嵌入式处理器分支预测的方法做进一步的描述。
一种嵌入式处理器分支预测的方法的具体步骤是
步骤(l).计算机提取指令,并将提取的指令与机制中内存栈首指针所指 的记录对比,分别进行操作
a. 如果提取的指令为机制中记录过的指令,则送出预测分支指令的目 的地址作为下一指令抓取指令的地址。
b. 如果提取的指令不是机制中记录过的指令,则反向分支预测机制不做 特定动作,管线正常执行。
步骤(2).对步骤(1)提取的指令进行处理,具体是
C.如果提取的指令为以往执行过的反向跳跃指令,并已在前一阶段产生 预测分支的效果,当指令与反向分支预测中己经记录过的指令相符,则表示 改进的反向分支预测机制预测正确;若不相符,则表示预测错误,并且清除 改进的反向分支预测机制抓取的指令,并恢复管线抓取正确的指令地址。
d. 如果指令为不是记录在改进的反向分支预测机制中的目前预测的反向 分支指令,当执行指令经译码判断为分支指令时,若分支指令为回向分支指 令且发生跳跃时,判断其跳跃的目的地址与改进的反向分支预测机制中最外 层巢状记录指标所对应的跳跃记录是否构成巢状,若未构成巢状则表示己脱 离改进的反向分支预测机制已记录的巢状回路,两者皆在指令执行阶段更新 其对应的改进的反向分支预测机制空间记录;如果为其他情况,则不做处理。
歩骤(3).根据步骤(2)的判断结果执行指令,此时进行存储档位的指标调 整,分为以下部分进行
e. 当改进的反向分支预测机制已记录的反向分支指令再一次被执行,预 测其跳跃的确发生跳跃,此时改进的反向分支预测机制预测正确,若没有其 它分支指令更改程序流程,储存档位回到改进的反向分支预测机制所构建之 巢状循环最内层;改进的反向分支预测机制将在比较该分支跳跃地址与原有 记录而判断出巢状循环的最内层后,更改读出预测地址的读出数据指标栈首 指针令其指向巢状循环的最内层,其余指标保持不动。f. 当改进的反向分支预测机制已记录的反向分支指令再一次被执行,预 测其跳跃,改进的反向分支预测机制读出预测地址读出数据指标栈首指针指 向下一个储存档位(即指向下一层循环圈)以进行预测,其余指标则保持不动。
g. 当指令经过指令译码阶段的流程确认此指令为一不存在改进的反向分 支预测机制记录档位中且发生跳跃的反向分支指令,并经由地址比较发现该 指令与改进的反向分支预测机制档位所储存指令构成巢状循环此时若改进的 反向分支预测机制未曾储存到末端档位而发生循环,则此分支指令需根据数 据写入指标栈尾指标接续存入改进的反向分支预测机制档位中,并将读出数 据指标栈首指针调到巢状结构最内层指针指向新建立之分支档位而写入数据 指标栈尾指针,向下调整一个档位。
h. 当指令经过指令译码阶段的流程确认此指令为一不存在改进的反向分 支预测机制记录档位中且发生跳跃的反向分支指令,并经由地址比较发现该指 令与改进的反向分支预测机制档位所储存指令构成巢状循环,此时若改进的反 向分支预测机制已储存到末端档位而发生循环,改进的反向分支预测机制由最 初档位开始覆盖原有记录。
i. 若指令为前置分支指令且跳跃地址未超出改进的反向分支预测机制中 已存反向分支的PC范围,在比较各存储档位与此前置跳跃地址后改进的反 向分支预测机制将控制栈首栈尾,任意指针调整到对应地址。
j.若指令为跳跃地址超出改进的反向分支预测机制中己存反向分支的 PC范围的前置分支指令或其它非分支指令,由在此类行为不会对程序流程造 成改变,此时改进的反向分支预测机制将保持不变。
通过模拟评估可得出在图1的大型巢状循环时,其预测正确率分别为
89.4%与90.9%。以图2为例,在遭遇其他复杂结构如调用子程序的干扰时, 在主程序Sl的三组双层巢状循环中,BLS2将调用子程序S2并遭遇其它的 巢状循环结构,此时反向分支预测机制无论是否还有可用的储存档位均需立 即清除己有的分支记录造成效能降低,导致反向分支预测机制与改进的反向 分支预测机制的预测正确率分别变为75. 7%与90.8%,产生显著的差异。
8
权利要求
1、一种嵌入式处理器分支预测的方法,其特征在于该方法的具体步骤是步骤(1).计算机提取指令,并将提取的指令与机制中内存栈首指针所指的记录对比,分别进行操作a.如果提取的指令为机制中记录过的指令,则送出预测分支指令的目的地址作为下一指令抓取指令的地址;b.如果提取的指令不是机制中记录过的指令,则反向分支预测机制不做特定动作,管线正常执行;步骤(2).对步骤(1)提取的指令进行处理,具体是c.如果提取的指令为以往执行过的反向跳跃指令,并已在前一阶段产生预测分支的效果,当指令与反向分支预测中已经记录过的指令相符,则表示改进的反向分支预测机制预测正确;如果当指令与反向分支预测中已经记录过的指令不相符,则表示预测错误,清除改进的反向分支预测机制抓取的指令,并恢复管线抓取正确的指令地址;d.如果指令不是记录在改进的反向分支预测机制中的目前预测的反向分支指令,当执行指令经译码判断为分支指令时,若分支指令为回向分支指令且发生跳跃时,判断其跳跃的目的地址与改进的反向分支预测机制中最外层巢状记录指标所对应的跳跃记录是否构成巢状,若未构成巢状则表示已脱离改进的反向分支预测机制已记录的巢状回路,两者皆在指令执行阶段更新其对应的改进的反向分支预测机制空间记录;如果为其他情况,则不做处理;步骤(3).根据步骤(2)的判断结果执行指令,此时进行存储档位的指标调整,分为以下部分进行e.当改进的反向分支预测机制已记录的反向分支指令再一次被执行,预测其跳跃的确发生跳跃,此时改进的反向分支预测机制预测正确,若没有其它分支指令更改程序流程,储存档位回到改进的反向分支预测机制所构建之巢状循环最内层;改进的反向分支预测机制将在比较该分支跳跃地址与原有记录而判断出巢状循环的最内层后,更改读出预测地址的读出数据指标栈首指针令其指向巢状循环的最内层,其余指标保持不动;f.当改进的反向分支预测机制已记录的反向分支指令再一次被执行,预测其跳跃,改进的反向分支预测机制读出预测地址读出数据指标栈首指针指向下一个储存档位以进行预测,其余指标则保持不动;g.当指令经过指令译码阶段的流程确认此指令为一不存在改进的反向分支预测机制记录档位中,且发生跳跃的反向分支指令,并经由地址比较发现该指令与改进的反向分支预测机制档位所储存指令构成巢状循环此时,若改进的反向分支预测机制未曾储存到末端档位而发生循环,则此分支指令根据数据写入指标栈尾指标接续存入改进的反向分支预测机制档位中,并将读出数据指标栈首指针调到巢状结构最内层指针指向新建立之分支档位而写入数据指标栈尾指针,向下调整一个档位;h.当指令经过指令译码阶段的流程确认此指令为一不存在改进的反向分支预测机制记录档位中,且发生跳跃的反向分支指令,并经由地址比较发现该指令与改进的反向分支预测机制档位所储存指令构成巢状循环,此时若改进的反向分支预测机制已储存到末端档位而发生循环,改进的反向分支预测机制由最初档位开始覆盖原有记录;i.若指令为前置分支指令且跳跃地址未超出改进的反向分支预测机制中已存反向分支的PC范围,在比较各存储档位与此前置跳跃地址后改进的反向分支预测机制将控制栈首栈尾,任意指针调整到对应地址;j.若指令为跳跃地址超出改进的反向分支预测机制中已存反向分支的PC范围的前置分支指令或其它非分支指令,由在此类行为不会对程序流程造成改变,此时改进的反向分支预测机制将保持不变。
全文摘要
本发明涉及一种嵌入式处理器分支预测的方法。本发明方法是基于反向分支预测机制的改进,具体是改进反向分支预测机制的存储管理策略和指标控制,使其在遭遇复杂的巢状循环时不须立即清除原有记录,能充分利用储存空间以保留不同的巢状循环结构并精确地选择对应的分支记录进行预测。本发明针对嵌入式处理器的特定应用环境通过对反向分支预测机制的分支预测方法的改进,结合定制的分支目标缓冲,提出了一种动态的分支预测机制,该机制基在全局索引方式,对反向分支预测机制结构进行了改进设计,实现了对循环逻辑中反向分支指令的精确预测。
文档编号G06F9/38GK101604235SQ200910100608
公开日2009年12月16日 申请日期2009年7月10日 优先权日2009年7月10日
发明者吴国华, 祯 张, 方美娥, 王玉娟, 郑秋华 申请人:杭州电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1