一种cpu中低开销的支持精确异常模型的地址存储方法

文档序号:6448055阅读:365来源:国知局
专利名称:一种cpu中低开销的支持精确异常模型的地址存储方法
技术领域
本发明涉及一种CPU中低开销的支持精确异常模型的地址存储方法。
背景技术
异常处理(包括指令异常和外部中断)是处理器的一项重要技术,在某些异常事件产生时,用来使处理器转入对这些事件的处理。这些事件包括硬件错误,指令执行错误,和用户请求服务等等。异常处理能力是处理器的一项重要技术指标,它直接影响着处理器设计方案的可靠性和指令的运算性能。现代CPU要求能及时响应异常,并减小异常处理的开销。异常处理的关键就是在异常发生时,保存CPU当前运行指令的状态,在退出异常处理时恢复异常处理前的状态。
现代CPU处理异常一般使用精确异常模型。精确异常模型的特征是指异常处理要保证指令的原子操作,并且不改变原来的指令流。为了做到这一点,异常在指令的边界上被处理,即CPU在指令退休时响应中断,并保存退出异常处理时下一条被执行的指令的地址。为了异常处理不影响CPU的性能,CPU在异常处理结束后要避免重复执行以前的指令。异常服务返回的地址可能是响应异常时被中断的指令的地址,也可能是它的下一条指令的地址。因而在指令退休前,这两个地址都需要提供,异常类型和被中断的指令类型决定把哪个地址存储在异常地址寄存器中。例如,如果异常事件是外部中断服务请求,被中断的指令将正常退休并改变CPU的状态,它的下一条指令的地址将被保存在异常地址寄存器中作为中断返回时指令的入口;如果异常事件是由除以零的除法指令产生的,因为这条指令不能完成,它将异常退休但不改变CPU的状态(即不改变寄存器的值),这条除法指令的地址将被保存在异常地址寄存器中,CPU从中断服务程序返回时继续执行这条除法指令。
异常的产生是无法预测的,每一条指令都可能产生。一般为了实现精确异常模型,CPU需要把这两个地址保存起来。随着CPU流水线中发射指令的增多,同时存储这两个地址的物理开销会增大,也增加了功耗。

发明内容
本发明的目的是提供一种CPU中低开销的支持精确异常模型的地址存储方法。
它的实施步骤如下
1)在CPU的退休缓冲器中为每一条指令定义一个域存储下一条指令的地址;2)在CPU的退休控制器中定义一个退休地址寄存器;3)在退休缓冲器中定义一个域记录指令是否完成;4)非跳转指令发射时,把它的下一条指令的地址写入退休缓冲器相应的域中;5)对于跳转指令,在执行阶段,把它的下一条指令的地址写入缓冲器相应的域中;6)指令退休时,把退休缓冲器中指令地址转移到退休地址寄存器中;7)CPU响应异常时,选择合适的地址送到CPU的异常处理单元。
本发明的优点是电路的硬件开销比较低,数据通道少,避免了为保存每条指令保存两个地址而使用很多的寄存器和多路选择器;控制电路比较简单,异常被响应时,CPU很容易存储异常服务结束时返回的地址,保证了异常事件的快速响应。


