处理器中断机制的验证方法及验证装置与流程

文档序号:12824626阅读:477来源:国知局
处理器中断机制的验证方法及验证装置与流程

本发明涉及处理器技术领域,特别涉及一种处理器中断机制的验证方法及验证装置。



背景技术:

目前,超标量处理器本身的设计复杂,并且多个流水线的指令执行,而在超标量处理器的验证中,中断会与处理器的各级流水和各种指令相结合,导致故验证的复杂度较高。具体地,由于rtl(register-transferlevel,寄存器传输级)级的超标量处理器每次发射并能提交多条指令,而处理器模型一般用c++,systemverilog等更高抽象级的语言描述为单条指令提交的参考模型,从而没有具体的时序关系或者与rtl的实现不尽相同,在dut(deviceundertest,被测器件)若干条指令提交后记录提交的个数,参考模型加上提交的指令条数,只对最后提交的指令条数的相应的通用寄存器进行对比,但是中断是与时间相关的,只能在开始记录已经执行提交的指令条数,在第n条参考模型与dut同时加中断,才能保证dut与参考模型所执行的指令与行为相同。

相关技术中,首先生成随机指令,其次采样dut中断的相关信号作为参考模型比较指令条数的依据,比如启动操作系统用真实的外设作为中断等。然而,相关技术由于参考无法事先知道需要提交的指令条数,故需要采样dut的中断信号,但是如果参考模型采样的中断状态与实际不符,易出现问题。例如,如果参考模型想在第n条指令添加中断,那么如果第n条指令是多条提交指令的第二条,那么当中断到来时,之前的一条指令并未提交,中断处理之后需要从第n条指令之前的那条指令开始运行,故处理器参考模型不能确定第n条指令是否是单个指令提交或者是多条指令提交的第一条,从而无法确定第n条指令是否适合加中断。

具体而言,相关技术中的验证方法在系统级起操作系统用外设作为中断,但难以定位bug与调试,并且起操作系统时间较长,随机度不够;或者先写好定向指令,随机在中断入口加中断,参考模型采样提交个数与dut的中断等信号,但也面临着随机度不够与采样的dut信号本身存在问题的风险,并且例外处理程序的处理过程需要较多的指令。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的一个目的在于提出一种处理器中断机制的验证方法,该验证方法可以不受中断的影响进行数据对比,从而保证验证结果的准确性,提高验证的可靠性。

本发明的另一个目的在于提出一种处理器中断机制的验证装置。

为达到上述目的,本发明一方面实施例提出了一种处理器中断机制的验证方法,包括以下步骤:随机生成定向指令序列;根据所述指令序列配置dut的打开中断使能,并配置中断处理入口;在中断处理时,添加n条例外返回指令,以退出例外处理程序并且跳转至被中断取消的指令pc(programcounter,程序计数器),以重新执行验证前的程序,其中,n为正整数;在多条指令提交时,对dut的寄存器的状态进行采样;以及对dut加入随机中断,以得到加入所述随机中断对指令流水序列的影响结果。

本发明实施例的处理器中断机制的验证方法,通过指令序列配置dut的打开中断使能,并配置中断处理入口,从而对dut加入随机中断,以得到加入随机中断对指令流水序列的影响结果,通过对dut随机加入中断验证中断对dut的影响,并且可以不受中断的影响进行数据对比,从而保证验证结果的准确性,提高验证的可靠性,简单便捷。

另外,根据本发明上述实施例的处理器中断机制的验证方法还可以具有以下附加的技术特征:

在本发明的一个实施例中,所述配置中断处理入口,进一步包括:设置所述中断处理入口与例外处理程序的入口不同。

进一步地,在本发明的一个实施例中,通过访存指令写所述中断处理入口地址的数据为eret指令的编码。

另外,在本发明的一个实施例中,在对所述dut的寄存器状态进行采样之后,还包括:对pc为中断入口指令提交的寄存器的状态信息进行过滤。

进一步地,在本发明的一个实施例中,其中,n为1。

为达到上述目的,本发明另一方面实施例提出了一种处理器中断机制的验证装置,包括:生成模块,用于随机生成定向指令序列;配置模块,用于根据所述指令序列配置dut的打开中断使能,并配置中断处理入口;添加模块,在中断处理时,用于添加n条例外返回指令,以退出例外处理程序并且跳转至被中断取消的指令pc,以重新执行验证前的程序,其中,n为正整数;采样模块,在多条指令提交时,用于对dut的寄存器的状态进行采样;以及验证模块,用于对dut加入随机中断,以得到加入所述随机中断对指令流水序列的影响结果。

