[发明专利]错误的推测性更新的链接栈修复有效
申请号: | 201310139414.8 | 申请日: | 2008-10-03 |
公开(公告)号: | CN103353833A | 公开(公告)日: | 2013-10-16 |
发明(设计)人: | 詹姆斯·诺里斯·迪芬德尔费尔;布莱恩·迈克尔·斯坦普尔;罗德尼·韦恩·史密斯 | 申请(专利权)人: | 高通股份有限公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 北京律盟知识产权代理有限责任公司 11287 | 代理人: | 刘国伟 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 错误 推测 更新 链接 修复 | ||
分案申请的相关信息
本申请为发明名称为“错误的推测性更新的链接栈修复”的原中国发明专利申请的分案申请。原申请的申请号为200880110141.1;原申请的申请日为2008年10月3日。
技术领域
本发明大体涉及处理器的领域,且明确地说涉及一种用于修复被推测性指令执行破坏的链接栈的系统和方法。
背景技术
现代软件本质上是模块化的,其特定功能在子例程中实施。为了有效地实施子例程调用和返回,许多现代处理器采用实施(或仿真)链接栈的电路。链接栈是用于存储仅硬件可见且程序设计者不可直接存取的链接地址的逻辑结构。调用(分支到)子例程的指令,例如分支和链接指令,将随后指令的地址“推进”到链接栈上。在子例程中遇到返回型指令时,链接栈被“上托(popped)”以产生进行子例程调用的指令之后的指令的地址。随着子例程调用其它子例程,链接地址被相继推进到链接栈上,且当子例程完成执行并返回时被上托。
大多数现代处理器采用管线式架构,其中各具有多个执行步骤的连续指令在执行中重叠。为了获得最大性能,指令应连续流动穿过管线。任何导致指令在管线中停止的情形均不利地影响性能。
几乎所有现实世界程序均包含有条件分支指令,直到在管线中深处估计指令时才知道其实际分支行为。为了避免将由于等待每一分支指令的实际估计而引起的管线停止,许多现代处理器采用某一形式的分支预测,借此在管线中较早地预测有条件分支指令的分支行为。基于所预测的分支估计,处理器推测性地从所预测地址(分支目标地址(如果分支经预测为被采取)或分支指令之后的下一连续地址(如果分支经预测为未采取))获取指令并执行指令。当确定实际分支行为时,如果分支被错误地预测,那么从管线冲洗推测性获取的指令,且从正确的下一地址获取新指令。错误预测的分支不利地影响性能和功率消耗两者。
错误预测的分支的另一结果可能是链接栈被破坏。如果错误预测的分支之后推测性地执行的指令包含子例程返回和后续调用,那么将从链接栈上托有效链接地址,且将新链接地址推进到栈上。依据链接栈硬件实施方案,错误地上托链接栈本身不会具有不利后果,因为上托所述栈仅移动读取指针;数据保持在链接栈缓冲器中。然而,随后将新的值错误地推进到链接栈上可重写先前的值。当检测到分支错误预测且获取并执行适当指令流时,如果链接栈破坏未检测到并加以修复,那么子例程返回将把控制转移到错误位置。
一种避免链接栈破坏的方式是禁止推测性指令进行的链接栈更新。举例来说,可延迟链接栈更新,直到解析所有有条件分支为止。随着分支估计在管线中深处在执行管级中发生,这将有效地将链接栈更新移动到管线中深处。然而,这将由于有效地拒绝短的子例程使用链接栈功能性而不利地影响短的子例程的性能。因此,为了获得来自链接栈硬件的最大性能,链接栈优选地在管线中较早地更新,例如在解码管级处更新。
一种防止由于分支错误预测引起的处理器资源(例如,寄存器重命名缓冲器等)的破坏的已知方法是维持资源的并行、“已提交的”副本。所述已提交的副本仅在改变其状态的指令提交以供执行时才被更新。当指令确定不存在将阻止指令完成执行的危险时,所述指令确认其自身的执行。举例来说,实施算术或逻辑运算的指令可在其所有运算数可用(即,其已由其它指令计算或已从存储器成功检索)时确认执行。当一指令和管线中在其之前的所有指令被确认时,所述指令提交以供执行。
为了避免由于分支错误预测引起的破坏,处理器资源的工作副本的状态在指令的例程执行期间以正在进行为基础而改变;然而,处理器资源的已提交副本的状态仅由已提交以供执行的指令改变。当检测到分支错误预测时,将处理器资源的已提交副本复制到工作副本并替换工作副本的内容。此技术将工作副本置于其在任何指令的推测性执行之前所具有的状态中。
有可能采用此方法来解决链接栈破坏问题。工作链接栈将由管线中实施子例程调用和返回的指令更新。已提交链接栈将仅由已提交以供执行的子例程调用和返回指令更新。在发现分支错误预测后,链接栈的已提交副本将被简单地复制为工作链接栈。然而,此方法在硅面积和功率消耗两个方面代价较大。复制链接栈需要复制实施所述链接栈的寄存器或其它存储器结构,连同管理链接栈所必需的控制逻辑。额外硬件占据了宝贵的集成电路面积,增加了布线拥塞,且使时钟和功率分布复杂化。连续更新两个完整的链接栈标称消耗仅运行一个链接栈的功率的两倍。尤其在部署于移动电子装置中的处理器中,使功率消耗最小化对于保存电池寿命和减少热耗散很关键。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于高通股份有限公司,未经高通股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310139414.8/2.html,转载请声明来源钻瓜专利网。