预防中央处理器非正常执行系统及方法

文档序号:6381906阅读:138来源:国知局
专利名称:预防中央处理器非正常执行系统及方法
技术领域
本发明涉及一种存储器存取系统及方法,特别是涉及一种将异常指令码写入程序存储器区块及数据存储器区块,用以预防中央处理器到数据存储器或到错误的程序存储器地址中撷取指令并执行的预防中央处理器非正常执行系统及方法以及计算机可读取储存介质。
背景技术
图1表示已知技术的微计算机系统的架构示意图。就概念上来说,微计算机是指由中央处理单元,存储器单元及输入/输出单元三大部分所组成。其中,中央处理单元可分为两部分,即算术逻辑单元11及控制单元12,中央处理单元通过总线执行程序代码的撷取、译码、算数逻辑运算及读写时序信号的控制。存储器单元13提供存放程序与数据的空间,包含只读存储器与随机存取存储器。而输入单元14与输出单元15提供与外界外围设备或组件沟通的管道。
存储器单元根据储存内容不同而分成程序存储器和数据存储器两种,顾名思义,程序存储器用来储存程序,如操作指令集或驱动程序,数据存储器用来储存供程序指令操作的数据。程序存储器和数据存储器的建置举例来说,可概分为Von Neumann与Harvard两种架构。图2a表示已知技术的微计算机系统的Von Neumann架构示意图,此为传统的单芯片结构,程序及数据存储器212是在同一个存储器区块,存储器与中央处理单元211之间只使用单一总线,不论是要对程序存储器或数据存储器作存取都是使用此总线,因此要完成一个指令通常必须依序使用总线,从指令的撷取、译码、数据读取、执行到数据的写入,大都需要等待好几个周期才能完成。图2b表示已知技术的微计算机系统的Harvard架构示意图,主要是程序存储器222和数据存储器223使用不同的存储器区块,而且也有各自独立的总线,这样的做法大大的改善了指令执行的频宽,两个总线可以同时工作,最大的优点是当一个指令在执行时,可以去抓下一个指令,因此对于运作的效率会有显著的提高。
一个中央处理器的指令周期通常可分为两个部份,分别是指令撷取周期与指令执行周期,指令撷取周期就是中央处理器将存放在存储器内的指令抓到中央处理器内部存放准备执行的时间,而指令执行周期则是中央处理器内部执行一个指令的时间。一个完整指令周期为撷取指令(instruction fetch)、分析指令(instruction decode)、撷取数据(data fetch)、执行(instruction execution)与储存结果(result store)五步骤。
一个指令由一个指令码(op-code)及一个操作数(operand)所组成,每个指令都有一个独一无二的指令码。中央处理器可执行多个不同的指令,这些指令可分为三大类,数学/逻辑运算指令(arithmetic/logic instructions)、数据移动指令(data move instructions)与控制指令(control instructions)。数学/逻辑运算指令用来做计算和逻辑比较,例如ADD、SUBTRACT、AND、OR等,数据移动指令用来将数据从主存储器复制到中央处理器的缓存器(register),或从缓存器送回主存储器,或作其它输出,例如LOAD、STORE等指令,控制指令控制程序的执行程序,预设是由上而下,但使用JUMP、CALL、RETURN等指令可将指令跳到其它的地方。
一个可执行的程序由至少一个指令所组成,在开机成功后,会被加载到程序存储器中,之后,由上而下循序执行指令,或根据控制指令的指示选取一指定地址的指令执行,每一指令的执行都包含撷取、译码、数据读取、执行及数据写入动作。
在一般的情况下,中央处理器只能从程序存储器的地址中撷取指令并据以执行。但是,在某些应用程序撰写不当的情况下,会错误指示中央处理器到数据存储器或到错误的程序存储器地址中撷取指令并执行,结果可能变成无穷循环,产生堆栈溢出(stack overflow),弄乱数据存储器中的数据,甚至是覆写到程序存储器中储存的程序,导致死机,无法开机的情况。
为了防范上述严重的错误,需要有效的预防技术,据以防范中央处理器到数据存储器或到错误的程序存储器地址中撷取指令并执行。

