一种指令异常处理方法

文档序号:6572394阅读:478来源:国知局
专利名称:一种指令异常处理方法
技术领域
本发明涉及到一种带有中断功能的、采用指令流水线结构的微处理器。特别是一种指令集处理器中指令异常处理的方法。
背景技术
众所周知,微处理器泛指令集处理器(ISP,Instruction SetProcessor)。ISP执行预先定义指令集中的指令。微处理器的功能几乎完全取决于指令集,从而通过指令集表明它的执行能力。所有运行于微处理器上的程序都要基于指令集进行编码。
微处理器的发展一定程度上也是指令集系统的发展,从CISC指令集到RISC指令集,指令集经历了一个从简单到复杂,又从复杂回归到简单的一个螺旋上升的过程。
计算机结构通常是朝着更复杂的方向发展,如更大的指令集、更多的寻址方式、更多的专用寄存器和更强的指令计算功能等。这时使用的指令集主要是CISC指令集。然而,当CISC发展到一定程度,人们发现,一些过于复杂和深奥的指令很难也很少用到,把这样的指令加到指令集反而使控制器的设计变得复杂,并占用了CPU芯片面积相当大的部分。于是,RISC指令集应运而生。现在已有众多厂家生产RISC处理器,尽管它们的实现手段有所不同,但如下的RISC概念的基本要素是普遍赞同的(1)一个有限的简单的指令集。
(2)强调寄存器的使用,或CPU配备大量的通用寄存器(常称为寄存器文件),或以便意见书优化寄存器的使用。
(3)强调对指令流水线的优化。
指令流水线使用时间重叠技术,允许几条指令同时被处理,从而全面改善处理器性能。现在,用于PC/工作站和并行计算机中的处理器,计划全部采用了指令流水线结构。
微处理器设计单位按照预定义的指令集设计微处理器,在流片生产前必须要对所设计的微处理器进行测试,但是现在的测试机制并不能完全覆盖所有情况,所以在流片生产后,设计单位还必须有专人对已生产出的微处理器进行长时间、大范围、高覆盖率的测试。
如果此时发现了某指令执行错误,现在一般的做法有两种(1)厂家向用户发放对该款处理器的勘误表,提醒使用汇编语言的用户不要使用某指令。如下例所示程序1AND T0,T1;将T0与T1作与操作,结果存于T1中OR T3,T2 ;将T3与T2作或操作,结果存于T2中NOT T0;将T0中的数据取反后存入T0中XOR T1,T2;将T1与T2作异或操作,结果存于T2中注T0,T1,T2,T3是临时寄存器。
如测试中发现XOR指令执行时发生错误,那么继续执行这段程序,程序员将得不到正确的或预期的结果。当程序员收到厂家的勘误表后,就需要将他所写程序中的所有使用该指令的地方用一个可以完成异或操作的程序段替换,如程序2所示程序2AND T0,Ti;将T0与T1作与操作,结果存于T1中OR T3,T2 ;将T3与T2作或操作,结果存于T2中NOT T0;将T0中的数据取反后存入T0中PUSH T0 ;保存现场PUSH T3 ;保存现场NOT T2,T3;将T2中的数据取反后存入T3中NOT T1,T0;将T1中的数据取反后存入T0中AND T1,T3;实现T1·T2,结果存入T3中AND T0,T2;实现T1·T2,结果存入T2中OR T3,T2 ;实现T1·T2+T1·T2。结果存入T2中POP T3;恢复现场POP T0;恢复现场可见,这种方式大大增加程序员的工作量和代码量,而且这种方法对程序员的依赖性很大,并不保证质量。
(2)要求编译器的生产者在编译该款处理器的程序时回避该指令,然后要求用户不断升级编译软件和用户平台来适应该款处理器。
这两种方法会给用户使用带来诸多不便。
如果有一种方法对用户是透明的,不需改变程序,让处理器本身来回避该指令,那么将大大减少程序员的工作量,减少人为引入错误的机会。

发明内容
本发明的目的是提供一种指令集处理器中指令异常处理的方法,它不需要升级硬件,不需要用户更改程序,将减少程序员的工作量,减少人为引入错误的机会。
具体的技术方案如下本发明所述的指令异常处理的方法,主要应用于指令集处理器中,其特征在于,方法中所需的硬件结构主要为包括含有识别指令逻辑的程序控制单元、指令译码单元、执行单元、提交控制台和三个专用的16位IO寄存器(以16位处理器为例)的处理器;以及还包括提供给用户更新的导入程序;所述方法的内容为(1)处理器在读入指令后,通过存放在预留的其中一个IO寄存器内的识别指令的编码,对指令进行识别。该编码所指的这条指令我们就称为已标志出的指令。
(2)识别出已标志出的指令以后,就立即进入预先设定好的中断服务程序,并将该指令对应的PC地址存入另外两个预留的IO寄存器。
(3)在中断服务程序中,通过读取另外两个预留的IO寄存器所存储的被标志出的指令所在的PC地址,读出完整的指令,并进一步识别其所使用的操作数信息,然后用其它指令或程序将其替换。
(4)替换结束后,返回原程序。
关于方法中所使用的中断服务程序和新的导入程序,处理器芯片生产厂家会随着指令的勘误表一起提供给用户,用户只需将其替换原来的导入程序,并将该中断服务程序添加到项目文件中,并更新中断向量表即可使用。
本发明方法由于在实现时,要求所运行的处理器预留三个专用的16位IO寄存器(以16位处理器为例),并在程序流单元加入识别指令的逻辑。这样使得生产厂家不需要重新流片来更新硬件,减少了用户参与维护的操作,减少了为避免错误而导入错误的机会。
本发明在实现时,不需要依赖软件环境,也不需要应用程序员干预,只需启动内嵌程序,用户及时更新厂家提供的初始化文件即可。
本发明有利于系统合理地安排数据流程,使之在微处理器的各执行单元间无冲突地顺利执行。由于此方法没有中断已有的数据流和指令流,没有打乱所有器件的并行执行机制,所以微处理器系统仍然在正常的运行,所以对讲异常指令对系统的伤害降到了最底点。


图1是现有处理器的一般工作流程框图。
图2是采用本发明的异常处理机制以后的流程图。
具体实施例方式下面将结合附图进一步阐述本发明。
根据上述所提供的本发明方法中的硬件与软件配置环境,其具备达到处理器可以对出错指令进行白行修复的功能。
为了便于对本发明技术的理解,首先阐述一下未使用本发明的处理器的一般工作流程。
如图1所示,程序控制单元通过指令地址总线将指令地址给指令存储器,通过指令数据总线读入指令。读入指令后,程序控制单元首先对指令进行识别,一般这里将识别出跳转指令等程序控制指令,然后将运算指令交给译码单元进行译码,再由译码单元将译码后的结果分别交给地址产生单元和数据运算单元,地址产生单元通过译码单元所给的信息计算需访问的存储器地址,通过地址总线给数据存储器接口,然后将数据通过数据总线送出,数据运算单元将运算后的结果和状态寄存器的结果放到数据总线上,程序控制单元通过采样数据总线上的数据和状态寄存器的结果来监控运算单元的工作状态。
根据本发明机制,其中所涉及的三个预留的16位IO寄存器的作用如下IO寄存器1存放需要识别的指令编码;IO寄存器2存放被替换指令的PC地址高位;IO寄存器3存放被替换指令的PC地址低位。
如图2所示,所述方法机制中的微处理器在读入指令后,程序控制单元首先对指令进行识别,此时,程序控制单元不但要识别跳转指令等程序控制指令,还要识别出已标志出的指令。我们在IO端口预留了三个寄存器给这种机制使用,其中一个就是用来存放需要识别的指令的编码的,该编码所指的这条指令我们就称为已标志出的指令。程序控制单元通过识别指令编码来识别这条指令,识别出以后,就立即进入预先设定好的中断服务程序,并且将该指令对应的PC地址存入另外两个预留的IO寄存器。在中断服务程序中,通过读取另外两个预留的IO寄存器所存储的被标志出的指令所在的PC地址,读出完整的指令,并进一步识别其所使用的操作数信息,然后用其它指令或程序将其替换。替换结束后,返回原程序。这里所使用的中断服务程序和新的导入程序,处理器芯片生产厂家会随着指令的勘误表一起提供给用户,用户只需将其替换原来的导入程序,并将该中断服务程序添加到项目文件中,并更新中断向量表即可使用。
以上是本发明的实施方式之一,对于本领域内的一般技术人员,不花费创造性的劳动,在上述实施例的基础上可以做多种变化,同样能够实现本发明的目的。但是,这种变化显然应该在本发明的权利要求书的保护范围内。
权利要求
1.一种指令异常处理的方法,主要应用于指令集处理器中,其特征在于,方法中所需的硬件结构主要为包括含有识别指令逻辑的程序控制单元、指令译码单元、执行单元、提交控制台和三个专用的16位IO寄存器的处理器;以及还包括提供给用户更新的导入程序;所述方法的内容为(1)处理器在读入指令后,通过存放在预留的其中一个IO寄存器内的识别指令的编码,对指令进行识别。该编码所指的这条指令我们就称为已标志出的指令。(2)识别出已标志出的指令以后,就立即进入预先设定好的中断服务程序,并将该指令对应的PC地址存入另外两个预留的IO寄存器。(3)在中断服务程序中,通过读取另外两个预留的IO寄存器所存储的被标志出的指令所在的PC地址,读出完整的指令,并进一步识别其所使用的操作数信息,然后用其它指令或程序将其替换。(5)替换结束后,返回原程序。
2.根据权利要求1的指令异常处理的方法,其特征在于,所述方法中所使用的中断服务程序和新的导入程序,处理器芯片生产厂家会随着指令的勘误表一起提供给用户,用户只需将其替换原来的导入程序,并将该中断服务程序添加到项目文件中,并更新中断向量表即可使用。
全文摘要
本发明公开了一种指令异常处理方法,其主要应用于指令集处理器中,其硬件结构主要包括程序控制单元、指令译码单元、寄存器文件、执行单元、提交控制台等各个部分。本发明利用程序控制单元和寄存器文件,将指定指令识别出,然后利用指定的中断服务程序将其替换,回避该指定指令,实现在不改变硬件资源的条件下对异常指令的处理。
文档编号G06F9/30GK101042670SQ20071003986
公开日2007年9月26日 申请日期2007年4月24日 优先权日2007年4月24日
发明者张达文, 李兴仁, 金荣伟, 刘春晖, 林锦麟, 杨一茜 申请人:上海华龙信息技术开发中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1