CN102455971B - 应用级随机指令测试方法、系统及装置 - Google Patents
应用级随机指令测试方法、系统及装置 Download PDFInfo
- Publication number
- CN102455971B CN102455971B CN201010527357.7A CN201010527357A CN102455971B CN 102455971 B CN102455971 B CN 102455971B CN 201010527357 A CN201010527357 A CN 201010527357A CN 102455971 B CN102455971 B CN 102455971B
- Authority
- CN
- China
- Prior art keywords
- test
- instruction
- execution result
- orders
- packing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明实施例公开了不易存在测试盲区或薄弱环节的应用级随机指令测试方法、系统及装置。上述方法包括:从指定的指令集中随机选择多条指令模板;利用多条指令模板进行预定次数的测试,并得到测试结果;其中,每一次测试包括:使用指定内存空间及寄存器已被初始化的硬件平台和模拟平台分别执行根据多条指令模板而随机生成的指令组合,并得到各自的执行结果;测试结果包括比较结果,比较结果由比较硬件平台的执行结果与模拟平台的执行结果是否相同而得出。可以看出,指令模板的选取以及指令组合的生成都是随机的,尤在预设次数足够大时,更容易测到常规程序/测试用例难以测到的盲区或薄弱环节,不易存在测试盲区或薄弱环节。
Description
技术领域
本发明涉及微处理验证技术领域,更具体地说,涉及应用级随机指令测试方法、系统及装置。
背景技术
在微处理器的开发过程中,需要对其功能进行应用级测试,而功能测试的主要方式是基于指令集的测试验证。
在进行应用级测试时,一般的方式为人工编写由多个微处理器指令组合的程序/测试用例,并分别在基于操作系统的硬件平台(硬件平台是待测微处理器的物理参考模型)和基于同样的操作系统的模拟平台(模拟平台是待测微处理器的软件参考模型)加以执行,并比较执行结果。
然而,在实施本发明创造的过程中,发明人发现,在微处理器的指令集中,指令模板的条数多达上百条,每条指令模板对应的操作数空间也是天文数字,由指令模板生成的指令之间的组合更是多种多样,要对微处理器进行应用级的测试,仅靠人工编写程序/测试用例几乎不可能涵盖所有的指令,这样会带来测试的盲区或薄弱环节。
发明内容
有鉴于此,本发明实施例目的在于提供不易存在测试盲区或薄弱环节的应用级随机指令测试方法、系统及装置。
为实现上述目的,本发明实施例提供如下技术方案:
一种应用级随机指令测试方法,包括:
从指定的指令集中随机选择多条指令模板;
利用所述多条指令模板进行预定次数的测试,并得到测试结果;
其中,每一次测试包括:
使用指定内存空间及寄存器已被初始化的硬件平台和模拟平台分别执行根据所述多条指令模板而随机生成的指令组合,并得到各自的执行结果,所述硬件平台和模拟平台基于相同的操作系统;
所述测试结果包括比较结果,所述比较结果由比较所述硬件平台的执行结果与模拟平台的执行结果是否相同而得出。
一种应用级随机指令测试方法,包括:
从指定的指令集中随机选择多条指令模板;
利用所述多条指令模板进行预定次数的测试,并得到测试结果;
其中,每一次测试包括:
初始化指定内存空间及寄存器;
执行根据所述多条指令模板而随机生成的指令组合,并得到执行结果;
所述测试结果包括比较结果,所述比较结果由比较所述执行结果,与外部模拟平台执行同样的指令组合而得到的执行结果是否相同而得出。
一种应用级随机指令测试方法,包括:
从指定的指令集中随机选择多条指令模板;
利用所述多条指令模板进行预定次数的测试,并得到测试结果;
其中,每一次测试包括:
初始化指定内存空间及寄存器;
执行根据所述多条指令模板而随机生成的指令组合,并得到执行结果;
所述测试结果包括比较结果,所述比较结果由比较所述执行结果,与外部硬件平台执行同样的指令组合而得到的执行结果是否相同而得出。
一种应用级随机指令测试系统,包括选择单元、指令生成单元、硬件平台、模拟平台和比较单元,其中,
选择单元用于,从指定的指令集中随机选择多条指令模板;
指令生成单元用于,根据所述多条指令模板随机生成指令组合;硬件平台包括第一测试单元,所述模拟平台包括第二测试单元,其中任一测试单元用于进行预定次数的测试;
每次测试包括:初始化指定内存空间及寄存器,以及执行所述指令生成单元生成的指令组合,并得到执行结果;
所述比较单元用于,比较所述第一测试单元的执行结果与第二测试单元的执行结果是否相同,并得出比较结果。
一种硬件平台,包括:
第一选择单元、第一指令生成单元、第一测试单元和第一比较单元,其中,
第一选择单元用于,从指定的指令集中随机选择多条指令模板;
第一指令生成单元用于,根据所述多条指令模板随机生成指令组合;
第一测试单元,用于进行预定次数的测试;
每次测试包括:初始化指定内存空间及寄存器,以及执行所述第一指令生成单元生成的指令组合,并得到执行结果;
所述第一比较单元用于,比较所述执行结果与模拟平台执行同样的指令组合而得到的执行结果是否相同,并得出比较结果。
一种模拟平台,包括:
第二选择单元、第二指令生成单元、第二测试单元和第二比较单元,其中,
第二选择单元用于,从指定的指令集中随机选择多条指令模板;
第二指令生成单元用于,根据所述多条指令模板随机生成指令组合;
第二测试单元,用于进行预定次数的测试;
每次测试包括:初始化指定内存空间及寄存器,以及执行所述第二指令生成单元生成的指令组合,并得到执行结果;
所述第二比较单元用于,比较所述执行结果与硬件平台执行同样的指令组合而得到的执行结果是否相同,并得出比较结果。
可以看出,在本发明实施例所提供的技术方案中,指令模板的选取以及指令组合的生成都是随机的,尤其是在预设次数足够大时,更容易测到常规程序/测试用例难以测到的盲区或薄弱环节,因此,不易存在测试盲区或薄弱环节。相比于现有由人工编写测试程序/用例,本发明所提供的技术方案提高了测试效率,节省了测试时间,相应地,微处理器的测试可靠性也提高了。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供方法的流程图;
图2为本发明实施例所提供系统的结构示意图;
图3为本发明实施例所提供硬件平台的结构示意图;
图4为本发明实施例所提供模拟平台的结构示意图;
图5为本发明实施例所提供系统的另一结构示意图;
图6为本发明实施例所提供硬件平台的另一结构示意图。
具体实施方式
为了引用和清楚起见,下文中使用的技术名词、简写或缩写总结如下:
Hash:一般译做″散列″,也有直接音译为″哈希″的,就是把任意长度的输入,通过散列算法变换成固定长度的输出,该输出就是散列值;
Hash函数:一种将任意长度的消息压缩到某一固定长度的消息摘要的函数;
GP:Global Pointer,全局指针;
FP:frame pointer,堆指针。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在微处理器的开发过程中,需要对其功能进行应用级测试。程序是指令的有序集合,这些指令的有序集合整体上可实现一定的功能。因此在对上述微处理器的功能进行应用级测试时,一般的方式是使用已有应用课题或人工编写程序/测试用例,然后分别在基于操作系统的硬件平台(硬件平台是待测微处理器的物理参考模型)和基于同样的操作系统的模拟平台(模拟平台是待测微处理器的软件参考模型)加以执行,并比较执行结果。
然而,在实施本发明创造的过程中,发明人发现,微处理器的指令集中指令模板的条数多达几百条,每条指令模板对应的操作数空间也是天文数字,由指令模板生成的指令之间的组合更是多种多样,要对微处理器进行应用级的测试,仅靠已有应用课题或人工编写程序/测试用例几乎不可能涵盖所有的指令。而不同指令其使用率是不同的,有些指令属于常用指令,这类指令的使用频度非常高,而一些特殊指令,对大多数课题或人工编写程序/测试用例而言根本不会涉及到,这样会带来测试的盲区或薄弱环节。
有鉴于此,本发明实施例公开了一种应用级随机指令测试方法、系统及装置,以解决上述问题。
参见图1,上述方法至少包括:
步骤S1、从指定的指令集中随机选择多条指令模板;
在步骤S1中,所选出的指令模板的总条数、种类,以及每一种类下指令模板的条数都可以随机选择,或者也可在用户指定的范围内,随机选择出多条指令模板;
步骤S2、利用所述多条指令模板进行预定次数的测试,并得到测试结果;
上述预定次数可为随机选定的次数,也可以是默认的次数,当然,也可以是用户指定的次数。
无论进行多少次测试,每一次测试包括:
使用指定内存空间及寄存器已被初始化的硬件平台和模拟平台分别执行根据上述多条指令模板而随机生成的指令组合;
而步骤S2中的测试结果可包括比较结果,上述比较结果由比较硬件平台的执行结果与模拟平台的执行结果是否相同而得出。
与之相对应,本发明实施例还公开了一种应用级随机指令测试系统。
图2示出了上述系统的一种结构,包括选择单元1、指令生成单元2、硬件平台3、模拟平台4和比较单元5,其中,
选择单元1用于从指定的指令集6中随机选择多条指令模板;
指令生成单元2用于根据上述多条指令模板随机生成指令组合;
硬件平台3包括第一测试单元,模拟平台4包括第二测试单元,其中任一测试单元可用于进行预定次数的测试。而每次测试包括:初始化指定内存空间及寄存器,以及执行指令生成单元2生成的指令组合,并得到执行结果;
比较单元5则用于比较第一测试单元的执行结果与第二测试单元的执行结果是否相同,并得出比较结果。
上述指令生成单元2可根据需要,在每一次测试前随机生成一组指令组合,以供硬件平台3和模拟平台4执行,也可一次性随机生成多组指令组合,在每次测试时向硬件平台3和模拟平台4提供同一组指令组合。
为便于理解,现对指令作出简单介绍。
通常一条可执行的指令至少包括操作码字段,有时还包括操作数。操作码表示该指令应进行什么性质的操作。不同的指令用操作码这个字段的不同编码来表示,每一种编码代表一种指令。
操作数则规定了指令中进行数字运算的量。例如,在比较指令中,操作码指定计算机做比较操作,操作数则指定进行比较的两个数值。在应用指令中,内容不随指令执行而变化的操作数为源操作数,内容随执行指令而改变的操作数为目的操作数。
当然,也有些指令(比如退出指令)不需要操作数也可以执行。另外,有些指令中,除包括操作码外,还包括功能码和寄存器码。举例来讲,加、减、乘、除都属于计算类,那么功能码与加、减、乘、除相对应,而操作码与计算类相对应。也就是说,操作码定义了一类操作,而功能码给出了此类操作中的具体操作。
操作数一般都存储于寄存器中(存储源操作数的寄存器称为源寄存器,而存储目的操作数的寄存器称为目的寄存器),所以可以用寄存器码来代表操作数。
基于上述介绍,本发明所有实施例述及的指令组成具体生成方式为:根据指令模板、随机要素和随机要素对应的随机数随机生成。其中,随机要素可包括指令排列顺序、寄存器选择、随机数据使用、舍入方式、跳转中的至少一种,而其中的随机数据则至少包括操作数。也就是说,每次测试中所生成的指令组合在排列顺序、寄存器、随机数据使用、舍入方式、跳转上可以是部分或全部随机的。当然,随机要素也可以包括前述的指令模板的总条数、种类,以及每一种类下指令模板的条数,那么随机数也相应的包括指令模板的总条数的对应的具体数值、操作码编码,以及每一种类下指令模板的条数对应的具体数值。
可见,在本发明实施例所提供的技术方案中,指令模板的选取是随机的,同时每次测试中指令组合的生成也是随机的,尤其是在预设次数足够大时,更容易测到常规程序/测试用例难以测到的盲区或薄弱环节,因此,不易存在测试盲区或薄弱环节。另外,相比于现有由人工编写测试程序/用例,本发明所提供的技术方案提高了测试效率,节省了测试时间,相应地,微处理器的测试可靠性也提高了。
在以上实施例中,上述选择单元、指令生成单元和比较单元独立于硬件平台和模拟平台之外。而在实际应用中,硬件平台也可集成上述选择单元、指令生成单元和比较单元中的一个或任意组合的功能。同理,模拟平台也可集成上述选择单元、指令生成单元和比较单元中的一个或任意组合的功能。
图3即示出了上述硬件平台的一种结构,包括:
第一选择单元11、第一指令生成单元21、第一测试单元31和第一比较单元51,其中,
第一选择单元11用于从指定的指令集中随机选择多条指令模板;
第一指令生成单元21用于根据上述多条指令模板随机生成指令组合(指令组合的随机生成可参见上文叙述,在此不作赘述);
第一测试单元31用于进行预定次数的测试。而每次测试包括:初始化指定内存空间及寄存器,以及执行第一指令生成单元31生成的指令组合,并得到执行结果;
第一比较单元51用于比较第一测试单元31得出的执行结果与外部模拟平台执行同样的指令组合而得到的执行结果是否相同,并得出比较结果。
基于上述硬件平台,本发明实施例还公开了另一种应用级随机指令测试方法,上述方法至少包括如下步骤:
从指定的指令集中随机选择多条指令模板;
利用所述多条指令模板进行预定次数的测试,并得到测试结果;
其中,每一次测试包括:
初始化指定内存空间及寄存器;
执行根据所述多条指令模板而随机生成的指令组合,并得到执行结果。
上述测试结果包括比较结果,所述比较结果由比较硬件平台的执行结果与外部模拟平台执行同样的指令组合而得到的执行结果是否相同而得出。
与之相对应,本发明实施例同时还公开了一种模拟平台,参见图4,该模拟平台包括:
第二选择单元12、第二指令生成单元22、第二测试单元32和第二比较单元52,其中,
第二选择单元12用于从指定的指令集中随机选择多条指令模板;
第二指令生成单元22用于根据所述多条指令模板随机生成指令组合;
第二测试单元32用于进行预定次数的测试,而每次测试包括:初始化指定内存空间及寄存器,以及执行所述第二指令生成单元生成的指令组合,并得到执行结果;
第二比较单元52用于比较第二测试单元32得出的执行结果与外部模拟平台执行同样的指令组合而得到的执行结果是否相同,并得出比较结果。
基于上述模拟平台,本发明实施例还提供了另一种应用级随机指令测试方法,该方法至少包括如下步骤:
从指定的指令集中随机选择多条指令模板;
利用所述多条指令模板进行预定次数的测试,并得到测试结果;
其中,每一次测试包括:
初始化指定内存空间及寄存器;
执行根据所述多条指令模板而随机生成的指令组合,并得到执行结果;
上述测试结果可包括比较结果,所述比较结果由比较模拟平台的执行结果,与外部硬件平台执行同样的指令组合而得到的执行结果是否相同而得出。
需要注意的是,当硬件平台具有第一选择单元11和第一指令生成单元21,而模拟平台具有第二选择单元12和第二指令生成单元22时,为保证二者执行结果的可比性,第一选择单元11与第二选择单元12所选择的指令模板,以及第一指令生成单元21与第二指令生成单元22所随机生成的指令组合都必须相同。为保证所选择的指令模板和所生成的指令组合都相同,本发明使用随机函数生成上述随机数。随机数是随机函数根据随机种子通过一定的计算方法计算出来的数值。因此,只要计算方法一定,随机种子一定,那么产生的随机数就不会变。也就是说,只要硬件平台和模拟平台的随机种子是相同的,其每次测试执行的指令组合即是相同的。
另外,还应当指出的是,当硬件平台包括第一比较单元51时,模拟平台可不用包括第二比较单元52,模拟平台只要向第一比较单元51输出其执行结果即可。同理,当模拟平台包括第二比较单元52时,硬件平台则可不包括第一比较单元51。
在本发明上述的所有实施例中,硬件平台和模拟平台的原始执行结果是寄存器值和内存数据。前述的比较结果可通过将硬件平台的寄存器值和内存数据与模拟平台相应的寄存器值和内存数据作比较而得出。由于硬件平台和模拟平台都是基于操作系统,而有些寄存器,例如栈指针寄存器、GP寄存器、FP寄存器等寄存器如被当作源寄存器或目的寄存器,或者一些内存空间被初始化或被访问,会导致操作系统异常。另外一些内存数据为操作系统数据,如将操作系统数据也引入比较则可能会造成比较结果不准确。因此,在对硬件平台和模拟平台进行初始化时,需要排除上述寄存器和内存空间,也即只初始化指定内存空间及寄存器。另外在进行比较时,也需要排除对上述寄存器中存储的数值以及操作系统数据的比较。
在本发明实施例中,上述“比较所述硬件平台的执行结果与模拟平台的执行结果是否相同”可有多种实现方式,比如,可直接比较硬件平台和模拟平台的原始执行结果,也可分别对上述硬件平台执行指令组合得到的原始执行结果和上述模拟平台执行同样的指令组合得到的原始执行结果做摘要,将摘要作为执行结果,比较二者是否相同。在本发明其他实施例,上述摘要可包括上述原始执行结果中的指定数据或重要数据,也可是对原始执行结果中所有数据的压缩。
在如何对原始执行结果做摘要,并根据摘要进行比较,可以有不同的方式,比如:
可对硬件平台多次测试所得的原始执行结果和模拟平台的多次测试所得的原始执行结果分别做总摘要,然后比较总摘要;
也可将两平台每次测试得到的原始执行结果分别作摘要,然后逐个进行比较;
也可对某平台每次测试的原始执行结果都作摘要以得到多个摘要,再对得到的多个摘要再作摘要,也即做摘要的摘要(此处提及的摘要的摘要也可视为执行结果),对另一平台也作类似的处理,得到摘要的摘要。在比较时,先比较摘要的摘要,如果不相同,再分别比较各次的摘要,以获得哪一次测试的执行结果不同;
也可在每次或多次的原始执行结果中加入检验点,根据检验点对执行结果作分段摘要,以方便比较;当然,也可以分批次做摘要,比如进行了12次测试,对每4次测试中的原始执行结果作一摘要。
本领域技术人员在具体实现时,可根据需要选择某种比较方式,或者将多种比较方式结合使用来完成执行结果的比较。
在对上述执行结果作摘要时,可利用Hash函数实现,即利用Hash函数对硬件平台得到的执行结果和模拟平台得到的执行结果作摘要。由于HASH函数消息摘要具有唯一的特点,因此将执行结果做Hash摘要可大大减小文件的大小。
在本发明中,模拟平台和硬件平台所执行的指令组合中的指令是随机生成的,这样,随机生成的指令有可能会访问操作系统数据,造成系统中途退出执行,从而使执行结果不可知。除此之外,浮点异常也可能造成执行结果不可知。另外,跳转指令也可能造成执行结果不可知,比如某一组指令组合中第四条指令为跳转指令,该跳转指令指示跳转至第二条指令,这样就造成了死循环,也无法获得执行结果。
为解决上述问题,参见图5,上述所有实施例中的系统中,还可包括对指令生成单元2生成的指令组合进行合法性调整的调整单元7,以避免执行结果不可知。调整单元7根据预设的调整条件,控制指令所访问的寄存器的范围,过滤掉不合法指令或对其重新赋予符合要求的操作数,或调整跳转指令的位置,使其向后跳转,并保证其不跳转至不可知的指令。比如整个指令组合中共包括100条指令,第4条为跳转指令,则调整单元7需要保证其既不会向前跳转,也不会向后跳转至超过100的某一指令(比如第101条指令)。
当然,硬件平台也可具有与上述调整单元功能相同的第一调整单元,而模拟平台也可具有与上述调整单元功能相同的第二调整单元,在此不作赘述。
相应的,上述任一应用级随机指令测试方法中,在“执行指令组合”之前,还可包括:
对指令组合进行避免执行结果不可知的合法性调整。
当然,除了合法性调整外,还可有其他的解决方式。例如,在本发明其他实施例中,上述任一应用级随机指令测试方法中,“执行所述指令组合”的具体实现方式可为:
在出现导致执行结果不可知的异常时,进行促使获得可知执行结果的异常处理,否则顺次执行所述指令组合中的指令。
上述异常处理可为去掉导致出现异常的指令;或者在输出执行前一指令得出的执行结果后,退出本次执行,并记录异常结果。上述异常结果也可作为测试结果的一部分。此外,为避免死循环的出现,上述异常处理还可包括监控指令组合的执行时间,在超过预设时长后,对指令组合进行扫描,进行合法性检测,当发现不合法指令时,输出执行前一指令得出的执行结果后,并退出本次执行。
与之相对应,上述硬件平台和软件平台各自的测试单元可包括流程控制单元、执行单元和异常处理单元,其中,流程控制单元可用于指示执行单元顺次执行所述指令组合中的指令,并在出现导致执行结果不可知的异常时,指示上述异常处理单元进行促使获得可知执行结果的异常处理。
也就是说,在未出现异常时,执行单元顺次执行指令组合中的指令,但在出现异常时,执行单元暂停工作,由异常处理单元进行异常处理,由于前已对异常处理进行了详细描述,在此不作赘述。异常处理单元根据所发生的异常的种类和情况,决定在处理完异常后,是停止本次测试,还是继续由执行单元继续执行下一条指令。
当然,在事先进行了合法性调整后,在执行指令组合时一般不会出现异常,但是,为了进一步避免出现异常,合法性调整与异常处理也可结合使用。
此外,也还可在指令生成时对其进行控制,使生成的指令即为合法指令,指令的合法生成也可与合法性调整和异常处理任意组合。
另外,上述所有实施例中的初始化、异常处理、执行结果的比较可分别使用不同的配置文件加以实现,也可在同一配置文件中加以配置,本领域技术人员可根据需要进行灵活设计,在此不作赘述。
本发明以下的实施例将对本发明所提出的技术方案作出更详细的说明。
在本实施例中,将以硬件平台为对象进行说明。硬件平台的结构如图6所示,包括:合法性指令生成单元8和控制中心9,其中,合法性指令生成单元8可实现上述第一选择单元11、第一指令生成单元21和第一调整单元71的全部功能,而控制中心9主要用于测试中流程的控制,可实现上述流程控制单元、执行单元和第一比较单元51的全部功能。
上述各单元工作原理如下:
合法性指令生成单元8根据指令生成配置文件所提供的指令产生范围、产生规模、测试特殊要求(如异常,跳转的强度等等)随机生成一个初始的待测随机指令测试用例,上述初始的待测随机指令测试用例经合法性调整后生成最终的待测随机指令测试用例,并形成二进制随机指令文件。
上述随机指令测试用例可包括初始化程序和指令组合。其中的指令组合可包括根据指令集和指令生成配置文件所生成的、需要加强测试的指令,指令组合中的指令条数、指令间的顺序都可以是随机的。
当上述随机指令文件提交给控制中心9时,控制中心9根据随机指令测试用例中的初始化程序初始化寄存器内容、分配并初始化内存空间。由于各指令对操作数的要求不同,因此寄存器和内存数据区都被划分为多个部分并分别用不同类型的数据初始化,然后在随机指令组合的末尾附加特殊指令,该指令在随机指令组合执行结束后负责跳回控制中心9。
随后,控制中心9指向随机指令组合的入口点,将执行权交由随机指令组合。如果执行过程中出现导致运行结果不可知的异常,则控制中心9执行异常处理,否则,执行结束后直接通过上述特殊指令跳回控制中心9(即控制中心9回收了执行权)。控制中心9首先做的是将硬件平台的执行结果与模拟平台输入的执行结果进行比较。然后判断是否还需要开始下一次测试,如果是,合法性指令生成单元8根据已选择出的指令模板重新生成随机指令组合,进行下一次执行。
需要说明的是,对模拟平台也可做如上述硬件平台相类似的设计,并且两平台可执行同样的比较流程。上述比较流程可做如下设计:首先判断在指定目录下是否已存储有外部设备输入的执行结果文件(也可为执行结果摘要文件),如果有,则进行比较,如果没有,则将执行结果文件或执行结果摘要文件输出。在进行测试时,可由模拟平台先进行测试,在执行完指令组合后,如果判断出未存在外部输入的执行结果文件或执行结果摘要文件,则将自身的执行结果文件或执行结果摘要文件输出至硬件平台的指定目录下。硬件平台后进行测试,在执行完指令组合后,硬件平台的比较程序判断出存在外部输入的执行结果文件或执行结果摘要文件,则将自身的执行结果或执行结果摘要与输入的执行结果或执行结果摘要文件进行比较,并输出测试结果。
当然,反过来先由硬件平台进行测试亦可。
此外,上述比较流程还可做如下设计:首先判断在指定目录下是否已存储有外部设备输入的执行结果文件(也可为执行结果摘要文件),如果有,则进行比较,如果没有,则将自身的执行结果存储。在进行测试时,可分别由模拟平台和硬件平台进行测试,在执行完指令组合后,人工将一方的执行结果文件(也可为执行结果摘要文件)拷贝到另一平台的指定目录下。另一平台即可进行比较,并输出测试结果。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (11)
1.一种应用级随机指令测试方法,其特征在于,所述测试方法用于对微处理器的功能进行应用级测试,包括:
从指定的指令集中随机选择多条指令模板;
利用所述多条指令模板进行预定次数的测试,并得到测试结果;
其中,每一次测试包括:
根据所述多条指令模板随机生成指令组合;
使用硬件平台和模拟平台分别执行根据所述多条指令模板而随机生成的所述指令组合,并得到各自的执行结果,所述硬件平台和模拟平台基于相同的操作系统,其中,所述硬件平台和所述模拟平台分别包括指定内存空间及寄存器,所述指定内存空间及寄存器已被初始化;
所述测试结果包括比较结果,所述比较结果由比较所述硬件平台的执行结果与模拟平台的执行结果是否相同而得出。
2.如权利要求1所述的方法,其特征在于,在使用已经初始化的硬件平台和模拟平台分别执行指令组合之前,还包括:
对所述指令组合进行避免执行结果不可知的合法性调整。
3.如权利要求1所述的方法,其特征在于,所述执行所述指令组合的具体实现方式为:
在出现导致执行结果不可知的异常时,进行促使获得可知执行结果的异常处理,否则顺次执行所述指令组合中的指令。
4.如权利要求1至3任一项所述的方法,其特征在于,所述比较硬件平台的执行结果与模拟平台的执行结果是否相同的具体实现方式为:
分别对所述硬件平台执行指令组合得到的执行结果和所述模拟平台执行同样的指令组合得到的执行结果做摘要,比较二者的摘要是否相同。
5.一种应用级随机指令测试方法,其特征在于,所述测试方法用于对微处理器的功能进行应用级测试,包括:
从指定的指令集中随机选择多条指令模板;
利用所述多条指令模板进行预定次数的测试,并得到测试结果;
其中,每一次测试包括:
初始化指定内存空间及寄存器;
根据所述多条指令模板随机生成指令组合;
执行根据所述多条指令模板而随机生成的所述指令组合,并得到执行结果;
所述测试结果包括比较结果,所述比较结果由比较所述执行结果,与外部模拟平台执行同样的指令组合而得到的执行结果是否相同而得出。
6.一种应用级随机指令测试方法,其特征在于,所述测试方法用于对微处理器的功能进行应用级测试,包括:
从指定的指令集中随机选择多条指令模板;
利用所述多条指令模板进行预定次数的测试,并得到测试结果;
其中,每一次测试包括:
初始化指定内存空间及寄存器;
根据所述多条指令模板随机生成指令组合;
执行根据所述多条指令模板而随机生成的所述指令组合,并得到执行结果;
所述测试结果包括比较结果,所述比较结果由比较所述执行结果,与外部硬件平台执行同样的指令组合而得到的执行结果是否相同而得出。
7.一种应用级随机指令测试系统,其特征在于,所述测试系统用于对微处理器的功能进行应用级测试,包括选择单元、指令生成单元、硬件平台、模拟平台和比较单元,其中,
选择单元用于,从指定的指令集中随机选择多条指令模板;
指令生成单元用于,根据所述多条指令模板随机生成指令组合;硬件平台包括第一测试单元,所述模拟平台包括第二测试单元,其中任一测试单元用于进行预定次数的测试;
每次测试包括:初始化指定内存空间及寄存器,以及执行所述指令生成单元生成的指令组合,并得到执行结果;
所述比较单元用于,比较所述第一测试单元的执行结果与第二测试单元的执行结果是否相同,并得出比较结果。
8.如权利要求7所述的系统,其特征在于,还包括对所述指令组合进行避免执行结果不可知的合法性调整的调整单元。
9.如权利要求7所述的系统,其特征在于,所述任一测试单元包括流程控制单元、执行单元和异常处理单元,所述流程控制单元用于指示所述执行单元顺次执行所述指令组合中的指令,并在出现导致执行结果不可知的异常时,指示所述异常处理单元进行促使获得可知执行结果的异常处理。
10.一种硬件平台,其特征在于,所述硬件平台用于对微处理器的功能进行应用级测试,包括:
第一选择单元、第一指令生成单元、第一测试单元和第一比较单元,其中,
第一选择单元用于,从指定的指令集中随机选择多条指令模板;
第一指令生成单元用于,根据所述多条指令模板随机生成指令组合;
第一测试单元,用于进行预定次数的测试;
每次测试包括:初始化指定内存空间及寄存器,以及执行所述第一指令生成单元生成的指令组合,并得到执行结果;
所述第一比较单元用于,比较所述执行结果与模拟平台执行同样的指令组合而得到的执行结果是否相同,并得出比较结果。
11.一种模拟平台,其特征在于,所述模拟平台用于对微处理器的功能进行应用级测试,包括:
第二选择单元、第二指令生成单元、第二测试单元和第二比较单元,其中,
第二选择单元用于,从指定的指令集中随机选择多条指令模板;
第二指令生成单元用于,根据所述多条指令模板随机生成指令组合;
第二测试单元,用于进行预定次数的测试;
每次测试包括:初始化指定内存空间及寄存器,以及执行所述第二指令生成单元生成的指令组合,并得到执行结果;
所述第二比较单元用于,比较所述执行结果与硬件平台执行同样的指令组合而得到的执行结果是否相同,并得出比较结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010527357.7A CN102455971B (zh) | 2010-10-28 | 2010-10-28 | 应用级随机指令测试方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010527357.7A CN102455971B (zh) | 2010-10-28 | 2010-10-28 | 应用级随机指令测试方法、系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102455971A CN102455971A (zh) | 2012-05-16 |
CN102455971B true CN102455971B (zh) | 2014-09-03 |
Family
ID=46039177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010527357.7A Active CN102455971B (zh) | 2010-10-28 | 2010-10-28 | 应用级随机指令测试方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102455971B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902906B (zh) * | 2012-09-26 | 2015-06-10 | 中国航天科技集团公司第九研究院第七七一研究所 | 微处理器指令集验证方法 |
CN104809055B (zh) * | 2014-01-26 | 2020-02-11 | 腾讯科技(深圳)有限公司 | 一种基于云平台的应用程序测试方法和装置 |
CN106155855B (zh) * | 2015-04-07 | 2018-06-19 | 龙芯中科技术有限公司 | 对微处理器进行功能验证的方法及服务器 |
CN105653445B (zh) * | 2015-12-25 | 2018-01-16 | 中电科航空电子有限公司 | 一种满足do‑178c测试结果的实现方法 |
CN111326205B (zh) * | 2018-12-14 | 2022-03-22 | 长鑫存储技术有限公司 | 测试系统、存储器的测试方法及测试装置 |
CN110459098B (zh) * | 2019-08-14 | 2021-09-21 | 毕莘教育咨询(深圳)有限公司 | 用于上机编程题相同判定的方法、标识生成方法和系统 |
CN111045880A (zh) * | 2019-12-17 | 2020-04-21 | 湖南长城银河科技有限公司 | 芯片测试方法、验证系统及存储介质 |
CN111679978B (zh) * | 2020-05-29 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 一种程序测试方法、程序测试装置、电子设备及存储介质 |
CN112256328B (zh) * | 2020-10-19 | 2023-04-07 | 海光信息技术股份有限公司 | 随机指令的生成方法及装置、存储介质以及电子装置 |
CN113297083B (zh) * | 2021-05-27 | 2022-08-19 | 山东云海国创云计算装备产业创新中心有限公司 | 一种跨平台ic测试方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0749068A1 (en) * | 1995-06-06 | 1996-12-18 | Nec Corporation | Simulation method and simulation system |
CN1892616A (zh) * | 2006-05-12 | 2007-01-10 | 中国科学院计算技术研究所 | 在微处理器用户态随机验证中实现核心态程序验证的方法 |
CN101826050A (zh) * | 2010-02-03 | 2010-09-08 | 北京龙芯中科技术服务中心有限公司 | 一种用于制造后处理器芯片验证的随机验证方法及装置 |
-
2010
- 2010-10-28 CN CN201010527357.7A patent/CN102455971B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0749068A1 (en) * | 1995-06-06 | 1996-12-18 | Nec Corporation | Simulation method and simulation system |
CN1892616A (zh) * | 2006-05-12 | 2007-01-10 | 中国科学院计算技术研究所 | 在微处理器用户态随机验证中实现核心态程序验证的方法 |
CN101826050A (zh) * | 2010-02-03 | 2010-09-08 | 北京龙芯中科技术服务中心有限公司 | 一种用于制造后处理器芯片验证的随机验证方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102455971A (zh) | 2012-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102455971B (zh) | 应用级随机指令测试方法、系统及装置 | |
EP3906488B1 (en) | Method and contract rewriting framework system for supporting smart contracts in a blockchain network | |
Luo et al. | Semantics-based obfuscation-resilient binary code similarity comparison with applications to software plagiarism detection | |
CN103914658B (zh) | 终端设备的安全启动方法及终端设备 | |
US10203934B2 (en) | Parallell processing of a single data buffer | |
Molnar et al. | Dynamic Test Generation to Find Integer Bugs in x86 Binary Linux Programs. | |
US9881162B2 (en) | System and method for auto-enrolling option ROMS in a UEFI secure boot database | |
Bryant et al. | Formal hardware verification by symbolic ternary trajectory evaluation | |
US8117429B2 (en) | System and method for a distributed and flexible configuration of a TCG TPM-based local verifier | |
CN110825363B (zh) | 智能合约获取方法、装置、电子设备及存储介质 | |
US20160180095A1 (en) | Measured boot capability | |
US20060026569A1 (en) | Portion-level in-memory module authentication | |
CN109144584A (zh) | 一种可编程逻辑器件及其启动方法、系统和存储介质 | |
CN102414668A (zh) | 二进制软件分析 | |
US20110314459A1 (en) | Compiler with user-defined type inference rules | |
WO2016026328A1 (zh) | 一种信息处理方法、装置及计算机存储介质 | |
CN101276389A (zh) | 单个物理可信平台模块内的多个逻辑可信平台模块的分离 | |
US20110029953A1 (en) | System and Method for Scalable Handling of Debug Information | |
US10411896B2 (en) | Mixed checksum injection for content verification on multiple platforms | |
US11263313B2 (en) | Securing execution of a program | |
Wüst et al. | Force Open: Lightweight black box file repair | |
US20180096152A1 (en) | Systems and methods for software integrity assurance via validation using build-time integrity windows | |
Aanjaneya et al. | Fast Polynomial Evaluation for Correctly Rounded Elementary Functions Using the RLIBM Approach | |
CN106326310B (zh) | 一种手机客户端软件的资源加密更新方法 | |
US8359456B2 (en) | Generating random addresses for verification of distributed computerized devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |