生成检测指令序列的方法和装置制造方法及图纸

技术编号:14559700 阅读:268 留言:0更新日期:2017-02-05 14:48
本发明专利技术提供一种生成检测指令序列的方法和装置,涉及指令随机验证领域,该方法包括:生成至少两个源指令组,将指令划分到对应的源指令组中;根据第一提取信息为每条指令生成对应的至少一个指令簇;从源指令组中选择出目标指令组放入指令组候选队列中;从指令组候选队列中随机选择目标指令组移出指令组候选队列;根据上下文从移出的目标指令组中选取可生成的指令簇,并将可生成的指令簇放入指令簇候选队列;从指令簇候选队列中随机选择一个可生成的指令簇移出指令簇候选队列;根据移出的指令簇中包含的指令槽个数以及指令槽的指令选择范围生成检验指令序列。从而提高了选择检验指令序列的过程,进一步的加快了通过随机指令检测指令集架构的效率。

【技术实现步骤摘要】

本专利技术涉及指令随机验证领域,尤其涉及一种生成检测指令序列的方法和装置
技术介绍
指令集架构(InstructionSetArchitecture,简称ISA)是处理器与软件之间的接口,描述了处理器对程序员提供的各种功能。指令随机验证是一种自动化的处理器验证方法,针对待验证的处理器,随机生成各种指令序列,然后将这些指令序列放入处理器执行,并检查执行结果是否正确。指令随机验证的关键在于指令序列的生成,一般来说,指令序列生成包含两个部分,一是决定序列中使用哪些指令,二是确定每条指令的指令码。虽然在处理器的指令集架构中,每条指令被描述为实现独立的功能,但在处理器的实际运行中,每条指令都会改变处理器的状态,进而影响后续指令的运行,因此每条指令的运行都存在一个上下文,通常包含先行指令、当前寄存器的值、当前内存的值等。但是,在采用现有技术生成指令的过程中,需要选择处理器执行的指令,当产生大量指令时,需要分析全部的指令来选择相应的指令,从而降低了效率。
技术实现思路
本专利技术提供一种用于生成检测指令序列的方法和装置,用于提高选择指令的过程。本专利技术的第一个方面是提供一种生成检测指令序列的方法,包括:生成至少两个源指令组,并将所述指令划分到对应的源指令组中;根据第一提取信息为每条指令生成对应的至少一个指令簇,每个所述指令簇包含至少一个指令槽以及每个指令槽的指令选择范围;其中,所述>第一提取信息为处理器配置文件包含的信息;从所述至少两个源指令组中选择出至少一个目标指令组放入指令组候选队列中,所述目标指令组为所述至少两个源指令组中可生成的源指令组;从指令组候选队列中随机选择一个目标指令组移出所述指令组候选队列;根据上下文从移出的目标指令组中选取可生成的指令簇,并将所述可生成的指令簇放入指令簇候选队列;其中,所述上下文包括寄存器的内容、内存的内容和已生成的历史指令;从所述指令簇候选队列中随机选择一个所述可生成的指令簇移出所述指令簇候选队列;根据移出的指令簇中包含的指令槽个数以及指令槽的指令选择范围生成检验指令序列。本专利技术的第二个方面是提供一种生成检测指令序列的装置,包括:生成模块,用于生成至少两个源指令组,并将所述指令划分到对应的源指令组中;还用于根据移出的指令簇中包含的指令槽个数以及指令槽的指令选择范围生成检验指令序列;提取模块,用于根据第一提取信息为每条指令生成对应的至少一个指令簇,每个所述指令簇包含至少一个指令槽以及每个指令槽的指令选择范围;其中,所述第一提取信息为处理器配置文件包含的信息;处理模块,用于从所述至少两个源指令组中选择出至少一个目标指令组放入指令组候选队列中,所述目标指令组为所述至少两个源指令组中可生成的源指令组;还用于从指令组候选队列中随机选择一个目标指令组移出所述指令组候选队列;还用于根据上下文从移出的目标指令组中选取可生成的指令簇,并将所述可生成的指令簇放入指令簇候选队列;其中,所述上下文包括寄存器的内容、内存的内容和已生成的历史指令;还用于从所述指令簇候选队列中随机选择一个所述可生成的指令簇移出所述指令簇候选队列。本实施例提供的生成检测指令序列的方法和装置,通过生成至少两个源指令组,并将所述指令划分到对应的源指令组中;根据第一提取信息为每条指令生成对应的至少一个指令簇,每个所述指令簇包含至少一个指令槽以及每个指令槽的指令选择范围;从所述至少两个源指令组中选择出至少一个目标指令组放入指令组候选队列中,所述目标指令组为所述至少两个源指令组中可生成的源指令组;从指令组候选队列中随机选择一个目标指令组移出所述指令组候选队列;根据上下文从移出的目标指令组中选取可生成的指令簇,并将所述可生成的指令簇放入指令簇候选队列;其中,所述上下文包括寄存器的内容、内存的内容和已生成的历史指令;从所述指令簇候选队列中随机选择一个所述可生成的指令簇移出所述指令簇候选队列;根据移出的指令簇中包含的指令槽个数以及指令槽的指令选择范围生成检验指令序列。由于通过指令组选择和指令簇选择两个步骤挑选出一条检测指令,可以提高挑选检测指令的效率。假设指令集中共有10000条指令,如果采用现有技术直接挑选一条检测指令,那么需要分析10000条指令,然后挑选一条,共做10000次分析。而指令分组后,假设分100组,每组100条指令簇,那么机器先分析100个组,挑选一个组,再分析该组内100条指令簇,挑选一段检测指令,共做200次分析。明显提高了选择检测指令的过程,进一步的加快了通过随机指令检测指令集架构的效率。附图说明图1为本专利技术实施例提供的一种生成检测指令序列的方法的流程示意图;图2为本专利技术实施例提供的另一种生成检测指令序列的方法的流程示意图;图3为本专利技术实施例提供的另一种生成检测指令序列的方法的流程示意图;图4为本专利技术实施例提供的另一种生成检测指令序列的方法的流程示意图;图5为本实施例提供一种生成检测指令序列的装置的结构示意图。具体实施方式图1为本专利技术实施例提供的一种生成检测指令序列的方法的流程示意图,本方法的执行主体为模拟器或仿真器,参照图1,该方法包括如下步骤:步骤100、生成至少两个源指令组,并将所述指令划分到对应的源指令组中;具体的,根据每个指令的类型将属于同一类型的所述指令划分到与所述类型对应的所述源指令组中。步骤101、根据第一提取信息为每条指令生成对应的至少一个指令簇,每个所述指令簇包含至少一个指令槽以及每个指令槽的指令选择范围;具体的,第一提取信息为处理器配置文件包含的信息。每个指令簇包含至少一个指令槽以及每个指令槽的指令选择范围。需要说明的是,指令簇是针对某条指令制定的一个短指令序列,也就是说,该条指令为指令簇的主指令,占用指令簇的一个指令槽,而指令簇中包含的其它指令槽存放该主指令的辅助指令。一个指令簇包含至少一个指令槽,并且该指令簇隶属于该指令簇的主指令,当某些主指令不需要辅助指令时,其对应的指令簇只包含一个指令槽,该指令槽只存放该主指令。因此,每个指令簇中指令槽的数目、每个指令槽存放何种指令可以不同,但指令簇一定包含一个指令槽用以存放主指令。步骤102、从所述至少两个源指令组中选择出至少一个目标指令组放入指令组候选队列中,所述目标指令组为所述至少两个源指令组中可生成的源指令组。步骤103、从指令本文档来自技高网...
生成检测指令序列的方法和装置

