CN112527571A - 一种cpu指令集覆盖率计算方法及装置 - Google Patents
一种cpu指令集覆盖率计算方法及装置 Download PDFInfo
- Publication number
- CN112527571A CN112527571A CN201910882930.7A CN201910882930A CN112527571A CN 112527571 A CN112527571 A CN 112527571A CN 201910882930 A CN201910882930 A CN 201910882930A CN 112527571 A CN112527571 A CN 112527571A
- Authority
- CN
- China
- Prior art keywords
- instruction
- virtual machine
- test
- standard
- instruction set
- 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.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 title description 7
- 238000012360 testing method Methods 0.000 claims abstract description 142
- 238000000034 method Methods 0.000 claims abstract description 33
- 238000003860 storage Methods 0.000 claims description 24
- 238000013500 data storage Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 description 40
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007711 solidification Methods 0.000 description 1
- 230000008023 solidification Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及计算机技术领域,尤其涉及一种CPU指令集覆盖率计算方法及装置。该方法为:虚拟机获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,然后,所述虚拟机基于调试器发送的控制指令,按照被配置的与待测试CPU相同的运行方式读取所述测试指令集中的各个指令,确定所述测试指令集对应的第一标准指令类型数目,再确定预设的标准指令集对应的第二标准指令类型数目,并基于所述第一标准指令类型数目在所述第二标准指令类型数目中占比,计算相应的指令集覆盖率。这样,在执行测试指令集的同时,可以计算得到待测试CPU指令集的覆盖率,为衡量待测试CPU运行的可靠性提供了依据。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种CPU指令集覆盖率计算方法及装置。
背景技术
第五代精简指令集(Risc-Five,RISC-V)作为一种开源的新型指令集架构受到广泛的关注,人们基于RISC-V架构进行中央处理器(Central Processing Unit,CPU)的开发,可以根据实际的需要和应用场景为CPU配置执行规范并确定所对应的RISC-V架构下的标准指令集,然后对开发完成的CPU进行检测。
现有技术下,参阅图1所示,使用RISC-V CPU可编程门阵列(Field ProgrammableGate Array,FPGA)原型、RISC-V CPU调试代理、RISC-V GDB调试工具以及RISC-V CPU状态观测设备进行基于RISC-V架构的CPU指令检测。首先获取开发完成的基于RISC-V架构的CPU数字逻辑数据,将所述数字逻辑数据固化到RISC-V CPU FPGA原型平台上,所述固化具体为通过专用的工具手段,将所述数字逻辑数据以门电路的方式存放在RISC-V CPU FPGA原型上。然后使用所述RISC-V GDB调试工具触发所述RISC-V CPU FPGA原型对所述数字逻辑数据进行检测执行,具体为基于RISC-V架构下的指令集对所述CPU数字逻辑数据进行检测,并在CPU状态观测设备上显示最后的检测结果。
但是,基于RISC-V CPU FPGA原型这一硬件设备进行检测时,是通过执行RISC-V架构下的指令集对所述CPU数字逻辑数据进行检测,通过CPU状态观测设备只能判断出基于RISC-V架构的CPU数字逻辑数据运行成功与否,而没有办法统计出指令集覆盖率,所述指令集覆盖率为:在检测所述CPU数字逻辑数据过程中,所执行的指令类型相对于RISC-V架构下配置的标准指令集所对应的标准指令类型的比例,用于表征在开发CPU时所配置的执行规范下,与所述执行规范相对应的标准指令集被执行的比例。基于特定执行规范所开发的CPU功能指令被要求完全覆盖与所述执行规范相对应的标准指令集,但是在无法获知CPU指令集覆盖率的情况下,无法得知所开发的CPU相对于标准指令集的指令覆盖情况,也就无法保证CPU运行指令的可靠性。
有鉴于此,需要一种新的CPU指令集验证方法,解决现有技术下存在的无法获知指令集覆盖率的问题。
发明内容
本发明实施例提供一种中央处理器CPU指令集覆盖率计算方法及装置,用以解决现有技术中存在的无法获知指令集覆盖率问题。
本发明实施例提供的具体技术方案如下:
一种中央处理器CPU指令集覆盖率计算方法,包括:
虚拟机获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,其中,一个可执行文件中记录有预设的与待测试CPU的功能相对应的测试指令,所述虚拟机被配置为与待测试CPU具有相同的运行方式;
所述虚拟机接收调试器发送的控制指令;
所述虚拟机基于所述控制指令,按照所述CPU的运行方式读取所述测试指令集中的各个指令,确定所述测试指令集对应的第一标准指令类型数目;
所述虚拟机确定预设的标准指令集对应的第二标准指令类型数目,并基于所述第一标准指令类型数目在所述第二标准指令类型数目中占比,计算相应的指令集覆盖率。
可选的,所述虚拟机获取至少一个可执行文件之前,包括:
所述虚拟机通过本地的配置器分别确定指令存储空间和数据存储空间的位置和容量,所述指令存储空间用于存储所述至少一个可执行文件中的测试指令,所述数据存储空间用于存储所述虚拟机运行所需要和产生的数据。
可选的,所述虚拟机获取至少一个可执行文件之前,进一步包括:
所述虚拟机通过本地的配置器确定预设的执行规范,所述执行规范用于确定预设的标准指令集。
可选的,所述虚拟机获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,包括:
若所述虚拟机获取了一个可执行文件,所述虚拟机将所述一个可执行文件中的测试指令作为所述测试指令集;或者,
若所述虚拟机获取了多个可执行文件,所述虚拟机将记录在各个可执行文件中的测试指令整合为所述测试指令集。
可选的,所述虚拟机接收调试器发送的控制指令,包括:
所述虚拟机通过本地的调试代理模块接收调试器发送的控制指令;
所述虚拟机通过所述调试代理模块将所述控制指令转化为可以识别的指令。
可选的,所述虚拟机确定所述测试指令集对应的第一标准指令类型数目,包括:
所述虚拟机对应所述测试指令集设置第一标准指令类型数目的初始值;
所述虚拟机依次针对所述测试指令集中的各个指令分别执行以下操作:
所述虚拟机通过本地的取指器读取一条指令,以及确定所述一条指令的操作码;
所述虚拟机通过所述取指器,基于所述操作码,确定所述一条指令为标准指令类型,且所述标准指令类型首次出现在所述测试指令集中时,将所述第一标准指令类型数目的当前取值加1;
所述虚拟机对应所述测试指令集记录最终输出的所述第一标准指令类型数目。
一种中央处理器CPU指令集覆盖率计算装置,包括:
配置器,获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,其中,一个可执行文件中记录有预设的与待测试CPU的功能相对应的测试指令,所述虚拟机被配置为与待测试CPU具有相同的运行方式;
调试代理模块,接收调试器发送的控制指令;
取指器,基于所述控制指令,按照所述CPU的运行方式读取所述测试指令集中的各个指令,确定所述测试指令集对应的第一标准指令类型数目,确定预设的标准指令集对应的第二标准指令类型数目,并基于所述第一标准指令类型数目在所述第二标准指令类型数目中占比,计算相应的指令集覆盖率。
可选的,所述获取至少一个可执行文件之前,所述配置器用于:
分别确定指令存储空间和数据存储空间的位置和容量,所述指令存储空间用于存储所述至少一个可执行文件中的测试指令,所述数据存储空间用于存储所述虚拟机运行所需要和产生的数据。
可选的,所述获取至少一个可执行文件之前,所述配置器进一步用于:
确定预设的执行规范,所述执行规范用于确定预设的标准指令集。
可选的,所述获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,所述配置器用于:
若所述配置器获取了一个可执行文件,所述配置器将所述一个可执行文件中的测试指令作为所述测试指令集;或者,
若所述配置器获取了多个可执行文件,所述配置器将记录在各个可执行文件中的测试指令整合为所述测试指令集。
可选的,所述接收调试器发送的控制指令,所述调试代理模块用于:
接收调试器发送的控制指令;
将所述控制指令转化为可以识别的指令。
可选的,其特征在于,所述确定所述测试指令集对应的第一标准指令类型数目,所述取指器用于:
对应所述测试指令集设置第一标准指令类型数目的初始值;
依次针对所述测试指令集中的各个指令分别执行以下操作:
读取一条指令,以及确定所述一条指令的操作码;
基于所述操作码,确定所述一条指令为标准指令类型,且所述标准指令类型首次出现在所述测试指令集中时,将所述第一标准指令类型数目的当前取值加1;
对应所述测试指令集记录最终输出的所述第一标准指令类型数目。
一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于读取并执行存储器中存储的可执行指令,以实现上述任一项所述的计算指令覆盖率的方法。
一种存储介质,当所述存储介质中的指令由处理器执行时,使得能够执行上述任一项所述计算指令覆盖率的方法。
本发明有益效果如下:
综上所述,本申请实施例中,虚拟机获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,其中,一个可执行文件中记录有预设的与待测试CPU的功能相对应的测试指令,所述虚拟机被配置为与待测试CPU具有相同的运行方式,然后,所述虚拟机基于调试器发送的控制指令,按照所述CPU的运行方式读取所述测试指令集中的各个指令,确定所述测试指令集对应的第一标准指令类型数目,再确定预设的标准指令集对应的第二标准指令类型数目,并基于所述第一标准指令类型数目在所述第二标准指令类型数目中占比,计算相应的指令集覆盖率。这样,在执行测试指令集的同时,可以计算得到CPU指令集的覆盖率,为衡量CPU运行的可靠性提供了依据,通过所述指令集的覆盖率可以直观的得到与所开发的待测试CPU的功能相对应的测试指令,对于执行规范所规定的标准指令类型的覆盖情况。
附图说明
图1为本申请实施例中虚拟机的逻辑功能构成示意图;
图2为本申请实施例中虚拟机的配置示意图;
图3为本申请实施例中虚拟机与调试器通信示意图;
图4为本申请实施例中虚拟机执行状态观测示意图;
图5为本申请实施例中计算指令集覆盖率流程示意图;
图6为本申请实施例中设置有虚拟机的装置的实体结构示意图。
具体实施方式
为了解决现有技术中存在的无法获知指令集覆盖率的问题,本申请中虚拟机被配置为与待测试CPU具有相同的功能,在获取指定的记录有预设的与待测试CPU的功能相对应的测试指令集的至少一个可执行文件后,基于调试器发送的控制指令,按照所述CPU的运行方式读取所述测试指令集中的各个指令,确定所述测试指令集对应的第一标准指令类型数目,并结合与预设的标准指令集对应的第二标准指令类型数目,计算指令集覆盖率。
下面结合附图对本申请优选的实施例做出进一步详细说明
为保证方案的完整,下面结合附图对虚拟机的配置过程进行说明:
参阅图1所示,本申请实施例具体实现中,虚拟机被配置为与待测试的第五代精简指令集架构的中央处理器,以下简称RISC-V CPU,具有相同的运行方式,所述虚拟机的功能模块包括:RISC-V CPU译码器(101)、RISC-V CPU执行器(102)、RISC-V CPU输入/输出(Input/Output,IO)访问模拟器(103)、RISC-V CPU异常模拟器(104)、RISC-V CPU配置器(105)、RISC-V CPU通用寄存器(General Purpose Registers,GPR)模拟器(106)、RISC-VCPU取指器(107)、RISC-V CPU调试代理(108)。
参阅图2所示,所述虚拟机通过本地的RISC-V CPU配置器(105)进一步完成与待测试RISC-V CPU具有相同运行方式的配置。
具体的,所述虚拟机通过所述RISC-V CPU配置器(105)接收并解析配置文件,所述配置文件的内容包括有:RISC-V CPU上电运行地址、RISC-V CPUIO地址空间、RISC-V CPUISA标准、RISC-V CPU可执行文件,下面对所述配置文件中的内容进行具体说明。
(1)RISC-V CPU上电运行地址
所述上电运行地址用于表征所述虚拟机开始执行的第一条指令所在的地址,当虚拟机收到开始运行的通知后,首先读取所述上电运行地址处的指令,再基于所述指令的具体内容完成相应的操作。
(2)RISC-V CPU IO地址空间
所述地址空间用于确定指令存储空间和数据存储空间的位置和容量,所述指令存储空间用于存储所述可执行文件中的测试指令,所述数据存储空间用于存储所述虚拟机运行所需要的和产生的数据。
(3)RISC-V CPU ISA标准
RISC-V CPU ISA标准表示为RISC-V架构下CPU的ISA标准,用于表征虚拟机预设的执行规范,所述执行规范用于确定预设的标准指令集。
具体的,所述RISC-V架构支持多种标准指令集,对于每种标准指令集都对应有数目固定的标准指令类型,RISC-V架构下的标准指令集包括有:RISC-V-I整数指令集、RISC-V-M乘法指令集、RISC-V-A原子指令集、RISC-V-C变长指令集、RISC-V-F单精度指令集、RISC-V-D双精度指令集以及根据需要自行定义的自定义RISC-V指令等等。根据CPU的应用场景以及具体功能,所述标准指令集在开发CPU的过程中可以选择一个或是多个进行配置应用,每个标准指令集对应一个执行规范。
例如,CPU 1是基于多个执行规范进行开发的,即,CPU1配置有多个标准指令集,那么表征所述CPU 1的执行规范的CPU ISA标准相应的也具有多个,其中,每个CPU ISA确定一个执行规范,同时对应一个相应的标准指令集。
RISC-V CPU ISA标准具有多个取值,则所开发的RISC-V CPU具有多个执行规范,即对应有多个标准指令集,在计算指令集覆盖率的时候需要针对每个执行规范下的标准指令集分别计算指令集覆盖率,为方便描述,下面的说明中RISC-V CPU ISA标准仅有一个对应的执行规范。
(4)RISC-V CPU可执行文件
具体的,所述可执行文件为开发人员将表征CPU功能的代码进行编译所得到的文件,所述可执行文件中包括有预设的与待测试CPU的功能相对应的测试指令、操作所涉及到的数据、以及所述测试指令集以及数据存放位置的指示信息。所述可执行文件是基于RISC-V架构下的执行规范所编译的一种配置文件,含有与RISC-V CPU IO地址空间信息所关联的信息。
考虑到虚拟机的处理能力和操作的复杂程度,所述可执行文件中可以包括有与待测试CPU的全部功能相对应的测试指令,或者,所诉可执行文件中可以包括有与待测试CPU部分功能相对应的测试指令。
例如,待测试CPU具有A、B、C功能,可执行文件1中包括所述待测试CPU的A、B、C全部功能的测试指令,或者,可以采用三个可执行文件,分别为可执行文件2、可执行文件3、可执行文件4,其中,可执行文件2包括有与所述待测试CPU的A功能相对应的测试指令,可执行文件3包括有与所述待测试CPU的B功能相对应的测试指令,可执行文件4包括有与所述待测试CPU的C功能相对应的测试指令。
参阅图3与图4所示,下面结合附图对RISC-V GDB调试器(GNU Project Debugger,GDB)与虚拟机进行通信的情况进行说明:
(1)RISC-V GDB解析可执行文件
具体的,RISC-V GDB通过标准远程通信(Remote Serial Protocol,RSP)调试协议与虚拟机预留的相关接口进行连接通信后,所述RISC-V GDB对虚拟机获取的可执行文件进行解析,解析的结果是:所述RISC-V GDB得到可执行文件中记录的与待测试CPU的功能相对应的测试指令、与虚拟机运行所需要的数据、所述测试指令集的存储位置等信息。进一步的,所述RISC-V GDB按照可执行文件中的要求,将所述测试指令和数据存放在虚拟机所预先配置的相应位置,完成可执行文件的解析。
(2)RISC-V GDB控制虚拟机的运行
参阅图3所示,RISC-V GDB通过标准远程通信(Remote Serial Protocol,RSP)调试协议与虚拟机预留的相关接口进行连接通信,RISC-V GDB为相关人员提供可操作的页面,基于相关人员的操作,向虚拟机发起开始运行、暂停运行、设置断点等指令,同时所述RISC-V GDB支持相关人员对虚拟机中尚未执行的指令进行修改,模拟异常的情况。
例如,所述RISC-V GDB接收到相关人员在其操作界面上发起了开始运行的指令,所述RISC-V GDB通过RSP调试协议将所述开始运行的指令发送至虚拟机。
(3)RISC-V GDB获取虚拟机的运行状态,并将所述运行状态显示在RISC-V CPU状态观测设备上
参阅图4所示,具体的,所述RISC-V GDB基于相关人员的操作向虚拟机发起控制运行的指令,进一步的,所述RISC-V GDB可以抓取所述虚拟机的运行状态,然后将所述运行状态发送至RISC-V CPU状态观测设备上进行显示,进而获知所述虚拟机的运行情况。
参与图5所示,下面结合附图对申请中计算指令集覆盖率的问题进行说明:
本申请主要用于解决计算指令集覆盖率的问题,故在下述所述虚拟机读取并执行指令以及计算指令覆盖率的过程中,视为指令均可以执行成功,即使在进行人为修改未执行的指令以模拟异常的过程中,所述虚拟机仍可以调用RISC-V CPU异常模拟器(106)以完成指令执行。因为如果指令执行失败,反应的是可执行文件所对应的待测试CPU的功能不符合预期,这时,需要特殊手段进行调试,这跟本申请所涉及到的计算指令集覆盖率的问题属于不同的范畴,因此不做考虑。
步骤501:虚拟机获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,其中,一个可执行文件中记录有预设的与待测试CPU的功能相对应的测试指令,所述虚拟机被配置为与待测试CPU具有相同的运行方式。
具体的,虚拟机接收配置文件之后,所述虚拟机通过本地的配置器(105)对所述配置文件进行解析,进而确定RISC-V CPU上电运行地址、RISC-V CPUIO地址空间、RISC-V CPUISA标准、RISC-V CPU可执行文件等信息。
这样,所述虚拟机可获取指定的可执行文件,所述可执行文件中记录有预设的与待测试CPU的功能相对应的测试指令。所述可执行文件表征了虚拟机所模拟的待测试CPU的全部或是部分功能,故基于所述虚拟机处理能力的考虑,所述可执行文件的数目可以为一个或是多个。
进一步的,若所述虚拟机获取了一个可执行文件,所述虚拟机将所述一个可执行文件中的测试指令作为所述测试指令集,所述一个可执行文件中的测试指令对应于待测试CPU全部的功能。或者,若所述虚拟机获取了多个可执行文件,所述虚拟机将记录在各个可执行文件中的测试指令整合为所述测试指令集,所述多个可执行文件中各个可执行文件中的测试指令对应所述待测试CPU的不同功能。
同时,所述虚拟机通过本地的配置器(105)解析出的RISC-V CPU IO地址空间分别确定指令存储空间和数据存储空间的位置和容量,所述指令存储空间用于存储所述可执行文件中的测试指令,所述数据存储空间用于存储所述虚拟机运行所需要和产生的数据。
同时,所述虚拟机通过本地的配置器(105)确定预设的执行规范,所述执行规范与所述RISC-V CPU ISA标准相对应,用于确定预设的标准指令集,即,用于指定虚拟机所配置的RISC-V架构下的标准指令集。不同的RISC-VCPU ISA标准可以对应不同的RISC-V架构下的标准指令集,每种标准指令集对应有固定数目的标准指令类型,所述与标准指令集对应的标准指令类型的数目称为第二标准指令类型数目。
例如,所述虚拟机通过本地的配置器解析后,得到所述RISC-V CPU ISA标准为RISC-V-I,所述虚拟机基于所述RISC-V-I就可以确定其支持的RISC-V的标准指令集为整数指令集,所述整数指令集中有固定数目的标准指令类型,且无重复的指令。
步骤502:所述虚拟机接收调试器发送的控制指令。
具体的,虚拟机在通过RSP协议与RISC-V GDB调试器建立通信后,所述虚拟机通过所述RISC-V GDB调试器对可执行文件的解析,完成了运行之前的最后配置。进一步的,所述虚拟机可以接收RISC-V GDB调试器发送的指令,所述指令可以为开始运行、暂停运行、设置断点、修改指令等内容,但是所述虚拟机无法直接执行所述RISC-V GDB调试器发送的命令,故所述虚拟机通过本地的调试代理模块(108)接收RISC-V GDB调试器发送的控制指令,然后,所述虚拟机通过所述调试代理模块(108)将所述控制指令转化为可以识别的指令。
步骤503:所述虚拟机基于所述控制指令,按照所述CPU的运行方式读取所述测试指令集中的各个指令。
具体的,所述虚拟机基于所述RISC-V GDB调试器发送的控制指令,按照所配置的待测试CPU的运行方式进行相应的操作。
例如,所述虚拟机在完成与待测试CPU具有相同功能的配置后,接收到所述RISC-VGDB调试器发送的开始运行的指令,所述虚拟机开始读取并执行存放在指令存储空间中的所述测试指令集,具体为,所述虚拟机首先通过本地的取指器(107)读取存放在RISC-V CPU上电运行地址处的指令,然后,所述虚拟机通过本地的译码器(101)对所述指令进行译码,再通过本地的执行器(102)完成指令的执行,基于上述运行方式,按照所述CPU的运行方式继续读取所述测试指令集中的剩余指令。
步骤504:所述虚拟机确定所述测试指令集对应的第一标准指令类型数目。
具体的,首先,所述虚拟机对应所述测试指令集设置第一标准指令类型数目的初始值。
通常所述第一标准指令类型数目的初始值被设置为0,所述第一标准指令类型数目反映了测试指令集中的标准指令类型的数目,所述标准指令类型是基于RISC-V CPU标准指令集确定的,而所述RISC-V CPU标准指令是基于RISC-V CPU ISA标准确定的,所述RISC-V CPU ISA标准是在开发所述待测试CPU时所确定的。
进一步的,所述虚拟机依次针对所述测试指令集中的各个指令分别执行以下操作:所述虚拟机通过本地的取指器读取一条指令,以及确定所述一条指令的操作码;所述虚拟机通过所述取指器,基于所述操作码,确定所述一条指令为标准指令类型,且所述标准指令类型首次出现在所述测试指令集中时,将所述第一标准指令类型数目的当前取值加1。
例如,假设虚拟机按顺序执行存放在指令存储空间中的下述测试指令集,指令a:操作码X、指令b:操作码Y、指令c:操作码Y,基于RISC-V CPU ISA标准,可确定标准指令集中的标准指令类型为:操作码Y,操作码Z,操作码Q,第一标准指令类型数目的初始值为0。那么所述虚拟机通过本地的取指器读取指令a时,识别出所述指令a的操作码为:操作码X,虚拟机通过所述取指器判断出所述操作码X对应的指令a的指令类型不是标准指令类型,那么第一标准指令类型数目的值为0。
所述虚拟机通过所述取指器(107)读取指令b,识别出所述指令b的操作码为:操作码Y,虚拟机通过所述取指器判断出所述操作码Y对应的指令b的指令类型是标准指令类型,且所述操作码Y对应的指令类型第一次出现在所述测试指令集中,那么将第一标准指令类型数目的值加1,此时第一标准指令类型数目为1。
所述虚拟机通过所述取指器(107)继续读取指令c,识别出所述指令c的操作码为:操作码Y,虚拟机通过所述取指器判断出所述操作码Y对应的指令c的指令类型是标准指令类型,但是所述操作码Y对应的指令类型是第二次出现在所述测试指令集中,那么此时第一标准指令类型数目仍为1。
最后,所述虚拟机对应所述测试指令集记录最终输出的所述第一标准指令类型数目。
具体的,所述虚拟机通过所述取指器依次读取测试指令集中的全部指令,所述测试指令集是由解析至少一个可执行文件所确定的,虚拟机获取的可执行文件的数目可以是一个或是多个。基于上述第一标准指令类型数目的计数方法,所述虚拟机通过所述取指器(107)可以得到所述测试指令集对应的第一标准指令数目。
步骤505:所述虚拟机确定预设的标准指令集对应的第二标准指令类型数目,并基于所述第一标准指令类型数目在所述第二标准指令类型数目中占比,计算相应的指令集覆盖率。
下面以配置有一个和多个可执行文件为例分别说明指令集覆盖率的计算:
(1)仅有一个包含待测试CPU全部功能的可执行文件
虚拟机通过本地的取指器(107)读取指令存储空间的测试指令集,所述测试指令集与所述虚拟机获取的一个可执行文件相对应。所述虚拟机通过本地的配置器(105)配置的RISC-V CPU可执行文件完成所述可执行文件的配置,同时所述虚拟机通过所述配置器配置的RISC-V CPU ISA标准确定了执行规范以及与所述执行规范对应的预设的标准指令集。
所述虚拟机通过所述取指器按照上述计算第一标准指令类型数目的方法得到所述测试指令集中的第一标准指令类型数目,然后基于所述RISC-V CPU ISA标准确定了预设的标准指令集,进而得到第二标准指令集类型数目,所述第二标准指令集类型数目用于表征由RISC-V CPU ISA标准所确定的标准指令集中的标准指令类型数目。基于所述第一标准指令类型数目在所述第二标准指令类型数目中占比,计算出相应的指令集覆盖率。用以衡量对应于述待测试CPU的功能的测试指令集,对于所述执行规范下的标准指令集中标准指令类型的覆盖情况。
(2)具有多个分别包含待测试CPU部分功能的可执行文件
虚拟机通过本地的取指器(107)读取指令存储空间中测试指令集,所述测试指令集由多个可执行文件中记录的测试指令整合而来,所述可执行文件由开发人员将表征待测试CPU功能的代码进行编译得到,虚拟机配置有多个可执行文件,其中,各个可执行文件表征所述待测试CPU的都不相同。
例如,虚拟机依次配置有可执行文件5:表征待测试CPU的D功能、可执行文件6:表征待测试CPU的E功能、可执行文件7:表征待测试CPU的F功能,所述虚拟机配置的执行规范所对应的标准指令集H中的标准指令类型数目为100,第一标准指令类型数目的初始值为0。所述虚拟机通过本地的配置器(105)获取可执行文件5、可执行文件6、可执行文件7后,将可执行文件5、可执行文件6、可执行文件7中的测试指令整合为测试指令集,所述虚拟机通过本地的取指器(107)首先读取标准指令集中的指令,累计得到第一标准类型数目的最终取值为80,计算得到待测试CPU的对于指令集H的指令集覆盖率为80/100=0.8,进而可以基于所述指令集覆盖率对所述待测试CPU的合规与否进行评判。
基于上述实施例,参阅图1所示,本申请实施例中,设置有虚拟机的装置至少包括:
配置器105,获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,其中,一个可执行文件中记录有预设的与待测试CPU的功能相对应的测试指令,所述虚拟机被配置为与待测试CPU具有相同的运行方式;
调试代理模块108,接收调试器发送的控制指令;
取指器107,基于所述控制指令,按照所述CPU的运行方式读取所述测试指令集中的各个指令,确定所述测试指令集对应的第一标准指令类型数目,确定预设的标准指令集对应的第二标准指令类型数目,并基于所述第一标准指令类型数目在所述第二标准指令类型数目中占比,计算相应的指令集覆盖率。
可选的,所述获取至少一个可执行文件之前,所述配置器105用于:
分别确定指令存储空间和数据存储空间的位置和容量,所述指令存储空间用于存储所述至少一个可执行文件中的测试指令,所述数据存储空间用于存储所述虚拟机运行所需要和产生的数据。
可选的,所述获取至少一个可执行文件之前,所述配置器105进一步用于:
确定预设的执行规范,所述执行规范用于确定预设的标准指令集。
可选的,所述获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,所述配置器105用于:
若所述配置器获取了一个可执行文件,所述配置器将所述一个可执行文件中的测试指令作为所述测试指令集;或者,
若所述配置器获取了多个可执行文件,所述配置器将记录在各个可执行文件中的测试指令整合为所述测试指令集。
可选的,所述接收调试器发送的控制指令,所述调试代理模块108用于:
接收调试器发送的控制指令;
将所述控制指令转化为可以识别的指令。
可选的,其特征在于,所述确定所述测试指令集对应的第一标准指令类型数目,所述取指器107用于:
对应所述测试指令集设置第一标准指令类型数目的初始值;
依次针对所述测试指令集中的各个指令分别执行以下操作:
读取一条指令,以及确定所述一条指令的操作码;
基于所述操作码,确定所述一条指令为标准指令类型,且所述标准指令类型首次出现在所述测试指令集中时,将所述第一标准指令类型数目的当前取值加1;
对应所述测试指令集记录最终输出的所述第一标准指令类型数目。
基于同一申请构思,参阅图6所示,本申请实施例中提出一种电子设备,所述电子设备至少包括:存储器601和处理器602,其中,
存储器601,用于存储可执行指令;
处理器602,用于读取并执行所述存储器601中存储的可执行指令,以实现上述任一种方法。
基于同一申请构思,本申请实施例中提供一种存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行上述任一种方法。
综上所述,本申请实施例中,虚拟机获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,其中,一个可执行文件中记录有预设的与待测试CPU的功能相对应的测试指令,所述虚拟机被配置为与待测试CPU具有相同的运行方式,然后,所述虚拟机基于调试器发送的控制指令,按照所述CPU的运行方式读取所述测试指令集中的各个指令,确定所述测试指令集对应的第一标准指令类型数目,再确定预设的标准指令集对应的第二标准指令类型数目,并基于所述第一标准指令类型数目在所述第二标准指令类型数目中占比,计算相应的指令集覆盖率。这样,在执行测试指令集的同时,可以计算得到CPU指令集的覆盖率,为衡量CPU运行的可靠性提供了依据,通过所述指令集的覆盖率可以直观的得到与所开发的待测试CPU的功能相对应的测试指令,对于执行规范所规定的标准指令类型的覆盖情况。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种中央处理器CPU指令集覆盖率计算方法,其特征在于,包括:
虚拟机获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,其中,一个可执行文件中记录有预设的与待测试CPU的功能相对应的测试指令,所述虚拟机被配置为与待测试CPU具有相同的运行方式;
所述虚拟机接收调试器发送的控制指令;
所述虚拟机基于所述控制指令,按照所述CPU的运行方式读取所述测试指令集中的各个指令,确定所述测试指令集对应的第一标准指令类型数目;
所述虚拟机确定预设的标准指令集对应的第二标准指令类型数目,并基于所述第一标准指令类型数目在所述第二标准指令类型数目中占比,计算相应的指令集覆盖率。
2.如权利要求1所述的方法,其特征在于,所述虚拟机获取至少一个可执行文件之前,包括:
所述虚拟机通过本地的配置器分别确定指令存储空间和数据存储空间的位置和容量,所述指令存储空间用于存储所述至少一个可执行文件中的测试指令,所述数据存储空间用于存储所述虚拟机运行所需要和产生的数据。
3.如权利要求1所述的方法,其特征在于,所述虚拟机获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,包括:
若所述虚拟机获取了一个可执行文件,所述虚拟机将所述一个可执行文件中的测试指令作为所述测试指令集;或者,
若所述虚拟机获取了多个可执行文件,所述虚拟机将记录在各个可执行文件中的测试指令整合为所述测试指令集。
4.如权利要求1所述的方法,其特征在于,所述虚拟机接收调试器发送的控制指令,包括:
所述虚拟机通过本地的调试代理模块接收调试器发送的控制指令;
所述虚拟机通过所述调试代理模块将所述控制指令转化为可以识别的指令。
5.如权利要求1-4任一项所述的方法,其特征在于,所述虚拟机确定所述测试指令集对应的第一标准指令类型数目,包括:
所述虚拟机对应所述测试指令集设置第一标准指令类型数目的初始值;
所述虚拟机依次针对所述测试指令集中的各个指令分别执行以下操作:
所述虚拟机通过本地的取指器读取一条指令,以及确定所述一条指令的操作码;
所述虚拟机通过所述取指器,基于所述操作码,确定所述一条指令为标准指令类型,且所述标准指令类型首次出现在所述测试指令集中时,将所述第一标准指令类型数目的当前取值加1;所述虚拟机对应所述测试指令集记录最终输出的所述第一标准指令类型数目。
6.一种中央处理器CPU指令集覆盖率计算装置,其特征在于,包括:
配置器,获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,其中,一个可执行文件中记录有预设的与待测试CPU的功能相对应的测试指令,所述虚拟机被配置为与待测试CPU具有相同的运行方式;
调试代理模块,接收调试器发送的控制指令;
取指器,基于所述控制指令,按照所述CPU的运行方式读取所述测试指令集中的各个指令,确定所述测试指令集对应的第一标准指令类型数目,确定预设的标准指令集对应的第二标准指令类型数目,并基于所述第一标准指令类型数目在所述第二标准指令类型数目中占比,计算相应的指令集覆盖率。
7.如权利要求6所述的装置,其特征在于,所述获取至少一个可执行文件之前,所述配置器用于:
分别确定指令存储空间和数据存储空间的位置和容量,所述指令存储空间用于存储所述至少一个可执行文件中的测试指令,所述数据存储空间用于存储所述虚拟机运行所需要和产生的数据。
8.如权利要求6所述的装置,其特征在于,所述获取至少一个可执行文件,以及确定所述至少一个可执行文件对应的测试指令集,所述配置器用于:
若所述配置器获取了一个可执行文件,所述配置器将所述一个可执行文件中的测试指令作为所述测试指令集;或者,
若所述配置器获取了多个可执行文件,所述配置器将记录在各个可执行文件中的测试指令整合为所述测试指令集。
9.如权利要求6所述的装置,其特征在于,所述接收调试器发送的控制指令,所述调试代理模块用于:
接收调试器发送的控制指令;
将所述控制指令转化为可以识别的指令。
10.如权利要求6-9任一项所述的方法,其特征在于,所述确定所述测试指令集对应的第一标准指令类型数目,所述取指器用于:
对应所述测试指令集设置第一标准指令类型数目的初始值;
依次针对所述测试指令集中的各个指令分别执行以下操作:
读取一条指令,以及确定所述一条指令的操作码;
基于所述操作码,确定所述一条指令为标准指令类型,且所述标准指令类型首次出现在所述测试指令集中时,将所述第一标准指令类型数目的当前取值加1;对应所述测试指令集记录最终输出的所述第一标准指令类型数目。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910882930.7A CN112527571B (zh) | 2019-09-18 | 2019-09-18 | 一种cpu指令集覆盖率计算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910882930.7A CN112527571B (zh) | 2019-09-18 | 2019-09-18 | 一种cpu指令集覆盖率计算方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112527571A true CN112527571A (zh) | 2021-03-19 |
CN112527571B CN112527571B (zh) | 2024-02-02 |
Family
ID=74975124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910882930.7A Active CN112527571B (zh) | 2019-09-18 | 2019-09-18 | 一种cpu指令集覆盖率计算方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112527571B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117648696A (zh) * | 2023-11-27 | 2024-03-05 | 中国电子科技集团公司第十五研究所 | 一种软件安全性测试方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488160A (zh) * | 2009-02-25 | 2009-07-22 | 中国科学院计算技术研究所 | 覆盖率驱动随机验证集成电路的方法及系统 |
US20170161065A1 (en) * | 2012-10-20 | 2017-06-08 | Google Inc. | Generating Code Coverage Data for use with a Computing Device and System |
CN109800159A (zh) * | 2018-12-27 | 2019-05-24 | 百富计算机技术(深圳)有限公司 | 程序调试方法、程序调试装置、终端设备及存储介质 |
CN109992498A (zh) * | 2017-12-29 | 2019-07-09 | 北京京东尚科信息技术有限公司 | 测试用例的生成方法及系统、计算机系统 |
-
2019
- 2019-09-18 CN CN201910882930.7A patent/CN112527571B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488160A (zh) * | 2009-02-25 | 2009-07-22 | 中国科学院计算技术研究所 | 覆盖率驱动随机验证集成电路的方法及系统 |
US20170161065A1 (en) * | 2012-10-20 | 2017-06-08 | Google Inc. | Generating Code Coverage Data for use with a Computing Device and System |
CN109992498A (zh) * | 2017-12-29 | 2019-07-09 | 北京京东尚科信息技术有限公司 | 测试用例的生成方法及系统、计算机系统 |
CN109800159A (zh) * | 2018-12-27 | 2019-05-24 | 百富计算机技术(深圳)有限公司 | 程序调试方法、程序调试装置、终端设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
方红霞;李华伟;李晓维;: "RTL和门级结合的处理器时延测试产生方法", 计算机辅助设计与图形学学报, no. 01, pages 75 - 81 * |
王彬,任艳颖,林争辉: "事务级形式验证技术及8051验证模型", 计算机辅助设计与图形学学报, no. 08, pages 10 - 13 * |
郑宏超等: "微处理器高低速模式下的单粒子功能错误分析", 《微电子学与计算机》, vol. 31, no. 7, pages 18 - 21 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117648696A (zh) * | 2023-11-27 | 2024-03-05 | 中国电子科技集团公司第十五研究所 | 一种软件安全性测试方法及装置 |
CN117648696B (zh) * | 2023-11-27 | 2024-06-04 | 中国电子科技集团公司第十五研究所 | 一种软件安全性测试方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112527571B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110580226B (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
KR102537875B1 (ko) | 차량 ecu 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치 | |
US9946628B2 (en) | Embedding and executing trace functions in code to gather trace data | |
US20200167159A1 (en) | Processor testing | |
CN110907882B (zh) | 一种面向电能表的虚拟化的测试方法及系统 | |
KR101029332B1 (ko) | 모바일 소프트웨어 테스트 장치 및 방법 | |
CN112527571B (zh) | 一种cpu指令集覆盖率计算方法及装置 | |
CN111566625A (zh) | 测试用例生成装置、测试用例生成方法和测试用例生成程序 | |
CN112631949B (zh) | 一种调试方法、装置、计算机设备及存储介质 | |
CN115732025A (zh) | Ram访问冲突的验证方法及验证装置 | |
CN110096888B (zh) | 一种加快验证及分析smm安全隐患的方法及系统 | |
CN109753308B (zh) | 指令通路验证系统及指令通路监测方法 | |
CN112765021A (zh) | 一种引导程序的调试检验方法、装置、设备及存储介质 | |
CN117093353B (zh) | 一种中断控制方法、装置、电子设备及可读存储介质 | |
JP2005353020A (ja) | コンピュータプログラムのシミュレーション方式 | |
CN106649074A (zh) | 一种智能卡的程序调试方法及装置 | |
JPH0934754A (ja) | プログラムの性能測定装置と方法 | |
KR20190083512A (ko) | 소프트웨어 검증 장치 및 방법 | |
CN117236277B (zh) | 用于检查寄存器的方法及装置、电子设备 | |
CN108604205B (zh) | 测试点的创建方法,装置和系统 | |
CN112711494A (zh) | 一种宕机故障定位方法及装置 | |
US9690686B1 (en) | Method for setting breakpoints in automatically loaded software | |
CN116339904A (zh) | 一种基于硬件辅助的虚拟化指令模拟错误检测方法及系统 | |
JP2967741B2 (ja) | Cpu互換性テスト装置 | |
CN114327648A (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 |