双栈返回地址预测器中返回地址栈的恢复方法技术

技术编号:2867244 阅读:144 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种双栈返回地址预测器中返回地址栈的恢复方法,要解决的技术问题是在修改RAS_EXE的同一个时钟周期实现对RAS_PRED的恢复,保证RAS_PRED及时获得最新数据。本发明专利技术的总体逻辑结构包括RAS_PRED、RAS_EXE、写模块1和写模块2。RAS_PRED和RAS_EXE是两个返回地址栈,由写模块1完成RAS_EXE的写操作,写模块2完成RAS_PRED的写操作。采用本发明专利技术能及时、准确地恢复RAS_PRED,且RAS_PRED的恢复和RAS_EXE的修改在同一个时钟周期内进行,不需要在下一个时钟周期发出提示信号,降低了实现的复杂度。

【技术实现步骤摘要】

本专利技术涉及微处理器设计中双栈返回地址预测器中返回地址栈RAS_PRED的恢复方法,尤其是在对返回地址栈RAS_EXE进行修改的同一个时钟周期恢复返回地址栈RAS_PRED的方法。
技术介绍
在采用双栈返回地址预测器的微处理器中,发生分支误预测时,使用RAS_EXE恢复RAS_PRED,即把RAS_EXE中各项的数据写到RAS_PRED的相应项中,对返回指令目标地址的预测精度非常高,硬件实现也很简单。但是恢复过程可能存在这样的问题,即发生分支误预测的指令是跳转的调用指令或跳转的返回指令,这时既要修改RAS_EXE,又要恢复RAS_PRED。为了能够使用RAS_EXE中的最新数据恢复RAS_PRED,普遍的做法是在修改RAS_EXE的下一个时钟周期发出信号提示需要恢复RAS_PRED。这种做法虽然可以保证RAS_PRED获得RAS_EXE中的最新数据,实现正确的返回地址栈恢复,但是RAS_PRED要迟一个时钟周期才能获得RAS_EXE中的最新数据,使得数据的恢复不及时;此外还必须在修改RAS_EXE的下一个时钟周期发出信号提示恢复RAS_PRED,从而增加了实现的复杂度。
技术实现思路
本专利技术所要解决的技术问题是在修改RAS_EXE的同一个时钟周期实现对RAS_PRED的恢复,保证RAS_PRED及时获得最新数据,进行恢复操作时不需要信号提示,降低实现的复杂度。本专利技术的技术方案是本专利技术的主要逻辑结构是对RAS_PRED进行写操作的写模块。为了便于区分,本专利技术把对RAS_PRED进行写操作的写模块叫做写模块2,把对RAS_EXE进行写操作的写模块叫做写模块1。由于使用RAS_EXE恢复RAS_PRED就是把RAS_EXE中各项的数据写到RAS_PRED的相应项中,因此对RAS_PRED的写操作包括使用RAS_EXE恢复RAS_PRED。本专利技术涉及到如下信号TOS_PREDRAS_PRED的栈顶指针。如果TOS_PRED为i,表明RAS_PRED的当前栈顶是它的第i+1项。TOS_EXERAS_EXE的栈顶指针。如果TOS_EXE为i,表明RAS_EXE的当前栈顶是它的第i+1项。分支预测信息包括分支类型以及预测得到的分支方向。实际执行信息包括分支类型以及实际得到的分支方向。返回地址2处在分支预测阶段的调用指令的返回地址,即处在分支预测阶段的调用指令的下一条指令地址。返回地址1处在分支执行阶段的调用指令的返回地址,即处在分支执行阶段的调用指令的下一条指令地址。本专利技术的总体逻辑结构包括RAS_PRED、RAS_EXE、写模块1和写模块2。RAS_PRED和RAS_EXE是两个返回地址栈,各包含n个入口项,设计时可以根据需要调整n的大小。写模块1完成RAS_EXE的写操作,写模块2完成RAS_PRED的写操作。用于修改RAS_EXE的信号包括TOS_EXE、返回地址1和实际执行信息,它们既连到写模块1上,也连到写模块2上;TOS_PRED、返回地址2和分支预测信息只连到写模块2上。如果未发生分支误预测,写模块2根据TOS_PRED和分支预测信息修改RAS_PRED,写模块1根据TOS_EXE和实际执行信息修改RAS_EXE;如果发生了分支误预测,且是跳转的调用指令发生了分支误预测,这时既要修改RAS_EXE又要恢复RAS_PRED,由于用于修改RAS_EXE的数据既送给了写模块1也送给了写模块2,所以写模块1根据TOS_EXE和实际执行信息修改RAS_EXE,写模块2根据TOS_EXE和实际执行信息对RAS_PRED进行恢复。这样,在同一个时钟周期既修改了RAS_EXE,又使用最新的数据恢复了RAS_PRED。本专利技术由写模块2完成RAS_PRED的写操作。为了描述清楚,这里只给出对RAS_PRED中一项的写操作,对其他项的写操作都是相同的。假定对RAS_PRED中的i+1项进行写操作,因此来自RAS_PRED的数据是RAS_PRED第i+1项中的数据,且连到2选1开关1的A端,来自RAS_EXE的数据是RAS_EXE第i+1项中的数据,且连到2选1开关2的C端。开关1的B端接的是返回地址2,输出连到2选1开关开关3的E端。开关2的D端接的是返回地址1,输出连到开关3的F端。如果TOS_PRED为i,同时分支预测信息提示检测到调用指令并且预测其发生跳转,那么开关1把B端的数据作为输出,否则输出A端的数据。如果TOS_EXE为i并且实际执行信息提示检测到发生跳转的调用指令,那么开关2把D端的数据作为输出,否则输出C端的数据。如果发生了分支误预测,开关3把F端的数据作为输出,否则输出E端的数据。开关3的输出是新的将要被写入RAS_PRED第i+1项中的数据。本专利技术由写模块1完成RAS_EXE的写操作,为了描述清楚,这时同样只给出对RAS_EXE中一项的写操作,对其他项的写操作都是相同的。假定对RAS_EXE中的第i+1项进行写操作,因此来自RAS_EXE的数据是RAS_EXE第i+1项中的数据,且连到2选1开关4的G端。返回地址1连到开关4的H端。如果TOS_EXE为i,且实际执行信息指示检测到发生跳转的调用指令,那么开关4把H端的数据作为输出,否则输出G端的数据。开关4的输出是新的将要被写入RAS_EXE第i+1项中的数据。若用n代表RAS_PRED和RAS_EXE所拥有的入口项数,RAS_PRED表示RAS_PRED第i+1项中的数据,本专利技术用写模块2恢复RAS_PRED的流程是如果发生了分支误预测,则查看实际执行信息,如果检测到发生误预测的分支指令是跳转的调用指令,则把返回地址1写入RAS_PRED的第TOS_EXE+1项中,RAS_PRED的其他入口中的数据由RAS_EXE中相应项的数据恢复;如果发生了分支误预测,但发生误预测的分支指令不是跳转的调用指令,则RAS_PRED所有入口中的数据都由RAS_EXE中相应项的数据恢复;如果没有发生分支误预测,则查看分支预测信息,如果检测到调用指令并且预测其发生跳转,则把返回地址2写入RAS_PRED的第TOS_PRED+1项中,RAS_PRED的其他入口中的数据保持不变;如果没有发生分支误预测,并且分支预测信息指示检测到的不是调用指令或者检测到调用指令但预测其不发生跳转,则RAS_PRED所有入口中的数据都保持不变。采用本专利技术可以达到以下技术效果1)及时、准确恢复RAS_PRED。由于用于修改RAS_EXE的数据送给写模块1的同时也送给了写模块2,所以可以在同一个时钟周期完成RAS_EXE的修改和RAS_PRED的恢复,且RAS_PRED中的数据和RAS_EXE中的数据是完全相同的。2)RAS_PRED的恢复和RAS_EXE的修改在同一个时钟周期内进行,不需要在下一个时钟周期发出提示信号,降低了实现的复杂度。附图说明图1本专利技术总体逻辑结构图。图2本专利技术写模块2的内部实现图。图3本专利技术写模块1的内部实现图。图4本专利技术用写模块2恢复RAS_PRED的流程图。具体实施例方式如图1,本专利技术的总体逻辑结构包括RAS_PRED、RAS_EXE、写模块1和写模块2。RAS_PRED和RAS_EXE是两个返回地址栈,分别由n个寄存器组成,n是RAS_PRED和RAS_EXE本文档来自技高网...