【技术保护点】
一种生成检测指令序列的方法,其特征在于,包括:生成至少两个源指令组,并将所述指令划分到对应的源指令组中;根据第一提取信息为每条指令生成对应的至少一个指令簇,每个所述指令簇包含至少一个指令槽以及每个指令槽的指令选择范围;其中,所述第一提取信息为处理器配置文件包含的信息;从所述至少两个源指令组中选择出至少一个目标指令组放入指令组候选队列中,所述目标指令组为所述至少两个源指令组中可生成的源指令组;从指令组候选队列中随机选择一个目标指令组移出所述指令组候选队列;根据上下文从移出的目标指令组中选取可生成的指令簇,并将所述可生成的指令簇放入指令簇候选队列;其中,所述上下文包括寄存器的内容、内存的内容和已生成的历史指令;从所述指令簇候选队列中随机选择一个所述可生成的指令簇移出所述指令簇候选队列;根据移出的指令簇中包含的指令槽个数以及指令槽的指令选择范围生成检验指令序列。

【技术特征摘要】
1.一种生成检测指令序列的方法,其特征在于,包括:
生成至少两个源指令组,并将所述指令划分到对应的源指令组中;
根据第一提取信息为每条指令生成对应的至少一个指令簇,每个所述
指令簇包含至少一个指令槽以及每个指令槽的指令选择范围;其中,所述
第一提取信息为处理器配置文件包含的信息;
从所述至少两个源指令组中选择出至少一个目标指令组放入指令组
候选队列中,所述目标指令组为所述至少两个源指令组中可生成的源指令
组;
从指令组候选队列中随机选择一个目标指令组移出所述指令组候选
队列;
根据上下文从移出的目标指令组中选取可生成的指令簇,并将所述可
生成的指令簇放入指令簇候选队列;其中,所述上下文包括寄存器的内容、
内存的内容和已生成的历史指令;
从所述指令簇候选队列中随机选择一个所述可生成的指令簇移出所
述指令簇候选队列;
根据移出的指令簇中包含的指令槽个数以及指令槽的指令选择范围
生成检验指令序列。
2.根据权利要求1所述的方法,其特征在于,所述从所述至少两个
源指令组中选择出至少一个目标指令组放入指令组候选队列中,包括:
清空指令组候选队列,根据所述上下文,若所述目标指令组为可生成,
则为所述目标指令组分配的权重为正值,并将所述目标指令组放入所述指
令组候选队列;
所述从指令组候选队列中随机选择一个目标指令组移出所述指令组
候选队列,包括:
判断所述指令组候选队列是否为空,若不为空,则根据所述指令组候
选队列中的每个所述目标指令组的权重,随机选择一个所述目标指令组,
并将所述目标指令组移出所述指令组候选队列;
根据上下文从移出的目标指令组中选取可生成的指令簇,并将所述可
生成的指令簇放入指令簇候选队列,包括:
清空指令簇候选队列,根据所述上下文,若所述移出的目标指令组中
具有所述可生成的指令簇,则为所述可生成的指令簇分配的权重为正值,
并将权重为正值的所述可生成的指令簇放入所述指令簇候选队列;
所述从所述指令簇候选队列中随机选择一个所述可生成的指令簇移
出所述指令簇候选队列,包括:
若所述指令簇候选队列不为空,则根据所述指令簇候选队列中的每个
所述可生成的指令簇的权重,随机选择一个所述可生成的指令簇,并将所
述可生成的指令簇移出所述指令簇候选队列。
3.根据权利要求2所述的方法,其特征在于,在所述根据所述指令
簇候选队列中的每个所述可生成的指令簇的权重,随机选择一个所述可生
成的指令簇,并将所述可生成的指令簇移出所述指令簇候选队列之前,还
包括:
判断所述指令簇候选队列是否为空,若所述指令簇候选队列为空,则
返回执行所述判断所述指令组候选队列是否为空的步骤。
4.根据权利要求2或3所述的方法,其特征在于,所述根据移出的
指令簇中包含的指令槽个数以及指令槽的指令选择范围生成检验指令序
列,包括:
清空指令候选队列,根据所述上下文,逐一判断每个所述指令槽的指
令选择范围中每个所述检验指令序列是否可生成,若可生成,则为所述检
验指令序列分配的权重为正值,并将所述检验指令序列放入指令候选队
列;判断所述指令候选队列是否为空,若不为空,则根据所述指令候选队
列中的每个所述检验指令序列的权重,随机选择生成一个所述检验指令序
列,并将所述检验指令序列移出所述指令候选队列。
5.根据权利要求4所述的方法,其特征在于,在所述随机选择生成
一个所述检验指令序列之后,还包括:
若随机选择生成一个所述检验指令序列失败,则返回执行判断所述指
令候选队列是否为空的步骤。
6.根据权利要求4或5所述的方法,其特征在于,在所述判断所述
指令候选队列是否为空之后,还包括:
若所述指令候选队列为空,则查看上下文堆栈,所述上下文堆栈用于

\t缓存所述上下文的历史,若所述上下文堆栈不为空,则将当前上下文恢复
为所述上下文堆栈底的上下文,并清空所述上下文堆栈,并返回执行所述
判断所述指令簇候选队列是否为空的相应步骤。
7.根据权利要求4-6任意一项所述的...

【专利技术属性】
技术研发人员:陈博文王朋宇
申请(专利权)人:龙芯中科技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1