发明内容
有鉴于此,本发明的目的为提供一种预防中央处理器非正常执行系统及方法,预防中央处理器到数据存储器或到错误的程序存储器地址中撷取指令并执行。
依据上述目的,本发明的预防中央处理器非正常执行系统及方法首先设置一第一储存装置与一指令写入单元。此系统系将储存于第一储存装置的异常指令码利用一指令写入单元写入到另一含有中央处理器的微计算机装置中的程序存储器区块与数据存储器区块。此异常指令码为不属于可被中央处理器撷取并执行的指令码(op-code),且当中央处理器撷取到此数字当作指令码时,会产生未定义指令例外(exception of undefined instruction)和软件中断(software interrupt),中断中央处理器的执行。
写入方式分为两种,一为程序先写、二为异常指令码先写。在程序先写方式中,指令写入单元先在程序存储器区块中写入程序,并在不同程序间保留地址空隙,之后,在地址空隙及数据存储器区块中,填满异常指令码。在异常指令码先写方式中,指令写入单元先在程序存储器区块及数据存储器区块中填满异常指令码,之后,在程序存储器区块中写入程序,覆写掉原先写入的异常指令码,且在不同程序间须保留地址空隙。


图1表示已知技术的微计算机系统的架构示意图;图2a表示已知技术的微计算机系统的Von Neumann架构示意图;图2b表示已知技术的微计算机系统的Harvard架构示意图;图3表示本发明实施例的异常指令布置系统的系统示意图;图4a与4b表示本发明实施例的程序先写方法的存储器数据示意图;图5a与5b表示本发明实施例的异常指令码先写方法的存储器数据示意图;图6表示本发明实施例的异常指令布置方法的方法流程图;图7表示本发明实施例的计算机可读取储存介质示意图。
附图符号说明11~算数逻辑单元;12~控制单元;13~存储器单元;14~输入单元;
15~输出单元;211~中央处理器;212~程序及数据存储器;221~中央处理器;222程序存储器;223~数据存储器;31~预防中央处理器非正常执行系统;32~微计算机装置;311~第一储存装置;312~第二储存装置;313~指令写入单元;314~数据比较单元;321~程序存储器区块;322~数据存储器区块;411~Flash驱动程序;412~操作系统程序;413~应用程序;414、415~程序间地址空隙;70~计算机可读取储存介质;720~预防中央处理器非正常执行计算机程序;721~输入异常指令码逻辑;722~写入异常指令码逻辑;723~写入程序代码逻辑;724~备份存储器数据逻辑;725~比较备份数据逻辑。
具体实施例方式
图3表示本发明实施例的异常指令码布置系统的系统示意图。异常指令布置分析系统31包括一第一储存装置311、一第二储存装置312、一指令写入单元313与一数据比较单元314。就概念上来说,此系统是将储存于第一储存装置311的一异常指令码利用一指令写入单元313写入到另一含有中央处理器的微计算机装置中的程序存储器区块321与数据存储器区块322,最终的写入结果会备份储存到第二储存装置312。除此之外,此系统利用一数据比较单元314,比较第二储存装置312所储存的一存储器初始设定数据和储存于程序存储器区块321暨数据存储器区块322的数据,分析出异常覆写的数据区域。
第一储存装置311用以储存一异常指令码,可以实施于数据库系统、档案、存储器暂存变量,甚至是记载于程序代码的变量或常数中,使指令写入单元313或数据比较单元314使用读取指令进行读取。此异常指令码为不属于可被中央处理器撷取并执行的指令码集(op-code set),以16位计算机为例,若指令码范围从0000h~001Fh,共有32个指令码,则异常指令码为0020h~FFFFh范围中的任一数字,其位数会随中央处理器不同而有所不同。当中央处理器在撷取指令时,撷取到此数字当作指令码(op-code)时,会产生未定义指令例外(exception of undefined instruction)和软件中断(softwareinterrupt),中断中央处理器的执行。
第二储存装置312可以实施于关联性数据库、图像数据库或对象数据库中,用来储存经指令写入单元313写入异常指令码后的存储器备份数据,包括程序存储器区块321与数据存储器区块322中的数据。在本实施例中,此备份数据内容是一个存储器数据图像(image),包括原始程序,如开机程序、驱动程序或应用程序,以及多个存在于不同地址的异常指令码。
指令写入单元313从第一储存装置311中读取异常指令码,将程序,如操作系统程序、驱动程序或应用程序,加上此异常指令码写入到一微计算机装置32的程序存储器区块321中,除此之外,还将此异常指令码写入到数据存储器区块322中。此微计算机装置可以是个人计算机、手机、个人数字助理(PDA)、车用计算机或其它含有中央处理器及存储器的装置。写入方式分为两种,第一种为程序先写、第二种为异常指令码先写,以下分别详细说明。
在程序先写方式中,指令写入单元313,先在程序存储器区块321中写入程序,并在不同程序间保留地址空隙,之后,在地址空隙及数据存储器区块322中,填满异常指令码。在异常指令码先写方式中,指令写入单元313,先在程序存储器区块321及数据存储器区块322中填满异常指令码,之后,在程序存储器区块321中写入程序,覆写掉原先写入的异常指令码,且在不同程序间须保留地址空隙。
图4a与4b表示本发明实施例的程序先写方法的存储器数据示意图。如图4a所示,指令写入单元313在程序存储器区块写入Flash驱动程序411、操作系统程序412及应用程序413,且在Flash驱动程序411与操作系统程序412之间,以及操作系统程序412与应用程序413之间,保留地址空隙414、415。接下来,如4b图所示,将异常指令码EEEEh写入地址空隙414、415,以及写入整个或部分数据存储器区块322。
图5a与5b表示本发明实施例的异常指令码先写方法的存储器数据示意图。如图5a所示,指令写入单元313在程序存储器区块321与数据存储器区块322中,填满异常指令码EEEEh。接下来,如图5b所示,写入Flash驱动程序411、操作系统程序412及应用程序413,覆写掉原有只异常指令码EEEEh,且在Flash驱动程序411与操作系统程序412之间,以及操作系统程序412与应用程序413之间,保留地址空隙414、415。
在正常的情况下,中央处理器不会到地址空隙414、415以及数据存储器区块322撷取指令,如果中央处理器到上述地址撷取指令,会撷取到这些预先布建好的异常指令码,产生硬件中断与发出例外报告,中断程序的执行,以避免其继续执行到发生堆栈溢出,弄乱数据存储器中的数据,甚至是覆写到程序存储器中储存的程序,导致死机,无法开机的情况。
数据比较单元314,比较第二储存装置312所储存的存储器初始设定数据和储存于程序存储器区块321暨数据存储器区块322的数据,分析出异常覆写的数据区域。其比较最主要在发现存储器初始设定数据中异常指令码的分布情形是否和现有存储器一致,若不一致则进一步分析哪些地址的异常指令码被不当覆写。
图6表示本发明实施例的异常指令码布置方法的方法流程图。首先,如步骤S61,指令写入单元313从第一储存装置311输入异常指令码,此异常指令码为不属于可被中央处理器撷取并执行的指令码(op-code),以16位计算机为例,若指令码范围从0000h~001Fh,共有32个指令码,则异常指令码为0020h~FFFFh范围中的任一数字,其位数会随中央处理器不同而有所不同。当中央处理器在撷取指令时,撷取到此数字当作指令码(op-code)时,会产生未定义指令例外(exception of undefined instruction)和软件中断(softwareinterrupt),中断中央处理器的执行。
之后,如步骤S62,写入异常指令码于程序存储器区块321与数据存储器区块322中。如步骤S63,写入程序于程序存储器区块321中,且不同程序之间会保留可填入至少一个异常指令码的地址空隙。
如步骤S64,将填写好异常指令码与程序的程序存储器区块321与数据存储器区块322数据,当作存储器初始设定数据,备份纪录到第二储存装置312中。
最后,如步骤S65,比较由第二储存装置312所输入的存储器初始设定数据和储存于程序存储器区块321暨数据存储器区块322的数据,分析出异常覆写的数据区域。
本方法在实施时,不一定要按照步骤S61、S62、S63依序执行,在可达到本发明目的的情况下,所有步骤顺序的置换皆是可行的。
再者,本发明提出一种计算机可读取储存介质,用以储存一计算机程序,上述计算机程序用以实现异常指令码布置方法,此方法会执行如上所述的步骤。
图7表示本发明实施例的计算机可读取储存介质示意图。此计算机可读取储存介质70,用以储存一计算机程序720,用以实现预防中央处理器非正常执行方法。其计算机程序包含三个逻辑,分别为输入异常指令码逻辑721、写入异常指令码逻辑722、写入程序代码逻辑723、备份存储器数据逻辑724与比较备份数据逻辑725。
因此,藉由本发明所提供的预防中央处理器非正常执行系统及方法以及计算机可读取储存介质,可在中央处理器到不正常的地址撷取指令时,撷取到预先布建好的异常指令码,产生硬件中断与发出例外报告,中断程序的执行,以避免其继续执行到发生堆栈溢出,弄乱数据存储器中的数据,甚至是覆写到程序存储器中储存的程序,导致死机,无法开机的情况。
虽然本发明已以较佳实施例披露如上,然其并非用以限定本发明,本领域的技术人员,在不脱离本发明的精神和范围内,可做若干更动与润饰,因此本发明的保护范围视后附的权利要求为准。
权利要求
1.一种预防中央处理器非正常执行系统,包括一第一储存装置,用以储存一异常指令码,该异常指令码为不属于可被一中央处理器撷取并执行的指令码;以及一指令写入单元,耦接于该第一储存装置,用以从该第一储存装置输入该异常指令码,写入该异常指令码于包含该中央处理器的一微计算机装置的一存储器区块,该存储器区块为该微计算机装置中非属程序代码所占用的地址区间。
2.如权利要求1所述的预防中央处理器非正常执行系统,其中该存储器区块为一程序存储器区块或一数据存储器区块。
3.如权利要求2所述的预防中央处理器非正常执行系统,其中该指令写入单元用以写入至少一个程序于该微计算机装置的该程序存储器区块,程序与程序之间保留一存储器地址区域,该存储器地址区域大小大于该异常指令码。
4.如权利要求1所述的预防中央处理器非正常执行系统,其中该微计算机装置为一手持式通讯装置。
5.如权利要求1所述的预防中央处理器非正常执行系统,还包括一第二储存装置,用以储存一初始存储器数据,该初始存储器数据为布建完该异常指令码及该程序的初始设定数据。
6.如权利要求5所述的预防中央处理器非正常执行系统,其中该指令写入单元用以将包含该程序与该异常指令码的该存储器区块写入该初始存储器数据。
7.如权利要求6所述的预防中央处理器非正常执行系统,还包括一数据比较单元,用以比较该初始存储器数据与存在于该微计算机装置的该存储器区块数据,找出该异常指令码被覆写的存储器地址区域。
8.一种预防中央处理器非正常执行方法,其方法被一计算机加载执行,包括下列步骤输入一异常指令码,该异常指令码为不属于可被中央处理器撷取并执行的指令码;以及将该异常指令码写入含有中央处理器的一微计算机装置中的一存储器区块,该存储器区块为非属程序代码所占用的地址区间。
9.如权利要求8所述的预防中央处理器非正常执行方法,其中该存储器区块为一程序存储器区块或一数据存储器区块。
10.如权利要求9所述的预防中央处理器非正常执行方法,其中还包括一步骤,写入至少一个程序于该微计算机装置的该程序存储器区块,程序与程序之间保留一存储器地址区域,该存储器地址区域大小大于该异常指令码。
11.如权利要求10所述的预防中央处理器非正常执行方法,其中还包括一步骤,将包含有该程序与该异常指令码的该存储器区块备份纪录为一初始存储器数据。
12.如权利要求11所述的预防中央处理器非正常执行方法,其中还包括一步骤,比较该初始存储器数据与存在于该微计算机装置的该存储器区块数据,找出该异常指令码被覆写的存储器地址区域。
13.如权利要求8所述的预防中央处理器非正常执行方法,其中该微计算机装置为一手持式通讯装置。
14.一种计算机可读取储存介质,用以储存一计算机程序,该计算机程序被加载到一计算机,用以实现预防中央处理器非正常执行方法,其方法包括下列步骤输入一异常指令码,该异常指令码为不属于可被中央处理器撷取并执行的指令码;以及将该异常指令码写入含有中央处理器的一微计算机装置中的一存储器区块,该存储器区块为非属程序代码所占用的地址区间。
15.如权利要求14所述的预防中央处理器非正常执行方法,其中该存储器区块为一程序存储器区块或一数据存储器区块。
16.如权利要求15所述的预防中央处理器非正常执行方法,其中还包括一步骤,写入至少一个程序于该微计算机装置的该程序存储器区块,程序与程序之间保留一存储器地址区域,该存储器地址区域大小大于该异常指令码。
17.如权利要求16所述的预防中央处理器非正常执行方法,其中还包括一步骤,将包含有该程序与该异常指令码的该存储器区块备份纪录为一初始存储器数据。
18.如权利要求17所述的预防中央处理器非正常执行方法,其中还包括一步骤,比较该初始存储器数据与存在于该微计算机装置的该存储器区块数据,找出该异常指令码被覆写的存储器地址区域。
19.如权利要求14所述的预防中央处理器非正常执行方法,其中该微计算机装置为一手持式通讯装置。
全文摘要
一种预防中央处理器非正常执行系统及方法以及计算机可读取储存介质,其系统包括一第一储存装置与一指令写入单元。第一储存装置用以储存一异常指令码,该指令码不属于可被中央处理器撷取并执行的指令码(op-code)集中。指令写入单元输入异常指令码,并将其写入微计算机装置的数据存储器区块。
文档编号G06F12/14GK1570890SQ0317842
公开日2005年1月26日 申请日期2003年7月16日 优先权日2003年7月16日
发明者杨志清 申请人:明基电通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1