指令处理方法及设备的制作方法

文档序号:6397776阅读:214来源:国知局
专利名称:指令处理方法及设备的制作方法
技术领域
本发明涉及计算机技术领域,特别涉及一种指令处理方法及设备。
背景技术
通常,CPU (Central Processing Unit,中央处理单元)通过指令流水线处理指令,即将CPU中实现不同处理功能的电路单元组成一条指令流水线,并将指令分成多个步骤处理。进一步地,可以将处理指令的一个步骤的时间定义为一个CPU周期,则在一个CPU周期内,多个电路单元可以并行地对多条指令的不同步骤进行处理。比如,CPU中的指令流水线为三级指令流水线,且指令的处理依次包括取指、译码和执行这三个步骤。请参考图1,其示出了三级指令流水线的应用示意图。图1中,在CPU周期I内,CPU中的取指单元对指令I进行取指处理;在CPU周期2内,CPU中的取指单元对指令2进行取指处理、译码单元对指令I进行译码处理;在CPU周期3内,CPU中的取指单元对指令3进行取指处理、译码单元对指令2进行译码处理、执行单元对指令I进行执行处理等,依此类推,直至处理完每一条指令。CPU中的取指单元从缓存器中的缓存行(Cache Line)中读取指令。缓存行是缓存器中的一个访问单元,可以存储至少一条指令,其包括标签(Tag)、控制标识和数据位等。其中,标签用来标识该缓存行的数据在内存中的地址、控制标识用来标识该缓存行是否允许被访问、数据位用来存储指令。具体地,当缓存器中没有CPU当前读取的指令时,缓存器以缓存行为单位读取内存中的指令,并将该指令发送给CPU,以便CPU对该指令进行处理。进一步地,缓存器通常由SRAM(Static Random Access Memory,静态随机存储器)实现。其中,SRAM是RAM (Random Access Memory,随机存储器)的一种。由于RAM在应用过程中会出错,即发生RAM失效事件,则根据RAM的特性,可以将RAM失效事件分为硬失效事件、伪硬失效事件和软失效事件。其中,硬失效事件是指器件内部发生不可恢复性的物理失效,必须更换器件单元来消除故障的事件;伪硬失效事件是指器件单元发生逻辑性死锁,必须通过上下电等操作来消除故障的事件;软失效事件是指高能亚原子粒子穿越RAM中的硅时产生自由电荷,这些自由电荷导致RAM中存储数据的改变的事件。随着器件工艺尺寸不断缩小,RAM的集成度越来越高,软失效事件的发生概率也在不断增加,影响了 RAM的可靠性,尤其对SRAM的可靠性造成了较大的影响。由于指令出错只可能出现在取指阶段,因此,为了避免SRAM失效引起的指令出错,在CPU中的取指单元取指后,会通过硬件单元的检错技术检测当前读取的指令是否出错,若检测到当前读取的指令出错,则向CPU发送中断请求,并修改状态寄存器中与缓存器对应的标志位的数值。其中,中断请求用来通知CPU处理指令出错事件,以消除错误数据对处理过程的影响;状态寄存器用来标识触发中断请求的中断源。现有技术中,CPU接收到中断请求后,清除CPU的流水线和缓存器中的指令,并重新从该指令所属的指令集的第一条指令处进行指令处理。现有的指令处理方法中,CPU接收到中断请求后,重新从该指令所属的指令集的第 一条指令处进行指令处理,使得CPU重复处理之前已经处理过的指令,导致指令恢复的时
间较长,降低了 CPU的处理效率。