【技术保护点】
一种双栈返回地址预测器中返回地址栈的恢复方法,使用RAS_EXE恢复RAS_PRED,即把RAS_EXE中各项的数据写到RAS_PRED的相应项中,其总体逻辑结构包括RAS_PRED、RAS_EXE和写模块1,写模块1完成RAS_EXE的写操作;采用的信号有TOS_PRED、TOS_EXE、分支预测信息、实际执行信息、返回地址2即处在分支预测阶段的调用指令的返回地址和返回地址1即处在分支执行阶段的调用指令的返回地址;其特征在于它的总体逻辑结构还包括写模块2,写模块2完成RAS_PRED的写操作;用于修改RAS_EXE的信号包括TOS_EXE、返回地址1和实际执行信息,它们既连到写模块1上,也连到写模块2上;TOS_PRED、返回地址2和分支预测信息只连到写模块2上;在写模块1修改RAS_EXE的同一个时钟周期写模块2完成对RAS_PRED的恢复操作,保证RAS_PRED及时获得最新数据;用写模块2恢复RAS_PRED的流程是:如果发生了分支误预测,则查看实际执行信息,如果检测到发生误预测的分支指令是跳转的调用指令,则把返回地址1写入RAS_PRED的第TOS_EXE+1项中,RAS_PRED的其他入口中的数据由RAS_EXE中相应项的数据恢复;如果发生了分支误预测,但发生误预测的分支指令不是跳转的调用指令,则RAS_PRED所有入口中的数据都由RAS_EXE中相应项的数据恢复;如果没有发生分支误预测,则查看分支预测信息,如果检测到调用指令并且预测其发生跳转,则把返回地址2写入RAS_PRED的第TOS_PRED+1项中,RAS_PRED的其他入口中的数据保持不变;如果没有发生分支误预测,并且分支预测信息指示检测到的不是调用指令或者检测到调用指令但预测其不发生跳转,则RAS_PRED所有入口中的数据都保持不变。...

【技术特征摘要】

【专利技术属性】
技术研发人员:邢座程孙彩霞张民选蒋江李勇曾献君邓让钰马卓张杰欧国东张承义马驰远李晋文陈海燕阳柳
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:43[中国|湖南]

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

1