图1显示了简化的支持精确异常模型的CPU结构;图2显示了存储地址的流水线示意图。
具体实施例方式
低开销的支持精确模型的地址存储方法。它的实施方法如下1)在CPU的退休缓冲器中,为缓冲器的每一个入口定义一个32位宽的寄存器(对32位宽的地址总线而言)保存指令的地址;2)在CPU的退休控制器中定义一个32位宽的寄存器用于存储将退休的指令的地址;3)在退休缓冲器中定义一个域记录指令是否完成;4)对于跳转指令,在执行阶段,把它的下一条指令的地址写入缓冲器相应的域中;5)对于其它的指令,它的下一条指令的地址在译码的阶段就可以确定,在指令发射时,把这个地址写入退休缓冲器相应的域中;6)指令退休时,把退休缓冲器中下一条指令的地址存储到退休控制器的退休地址寄存器中;7)CPU响应异常时,根据正在退休的指令是否完成决定是把退休指令的地址还是把它的下一条指令的地址存储到异常地址寄存器中。
为了清楚地说明这种方法,我们将根据它的结构图解释这种方法,这种方法对各类支持精确异常模型的CPU有通用性。
图1显示了一个简要的CPU结构,各个部分的功能简介如下1)取指单元负责从存储器中取指令,交给译码和指令发射单元;2)译码和指令发射单元把取回来的指令进行译码并决定什么时候发射和发射到那个功能单元,并在退休缓冲器中分配一个入口;3)功能单元负责执行指令,常见的功能单元有算术逻辑运算单元,移位运算单元,乘除法运算单元,和跳转指令处理单元等等;4)退休缓冲器负责记录每一条发射了但还没有退休的指令的信息,图1中退休缓冲器有四个入口可以存放四条指令。entry_vld标志这个入口是否分配给指令,complete标志这个入口的指令是否完成了,next_pc则用于存放下一条指令的地址;5)退休控制器负责指令的退休操作和异常处理;6)CPU状态控制器负责当指令退休时更新CPU的状态。
通常CPU采取流水线结构的指令执行方式。图2显示了图1的CPU的指令流水线操作,其中,IF指令提取;DE指令译码和发射;EX指令运算;WB结果写回。
下面将以这个结构图为主线详细介绍支持精确异常模型的地址存储方法。
本发明是在发射指令时把它的下一条指令的地址存储在退休缓冲器中,而不存储当前被发射的指令的地址。如图2中所示的指令1和指令2。
一条指令经过译码后,下一条指令的地址由指令的类型决定。对于非跳转指令,它的下一条指令的地址是当前指令的地址加2(对16位指令集)或加4(对32位指令集);对于条件跳转和一些绝对跳转指令,它的下一条指令的地址只有在执行阶段才能确定的,在执行阶段这个地址被写到退休缓冲器中。如图2中所示的指令3。
当指令退休时,在退休缓冲器中的下一条指令的地址存到退休地址寄存器中作为下一条指令的当前地址。尽管下一条指令可能还没有被发射,但当前一条指令退休时,它的地址是确定的。除非异常事件发生,下一条指令是异常服务程序的第一条指令。当这第一条指令被发射时,下一条指令的地址不仅要写入退休缓冲器,它的地址也要写入退休地址寄存器。这样就保证了在任何一条指令退休时,它的地址和下一条指令的地址都提供了,CPU可以实现精确异常模型,减小了在指令发射时存储两个地址的物理开销。如果在指令发射时退休缓冲器只存储当前指令的地址,那么退休控制器还要跟踪下一条指令的入口标签,控制逻辑相对比较复杂,而且在数据通路上引入了更多的多路选择器。
当退休控制器捕捉到了异常事件时,如果正在退休的指令已经完成了,那么它的下一条指令的地址被存入异常地址寄存器中;否则退休指令的地址被存入异常地址寄存器。CPU退出异常服务程序后,用异常地址寄存器的值作为下一条指令的地址进行取指。
权利要求
1.一种CPU中低开销的支持精确异常模型的地址存储方法,其特征在于,它的步骤1)在CPU的退休缓冲器中为每一条指令定义一个域存储下一条指令的地址;2)在CPU的退休控制器中定义一个退休地址寄存器;3)在退休缓冲器中定义一个域记录指令是否完成;4)非跳转指令发射时,把它的下一条指令的地址写入退休缓冲器相应的域中;5)对于跳转指令,在执行阶段,把它的下一条指令的地址写入缓冲器相应的域中;6)指令退休时,把退休缓冲器中指令地址转移到退休地址寄存器中;7)CPU响应异常时,选择合适的地址送到CPU的异常处理单元。
2.根据权利要求1所述的一种CPU中低开销的支持精确异常模型的地址存储方法,其特征在于所说退休缓冲器的每一个入口定义了一个32位宽的寄存器,它记录了每一条发射的但没有退休的指令的下一条指令的地址。
3.根据权利要求1所述的一种CPU中低开销的支持精确异常模型的地址存储方法,其特征在于所说退休控制器中定义一个32位宽的退休地址寄存器,它记录了正在退休的指令的地址。
4.根据权利要求1所述的一种CPU中低开销的支持精确异常模型的地址存储方法,其特征在于所说所有的指令是按序发射,非序完成,在退休缓冲器中定义一个域记录指令是否完成,以决定指令能否退休和异常响应时控制异常地址的选择。
5.根据权利要求1所述的一种CPU中低开销的支持精确异常模型的地址存储方法,其特征在于对于非跳转指令,当它们发射时,它的下一条指令的地址是可以确定的,并被写入退休缓冲器相应的域中。
6.根据权利要求1所述的一种CPU中低开销的支持精确异常模型的地址存储方法,其特征在于对于跳转指令,它的下一条指令的地址在执行阶段才能确定。这一类指令将在执行阶段向退休缓冲器请求写入下一条指令的地址。
7.根据权利要求1所述的一种CPU中低开销的支持精确异常模型的地址存储方法,其特征在于所有退休的指令,它的下一条指令的地址将写入退休地址寄存器中作为下一条将要退休的指令的地址。如果退休缓冲器是空的,将发射指令的地址直接存储到退休地址寄存器中。
8.根据权利要求1所述的一种CPU中低开销的支持精确异常模型的地址存储方法,其特征在于响应异常时,若退休的指令完成了,下一条指令的地址写入异常地址寄存器;否则退休的指令的地址写入异常地址寄存器。
全文摘要
本发明公开了一种设计在CPU里支持精确异常模型的指令地址存储的方法。这种方法的特点是当指令发射时只保存它的下一条指令的地址,并通过一些其它的逻辑电路保证在任何情况下当任意一条指令退休时,它的地址和它的下一条指令的地址都能被提供给CPU的异常处理单元,从而实现精确异常模型.这种方法的优点是电路的硬件开销比较低,数据通道少,避免为每条指令保存两个地址而使用很多的寄存器和多路选择器;另外一个优点是控制电路比较简单,异常被响应时,CPU很容易存储异常服务结束时返回的地址。
文档编号G06F9/32GK1514356SQ0311613
公开日2004年7月21日 申请日期2003年3月31日 优先权日2003年3月31日
发明者余龙理, 王界兵 申请人:杭州中天微系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1