发明内容
为了解决CPU接收到中断请求后,重新从该指令所属的指令集的第一条指令处进行指令处理,使得CPU重复处理之前已经处理过的指令,导致指令恢复的时间较长的问题,本发明实施例提供了一种指令处理方法及设备。所述技术方案如下:第一方面,提供了一种指令处理方法,所述方法包括:在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;设置缓存器的控制信息,以便所述缓存器根据所述控制信息对所述流水线中正在取指的第二指令进行恢复,所述第一指令和第二指令存储在所述缓存器中且所述第二指令的取指时刻为所述第一指令的执行时刻;根据所述第一指令的地址从所述第一指令之后的指令处进行指令处理,所述第一指令之后的指令包括恢复后的所述第二指令。在第一方面的第一种可能的实现方式中,所述设置缓存器的控制信息之前,还包括:检测所述中断请求是否是所述缓存器出错而触发的;若检测到是所述缓存器出错而触发的,则确定执行设置缓存器的控制信息的步骤。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述检测所述中断请求是否是所述缓存器出错而触发的,包括:检测状态寄存器中与所述缓存器对应的标志位的数值是否发生变化,所述状态寄存器用来标识触发中断请求的中断源;若检测到所述状态寄存器中与所述缓存器对应的标志位的数值发生变化,则确定所述中断请求是所述缓存器出错而触发的。在第一方面的第三种可能的实现方式中,所述设置缓存器的控制信息,包括:将所述缓存器中所述第二指令所属的缓存行设置为禁止访问状态,以便后续所述流水线取指所述第二指令时,所述缓存器根据所述禁止访问状态对所述缓存行中的指令进行恢复且将所述缓存行恢复为允许访问状态,并将所述第二指令发送给所述流水线,所述缓存行包括至少一条指令。结合第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据所述第一指令的地址从所述第一指令之后的指令处进行指令处理之后,还包括:若再次接收到所述中断请求,则获取本次的错误信息和上次的错误信息,所述上次的错误信息用来记录上次所述缓存器中出错的指令的信息;检测所述本次的错误信息与所述上次的错误信息是否相同;若检测到所述本次的错误信息与所述上次的错误信息相同,则清除所述流水线中的指令和所述缓存器中的指令,并从所述第一指令所属的指令集的第一条指令处进行指令处理。
第二方面,提供了一种指令处理设备,所述设备包括:记录模块,用于在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;设置模块,用于所述记录模块记录当前流水线中正在执行的第一指令的地址之后,设置缓存器的控制信息,以便所述缓存器根据所述控制信息对所述流水线中正在取指的第二指令进行恢复,所述第一指令和第二指令存储在所述缓存器中且所述第二指令的取指时刻为所述第一指令的执行时刻;第一处理模块,用于根据所述记录模块第一指令的地址从所述第一指令之后的指令处进行指令处理,所述第一指令之后的指令包括恢复后的所述第二指令。在第二方面的第一种可能的实现方式中,所述设备,还包括:第一检测模块,用于所述设置模块设置缓存器的控制信息之前,检测所述中断请求是否是所述缓存器出错而触发的;确定模块,用于若所述第一检测模块检测到是所述缓存器出错而触发的,则确定执行设置缓存器的控制信息的步骤。结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第一检测模块,包括:检测单元,用于检测状态寄存器中与所述缓存器对应的标志位的数值是否发生变化,所述状态寄存器用来标识触发中断请求的中断源;确定单元,用于若所述检测单元检测到所述状态寄存器中与所述缓存器对应的标志位的数值发生变化,则确定所述中断请求是所述缓存器出错而触发的。在第二方面的第三种可能的实现方式中,所述设置模块,用于将所述缓存器中所述第二指令所属的缓存行设置为禁止访问状态,以便后续所述流水线取指所述第二指令时,所述缓存器根据所述禁止访问状态对所述缓存行中的指令进行恢复且将所述缓存行恢复为允许访问状态,并将所述第二指令发送给所述流水线,所述缓存行包括至少一条指令。结合第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述设备,还包括:获取模块,用于所述第一处理模块根据所述第一指令的地址从所述第一指令之后的指令处进行指令处理之后,若再次接收到所述中断请求,则获取本次的错误信息和上次的错误信息,所述上次的错误信息用来记录上次所述缓存器中出错的指令的信息;第二检测模块,用于检测所述获取模块获取的本次的错误信息与所述上次的错误信息是否相同;第二处理模块,用于若所述第二检测模块检测到所述本次的错误信息与所述上次的错误信息相同,则清除所述流水线中的指令和所述缓存器中的指令,并从所述第一指令所属的指令集的第一条指令处进行指令处理。本发明实施例提供的技术方案带来的有益效果是:通过在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;设置缓存器的控制信息,以便所述缓存器根据所述控制信息对所述流水线中正在取指的第二指令进行恢复;根据所述第一指令的地址从所述第一指令之后的指令处进行指令处理,所述第一指令之后的指令包括恢复后的所述第二指令,解决了 CPU接收到中断请求后,重新从 该指令所属的指令集的第一条指令处进行指令处理,使得CPU重复处理之前已经处理过的
指令,导致指令恢复的时间较长的问题,达到了提高CPU的处理效率的效果。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是现有技术的二级指令流水线的应用不意图;图2是本发明实施例一提供的指令处理方法的方法流程图;图3是本发明实施例二提供的指令处理方法的方法流程图;图4是本发明实施例三提供的指令处理设备的结构示意图;图5是本发明实施例四提供的指令处理设备的结构示意图;图6是本发明实施例五提供的指令处理设备的结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。实施例一请参考图2,其示出了本发明实施例一提供的指令处理方法的方法流程图。该指令处理方法,包括:步骤202:在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;中断请求是中断源发生异常事件后触发的请求,用于要求CPU暂停处理当前正在处理的指令,转而处理中断源的异常事件。其中,中断源可以产生中断请求并发送给CPU,或者,中断源也可以在发生异常事件后触发检测该异常事件的硬件单元产生中断请求并发送给CPU。比如,中断源是缓存器、异常事件是缓存器中的指令出错事件且中断请求由硬件单元产生并发送给CPU,则当硬件单元的检错算法检测到缓存器的指令出错后,产生中断请求,并向CPU发送该中断请求。其中,第一指令是流水线中当前正在执行的指令。当CPU接收到中断请求后,需要记录第一指令的地址,以便处理完指令出错事件后根据该地址返回到第一指令的处理现场,继续对第一指令之后的指令进行处理。步骤204:设置缓存器的控制信息,以便缓存器根据控制信息对流水线中正在取指的第二指令进行恢复,第一指令和第二指令存储在缓存器中且第二指令的取指时刻为第一指令的执行时刻;其中,硬件单元检测到缓存器发生指令出错事件时向CPU发送中断请求,因此,(PU接收到中断请求时取指的第二指令就是缓存器中出错的指令,则CPU可以设置缓存器的控制信息,以便缓存器根据控制信息对流水线中正在取指的第二指令进行恢复。其中,第二指令是流水线中当前正在取指的指令。步骤206:根据第一指令的地址从第一指令之后的指令处进行指令处理,第一指令之后的指令包括恢复后的第二指令。其中,CPU根据第一指令的地址返回到第一指令的处理现场之后,由于第一指令已经执行完成,因此,CPU可以从第一指令之后的指令处进行指令处理,第一指令之后的指令包括恢复后的第二指令。综上所述,本发明实施例提供的指令处理方法,通过在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;设置缓存器的控制信息,以便所述缓存器根据所述控制信息对所述流水线中正在取指的第二指令进行恢复;根据所述第一指令的地址从所述第一指令之后的指令处进行指令处理,所述第一指令之后的指令包括恢复后的所述第二指令,解决了 CPU接收到中断请求后,重新从该指令所属的指令集的第一条指令处进行指令处理,使得CPU重复处理之前已经处理过的指令,导致指令恢复的时间较长的问题,达到了提高CPU的处理效率的效果。实施例二请参考图3,其示出了本发明实施例二提供的指令处理方法的方法流程图。该指令处理方法,包括:步骤302:在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;中断请求是中断源发生异常事件后触发的请求,用于要求CPU暂停处理当前正在处理的指令,转而处理中断源的异常事件。其中,中断源可以产生中断请求并发送给CPU,或者,中断源也可以在发生异常事件后触发检测该异常事件的硬件单元产生中断请求并发送给CPU。比如,中断源是缓存器、异常事件是缓存器中的指令出错事件且中断请求由硬件单元产生并发送给CPU,则当硬件单元的检错算法检测到缓存器的指令出错后,产生中断请求,并向CPU发送该中断请求。其中,硬件单元的检错技术可以是奇偶校验技术、也可以是ECC (Error Correcting Code,错误检查和纠正)技术,本发明不对检错技术作限定。其中,第一指令是流水线中当前正在执行的指令。当CPU接收到中断请求后,需要记录第一指令的地址,以便处理完指令出错事件后根据该地址返回到第一指令的处理现场,继续对第一指令之后的指令进行处理。步骤304:检测中断请求是否是缓存器出错而触发的;若检测到是缓存器出错而触发的,则执行步骤306 ;其中,CPU接收到中断请求后,需要判断中断请求是否是缓存器出错而触发的;若检测到中断请求是缓存器出错而触发的,则执行步骤306 ;若检测到中断请求不是缓存器出错而触发的,则确定是其他设备出错而触发的,比如,无法访问硬盘而触发中断请求等。进一步地,若检测到中断请求不是缓存器出错而触发的,则需要对计算机系统进行上电复位,以便对系统进行一系列的初始化操作,比如,初始化CPU、初始化寄存器和初始化硬件单元等,以消除错误影响。具体地,检测中断请求是否是缓存器出错而触发的,可以包括:检测状态寄存器中与缓存器对应的标志位的数值是否发生变化,该状态寄存器用来标识触发中断请求的中断源;若检测到状态寄存器中与缓存器对应的标志位的数值发生变化,则确定中断请求是缓存器出错而触发的。其中,状态寄存器用来标识触发中断请求的中断源,可以包括至少一个标志位,且每一个标志位对应一个设备。当某一个设备发生异常事件时,需要向CPU发送中断请求,并修改状态寄存器中与该某一个设备对应的标志位的数值。本实施例中,硬件单元检测到缓存器发生指令出错事件后,向CPU发送中断请求,并修改状态寄存器中与缓存器对应的标志位的数值,以标识是缓存器出错而触发的中断请求。比如,可以预先将状态寄存器中所有标志位的初始值设置为0,则硬件单元检测到缓存器发生指令出错事件后,可以将状态寄存器中与缓存器对应的标志位的数值修改为1,则CPU检测到该标志位的数值为I后,确定缓存器发生指令出错事件,执行步骤306。当然也可以采用其他方式标识状态寄存器的标志位,本发明实施例不作限定。进一步地,CPU检测到与设备对应的标志位的数值发生变化后,对该标志位进行恢复,以便下次该设备发生异常事件后再次对该标志位进行修改。比如,CPU检测到与缓存器对应的标志位的数值为I后,将该标志位恢复为0等。步骤306:设置缓存器的控制信息,以便缓存器根据控制信息对流水线中正在取指的第二指令进行恢复,第一指令和第二指令存储在缓存器中且第二指令的取指时刻为第一指令的执行时刻;其中,硬件单元检测到缓存器发生指令出错事件时向CPU发送中断请求,因此,(PU接收到中断请求时取指的第二指令就是缓存器中出错的指令,则CPU可以设置缓存器的控制信息,以便缓存器根据控制信息对流水线中正在取指的第二指令进行恢复。其中,第二指令是流水线中当前正在取指的指令。通常,缓存器可以包括多级缓存器,比如,一级缓存器和二级缓存器等,其中,后一级缓存器的容量前一级缓存器的容量大且后一级缓存器对数据的存取速度小于前一级缓存器对数据的存取速度。因此,CPU在设置缓存器的控制信息之前,还可以根据第二指令确定第二指令所属的缓存器,并相应地设置第二指令所属的缓存器的控制信息。当然,也可以不用确定第二指令所属的缓存器,直接设置所有级别的缓存器的控制信息,本实施例不作限定。具体地,设置缓存器的控制信息,可以包括:将缓存器中第二指令所属的缓存行设置为禁止访问状态,以便后续流水线取指第二指令时,缓存器根据禁止访问状态对缓存行中的指令进行恢复且将缓存行恢复为允许访问状态,并将第二指令发送给流水线,缓存行包括至少一条指令。其中,禁止访问状态是指该缓存行中的数据处于无效状态。当CPU访问该缓存行时,缓存器根据该缓存行的标签从内存中重新加载该缓存行中的数据且将该缓存行设置为允许访问状态,并将该缓存行中的数据发送给CPU进行处理。具体地,CPU可以对第二指令所属的缓存行中的控制标识进行设置,比如,将控制标识设置为I后禁止访问该缓存行,或者,将控制标识设置为0后禁止访问该缓存行等,当然也可以采用其他方式将该缓存行设置为禁止访问状态,本实施例不作限定。进一步地,当CPU设置第二指令所属的缓存器的控制信息时,可以只设置第二指令所属的缓存行的控制信息,或者,可以设置缓存器中某个区域内的多个缓存行的控制信息,该区域包括第二指令所属的缓存行,或者,CPU还可以设置缓存器所有缓存行的控制信息等,本实施例不作限定。步骤308:根据第一指令的地址从第一指令之后的指令处进行指令处理,第一指令之后的指令包括恢复后的第二指令。其中,CPU根据第一指令的地址返回到第一指令的处理现场之后,由于第一指令已经执行完成,因此,CPU可以从第一指令之后的指令处进行指令处理,在处理第一条指令的过程中产生的数据可以自动替换恢复前流水线中的数据,以完成清除流水线中的指令的操作。其中,第一指令之后的指令包括恢复后的第二指令。进一步地,当CPU取指第二指令时,由于第二指令所属的缓存行处于禁止访问状态,因此,缓存器根据第二指令所属的缓存行的标签从内存中重新加载该缓存行中的数据且将该缓存行设置为允许访问状态,并将该第二指令发送给CPU进行处理,其中,重新加载的数据包括第二指令。步骤310:若再次接收到中断请求,则获取本次的错误信息和上次的错误信息,上次的错误信息用来记录上次缓存器中出错的指令的信息;若CPU再次接收到中断请求,则再次记录当前流水线中正在执行的指令的地址,并检测该中断请求是否是缓存器出错而触发的。若检测到该中断请求不是缓存器出错而触发的,则对计算机系统进行上电复位,以便对计算机系统进行一系列的初始化操作,以消除错误影响;若检测到该中断请求是缓存器出错而触发的,则继续检测当前缓存器中出错的指令是否是上次出错的指令。具体地,可以获取本次的错误信息和上次的错误信息,其中,上次的错误信息用来记录上次缓存器中出错的指令的信息,本实施例不对错误信息作限定。步骤312:检测本次的错误信息与上次的错误信息是否相同;若检测到本次的错误信息与上次的错误信息相同,则执行步骤314 ;CPU检测本次的错误信息与上次的错误信息是否相同,若检测到本次的错误信息与上次的错误信息相同,则确定缓存器发生硬失效事件或伪硬失效事件,执行步骤314 ;若检测到本次的错误信息与上次的错误信息不同,则确定当前缓存器中出错的指令不是上次出错的指令,缓存器再次发生软失效事件,则再次执行步骤306。步骤314:清除流水线中的指令和缓存器中的指令,并从第一指令所属的指令集的第一条指令处进行指令处理。具体地,初始化可以将流水线中的指令和缓存器中的指令清零,则初始化之后,可以将CPU的处理地址设置为第一指令所属的指令集的第一条指令的地址,以便CPU可以从该第一条指令处进行指令处理。综上所述,本发明实施例提供的指令处理方法,通过在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;设置缓存器的控制信息,以便所述缓存器根据所述控制信息对所述流水线中正在取指的第二指令进行恢复;根据所述第一指令的地址从所述第一指令之后的指令处进行指令处理,所述第一指令之后的指令包括恢复后的所述第二指令,解决了 CPU接收到中断请求后,重新从该指令所属的指令集的第一条指令处进行指令处理,使得CPU重复处理之前已经处理过的指令,导致指令恢复的时间较长的问题,达到了提高CPU的处理效率的效果。另外,通过检测状态寄存器中与所述缓存器对应的标志位的数值是否发生变化;若检测到所述状态寄存器中与所述缓存器对应的标志位的数值发生变化,则确定所述中断请求是所述缓存器出错而触发的,解决了 CPU接收到中断请求后,无法判断中断请求是否是缓存器出错而触发,进而重新从该指令所属的指令集的第一条指令处进行指令处理,导致指令恢复的时间较长的问题,达到了提高CPU的处理效率的效果。实施例三请参考图4,其示出了本发明实施例三提供的指令处理设备的结构框架图。该指令处理设备,包括:记录模块410,用于在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;设置模块420,用于记录模块410记录当前流水线中正在执行的第一指令的地址之后,设置缓存器的控制信息,以便缓存器根据控制信息对流水线中正在取指的第二指令进行恢复,第一指令和第二指令存储在缓存器中且第二指令的取指时刻为第一指令的执行时刻;第一处理模块430,用于根据记录模块410第一指令的地址从第一指令之后的指令处进行指令处理,第一指令之后的指令包括恢复后的第二指令。综上所述,本发明实施例提供的上述设备,通过在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;设置缓存器的控制信息,以便所述缓存器根据所述控制信息对所述流水线中正在取指的第二指令进行恢复;根据所述第一指令的地址从所述第一指令之后的指令处进行指令处理,所述第一指令之后的指令包括恢复后的所述第二指令,解决了 CPU接收到中断请求后,重新从该指令所属的指令集的第一条指令处进行指令处理,使得CPU重复处理之前已经处理过的指令,导致指令恢复的时间较长的问题,达到了提高CPU的处理效率的效果。实施例四请参考图5,其示出了本发明实施例四提供的指令处理设备的结构框架图。该指令处理设备,包括:记录模块410、设置模块420和第一处理模块430。记录模块410,用于在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;设置模块420,用于记录模块410记录当前流水线中正在执行的第一指令的地址之后,设置缓存器的控制信息,以便缓存器根据控制信息对流水线中正在取指的第二指令进行恢复,第一指令和第二指令存储在缓存器中且第二指令的取指时刻为第一指令的执行时刻;第一处理模块430,用于根据记录模块410第一指令的地址从第一指令之后的指令处进行指令处理,第一指令之后的指令包括恢复后的第二指令。进一步地,该设备,还可以包括:第一检测模块440,用于设置模块420设置缓存器的控制信息之前,检测中断请求是否是缓存器出错而触发的;确定模块450,用于若第一检测模块440检测到是缓存器出错而触发的,则确定执行设置缓存器的控制信息的步骤。进一步地,第一检测模块440,可以包括:检测单元441,用于检测状态寄存器中与缓存器对应的标志位的数值是否发生变化,状态寄存器用来标识触发中断请求的中断源;确定单元442,用于若检测单元441检测到状态寄存器中与缓存器对应的标志位的数值发生变化,则确定中断请求是缓存器出错而触发的。进一步地,设置模块420,用于将缓存器中第二指令所属的缓存行设置为禁止访问状态,以便后续流水线取指第二指令时,缓存器根据禁止访问状态对缓存行中的指令进行恢复且将缓存行恢复为允许访问状态,并将第二指令发送给流水线,缓存行包括至少一条指令。进一步地,该设备,还可以包括:获取模块460,用于第一处理模块430根据第一指令的地址从第一指令之后的指令处进行指令处理之后,若再次接收到中断请求,则获取本次的错误信息和上次的错误信息,上次的错误信息用来记录上次缓存器中出错的指令的信息;第二检测模块470,用于检测获取模块460获取的本次的错误信息与上次的错误信息是否相同;第二处理模块480,用于若第二检测模块470检测到本次的错误信息与上次的错误信息相同,则清除流水线中的指令和缓存器中的指令,并从第一指令所属的指令集的第一条指令处进行指令处理。综上所述,本发明实施例提供的上述设备,通过在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;设置缓存器的控制信息,以便所述缓存器根据所述控制信息对所述流水线中正在取指的第二指令进行恢复;根据所述第一指令的地址从所述第一指令之后的指令处进行指令处理,所述第一指令之后的指令包括恢复后的所述第二指令,解决了 CPU接收到中断请求后,重新从该指令所属的指令集的第一条指令处进行指令处理,使得CPU重复处理之前已经处理过的指令,导致指令恢复的时间较长的问题,达到了提高CPU的处理效率的效果。另外,通过检测状态寄存器中与所述缓存器对应的标志位的数值是否发生变化;若检测到所述状态寄存器中与所述缓存器对应的标志位的数值发生变化,则确定所述中断请求是所述缓存器出错而触发的,解决了 CPU接收到中断请求后,无法判断中断请求是否是缓存器出错而触发,进而重新从该指令所属的指令集的第一条指令处进行指令处理,导致指令恢复的时间较长的问题,达到了提高CPU的处理效率的效果。实施例五请参考图6,其示出了本发明实施例五提供的指令处理设备的结构框架图。该指令处理设备,包括:接收机610,用于接收中断请求;处理器620,用于在接收机610接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;设置缓存器的控制信息,以便缓存器根据控制信息对流水线中正在取指的第二指令进行恢复,第一指令和第二指令存储在缓存器中且第二指令的取指时刻为第一指令的执行时刻;根据第一指令的地址从第一指令之后的指令处进行指令处理,第一指令之后的指令包括恢复后的第二指令。进一步地,处理器620,还用于设置缓存器的控制信息之前,检测中断请求是否是缓存器出错而触发的;若检测到是缓存器出错而触发的,则确定执行设置缓存器的控制信息的步骤。进一步地,处理器620,具体用于检测状态寄存器中与缓存器对应的标志位的数值是否发生变化,状态寄存器用来标识触发中断请求的中断源;若检测到状态寄存器中与缓存器对应的标志位的数值发生变化,则确定中断请求是缓存器出错而触发的。进一步地,处理器620,具体用于将缓存器中第二指令所属的缓存行设置为禁止访问状态,以便后续流水线取指第二指令时,缓存器根据禁止访问状态对缓存行中的指令进行恢复且将缓存行恢复为允许访问状态,并将第二指令发送给流水线,缓存行包括至少一条指令。进一步地,处理器620,还用于根据第一指令的地址从第一指令之后的指令处进行指令处理之后,若再次接收到中断请求,则获取本次的错误信息和上次的错误信息,上次的错误信息用来记录上次缓存器中出错的指令的信息;检测本次的错误信息与上次的错误信息是否相同;若检测到本次的错误信息与上次的错误信息相同,则清除流水线中的指令和缓存器中的指令,并从第一指令所属的指令集的第一条指令处进行指令处理。综上所述,本发明实施例提供的上述设备,通过在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;设置缓存器的控制信息,以便所述缓存器根据所述控制信息对所述流水线中正在取指的第二指令进行恢复;根据所述第一指令的地址从所述第一指令之后的指令处进行指令处理,所述第一指令之后的指令包括恢复后的所述第二指令,解决了 CPU接收到中断请求后,重新从该指令所属的指令集的第一条指令处进行指令处理,使得CPU重复处理之前已经处理过的指令,导致指令恢复的时间较长的问题,达到了提高CPU的处理效率的效果。另外,通过检测状态寄存器中与所述缓存器对应的标志位的数值是否发生变化;若检测到所述状态寄存器中与所述缓存器对应的标志位的数值发生变化,则确定所述中断请求是所述缓存器出错而触发的,解决了 CPU接收到中断请求后,无法判断中断请求是否是缓存器出错而触发,进而重新从该指令所属的指令集的第一条指令处进行指令处理,导致指令恢复的时间较长的问题,达到了提高CPU的处理效率的效果。需要说明的是:上述实施例提供的指令处理设备在处理指令时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将指令处理设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的指令处理设备与指令处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种指令处理方法,其特征在于,所述方法包括: 在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址; 设置缓存器的控制信息,以便所述缓存器根据所述控制信息对所述流水线中正在取指的第二指令进行恢复,所述第一指令和第二指令存储在所述缓存器中且所述第二指令的取指时刻为所述第一指令的执行时刻; 根据所述第一指令的地址从所述第一指令之后的指令处进行指令处理,所述第一指令之后的指令包括恢复后的所述第二指令。
2.根据权利要求1所述的指令处理方法,其特征在于,所述设置缓存器的控制信息之前,还包括: 检测所述中断请求是否是所述缓存器出错而触发的; 若检测到是所述缓存器出错而触发的,则确定执行设置缓存器的控制信息的步骤。
3.根据权利要求2所述的指令处理方法,其特征在于,所述检测所述中断请求是否是所述缓存器出错而触发的,包括: 检测状态寄存器中与所述缓存器对应的标志位的数值是否发生变化,所述状态寄存器用来标识触发中断请求的中断源; 若检测到所述状态寄存器中与所述缓存器对应的标志位的数值发生变化,则确定所述中断请求是所述缓存器出错而触发的。
4.根据权利要求1所述的指令处理方法,其特征在于,所述设置缓存器的控制信息,包括: 将所述缓存器中所述第二指令所属的缓存行设置为禁止访问状态,以便后续所述流水线取指所述第二指令时,所述缓存器根据所述禁止访问状态对所述缓存行中的指令进行恢复且将所述缓存行恢复为允许访问状态,并将所述第二指令发送给所述流水线,所述缓存行包括至少一条指令。
5.根据权利要求2所述的指令处理方法,其特征在于,所述根据所述第一指令的地址从所述第一指令之后的指令处进行指令处理之后,还包括: 若再次接收到所述中断请求,则获取本次的错误信息和上次的错误信息,所述上次的错误信息用来记录上次所述缓存器中出错的指令的信息; 检测所述本次的错误信息与所述上次的错误信息是否相同; 若检测到所述本次的错误信息与所述上次的错误信息相同,则清除所述流水线中的指令和所述缓存器中的指令,并从所述第一指令所属的指令集的第一条指令处进行指令处理。
6.一种指令处理设备,其特征在于,所述设备包括: 记录模块,用于在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址; 设置模块,用于所述记录模块记录当前流水线中正在执行的第一指令的地址之后,设置缓存器的控制信息,以便所述缓存器根据所述控制信息对所述流水线中正在取指的第二指令进行恢复,所述第一指令和第二指令存储在所述缓存器中且所述第二指令的取指时刻为所述第一指令的执行时刻; 第一处理模块,用于根据所述记录模块第一指令的地址从所述第一指令之后的指令处进行指令处理,所述第一指令之后的指令包括恢复后的所述第二指令。
7.根据权利要求6所述的指令处理设备,其特征在于,所述设备,还包括: 第一检测模块,用于所述设置模块设置缓存器的控制信息之前,检测所述中断请求是否是所述缓存器出错而触发的; 确定模块,用于若所述第一检测模块检测到是所述缓存器出错而触发的,则确定执行设置缓存器的控制信息的步骤。
8.根据权利要求7所述的指令处理设备,其特征在于,所述第一检测模块,包括: 检测单元,用于检测状态寄存器中与所述缓存器对应的标志位的数值是否发生变化,所述状态寄存器用来标识触发中断请求的中断源; 确定单元,用于若所述检测单元检测到所述状态寄存器中与所述缓存器对应的标志位的数值发生变化,则确定所述中断请求是所述缓存器出错而触发的。
9.根据权利要求6所述的指令处理设备,其特征在于,所述设置模块,用于将所述缓存器中所述第二指令所属的缓存行设置为禁止访问状态,以便后续所述流水线取指所述第二指令时,所述缓存器根据所述禁止访问状态对所述缓存行中的指令进行恢复且将所述缓存行恢复为允许访问状态,并将所述第二指令发送给所述流水线,所述缓存行包括至少一条指令。
10.根据权利要求1所述的指令处理设备,其特征在于,所述设备,还包括: 获取模块,用于所述第一处理模块根据所述第一指令的地址从所述第一指令之后的指令处进行指令处理之后,若再次接收到所述中断请求,则获取本次的错误信息和上次的错误信息,所述上次的错误信息用来记录上次所述缓存器中出错的指令的信息; 第二检测模块,用于检测所述获取模块获取的本次的错误信息与所述上次的错误信息是否相同; 第二处理模块,用于若所述第二检测模块检测到所述本次的错误信息与所述上次的错误信息相同,则清除所述流水线中的指令和所述缓存器中的指令,并从所述第一指令所属的指令集的第一条指令处进行指令处理。
全文摘要
本发明公开了一种指令处理方法及设备,属于计算机技术领域。所述方法包括在接收到中断请求后,记录当前流水线中正在执行的第一指令的地址;设置缓存器的控制信息,以便缓存器根据控制信息对流水线中正在取指的第二指令进行恢复,第一指令和第二指令存储在缓存器中且第二指令的取指时刻为第一指令的执行时刻;根据第一指令的地址从第一指令之后的指令处进行指令处理,第一指令之后的指令包括恢复后的第二指令。本发明解决了CPU接收到中断请求后,重新从该指令所属的指令集的第一条指令处进行指令处理,使得CPU重复处理之前已经处理过的指令,导致指令恢复的时间较长的问题,达到了提高CPU的处理效率的效果。
文档编号G06F9/38GK103116484SQ201310011219
公开日2013年5月22日 申请日期2013年1月11日 优先权日2012年12月31日
发明者惠卫锋, 朱小刚 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1