本发明实施例的处理器中断机制的验证装置,通过指令序列配置dut的打开中断使能,并配置中断处理入口,从而对dut加入随机中断,以得到加入随机中断对指令流水序列的影响结果,通过对dut随机加入中断验证中断对dut的影响,并且可以不受中断的影响 进行数据对比,从而保证验证结果的准确性,提高验证的可靠性,简单易实现。

另外,根据本发明上述实施例的处理器中断机制的验证装置还可以具有以下附加的技术特征:

在本发明的一个实施例中,,所述配置模块还用于设置所述中断处理入口与例外处理程序的入口不同。

进一步地,在本发明的一个实施例中,通过访存指令写所述中断处理入口地址的数据为eret指令的编码。

另外,在本发明的一个实施例中,还包括:过滤模块,用于对pc为中断入口指令提交的寄存器的状态信息进行过滤。

进一步地,在本发明的一个实施例中,其中,n为1。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为根据本发明实施例的处理器中断机制的验证方法的流程图;

图2为根据本发明一个实施例的不加中断的随机指令验证运行平台示意图;

图3为根据本发明一个实施例的处理器参考模型函数调用示意图;

图4为根据本发明一个实施例的加入随机中断的随机指令验证运行平台示意图;

图5为根据本发明实施例的处理器中断机制的验证装置的结构示意图;以及

图6为根据本发明一个具体实施例的处理器中断机制的验证装置的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参照附图描述根据本发明实施例提出的处理器中断机制的验证方法及验证装置,首先将参照附图描述根据本发明实施例提出的处理器中断机制的验证方法。

图1是本发明实施例的处理器中断机制的验证方法的流程图

如图1所示,该处理器中断机制的验证方法包括以下步骤:

在步骤s101中,随机生成定向指令序列。

例如,对超标量处理器进行验证时,首先待验证dut(designundertest)超标量处理器可以采用verilog代码编写,已有的参考模型可以采用systemverilog语言编写,通 过systemverilog的uvm随机验证平台连接的sequence先随机出一种定向的指令序列。

在步骤s102中,根据指令序列配置dut的打开中断使能,并配置中断处理入口。

进一步地,通过上述随机出的定向的指令序列配置dut的打开中断使能,并且配置中断处理入口,因此发生中断后不会干扰无中断情况下的指令例外处理。

在本发明的一个实施例中,配置中断处理入口,进一步包括:设置中断处理入口与例外处理程序的入口不同。

也就是说,需要将中断处理的pc(programcounter)入口设置成与例外处理程序不同的入口,以使二者不会相互干扰,从而不会干扰无中断情况下的指令例外处理。

进一步地,在本发明的一个实施例中,通过访存指令写中断处理入口地址的数据为eret指令的编码。

可以理解的是,对将要进入的例外处理程序的地址用访存指令写此中断处理入口地址的数据为退出并返回中断pc(mips为eret指令)的编码。

在步骤s103中,在中断处理时,添加n条例外返回指令,以退出例外处理程序并且跳转至被中断取消的指令pc,以重新执行验证前的程序,其中,n为正整数。优选地,在本发明的一个实施例中,其中,n为1。

可以理解的是,中断处理程序不应该影响原有的寄存器的值,因此中断处理可以只加一条例外返回指令,退出例外处理程序并且跳转到被中断取消的指令pc重新执行之前的程序。即言,为了实现中断处理程序不影响原有的寄存器的值,中断处理只加一条执行-即返回之前中断未提交的例外处理返回指令,退出例外处理程序并且跳转到被中断取消的指令pc重新执行之前的程序。

在步骤s104中,在多条指令提交时,对dut的寄存器的状态进行采样。

另外,在本发明的一个实施例中,在对dut的寄存器状态进行采样之后,还包括:对pc为中断入口指令提交的寄存器的状态信息进行过滤。

可以理解的是,通过过滤掉参考模型没有的中断处理程序的指令,并将其它指令提交时的寄存器状态送到scoreboard与参考模型的状态进行比较。

也就是说,在多条指令提交时,对dut的寄存器状态进行采样,并过滤掉pc为中断入口指令提交的寄存器状态信息,因此对比的指令个数与不加中断的参考模型提交的指令个数相同,从而能够与不加中断的参考模型进行指令的正确性对比。

在步骤s105中,对dut加入随机中断,以得到加入随机中断对指令流水序列的影响结果。

可以理解的是,对于dut加入随机中断,进入中断处理程序的地址入口后,从而能够避免改写原有的指令寄存器状态,即能够立即返回到中断到来之前的处理程序接 着继续执行。

也就是说,最终采样dut寄存器值的模块需要通过判断pc的值改造剔除中断处理程序指令的对比。在本发明的实施例中,通过对dut随机的加入中断,从而可以充分验证加入中断对指令流水序列的影响。

综上所述,本发明实施例的验证方法的目的为克服单条指令级的参考模型中无法预先定位超标量处理器提交的指令个数,从而无法在参考模型中加中断验证的问题。本发明实施例的验证方法能够在原有的随机指令验证环境中加入随机中断,并且能够检查中断是否对原有指令的执行造成了错误的影响,核心思想为:如果中断的到来不影响之后的程序与无中断时执行的结果相同,那么中断可以加在任意时刻与任意次数。

具体地,对dut加中断,而因为中断的加入不会改变处理器之后运行的状态,故参考模型无需加中断正常执行即可,不但能够在保持原有指令随机验证平台的基础上加入随机中断,在任何指令执行时均可发生中断,保证了验证的充分性,并且在原来的验证环境下进行简单修改即可,并且参考模型并没有加入中断,参考模型无需获取dut的状态,保了参考模型的独立性与正确性。

应理解,步骤s101和步骤s105的设置仅为了描述的方便,而不用于限制方法的执行顺序。

下面以一个具体实施例对本发明的处理器中断机制的验证方法进行详细赘述。

图2是根据本发明一个实施例的不加中断的随机指令验证运行平台示意图。

在随机指令的验证平台中,不加中断的验证平台如图2所示的验证平台。参考模型能够在任何指令不加中断的持续运行。

图2的ref_core为参考模型。此模型为单条指令运行模型,执行过程如图3所示。起到了随机指令与数据的作用,之后dut通过总线取得指令与数据后独立运行。

具体地,首先ref_core在0时刻运行参考模型,其次ref_core通过图2所示的指令随机产生器取得指令与访存数据,并在参考模型中计算跳转指令的pc并随机填充相应的指令,以及计算访存指令的地址并计算或随机相应的数据,最后将指令与数据填充将要获取的总线模型的slavememory中,从而在参考模型运行完毕后,dut得到能够运行的随机的指令与数据。

在每条指令执行完毕后的图3所示的call_update_state的任务中并送到scordboard中与参考模型进行比较。打包的寄存器状态-包括通用定点寄存器、浮点寄存器、向量寄存器、pc、协处理器等mips协议中有的寄存器信息-打包并保存到scoreboard的队列中。需要说明的是,在此scoreboard中已经获得了需要对比的数据信息。

其中,dut能够通过总线获取ref_core随机的指令与数据并运行。在图2采样dut状 态的模块dut_status_monitor在指令提交时采样dut的状态寄存器,此采样模块可以通过提交的pc忽略例外处理程序所执行的指令状态,只采样非中断pc所执行的指令的状态。

此时dut可在任意时刻加入中断并进入例外处理程序,如图4所示。

根据上述的描述,本文介绍了一种超标量处理器中断机制的验证平台实现,包含步骤如下:

s1,图4的随机程序调用打开中断的config_sequence并且首先调用,包括填充定向程序,打开中断使能,设置区别于例外的中断处理入口。

s2,用访存指令写此中断处理入口地址的数据为退出并返回中断pc(mips为eret指令)的编码。

s3,改造dut_status_monitor模块,忽略采样pc为中断处理程序的pc的状态。并采样其pc提交的寄存器的状态与参考模型进行对比。

s4,图4在config_sequence运行完毕后,中断的sequence中加入随机中断interruptgenerator驱动dut,其延迟一个或多个指令平均执行提交的时间随即发生中断。

进一步地,下面对随机中断的运行与比较机制进行详细赘述。

在dut先运行的随机环境中首先配置中断使能,配置中断向量模式使中断处理入口,用访存指令写此中断处理入口地址的数据为eret指令的编码。在dut的slave_monitor中过滤地址为中断处理pc的所采样的数据,此时采样的数据不发送到scoreboard进行数据对比。将配置dut的指令打包成一个sequence,配置的sequence如图4的config_sequence所示,并在所有的sequence中第一个执行,则之后所有随机的指令均能够获得相同的配置。

举例而言,假设中断随机发生在第1000ns的时刻,此时在流水线发射的mips指令包括浮点指令add.fmt,定点指令daddiu,分支指令beq,访存lw;如果中断在此时能够起作用使此4条指令不能提交,那么此时dutcp0(thesystemcoprocessor)的epc记录此时未提交的第一条pc,进入例外处理程序入口。例外处理程序只有一条指令eret,它不改变通用寄存器的值,直接将下一条pc指向发生例外的指令epc(exceptionprogramcounter)的值直接返回刚才发生例外的程序重新执行。因此,此时除了epc其它的对比寄存器与未发生例外均为改变,则只要在scordboard屏蔽epc的对比就可以对比引入了中断是否发生错误。

