CN110688304B - 处理器指令集的完备性检测方法、装置与电子设备 - Google Patents
处理器指令集的完备性检测方法、装置与电子设备 Download PDFInfo
- Publication number
- CN110688304B CN110688304B CN201910813443.5A CN201910813443A CN110688304B CN 110688304 B CN110688304 B CN 110688304B CN 201910813443 A CN201910813443 A CN 201910813443A CN 110688304 B CN110688304 B CN 110688304B
- Authority
- CN
- China
- Prior art keywords
- instruction
- instructions
- total number
- codes
- calculating
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种处理器指令集的完备性检测方法、装置与电子设备,其中该方法包括:获取处理器指令集中所有的指令编码,并基于此分别计算所述处理器指令集的预期指令总条数和理论实际指令总条数;若所述理论实际指令总条数与所述预期指令总条数不相等,则对所有指令编码进行重叠性聚类处理,并通过计算每个类中的重叠指令条数,计算被重复计算的指令总条数;基于所述理论实际指令总条数和所述被重复计算的指令总条数,计算真实实际指令总条数,并判断所述真实实际指令总条数与所述预期指令总条数是否相等,若是,则判定所述处理器指令集是完备的,否则,判定不完备。本发明实施例能够有效消除计算误差,从而有效提高检测结果的准确性。
Description
技术领域
本发明涉及处理器技术领域,更具体地,涉及一种处理器指令集的完备性检测方法、装置与电子设备。
背景技术
在处理器指令集的测试过程中,对处理器指令集的完备性进行检测是至关重要的一环,因为如果无法保证待测指令集是完备的,就无法保证指令集测试的覆盖率,而那些测试盲点很可能存在设计缺陷。处理器指令集的完备性描述了该指令集是否包含了所有的指令可能性。以32位定长指令集为例,如果该指令集包含了所有的232条指令,那么称该指令集是完备的,如果该指令集包含了少于232条指令,就称该指令集是不完备的。
处理器指令集一般用指令编码进行描述,每条指令编码可以表示多条指令,如32位长的处理器指令集可以用指令编码表示为“111111111111100100000000101xxxxx”,其中“x”符号表示不确定的位,即该位可以是0也可以是1,该指令编码中共有5位不确定,因此该指令编码可以表示25=32条指令。
对于如何对处理器指令集的完备性进行检测,一种直观的方法是根据处理器指令集中所有的指令编码来计算指令总条数,如果计算得到的指令总条数等于预期的指令总条数(如对于32位定长指令集来说,预期的指令总条数等于232),则表明该指令集是完备的,否则表明该指令集是不完备的。但是,如果某条指令被多条指令编码所表示,那么该条指令就会被重复计算,如ARM处理器指令集就存在很多被多条指令编码所表示的指令,这将导致计算得到的指令总条数存在误差,影响最终检测结果的准确性。
发明内容
为了克服上述问题或者至少部分地解决上述问题,本发明实施例提供一种处理器指令集的完备性检测方法、装置与电子设备,用以有效消除计算误差,从而有效提高检测结果的准确性。
第一方面,本发明实施例提供一种处理器指令集的完备性检测方法,包括:
获取处理器指令集中所有的已定义指令编码和未定义指令编码,并基于所述已定义指令编码和所述未定义指令编码,分别计算所述处理器指令集的预期指令总条数和理论实际指令总条数;
若所述理论实际指令总条数与所述预期指令总条数不相等,则对所有所述已定义指令编码和所述未定义指令编码进行重叠性聚类处理,并通过计算每个类中的重叠指令条数,计算被重复计算的指令总条数;
基于所述理论实际指令总条数和所述被重复计算的指令总条数,计算真实实际指令总条数,并判断所述真实实际指令总条数与所述预期指令总条数是否相等,若是,则判定所述处理器指令集是完备的,否则,判定所述处理器指令集不完备。
第二方面,本发明实施例提供一种处理器指令集的完备性检测装置,包括:
第一计算模块,用于获取处理器指令集中所有的已定义指令编码和未定义指令编码,并基于所述已定义指令编码和所述未定义指令编码,分别计算所述处理器指令集的预期指令总条数和理论实际指令总条数;
第二计算模块,用于若所述理论实际指令总条数与所述预期指令总条数不相等,则对所有所述已定义指令编码和所述未定义指令编码进行重叠性聚类处理,并通过计算每个类中的重叠指令条数,计算被重复计算的指令总条数;
检测输出模块,用于基于所述理论实际指令总条数和所述被重复计算的指令总条数,计算真实实际指令总条数,并判断所述真实实际指令总条数与所述预期指令总条数是否相等,若是,则判定所述处理器指令集是完备的,否则,判定所述处理器指令集不完备。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上第一方面所述的处理器指令集的完备性检测方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机指令,所述计算机指令被计算机执行时,实现如上第一方面所述的处理器指令集的完备性检测方法的步骤。
本发明实施例提供的处理器指令集的完备性检测方法、装置与电子设备,通过对指令集中的所有指令进行聚类处理,并对各类中的重叠指令进行检测和去除,得到指令集的真实实际指令总条数,并进一步基于此对处理器指令集的完备性进行检测,能够有效消除计算误差,从而有效提高检测结果的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的处理器指令集的完备性检测方法的流程示意图;
图2为根据本发明实施例提供的处理器指令集的完备性检测方法中计算理论实际指令总条数的流程示意图;
图3为根据本发明实施例提供的处理器指令集的完备性检测方法中进行重叠性聚类处理的流程示意图;
图4为本发明另一实施例提供的处理器指令集的完备性检测方法的流程示意图;
图5为本发明实施例提供的处理器指令集的完备性检测装置的结构示意图;
图6为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明实施例的一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
本发明实施例针对现有技术在处理某条指令被多条指令编码所表示时该条指令会被重复计算而导致检测结果不准确的问题,通过对指令集中的所有指令进行聚类处理,并对各类中的重叠指令进行检测和去除,得到指令集的真实实际指令总条数,并进一步基于此对处理器指令集的完备性进行检测,能够有效消除计算误差,从而有效提高检测结果的准确性。以下将具体通过多个实施例对本发明实施例进行展开说明和介绍。
图1为本发明一实施例提供的处理器指令集的完备性检测方法的流程示意图,如图1所示,该方法包括:
S101,获取处理器指令集中所有的已定义指令编码和未定义指令编码,并基于已定义指令编码和未定义指令编码,分别计算处理器指令集的预期指令总条数和理论实际指令总条数。
可以理解为,处理器指令编码包括已定义指令编码和未定义指令编码两部分,已定义指令编码是指指令集手册中规定的具有特定功能的指令编码,未定义指令编码是指指令集手册中没有规定特定功能的指令编码,即整个指令编码中除已定义指令编码外的那部分指令编码。
本发明实施例首先根据指令集手册收集目标处理器指令集中所有的指令编码,包括已定义指令编码和未定义指令编码。再根据所有这些指令编码,计算目标处理器指令集的预期指令总条数和理论实际指令总条数。其中预期指令总条数表示目标处理器指令集应该包含的指令总条数,是一个确定的值,由指令位数或最长指令位数决定,理论实际指令总条数表示对上述收集到的所有的指令编码所包含的指令条数进行求和计算得到的指令总条数。
S102,若理论实际指令总条数与预期指令总条数不相等,则对所有已定义指令编码和未定义指令编码进行重叠性聚类处理,并通过计算每个类中的重叠指令条数,计算被重复计算的指令总条数。
可以理解为,在计算得到预期指令总条数和理论实际指令总条数的基础上,将二者进行比较大小,若二者的值相等,则表明目标处理器指令集是完备的,输出检测结果并结束检测流程。否则,即若二者的值不相等,则对上述收集到的所有的指令编码进行重叠性判断并进行聚类处理,得到指令编码的所有聚类后的类。之后,对于得到的每个类,分别计算类中的重叠指令条数,并据此计算在理论实际指令总条数中被重复计算的指令总条数。
S103,基于理论实际指令总条数和被重复计算的指令总条数,计算真实实际指令总条数,并判断真实实际指令总条数与预期指令总条数是否相等,若是,则判定处理器指令集是完备的,否则,判定处理器指令集不完备。
可以理解为,由于理论实际指令总条数中存在被重复计算的指令,因此本发明实施例从理论实际指令总条数中去除被重复计算的指令总条数即得到实际指令总条数的真实值,即真实实际指令总条数。之后,通过比较该真实实际指令总条数与上述计算得到的预期指令总条数的值,来确定目标处理器指令集的完备性。也即,如果通过比较获知真实实际指令总条数预期指令总条数的值相等,则可判定目标处理器指令集是完备的,否则认为是不完备的。
本发明实施例提供的处理器指令集的完备性检测方法,通过对指令集中的所有指令进行聚类处理,并对各类中的重叠指令进行检测和去除,得到指令集的真实实际指令总条数,并进一步基于此对处理器指令集的完备性进行检测,能够有效消除计算误差,从而有效提高检测结果的准确性。
其中,根据上述各实施例可选的,计算处理器指令集的理论实际指令总条数的步骤具体包括:通过遍历所有已定义指令编码和未定义指令编码,依次计算每条指令编码所表示的指令条数,计算的公式为:指令编码所表示的指令条数=2^指令编码中不确定位数;对所有指令编码所表示的指令条数进行求和运算,获取理论实际指令总条数。
具体而言,本发明实施例首先定义了理论实际指令总条数的概念,并提供了其具体计算方法,如图2所示,为根据本发明实施例提供的处理器指令集的完备性检测方法中计算理论实际指令总条数的流程示意图,包括:
步骤1,收集指令集手册中所有的指令编码,包括已定义指令编码和未定义指令编码。
步骤2,对步骤1中所收集的所有的指令编码进行遍历,依次计算每条指令编码所表示的指令条数,计算公式为:指令编码所表示的指令条数=2^指令编码中不确定位数。
步骤3,对步骤2中得到的所有的指令编码所表示的指令条数求和,所得之和即为实际指令总条数。
其中,根据上述各实施例可选的,计算处理器指令集的预期指令总条数的步骤具体包括:根据指令集手册,判断处理器指令集是否为定长指令集,若是,则按下式计算预期指令总条数:预期指令总条数=2^指令位数;否则,按下式计算预期指令总条数:预期指令总条数=2^最长指令位数。
具体而言,本发明实施例首先定义了预期指令总条数的概念,并提供了其具体计算方法,即,首先根据指令集手册判断处理器指令集是定长指令集还是变长指令集,再根据判断结果采用相应的计算方法计算预期指令总条数。即,如果指令集是定长指令集,则预期指令总条数=2^指令位数;如果指令集是变长指令集,则预期指令总条数=2^最长指令位数。
例如,在一些实施例中假设指令集是ARM,由于其为定长指令集,指令位数为32,因此预期指令总条数=2^32=4294967296。又例如在另一些实施例中假设指令集是x86,由于其为变长指令集,最长指令位数为120,因此预期指令总条数=2^120=1.33×1036。
其中,根据上述各实施例可选的,对所有已定义指令编码和未定义指令编码进行重叠性聚类处理的步骤具体包括:根据所有已定义指令编码和未定义指令编码,生成指令编码文件,并创建一个类库,类库中存放所有的类;依次从指令编码文件中读取任一指令编码,并对该任一指令编码执行如下操作,直至检测到指令编码文件为空,其中如下操作包括:并将任一指令编码与类库中所有类中的指令编码进行重叠关系判断,若任一指令编码与任一类中的指令编码存在重叠关系,则将任一指令编码归入任一类中,并将任一指令编码从指令编码文件中删除,否则,新建一个类,并将任一指令编码归入新建的类中,并将任一指令编码从指令编码文件中删除。
其中可选的,在检测到指令编码文件为空完成聚类之后,可将类库中包含的指令编码的条数等于1的所有类从类库中删除。
具体而言,本发明实施例利用重叠性指令编码聚类算法,将存在重叠关系的指令编码聚为同一类,并将这些类组成的集合称作类库,如图3所示,为根据本发明实施例提供的处理器指令集的完备性检测方法中进行重叠性聚类处理的流程示意图,包括:
步骤1,收集指令集手册中所有的指令编码,包括已定义指令编码和未定义指令编码,形成一个指令编码文件。
步骤2,创建一个类,将这个类放入类库中,从指令编码文件中取出一条指令编码,将该指令编码放入这个类中,并将该指令编码从指令编码文件中删除。
步骤3,从指令编码文件中取出一条指令编码,将该指令编码和类库中所有类中的指令编码判断重叠关系,若发现该指令编码与某个类中的指令编码存在重叠关系,则将该指令编码放入该类中,将该指令编码从指令编码文件中删除;若发现该指令编码和类库中所有类中的指令编码都不存在重叠关系,则创建一个类,将这个类放入类库中,将该指令编码放入这个类中,并将该指令编码从指令编码文件中删除。
步骤4,判断指令编码文件是否为空,若不为空,则表示指令编码文件中还存在一些指令编码没有经过聚类处理,转入步骤3。否则,表示指令编码文件中所有的指令编码都经过了聚类处理,结束聚类处理流程,或者可选的转入步骤5。
步骤5,将类库中包含的指令编码的条数等于1的所有类从类库中删除。
其中,将任一指令编码与类中的指令编码进行重叠关系判断的步骤具体包括:对于任一类,依次计算任一类中的每一指令编码与任一指令编码的交集,若交集均为空,则判定任一指令编码与任一类中的指令编码间不存在重叠关系,否则判定任一指令编码与任一类中的指令编码间存在重叠关系。
也即,本发明实施例中定义了指令编码重叠性的概念,并提供了判断两条指令编码之间是否存在重叠关系的方法,包括:
首先计算两条指令编码的交集,若两条指令编码的交集为空,则判断这两条指令编码之间不存在重叠关系,否则判断这两条指令编码之间存在重叠关系。例如,若需求指令编码“0101xx”和指令编码“x10xx1”之间是否存在重叠关系,由于两者的交集为0101x1,不为空,因此这两条指令编码之间存在重叠关系。又例如,在求指令编码“0101xx”和指令编码“110xx1”之间是否存在重叠关系时,由于两者的交集为空,因此这两条指令编码之间不存在重叠关系。
其中,根据上述各实施例可选的,通过计算每个类中的重叠指令条数,计算被重复计算的指令总条数的步骤具体包括:对于任一类,计算任一类中所有指令编码的并集指令总条数,并基于并集指令总条数与理论实际指令总条数,计算任一类中的重叠指令条数;对所有类中的重叠指令条数进行求和运算,获取被重复计算的指令总条数。
具体而言,本发明实施例中定义了类中重叠指令条数的概念,并提供了其计算方法,包括:
步骤1,对类中所有的指令编码进行遍历,依次计算每条指令编码所表示的指令条数,计算公式为:指令编码所表示的指令条数=2^指令编码中不确定位数。将这些指令编码所表示的指令条数求和,所得之和称作类中实际指令总条数。
步骤2,计算该类中所有指令编码的并集指令条数,称作类中并集指令总条数。
步骤3,计算类中重叠指令条数,计算公式为:类中重叠指令条数=类中实际指令总条数-类中并集指令总条数。
步骤4,对所有类中的重叠指令条数进行求和运算,获取理论实际指令总条数中存在的被重复计算的指令总条数。
其中,根据上述各实施例可选的,计算任一类中的每一指令编码与任一指令编码的交集的步骤具体包括:
将每一指令编码和任一指令编码分别记作A和B,并将表示A和B交集的指令编码记做C,将指令编码长度记做L。
设置一个位索引,记作index,并将index初始化为0,用以记录当前操作位在指令编码中的位置。
依次从A中取出第index位,记做a,从B中取出第index位,记做b,并对a和b进行交操作,得到c,交操作的计算规则如表1所示,表1为根据本发明实施例的交操作的计算规则表,表中x表示不确定位。
表1为根据本发明实施例的交操作的计算规则表
a | b | c |
0 | x | 0 |
1 | x | 1 |
x | 0 | 0 |
x | 1 | 1 |
0 | 0 | 0 |
1 | 1 | 1 |
x | x | x |
0 | 1 | 空 |
1 | 0 | 空 |
将C中第index位设置为c,并将index加1,转入依次从A中取出第index位,记做a的步骤,直至判断index等于L-1,进一步判断C中是否存在值为“空”的位,若是,则判断A和B的交集为空,否则将C作为A和B的交集。
具体而言,本发明实施例定义了指令编码交集的概念,并提供了计算任意两条指令编码的交集的方法,包括:
步骤1,将待计算的两条指令编码分别记做A和B,将表示A和B交集的指令编码记做C,将指令编码长度记做L。例如,在一些实施例中设A为“0101xx”,B为“x10xx1”,L为6。
步骤2,设置一个位索引,记录当前所操作的位在指令编码中的位置,记做index,将index初始化为0。
步骤3,从A中取出第index位,记做a,从B中取出第index位,记做b,对a和b进行交操作,得到c,交操作计算规则如上表所示(“x”表示该位不确定,可以是0也可以是1),将C中第index位设置为c,将index加1。例如,在一些实施例中从A中取出第0位,a为x,从B中取出第0位,b为1,使用上表中的规则计算得到c为1,此时index加1等于1。
步骤4,判断index是否等于L-1,若等于,进入步骤5,否则进入步骤3。例如,在一些实施例中若index等于5,则进入步骤5,否则进入步骤3。
步骤5,判断C中是否存在值为“空”的位,若存在,则表明A和B的交集为空,否则C即为A和B的交集。例如,在本实施例中计算得到C为“0101x1”。
显然,上述计算两条指令编码交集的方法可以扩展成计算多条指令编码交集。例如三条指令编码“0101xx”、“x10xx1”、“x1xx1x”计算得到的指令编码交集为“010111”。
其中,根据上述各实施例可选的,计算任一类中所有指令编码的并集指令总条数的步骤具体包括:
对于任一类,将任一类中待计算的任意两条指令编码分别记作A和B,并分别计算A和B表示的指令条数,其中,A表示的指令条数=2^A中不确定位数,B表示的指令条数=2^B中不确定位数;
计算A和B的交集,记作C,并计算C表示的指令条数:C表示的指令条数=2^C中不确定位数;
利用容斥原理,计算A和B的并集指令总条数:A和B并集指令总条数=A表示的指令条数+B表示的指令条数-C表示的指令条数。
具体而言,本发明实施例定义了指令编码并集指令条数的概念,并提供了计算任意两条指令编码并集指令条数的方法,包括:
步骤1,将待计算的指令编码分别记做A和B。计算A所表示的指令条数,计算公式为:A所表示的指令条数=2^A中不确定位数,计算B所表示的指令条数,计算公式为:B所表示的指令条数=2^B中不确定位数。例如,在一些实施例中设A为“0101xx”,B为“x10xx1”,得到A所表示的指令条数=2^2=4,B所表示的指令条数=2^3=8。
步骤2,利用上述计算两条指令编码交集的方法,计算A和B的交集,记做C,并计算C所表示的指令条数,计算公式为:C所表示的指令条数=2^C中不确定位数。例如,在一些实施例中A和B的交集为“0101x1”,记做C,则得到C所表示的指令条数=2^1=2。
步骤3,利用容斥原理计算A和B并集指令条数,计算公式为:A和B并集指令条数=A所表示的指令条数+B所表示的指令条数-C所表示的指令条数。例如本实施例中A和B的并集指令条数=4+8-2=10。
显然,上述计算两条指令编码并集指令条数的方法可以扩展成计算多条指令编码并集指令条数。例如,三条指令编码A=“0101xx”、B=“x10xx1”、C=“x1xx1x”,可计算得到指令编码并集指令条数为:A+B+C-A∩B-A∩C-B∩C+A∩B∩C=4+8+16-2-2-4+1=21。
为进一步说明本发明实施例的技术方案,本发明实施例根据上述各实施例提供如下具体的处理流程,但不对本发明实施例的保护范围进行限制。
如图4所示,为本发明另一实施例提供的处理器指令集的完备性检测方法的流程示意图,主要包括以下处理步骤:
步骤1,收集指令集手册中所有的指令编码,包括已定义指令编码和未定义指令编码。
步骤2,利用本发明提供的计算预期指令总条数的方法计算预期指令总条数,利用本发明提供的计算实际指令总条数的方法计算实际指令总条数。
步骤3,判断步骤2中得到的预期指令总条数是否与实际指令总条数相等,若相等,则表明指令集是完备的,结束流程;否则进入步骤4。
步骤4,利用本发明提供的重叠性指令编码聚类算法对步骤1收集的所有的指令编码进行聚类处理,得到类库。
步骤5,利用本发明提供的类中重叠指令条数计算方法计算步骤4得到的类库中的每个类的类中重叠指令条数,将这些类中重叠指令条数求和,所得之和即为实际指令总条数中被重复计算的指令条数。
步骤6,将步骤2中得到的实际指令总条数称作旧的实际指令总条数,计算新的实际指令总条数。获得步骤5中得到的被重复计算的指令条数,新的实际指令总条数计算公式为:新的实际指令总条数=旧的实际指令总条数-被重复计算的指令条数。
步骤7,判断步骤2中得到的预期指令总条数是否与步骤6中得到的新的实际指令总条数相等,若相等,则表明指令集是完备的;否则表明指令集是不完备的。
本发明实施例在定义了指令编码交集、指令编码并集指令条数、预期指令总条数、实际指令总条数和指令编码重叠性的概念,并提供了相应的计算或判断方法的基础上,利用重叠性指令编码聚类算法,将存在重叠关系的指令编码聚为同一类,并将这些类组成的集合称作类库。之后,通过定义类中重叠指令条数的概念和计算方法,实现了处理器指令集的完备性检测,即通过比较预期指令总条数和实际指令总条数是否相等,从而判断指令集是否完备,是一种高效的、通用的、自动的处理器指令集完备性检测方法。
基于相同的构思,本发明实施例根据上述各实施例提供一种处理器指令集的完备性检测装置,该装置用于在上述各实施例中实现处理器指令集的完备性检测。因此,在上述各实施例的处理器指令集的完备性检测方法中的描述和定义,可以用于本发明实施例中各个执行模块的理解,具体可参考上述实施例,此处不再赘述。
根据本发明实施例的一个实施例,处理器指令集的完备性检测装置的结构如图5所示,为本发明实施例提供的处理器指令集的完备性检测装置的结构示意图,该装置可以用于实现上述各方法实施例中处理器指令集的完备性检测,该装置包括:第一计算模块501、第二计算模块502和检测输出模块503。其中:
第一计算模块501用于获取处理器指令集中所有的已定义指令编码和未定义指令编码,并基于已定义指令编码和未定义指令编码,分别计算处理器指令集的预期指令总条数和理论实际指令总条数;第二计算模块502用于若理论实际指令总条数与预期指令总条数不相等,则对所有已定义指令编码和未定义指令编码进行重叠性聚类处理,并通过计算每个类中的重叠指令条数,计算被重复计算的指令总条数;检测输出模块503用于基于理论实际指令总条数和被重复计算的指令总条数,计算真实实际指令总条数,并判断真实实际指令总条数与预期指令总条数是否相等,若是,则判定处理器指令集是完备的,否则,判定处理器指令集不完备。
具体而言,第一计算模块501先根据指令集手册收集目标处理器指令集中所有的指令编码,包括已定义指令编码和未定义指令编码,再根据所有这些指令编码,计算目标处理器指令集的预期指令总条数和理论实际指令总条数。
之后,在得到预期指令总条数和理论实际指令总条数的基础上,第二计算模块502将二者进行比较大小,若二者的值相等,则表明目标处理器指令集是完备的,输出检测结果并结束检测流程。否则,即若二者的值不相等,则第二计算模块502对上述收集到的所有的指令编码进行重叠性判断并进行聚类处理,得到指令编码的所有聚类后的类。之后,对于得到的每个类,第二计算模块502分别计算类中的重叠指令条数,并据此计算在理论实际指令总条数中被重复计算的指令总条数。
最后,检测输出模块503从理论实际指令总条数中去除被重复计算的指令总条数即得到实际指令总条数的真实值,即真实实际指令总条数。之后,通过比较该真实实际指令总条数与上述计算得到的预期指令总条数的值,检测输出模块503来确定目标处理器指令集的完备性。也即,如果通过比较获知真实实际指令总条数预期指令总条数的值相等,则可判定目标处理器指令集是完备的,否则认为是不完备的。
本发明实施例提供的处理器指令集的完备性检测装置,通过设置相应的执行模块,对指令集中的所有指令进行聚类处理,并对各类中的重叠指令进行检测和去除,得到指令集的真实实际指令总条数,并进一步基于此对处理器指令集的完备性进行检测,能够有效消除计算误差,从而有效提高检测结果的准确性。
可以理解的是,本发明实施例中可以通过硬件处理器(hardware processor)来实现上述各实施例的装置中的各相关程序模块。并且,本发明实施例的处理器指令集的完备性检测装置利用上述各程序模块,能够实现上述各方法实施例的处理器指令集的完备性检测流程,在用于实现上述各方法实施例中处理器指令集的完备性检测时,本发明实施例的装置产生的有益效果与对应的上述各方法实施例相同,可以参考上述各方法实施例,此处不再赘述。
作为本发明实施例的又一个方面,本实施例根据上述各实施例提供一种电子设备,该电子设备包括存储器、处理器及存储在该存储器上并可在该处理器上运行的计算机程序,该处理器执行该计算机程序时,实现如上述各实施例所述的处理器指令集的完备性检测方法的步骤。
进一步的,本发明实施例的电子设备还可以包括通信接口和总线。参考图6,为本发明实施例提供的电子设备的实体结构示意图,包括:至少一个存储器601、至少一个处理器602、通信接口603和总线604。
其中,存储器601、处理器602和通信接口603通过总线604完成相互间的通信,通信接口603用于该电子设备与处理器指令集设备之间的信息传输;存储器601中存储有可在处理器602上运行的计算机程序,处理器602执行该计算机程序时,实现如上述各实施例所述的处理器指令集的完备性检测方法的步骤。
可以理解为,该电子设备中至少包含存储器601、处理器602、通信接口603和总线604,且存储器601、处理器602和通信接口603通过总线604形成相互间的通信连接,并可完成相互间的通信,如处理器602从存储器601中读取处理器指令集的完备性检测方法的程序指令等。另外,通信接口603还可以实现该电子设备与处理器指令集设备之间的通信连接,并可完成相互间信息传输,如通过通信接口603实现处理器指令编码的读取等。
电子设备运行时,处理器602调用存储器601中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:获取处理器指令集中所有的已定义指令编码和未定义指令编码,并基于已定义指令编码和未定义指令编码,分别计算处理器指令集的预期指令总条数和理论实际指令总条数;若理论实际指令总条数与预期指令总条数不相等,则对所有已定义指令编码和未定义指令编码进行重叠性聚类处理,并通过计算每个类中的重叠指令条数,计算被重复计算的指令总条数;基于理论实际指令总条数和被重复计算的指令总条数,计算真实实际指令总条数,并判断真实实际指令总条数与预期指令总条数是否相等,若是,则判定处理器指令集是完备的,否则,判定处理器指令集不完备等。
上述的存储器601中的程序指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。或者,实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还根据上述各实施例提供一种非暂态计算机可读存储介质,其上存储有计算机指令,该计算机指令被计算机执行时,实现如上述各实施例所述的处理器指令集的完备性检测方法的步骤,例如包括:获取处理器指令集中所有的已定义指令编码和未定义指令编码,并基于已定义指令编码和未定义指令编码,分别计算处理器指令集的预期指令总条数和理论实际指令总条数;若理论实际指令总条数与预期指令总条数不相等,则对所有已定义指令编码和未定义指令编码进行重叠性聚类处理,并通过计算每个类中的重叠指令条数,计算被重复计算的指令总条数;基于理论实际指令总条数和被重复计算的指令总条数,计算真实实际指令总条数,并判断真实实际指令总条数与预期指令总条数是否相等,若是,则判定处理器指令集是完备的,否则,判定处理器指令集不完备等。
本发明实施例提供的电子设备和非暂态计算机可读存储介质,通过执行上述各实施例所述的处理器指令集的完备性检测方法的步骤,对指令集中的所有指令进行聚类处理,并对各类中的重叠指令进行检测和去除,得到指令集的真实实际指令总条数,并进一步基于此对处理器指令集的完备性进行检测,能够有效消除计算误差,从而有效提高检测结果的准确性。
可以理解的是,以上所描述的装置、电子设备及存储介质的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,既可以位于一个地方,或者也可以分布到不同网络单元上。可以根据实际需要选择其中的部分或全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解,各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令,用以使得一台计算机设备(如个人计算机,服务器,或者网络设备等)执行上述各方法实施例或者方法实施例的某些部分所述的方法。
另外,本领域内的技术人员应当理解的是,在本发明实施例的申请文件中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明实施例的说明书中,说明了大量具体细节。然而应当理解的是,本发明实施例的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明实施例公开并帮助理解各个发明方面中的一个或多个,在上面对本发明实施例的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。
然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明实施例要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明实施例的单独实施例。
最后应说明的是:以上实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明实施例进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的精神和范围。
Claims (8)
1.一种处理器指令集的完备性检测方法,其特征在于,包括:
获取处理器指令集中所有的已定义指令编码和未定义指令编码,并基于所述已定义指令编码和所述未定义指令编码,分别计算所述处理器指令集的预期指令总条数和理论实际指令总条数;
其中,预期指令总条数表示目标处理器指令集包含的指令总条数,是由指令位数或最长指令位数决定的确定的值;理论实际指令总条数表示对根据指令集手册收集到的所有的指令编码所包含的指令条数进行求和计算得到的指令总条数;
若所述理论实际指令总条数与所述预期指令总条数不相等,则对所有所述已定义指令编码和所述未定义指令编码进行重叠性聚类处理,并通过计算每个类中的重叠指令条数,计算被重复计算的指令总条数;
基于所述理论实际指令总条数和所述被重复计算的指令总条数,计算真实实际指令总条数,并判断所述真实实际指令总条数与所述预期指令总条数是否相等,若是,则判定所述处理器指令集是完备的,否则,判定所述处理器指令集不完备;
所述对所有所述已定义指令编码和所述未定义指令编码进行重叠性聚类处理的步骤具体包括:
根据所有所述已定义指令编码和所述未定义指令编码,生成指令编码文件,并创建一个类库,所述类库中存放所有的类;
依次从所述指令编码文件中读取任一指令编码,并对所述任一指令编码执行如下操作,直至检测到所述指令编码文件为空,所述如下操作包括:
将所述任一指令编码与所述类库中所有类中的指令编码进行重叠关系判断,若所述任一指令编码与任一类中的指令编码存在重叠关系,则将所述任一指令编码归入所述任一类中,并将所述任一指令编码从所述指令编码文件中删除,否则,新建一个类,并将所述任一指令编码归入新建的类中,并将所述任一指令编码从所述指令编码文件中删除;
其中,将所述任一指令编码与所述类中的指令编码进行重叠关系判断的步骤具体包括:对于任一类,依次计算所述任一类中的每一指令编码与所述任一指令编码的交集,若所述交集均为空,则判定所述任一指令编码与所述任一类中的指令编码间不存在重叠关系,否则判定所述任一指令编码与所述任一类中的指令编码间存在重叠关系;
所述通过计算每个类中的重叠指令条数,计算被重复计算的指令总条数的步骤具体包括:
对于任一类,计算所述任一类中所有指令编码的并集指令总条数,并基于所述并集指令总条数与所述理论实际指令总条数,计算所述任一类中的重叠指令条数;
对所有类中的所述重叠指令条数进行求和运算,获取所述被重复计算的指令总条数。
2.根据权利要求1所述的处理器指令集的完备性检测方法,其特征在于,计算所述处理器指令集的理论实际指令总条数的步骤具体包括:
通过遍历所有所述已定义指令编码和所述未定义指令编码,依次计算每条指令编码所表示的指令条数,计算的公式为:指令编码所表示的指令条数=2^指令编码中不确定位数;
对所有指令编码所表示的指令条数进行求和运算,获取所述理论实际指令总条数。
3.根据权利要求1所述的处理器指令集的完备性检测方法,其特征在于,计算所述处理器指令集的预期指令总条数的步骤具体包括:
根据指令集手册,判断所述处理器指令集是否为定长指令集,若是,则按下式计算所述预期指令总条数:
预期指令总条数=2^指令位数;
否则,按下式计算所述预期指令总条数:
预期指令总条数=2^最长指令位数。
4.根据权利要求1所述的处理器指令集的完备性检测方法,其特征在于,所述计算所述任一类中的每一指令编码与所述任一指令编码的交集的步骤具体包括:
将所述每一指令编码和所述任一指令编码分别记作A和B,并将表示A和B交集的指令编码记做C,将指令编码长度记做L;
设置一个位索引,记作index,并将index初始化为0,用以记录当前操作位在指令编码中的位置;
依次从A中取出第index位,记做a,从B中取出第index位,记做b,并对a和b进行交操作,得到c,所述交操作的计算规则如下表所示,表中x表示不确定位;
其中,a、b、c的组合可以包括以下至少一种:0 x 0;1 x 1;x 0 0;x 1 1;0 0 0;1 1 1;x x x;0 1 空;1 0 空;
将C中第index位设置为c,并将index加1,转入所述依次从A中取出第index位,记做a的步骤,直至判断index等于L-1,进一步判断C中是否存在值为“空”的位,若是,则判断A和B的交集为空,否则将C作为A和B的交集。
5.根据权利要求1所述的处理器指令集的完备性检测方法,其特征在于,所述计算所述任一类中所有指令编码的并集指令总条数的步骤具体包括:
对于所述任一类,将所述任一类中待计算的任意两条指令编码分别记作A和B,并分别计算A和B表示的指令条数,其中,A表示的指令条数=2^A中不确定位数,B表示的指令条数=2^B中不确定位数;
计算A和B的交集,记作C,并计算C表示的指令条数:C表示的指令条数=2^C中不确定位数;
利用容斥原理,计算A和B的并集指令总条数:A和B并集指令总条数=A表示的指令条数+B表示的指令条数-C表示的指令条数。
6.一种处理器指令集的完备性检测装置,其特征在于,包括:
第一计算模块,用于获取处理器指令集中所有的已定义指令编码和未定义指令编码,并基于所述已定义指令编码和所述未定义指令编码,分别计算所述处理器指令集的预期指令总条数和理论实际指令总条数;
其中,预期指令总条数表示目标处理器指令集包含的指令总条数,是由指令位数或最长指令位数决定的确定的值;理论实际指令总条数表示对根据指令集手册收集到的所有的指令编码所包含的指令条数进行求和计算得到的指令总条数;
第二计算模块,用于若所述理论实际指令总条数与所述预期指令总条数不相等,则对所有所述已定义指令编码和所述未定义指令编码进行重叠性聚类处理,并通过计算每个类中的重叠指令条数,计算被重复计算的指令总条数;
检测输出模块,用于基于所述理论实际指令总条数和所述被重复计算的指令总条数,计算真实实际指令总条数,并判断所述真实实际指令总条数与所述预期指令总条数是否相等,若是,则判定所述处理器指令集是完备的,否则,判定所述处理器指令集不完备;
所述对所有所述已定义指令编码和所述未定义指令编码进行重叠性聚类处理的步骤具体包括:
根据所有所述已定义指令编码和所述未定义指令编码,生成指令编码文件,并创建一个类库,所述类库中存放所有的类;
依次从所述指令编码文件中读取任一指令编码,并对所述任一指令编码执行如下操作,直至检测到所述指令编码文件为空,所述如下操作包括:
将所述任一指令编码与所述类库中所有类中的指令编码进行重叠关系判断,若所述任一指令编码与任一类中的指令编码存在重叠关系,则将所述任一指令编码归入所述任一类中,并将所述任一指令编码从所述指令编码文件中删除,否则,新建一个类,并将所述任一指令编码归入新建的类中,并将所述任一指令编码从所述指令编码文件中删除;
其中,将所述任一指令编码与所述类中的指令编码进行重叠关系判断的步骤具体包括:对于任一类,依次计算所述任一类中的每一指令编码与所述任一指令编码的交集,若所述交集均为空,则判定所述任一指令编码与所述任一类中的指令编码间不存在重叠关系,否则判定所述任一指令编码与所述任一类中的指令编码间存在重叠关系;
所述通过计算每个类中的重叠指令条数,计算被重复计算的指令总条数的步骤具体包括:
对于任一类,计算所述任一类中所有指令编码的并集指令总条数,并基于所述并集指令总条数与所述理论实际指令总条数,计算所述任一类中的重叠指令条数;
对所有类中的所述重叠指令条数进行求和运算,获取所述被重复计算的指令总条数。
7.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如权利要求1至5中任一项所述的处理器指令集的完备性检测方法的步骤。
8.一种非暂态计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令被计算机执行时,实现如权利要求1至5中任一项所述的处理器指令集的完备性检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910813443.5A CN110688304B (zh) | 2019-08-30 | 2019-08-30 | 处理器指令集的完备性检测方法、装置与电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910813443.5A CN110688304B (zh) | 2019-08-30 | 2019-08-30 | 处理器指令集的完备性检测方法、装置与电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110688304A CN110688304A (zh) | 2020-01-14 |
CN110688304B true CN110688304B (zh) | 2021-04-27 |
Family
ID=69107663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910813443.5A Active CN110688304B (zh) | 2019-08-30 | 2019-08-30 | 处理器指令集的完备性检测方法、装置与电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110688304B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0111952A2 (en) * | 1982-12-15 | 1984-06-27 | International Business Machines Corporation | Verification of a processor architecture having a partial instruction set |
JP2001051846A (ja) * | 1999-08-12 | 2001-02-23 | Hitachi Ltd | プロセッサ |
CN101178644A (zh) * | 2006-11-10 | 2008-05-14 | 上海海尔集成电路有限公司 | 一种基于复杂指令集计算机结构的微处理器架构 |
CN109683962A (zh) * | 2017-10-18 | 2019-04-26 | 深圳市中兴微电子技术有限公司 | 一种指令集模拟器流水线建模的方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012099035A (ja) * | 2010-11-05 | 2012-05-24 | Fujitsu Ltd | プロセッサの動作検証方法、プロセッサの動作検証装置、及びプロセッサの動作検証プログラム |
CN108875321A (zh) * | 2017-05-09 | 2018-11-23 | 中移(杭州)信息技术有限公司 | 一种指令集的生成方法、装置和电子设备 |
CN109918292B (zh) * | 2019-01-28 | 2020-09-11 | 中国科学院信息工程研究所 | 一种处理器指令集测试方法和装置 |
CN110175047B (zh) * | 2019-04-22 | 2022-03-29 | 中国科学院信息工程研究所 | 处理器指令编码的自动生成方法及装置 |
-
2019
- 2019-08-30 CN CN201910813443.5A patent/CN110688304B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0111952A2 (en) * | 1982-12-15 | 1984-06-27 | International Business Machines Corporation | Verification of a processor architecture having a partial instruction set |
JP2001051846A (ja) * | 1999-08-12 | 2001-02-23 | Hitachi Ltd | プロセッサ |
CN101178644A (zh) * | 2006-11-10 | 2008-05-14 | 上海海尔集成电路有限公司 | 一种基于复杂指令集计算机结构的微处理器架构 |
CN109683962A (zh) * | 2017-10-18 | 2019-04-26 | 深圳市中兴微电子技术有限公司 | 一种指令集模拟器流水线建模的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110688304A (zh) | 2020-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111401914B (zh) | 风险评估模型的训练、风险评估方法及装置 | |
CN112579462B (zh) | 测试用例获取方法、系统、设备及计算机可读存储介质 | |
CN108491228A (zh) | 一种二进制漏洞代码克隆检测方法及系统 | |
CN114428748B (zh) | 一种用于真实业务场景的模拟测试方法及系统 | |
CN110348215B (zh) | 异常对象识别方法、装置、电子设备及介质 | |
CN110019845B (zh) | 一种基于知识图谱的社区演化分析方法及装置 | |
CN111753953A (zh) | 一种用于获取神经网络架构的方法及装置 | |
CN110688304B (zh) | 处理器指令集的完备性检测方法、装置与电子设备 | |
EP4047498A1 (en) | File vulnerability detection system and detection method thereof | |
CN114185800A (zh) | 基于遗传算法的测试用例生成方法、系统、设备及介质 | |
CN114331063A (zh) | 应用于智慧水务的大数据可视化处理方法及系统 | |
CN111581235B (zh) | 识别常见关联关系的方法及系统 | |
CN117376228A (zh) | 一种网络安全测试工具确定方法及装置 | |
CN115762719A (zh) | 基于组合模型的心理测评真实性评估方法及设备 | |
CN109918237A (zh) | 异常网络层确定方法及相关产品 | |
CN114139636B (zh) | 异常作业处理方法及装置 | |
CN112989374B (zh) | 基于复杂网络分析的数据安全风险识别方法及装置 | |
EP3367275A1 (en) | Biological sequence data processing method and device | |
JP5075695B2 (ja) | プロパティ記述のカバレッジ測定装置及びプログラム | |
CN110458707B (zh) | 基于分类模型的行为评估方法、装置及终端设备 | |
CN113850523A (zh) | 基于数据补全的esg指数确定方法及相关产品 | |
US8037002B2 (en) | Property description coverage measuring apparatus | |
CN112597699A (zh) | 一种融入客观赋权法的社交网络谣言源识别方法 | |
CN112348318A (zh) | 一种供应链风险预测模型的训练和应用方法及装置 | |
CN111984812A (zh) | 一种特征提取模型生成方法、图像检索方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |