一种支持自动纠错功能的返回地址栈实现方法技术

技术编号:4198533 阅读:251 留言:0更新日期:2012-04-11 18:40
一种支持自动纠错功能的返回地址栈实现方法,所述的返回地址栈实现方法包括以下步骤:1)在指令预取过程中对函数调用指令和函数返回指令进行预译码,并根据预译码结果进行函数返回地址信息的入栈和出栈操作;2)设置栈顶指针标识指令预译码时返回地址栈的当前操作的位置;3)采用退休指针记录函数调用和函数返回指令退休后的返回地址栈状态,在流水线清空操作时,利用退休指针对栈顶指针的自动恢复。本发明专利技术能有效提高函数返回的预测精度、提升处理器的性能。

【技术实现步骤摘要】

本专利技术属于嵌入式处理器系统领域。更具体地说,涉及一种函数返回地址栈实现方法。
技术介绍
嵌入式处理器发展至今,已经在多媒体编解码、通信技术和超大规模集成电路设 计领域展现出了巨大的应用价值。 一直以来,嵌入式处理器对于功耗、面积、成本、性能等多 项指标都有着严格的设计要求。随着应用领域的不断扩大和应用要求的不断提高,对于嵌 入式处理器的处理性能提出了更高的要求。 在流水线技术广泛应用于处理器设计的今天,如何充分发挥流水线的作用成为设 计中需要考虑的重点问题。分支指令对于流水线技术的运用带来的障碍使得分支预测技术 在处理器的设计中变得越来越重要,为实现高性能,精确的分支预测成为关键。分支预测失 效将浪费大量的时钟周期,无法发挥处理器乱序执行的效能,从而影响处理器性能的进一步提咼o 函数调用和函数返回作为重要的分支指令,在处理器的指令集中占有相对重要的 地位,能否在尽可能少的等待时间之内完成函数返回指令正确目标地址的获取,成为了一 种重要的分支预测技术。当前大多数高性能的嵌入式处理器都采用了返回地址栈为函数返 回指令提供返回地址,而返回地址栈的维护方法在不同的嵌入式处理器中各不相同。在现 有的常见嵌入式处理器架构中,返回地址栈主要采用保存当前栈顶指针、数据或保存全栈 的修复方法。前者需要对每一条分支指令保存一个栈顶指针的拷贝,预测精度也不高;后者 虽然可以获得百分之百的预测准确率,但硬件开销过大。
技术实现思路
为了克服已有的嵌入式处理器的函数返回地址栈实现方法的函数返回的预测精 度较低、限制处理器的性能的不足,本专利技术提供一种有效提高函数返回的预测精度、提升处 理器的性能的支持自动纠错功能的返回地址栈实现方法。 本专利技术解决其技术问题所采用的技术方案是 —种支持自动纠错功能的返回地址栈实现方法,所述的返回地址栈实现方法包括 以下步骤 1)在指令预取过程中对函数调用指令和函数返回指令进行预译码,并根据预译码 结果进行函数返回地址信息的入栈和出栈操作; 2)设置栈顶指针标识指令预译码时返回地址栈的当前操作的位置; 3)采用退休指针记录函数调用和函数返回指令退休后的返回地址栈状态,在流水 线清空操作时,利用退休指针对栈顶指针的自动恢复。 作为优选的一种方案所述的返回地址栈实现方法还包括步骤4)采用检验指针 记录后级流水线确认预测后的返回地址栈状态,在分支跳转预测出错时,利用检验指针对栈顶指针的自动恢复。 作为优选的另一种方案在所述步骤1)中,在指令预取过程中设置返回地址栈,并对预取指令进行动态预译码,若当前指令为函数调用指令,将函数的返回地址压入返回地址栈;若当前指令为函数返回指令,从返回地址栈中获得返回地址,跳入返回函数开始预取指令。 进一步,在所述步骤2)中,所述返回地址栈为循环堆栈结构,栈顶指针指示返回地址栈当前写入和读取的位置,栈顶指针在有效范围内循环更新,在指令预取的同时控制栈顶指针的更新和返回地址栈对应位置的入栈和出栈操作。 更进一步,在所述步骤3)中,程序遇到异常时产生流水线清空操作,流水线的各种状态恢复为指令退休时的状态,利用退休指针恢复返回地址栈的栈顶指针,返回地址栈重新进入正常工作状态。 再进一步,在所述步骤4)中,后级流水线在函数调用指令和函数返回指令执行时即对返回地址预测进行检验。 当流水线执行过程中出现分支预测错误,将返回地址栈栈顶指针更新为检验指针,恢复操作无需等待当前分支预测错误指令退休时进行,返回地址栈提前进入正常工作状态。 本专利技术的技术构思为利用一组指针寄存器的协同工作,实现了在流水线出现清空操作或其他分支预测出现错误时的自动纠错。该单元的本质是在嵌入式处理器中通过简单的扩展,保持其控制能力的同时,确保了函数调用和函数返回指令接近百分之百的预测精度。 支持自动纠错功能的返回地址栈是一个为通用嵌入式处理器设计的加速函数调用和函数返回指令执行的硬件执行单元。其仅仅是一个执行单元,是复杂嵌入式处理器的有效补充。 因此,利用较小的硬件代价对返回地址栈进行必要的修复,能够获得正确的返回地址,即提高函数返回指令的预测精度,就显得尤为重要。 本专利技术的有益效果主要表现在在实现对函数调用和函数返回指令的自动识别的基础上,通过相应的入栈和出栈操作,达到对函数返回指令加速的目的;通过退休指针、检验指针和栈顶指针的协同工作,实现返回地址栈在流水线进行清空操作和分支预测出现错误时的自动纠错功能。该方法应用于嵌入式处理器中,有效地提高了处理器取指单元的取指效率,从而提升整个嵌入式处理器的处理性能。附图说明 图1是返回地址栈指针寄存器组的硬件原理 图2是栈顶指针自动纠错的硬件原理 图3是返回地址栈入栈出栈操作的硬件原理图。具体实施例方式下面结合附图对本专利技术作进一步描述。 参照图1-图3,,所述的返回地址栈实现方法包括以下步骤 1)在指令预取过程中对函数调用指令和函数返回指令进行预译码,并根据预译码 结果进行函数返回地址信息的入栈和出栈操作; 2)设置栈顶指针标识指令预译码时返回地址栈的当前操作的位置; 3)采用退休指针记录函数调用和函数返回指令退休后的返回地址栈状态,在流水线清空操作时,利用退休指针对栈顶指针的自动恢复。所述的返回地址栈实现方法还包括步骤4)采用检验指针记录后级流水线确认预测后的返回地址栈状态,在分支跳转预测出错时,利用检验指针对栈顶指针的自动恢复。 本实施例的支持自动纠错功能的返回地址栈实现方法特征如下 1)在指令预取过程中对函数调用和函数返回指令进行预译码,并根据预译码结果进行函数返回地址信息的入栈和出栈操作; 2)设置栈顶指针标识指令预译码时返回地址栈的当前操作的位置; 3)采用退休指针记录函数调用和函数返回指令退休后的返回地址栈状态; 4)采用检验指针记录后级流水线确认预测后的返回地址栈状态; 5)在流水线清空操作时,利用退休指针对栈顶指针的自动恢复; 6)在分支跳转预测出错时,利用检验指针对栈顶指针的自动恢复。 本专利提出的返回地址栈通过循环堆栈结构实现,设计栈顶指针指示返回地址栈当前操作的位置。在不同的处理器指令集中,都有不同的函数调用和函数返回指令,但都通过固定的编码格式实现。取指单元对预取指令的动态预译码通过一组比较器组成的译码单元实现,根据处理器中单发或多发的不同分配逻辑,实现相关地址信息的入栈和出栈操作。 在返回地址栈中存放的是函数返回指令的目标返回地址,也就是函数调用指令下一条指令对应的PC。根据取指单元动态预译码的结果,若当前指令为函数调用指令,将函数的返回地址压入返回地址栈;若当前指令为函数返回指令,从返回地址栈中获得返回地址,跳入返回函数开始预取指令。这一过程如图1所示。 栈顶指针决定了返回地址栈入栈和出栈操作的位置,栈顶指针的维护由取指单元 来完成。取指单元直接根据译码单元对操作数的译码结果,直接完成对栈顶指针的修改,按 序记录函数调用和函数返回指令的序列信息。当译码为函数调用指令,栈顶指针做加一操 作;当译码为函数返回指令,栈顶指针做减一操作。这一过程如图2所示。 在乱序执行的处理器中,指令只有在按序退休后才被确认为正常完成,设计退休 指针记录函数调用和函数返回指令的退休情况,为特殊情况下栈顶指针的自动纠错做准 备。在综合本文档来自技高网...

【技术保护点】
一种支持自动纠错功能的返回地址栈实现方法,其特征在于:所述的返回地址栈实现方法包括以下步骤:1)在指令预取过程中对函数调用指令和函数返回指令进行预译码,并根据预译码结果进行函数返回地址信息的入栈和出栈操作;2)设置栈顶指针标识指令预译码时返回地址栈的当前操作的位置;3)采用退休指针记录函数调用和函数返回指令退休后的返回地址栈状态,在流水线清空操作时,利用退休指针对栈顶指针的自动恢复。

【技术特征摘要】
一种支持自动纠错功能的返回地址栈实现方法,其特征在于所述的返回地址栈实现方法包括以下步骤1)在指令预取过程中对函数调用指令和函数返回指令进行预译码,并根据预译码结果进行函数返回地址信息的入栈和出栈操作;2)设置栈顶指针标识指令预译码时返回地址栈的当前操作的位置;3)采用退休指针记录函数调用和函数返回指令退休后的返回地址栈状态,在流水线清空操作时,利用退休指针对栈顶指针的自动恢复。2. 如权利要求1所述的一种支持自动纠错功能的返回地址栈实现方法,其特征在于 所述的返回地址栈实现方法还包括步骤4)采用检验指针记录后级流水线确认预测后的返回地址栈状态,在分支跳转预 测出错时,利用检验指针对栈顶指针的自动恢复。3. 如权利要求1或2所述的一种支持自动纠错功能的返回地址栈实现方法,其特征在 于在所述步骤1)中,在指令预取过程中设置返回地址栈,并对预取指令进行动态预译码, 若当前指令为函数调用指令,将函数的返回地址压入返回地址栈;若当前指令为函数返回 指令,从返回地址栈中获得返回地址,跳入返回函数开始预取指令。4. 如权利要求1或2所述的一种支持自动纠错功能的返回地址栈实现方法,其特征在 于在所述步骤2)中,所述返回地址栈为循环堆栈结构,栈顶指针指示返回地址栈当前写 入和读取的位置,栈顶指针在有效范围内循环更新,在指令预取的同时控制栈顶指针的更 新和返回地址栈对应位置的入栈和...

【专利技术属性】
技术研发人员:严晓浪龚帅帅葛海通孟建熠
申请(专利权)人:杭州中天微系统有限公司
类型:发明
国别省市:86[中国|杭州]

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

1