可以理解的是,本发明实施例的验证方法相当于具有一个独立于中断的比较模型,使得dut能够随机加入中断,充分验证中断对dut的影响,从而能够不受中断的影响进行数据对比,保证验证结果的正确性。

根据本发明实施例的处理器中断机制的验证方法,通过指令序列配置dut的打开中断使能,并配置中断处理入口,从而对dut加入随机中断,以得到加入随机中断对指令流水 序列的影响结果,通过对dut随机加入中断验证中断对dut的影响,并且可以不受中断的影响进行数据对比,从而保证验证结果的准确性,提高验证的可靠性,简单便捷。具体地,处理器的参考模型能够在任何指令不加中断的持续运行,而处理器dut中断设置特殊的入口与返回指令,不会改变处理器之后运行的状态,从而不影响行为对比,不但能够继承的随机指令验证环境中加入随机中断,并且能避免采样dut的信号,中断的加入是否对原有指令的执行造成了错误的影响的对比结果可信。

其次参照附图描述根据本发明实施例提出的处理器中断机制的验证装置。

图5是本发明实施例的处理器中断机制的验证装置的结构示意图。

如图5所示,该处理器中断机制的验证装置10包括:生成模块100、配置模块200、添加模块300、采样模块400和验证模块500。

其中,生成模块100用于随机生成定向指令序列。配置模块200用于根据指令序列配置dut的打开中断使能,并配置中断处理入口。在中断处理时,添加模块300用于添加n条例外返回指令,以退出例外处理程序并且跳转至被中断取消的指令pc,以重新执行验证前的程序,其中,n为正整数。在多条指令提交时,采样模块400用于对dut的寄存器的状态进行采样。验证模块500用于对dut加入随机中断,以得到加入随机中断对指令流水序列的影响结果。本发明实施例的验证装置10可以通过对dut随机加入中断验证中断对dut的影响,并且可以不受中断的影响进行数据对比,从而保证验证结果的准确性,提高验证的可靠性。

在本发明的一个实施例中,配置模块200还用于设置中断处理入口与例外处理程序的入口不同。也就是说,需要将中断处理的pc(programcounter)入口设置成与例外处理程序不同的入口,以使二者不会相互干扰,从而不会干扰无中断情况下的指令例外处理。

其中,在本发明的一个实施例中,通过访存指令写中断处理入口地址的数据为eret指令的编码。可以理解的是,对将要进入的例外处理程序的地址用访存指令写此中断处理入口地址的数据为退出并返回中断pc(mips为eret指令)的编码。

另外,在本发明的一个实施例中,如图6所示,本发明实施例的验证装置10还包括:过滤模块600。其中,过滤模块600用于对pc为中断入口指令提交的寄存器的状态信息进行过滤。可以理解的是,通过过滤掉参考模型没有的中断处理程序的指令,并将其它指令提交时的寄存器状态送到scoreboard与参考模型的状态进行比较。

可以理解的是,通过过滤掉参考模型没有的中断处理程序的指令,并将其它指令提交时的寄存器状态送到scoreboard与参考模型的状态进行比较。

可选地,在本发明的一个实施例中,其中,n为1。可以理解的是,中断处理程序不应该影响原有的寄存器的值,因此中断处理可以只加一条例外返回指令,退出例外处理程序 并且跳转到被中断取消的指令pc重新执行之前的程序。即言,为了实现中断处理程序不影响原有的寄存器的值,中断处理只加一条执行-即返回之前中断未提交的例外处理返回指令,退出例外处理程序并且跳转到被中断取消的指令pc重新执行之前的程序。

需要说明的是,前述对处理器中断机制的验证方法实施例的解释说明也适用于该实施例的处理器中断机制的验证装置,此处不再赘述。

根据本发明实施例的处理器中断机制的验证装置,通过指令序列配置dut的打开中断使能,并配置中断处理入口,从而对dut加入随机中断,以得到加入随机中断对指令流水序列的影响结果,通过对dut随机加入中断验证中断对dut的影响,并且可以不受中断的影响进行数据对比,从而保证验证结果的准确性,提高验证的可靠性,简单便捷。具体地,处理器的参考模型能够在任何指令不加中断的持续运行,而处理器dut中断设置特殊的入口与返回指令,不会改变处理器之后运行的状态,从而不影响行为对比,不但能够继承的随机指令验证环境中加入随机中断,并且能避免采样dut的信号,中断的加入是否对原有指令的执行造成了错误的影响的对比结果可信。

在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二 特征。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1