CN114035846A - 一种指令验证方法及指令验证装置 - Google Patents
一种指令验证方法及指令验证装置 Download PDFInfo
- Publication number
- CN114035846A CN114035846A CN202111356003.5A CN202111356003A CN114035846A CN 114035846 A CN114035846 A CN 114035846A CN 202111356003 A CN202111356003 A CN 202111356003A CN 114035846 A CN114035846 A CN 114035846A
- Authority
- CN
- China
- Prior art keywords
- instruction code
- register
- machine instruction
- instruction
- register value
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种指令验证方法及指令验证装置,其中,所述方法包括:获取机器指令码,所述机器指令码为基于指令配置文件中所述机器指令码的指令配置信息生成的;将所述机器指令码发送至CPU中的指令解码器,以由所述CPU从所述指令解码器开始对所述机器指令码执行指令处理,并生成所述机器指令码的执行结果;将所述机器指令码的执行结果与所述机器指令码对应的标准结果进行比对,以根据比对结果判断所述机器指令码是否被所述CPU正确执行。本发明提供的技术方案,能够提高指令验证的效率。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种指令验证方法及指令验证装置。
背景技术
在设计CPU(Central Processing Unit,中央处理器)的过程中,可以利用CPU来处理指令集中的各条指令,通过验证指令是否均被正确执行,从而可以判断设计的CPU功能是否正常。
例如,精简指令集处理器(Reduced Instruction Set Computer,RISC)可以按照图1所示的验证流程进行指令验证。在图1所示的过程中,首先需要通过C语言或者汇编语言编写测试代码,该测试代码经过软件编译器可以编译为能够被处理器识别的机器指令码。该机器指令码可以被加载到内存中,然后待验证的CPU可以从内存中读取并处理机器指令码。
CPU在验证机器指令码的过程中,通常可以经过取指(fetch,FE)、对齐(align,AL)、解码(decode,DE)、寄存器访问(reg file,RF)、执行(execute,EX)、选择(select,SEL)以及回写(write back,WB)这多个步骤。经过这多个步骤处理后,就能得到机器指令码的执行结果,通过对执行结果进行分析,便可以知晓机器指令码是否被CPU进行了正确的处理。
按照图1所示的流程进行指令验证时,通常会存在验证效率较低的问题。原因在于,测试代码经过编译之后,通常会出现与待验证的指令无关的其它指令。例如在验证cp指令时,经过编译之后,通常需要先执行两条寄存器的加载指令,然后才会执行cp指令。也就是说,在现有技术中,当需要对某一条指令进行验证时,通常需要花费多条指令的执行时间,这无疑会降低指令验证的效率。
发明内容
有鉴于此,本发明实施方式提供了一种指令验证方法及指令验证装置,能够提高指令验证的效率。
本发明一方面提供了一种指令验证方法,所述方法应用于指令验证装置中,所述方法包括:获取机器指令码,所述机器指令码为基于指令配置文件中所述机器指令码的指令配置信息生成的;将所述机器指令码发送至CPU中的指令解码器,以由所述CPU从所述指令解码器开始对所述机器指令码执行指令处理,并生成所述机器指令码的执行结果;将所述机器指令码的执行结果与所述机器指令码对应的标准结果进行比对,以根据比对结果判断所述机器指令码是否被所述CPU正确执行。
在一个实施方式中,在获取待验证的机器指令码之后,所述方法还包括:当所述机器指令码表征对寄存器的配置指令时,通过所述指令验证装置中的寄存器模块以后门访问的方式,对所述寄存器进行访问操作,其中,所述寄存器为所述CPU在执行指令处理过程中访问的寄存器。
在一个实施方式中,在将所述机器指令码发送至CPU的指令解码器之前,所述方法还包括:若所述机器指令码表征对寄存器的读取指令,则通过所述指令验证装置中的寄存器模块以后门访问的方式,将所述机器指令码中携带的第一寄存器值写入所述寄存器中,以使得CPU在对所述机器指令码进行处理时,从所述寄存器中读取第二寄存器值,并将读取的所述第二寄存器值作为所述机器指令码的执行结果。
在一个实施方式中,所述机器指令码中携带的第一寄存器值作为所述机器指令码对应的标准结果;将所述机器指令码的执行结果与所述机器指令码对应的标准结果进行比对包括:获取所述机器指令码的执行结果表征的所述第二寄存器值;将所述第二寄存器值与所述第一寄存器值进行对比;若所述第二寄存器值与所述第一寄存器值相同,则判定所述机器指令码被正确执行。
在一个实施方式中,若所述机器指令码表征对寄存器的写入指令,所述机器指令码中携带的第三寄存器值被所述CPU写入所述寄存器中,所述第三寄存器值作为所述机器指令码对应的标准结果;将所述机器指令码的执行结果与所述机器指令码对应的标准结果进行比对包括:通过寄存器模块以后门访问的方式,从所述寄存器中读取第四寄存器值,所述第四寄存器值作为所述机器指令码的执行结果;将读取的所述第四寄存器值与所述第三寄存器值进行对比;若所述第四寄存器值与所述第三寄存器值相同,判定所述机器指令码被正确执行。
在一个实施方式中,所述指令验证装置包括解码器接口;将所述机器指令码发送至CPU中的指令解码器,包括:通过所述解码器接口将所述机器指令码发送至CPU中的指令解码器。
本发明另一方面还提供了一种指令验证装置,所述指令验证装置包括指令生成模块、指令解析模块以及比较器,其中:所述指令生成模块,用于根据指令配置文件生成机器指令码;所述指令解析模块,用于获取所述机器指令码,并将所述机器指令码发送至CPU中的指令解码器,以由所述CPU从所述指令解码器开始对所述机器指令码执行指令处理,并生成所述机器指令码的执行结果;所述比较器,用于将所述机器指令码的执行结果与所述机器指令码对应的标准结果进行比对,以根据比对结果判断所述机器指令码是否被所述CPU正确执行。
在一个实施方式中,所述指令验证装置还包括寄存器模块,其中:
所述寄存器模块用于在所述机器指令码表征对寄存器的配置指令的情况下,以后门访问的方式,对所述寄存器进行访问操作,其中,所述寄存器为所述CPU在执行指令处理过程中访问的寄存器。
在一个实施方式中,所述寄存器模块,具体用于若所述机器指令码表征对寄存器的读取指令,则以后门访问的方式,将所述机器指令码中携带的第一寄存器值写入所述寄存器中,以使得CPU在对所述机器指令码进行处理时,从所述寄存器中读取第二寄存器值,并将读取的所述第二寄存器值作为所述机器指令码的执行结果。
在一个实施方式中,所述机器指令码中携带的第一寄存器值作为所述机器指令码对应的标准结果;
所述比较器,具体用于获取所述机器指令码的执行结果表征的所述第二寄存器值;将所述第二寄存器值与所述第一寄存器值进行对比;若所述第二寄存器值与所述第一寄存器值相同,则判定所述机器指令码被正确执行。
在一个实施方式中,若所述机器指令码表征对寄存器的写入指令,所述机器指令码中携带的第三寄存器值被所述CPU写入所述寄存器中,所述第三寄存器值作为所述机器指令码对应的标准结果;
所述寄存器模块,具体用于以后门访问的方式,从所述寄存器中读取第四寄存器值,所述第四寄存器值作为所述机器指令码的执行结果;
所述比较器,具体用于将读取的所述第四寄存器值与所述第三寄存器值进行对比;若所述第四寄存器值与所述第三寄存器值相同,判定所述机器指令码被正确执行。
在一个实施方式中,所述指令解析模块通过解码器接口将所述机器指令码发送至CPU中的指令解码器。
本发明另一方面还提供了一种计算机存储介质,所述计算机存储介质用于存储计算机程序,所述计算机程序被处理器执行时,实现上述的指令验证方法。
本申请一个或者多个实施方式提供的技术方案,并不需要先生成测试代码,然后再通过编译的方式生成对应的机器指令码,而是可以直接按照指令配置文件生成机器指令码,这样省去了测试代码的编写和编译过程,简化了机器指令码的生成步骤,并且无需先执行寄存器加载指令。
后续,在进行机器指令码的验证时,可以绕过取指和对齐流程,直接将机器指令码送入CPU的指令解码器中进行解码。这样,一方面简化了指令的验证流程,另一方面可以直接对机器指令码进行处理,从而提升了指令验证效率。
进一步地,指令验证装置可以通过寄存器模块以后门访问的方式,对寄存器进行数据读取或者数据写入,从而节省了CPU内部寄存器的读写时间,进一步提升了指令验证的效率。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1示出了现有技术中指令验证的系统结构示意图;
图2示出了本发明一个实施方式中指令验证的系统结构示意图;
图3示出了本发明一个实施方式中指令验证方法的步骤示意图;
图4示出了本发明一个实施方式中解码器接口的连线示意图。
具体实施方式
为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
本申请提供的指令验证方法,可以应用于图2所示的指令验证装置中。在图2中,指令验证装置可以与CPU具备连接关系。在仿真环境中,指令验证装置与CPU都可以通过软件的形式来表示,指令验证装置与CPU之间从而可以通过电信号连接的方式进行连接。需要说明的是,上述的CPU,指的是需要进行指令集验证的CPU,该CPU在软件环境中通过指令集验证之后,可以进行后续的封装,从而形成硬件的处理器。通常而言,指令验证装置中也会存在CPU,只不过指令验证装置中的CPU只是为了保证指令验证装置的验证流程能够正常执行,与需要进行指令集验证的CPU是两个不同的主体。在本申请中,与指令验证装置进行数据交互的CPU,都是指需要进行指令集验证的CPU。指令验证装置可以获取待验证的机器指令码,然后将该机器指令码送入到CPU内进行处理,对于处理的结果,指令验证装置可以进行分析,从而判断当前的机器指令码是否被CPU正确执行。在图2中,CPU内部会存在寄存器。CPU在执行部分机器指令码时,可能需要向该寄存器中写入数据,或者从该寄存器中读取数据。
具体地,请参阅图2和图3,上述的指令验证方法可以包括以下多个步骤。
S1:获取机器指令码,所述机器指令码为基于指令配置文件中所述机器指令码的指令配置信息生成的。
在本实施方式中,待验证的机器指令码可以由图2中的指令生成模块生成。在指令生成模块中,可以包括指令配置文件和指令生成器。其中,指令生成器通过读取指令配置文件,可以按照指令配置文件限定的内容来生成待验证的机器指令码。
在本实施方式中,指令配置文件可以限定机器指令码中包含的字段以及各个字段的赋值。请参阅表1,以st指令为例,指令配置文件可以限定st指令中包含OPCODE、SUB-CODE(记为S-CODE)、C-FIELD(记为C)、B-FIELD(记为B)、A-FIELD(记为A)、多个寄存器(reg)的值等字段。其中,指令配置文件可以限定OPCODE字段的赋值为0x1,SUB-CODE的赋值为0x5,C-FIELD的赋值为random,B-FIELD的赋值为reg2,A-FIELD的赋值为reg1,寄存器reg1的值为random,寄存器reg2的值为unuse。这样,指令生成器对指令配置文件进行解析后,就可以生成由指令配置文件所限定的机器指令码。
表1指令配置文件限定的st指令的格式
指令名 | OPCODE | S-CODE | C | B | A | reg1 | reg2 |
st | 0x1 | 0x5 | random | reg2 | reg1 | random | unuse |
在实际应用中,指令生成器可以批量生成多个待验证的机器指令码,这些机器指令码可以汇总为一个列表,该列表中的机器指令码可以由指令验证装置中的指令解析模块逐一读取,以通过CPU对这些机器指令码进行验证。
在本实施方式中,指令验证装置中可以包括指令生成模块、指令解析模块以及比较器(checker)。指令解析模块可以遍历指令生成模块生成的列表,从而读取列表中的各条机器指令码。在实际应用中,指令验证装置中还可以包括监测器(monitor),监测器可以监听CPU针对机器指令码的执行结果,并将执行结果送入比较器中,以通过比较器将执行结果与标准结果进行比对,从而判断机器指令码是否被CPU正确执行。
在一个实施方式中,指令解析模块在获取了待验证的机器指令码后,可以先判断机器指令码是否表征对寄存器的配置指令。该寄存器为CPU在执行指令处理过程中访问的寄存器。其中,该配置指令可以包括针对寄存器的读取指令和写入指令。为了提高指令验证效率,在本实施方式中,如果机器指令码表征对寄存器的配置指令,指令解析模块可以通过上述的寄存器模块,以后门访问的方式,对所述寄存器进行访问操作。具体地,通过寄存器模块,可以从寄存器中读取该配置指令对应的寄存器值或者将该配置指令对应的寄存器值写入寄存器中。至于是读取寄存器值还是写入寄存器值,以及读取和写入的时机选择,都可以根据实际场景进行区分。
需要说明的是,上述的寄存器模块可以是采用现有的UVM(UniversalVerification Methodology,通用验证方法学)架构来实现的寄存器模型,根据应用的场景,寄存器模型也可以分为简单模型和复杂模型。例如,简单模型可以通过将一个寄存器加入到uvm_reg_block中,并在最后的base_test中实例化此uvm_reg_block,从而实现简单的寄存器模型。在另一种场景下,可以将加入了寄存器的uvm_reg_block再加入一个uvm_reg_block中,然后在base_test中实例化后一个uvm_reg_block,这样,从逻辑关系上看,最终的寄存器模型呈现出的是两级的寄存器模型,该寄存器模型就可以作为复杂的寄存器模型。
当然,寄存器模型可以根据实际应用场景的需求进行灵活设置,只要能够实现对寄存器中的数据进行后门访问即可,这里就不再赘述。
在寄存器模型中,可以通过poke_counter来实现后门写入,并且通过peek_counter来实现后门读取。
在一个实施方式中,如果机器指令码表征的是对寄存器的读取指令,那么在该机器指令码中通常会携带一个寄存器值,该寄存器值可以作为第一寄存器值。该第一寄存器值的作用是先写入寄存器中,然后在执行该机器指令码时,会再从寄存器中尝试读取该第一寄存器值,由于读取的过程并不一定顺利,因此可以将读取到的寄存器值称为第二寄存器值。通过判断第二寄存器值与第一寄存器值是否一致,就能判断该针对寄存器进行读取操作的及其指令码是否被CPU正确执行。
在本实施方式中,预先将第一寄存器值写入寄存器中的过程,可以通过上述的寄存器模块来实现。这样,通过寄存器模块以后门访问的方式,将机器指令码中携带的第一寄存器值写入寄存器中,可以避免执行加载寄存器的指令,从而简化了指令验证的过程。
在另一个实施方式中,如果机器指令码表征对寄存器的写入指令,那么在该机器指令码中就会携带待写入的第三寄存器值。后续,CPU在对该机器指令码进行处理时,就可以将机器指令码中携带的第三寄存器值写入寄存器中。为了验证CPU是否正确执行了该机器指令码,可以从寄存器中读取由CPU写入的寄存器值,读取的该寄存器值可以称为第四寄存器值。通过判断第四寄存器值与第三寄存器值是否一致,从而可以确定出CPU是否正确执行了该机器指令码。
在本实施方式中,从寄存器中读取第四寄存器值的过程,就可以通过上述的寄存器模块来实现。通过寄存器模块以后门访问的方式,可以从寄存器中读取出该第四寄存器值。
由上可见,根据机器指令码对应的配置操作的不同,指令解析模块可以在不同的时机,调用寄存器模块针对寄存器进行寄存器值的读取或者寄存器值的写入,从而避免执行加载寄存器的指令,简化了指令验证的过程。
需要说明的是,上述的机器指令码如果表征对寄存器的读取指令,那么实际从寄存器中读取寄存器值的过程,是需要由CPU来执行,而不能通过寄存器模块来执行,否则就无法判断出CPU是否能够正常执行从寄存器中读取寄存器值的操作。在这个过程中,寄存器模块只能将需要读取的寄存器值预先写入寄存器中。
同理,上述的机器指令码如果表征对寄存器的写入操作,那么向寄存器中写入寄存器值的过程,也是需要由CPU来执行,而不能通过寄存器模块来执行,否则就无法判断出CPU是否能够正常执行向寄存器中写入寄存器值的操作。在寄存器值写入完成后,可以由寄存器模块从寄存器中读取寄存器值,从而进行后续判断执行结果是否正确的过程。
S2:将所述机器指令码发送至CPU中的指令解码器,以由所述CPU从所述指令解码器开始对所述机器指令码执行指令处理,并生成所述机器指令码的执行结果。
在本实施方式中,请参阅图2,为了简化指令验证流程,指令验证装置中的指令解析模块可以通过指令解码器接口,直接与CPU中的指令解码器(DE)进行连接,而不是与其中的取指单元(FE)连接。这样,指令解析模块在获取到待验证的机器指令码后,可以绕过取指单元和对齐单元,直接将该机器指令码发送至指令解码器中进行解码。解码后的机器指令码可以继续通过CPU中后续的RF单元、EX单元、SEL单元以及WB单元的处理,从而生成对应的执行结果。
具体地,请参阅图4,解码器接口的各路信号可以按照指令解码器的各路信号进行设置,以保证解码器接口的各路信号与指令解码器的各路信号一一对应,这样在绕过FE单元和AL单元后,由解码器接口传输至指令解码器的数据能够被指令解码器正常处理。如图4所示,指令解码器的各路信号可以包括dec_inst_valid_r、dec_inst_16b_r、dec_inst_addr_r、dec_inst_word_r、dec_limm_valid_r、dec_limm_request_r以及dec_rf_stall_a_n(在图4中未完全示出),其中,dec_inst_valid_r可以传输数据有效标志,dec_inst_word_r则可以传输机器指令码。解码器接口的各路信号可以按照指令解码器的各路信号一一设置,从而传入所需格式的信号。
在实际应用中,解码器接口可以通过force的方式,将信号加载到指令解码器上。但由于采用force的方式来施加信号时,有时候会导致信号毛刺的出现,为了解决这个缺陷,也可以通过修改CPU内部连线的方式,将前级单元(例如AL单元)与指令解码器之间的连线断开,并将解码器接口挂接到指令解码器上。具体采用何种连接方式,可以根据实际应用场景的需求进行灵活选择。
在一个实施方式中,考虑到部分机器指令码在执行之前,需要进行指令对齐操作。例如对于变长指令码而言,需要对齐到32bits边界,在这种情况下,这种数据对齐需求可以由指令解码器规定。当指令解析模块通过解码器接口向指令解码器传入机器指令码时,可以识别该指令解码器的数据对齐需求,并在确认机器指令码符合该数据对齐需求的情况下,再将机器指令码发送至指令解码器中,从而保证指令解码器能够正常地对传入的机器指令码进行解码处理。
S3:将所述机器指令码的执行结果与所述机器指令码对应的标准结果进行比对,以根据比对结果判断所述机器指令码是否被所述CPU正确执行。
在本实施方式中,CPU中的各个模块在对机器指令码进行处理,生成对应的执行结果后,可以由比较器将执行结果与机器指令码对应的标准结果进行比对,从而根据比对结果判断该机器指令码是否被CPU正确执行。其中,机器指令码对应的标准结果,可以是机器指令码预先设定的。例如,对于读取指令而言,该标准结果可以是上述的第一寄存器值;而对于写入指令而言,该标准结果可以是上述的第三寄存器值。其中,标准结果通常都携带在机器指令码中,指令验证装置在读取机器指令码时,可以将其中的标准结果暂存在本地缓存中。后续在将执行结果与标准结果进行比对时,可以从本地缓存中加载对应的标准结果。
具体地,根据机器指令码类型的不同,比较器的处理过程也可能会不同。举例来说,在步骤S1的描述中,如果机器指令码表征的是对寄存器的读取指令,那么可以通过寄存器模块,以后门访问的方式,先将机器指令码中携带的第一寄存器值写入寄存器中。然后CPU在对机器指令码进行处理时,可以从所述寄存器中读取出第二寄存器值,并将读取的该第二寄存器值作为所述机器指令码的执行结果。CPU读取的第二寄存器值可以被比较器获取,通过将获取的所述第二寄存器值与从本地缓存中读取的所述第一寄存器值进行对比,从而可以判断所述第二寄存器值与所述第一寄存器值是否相同。其中,若所述第二寄存器值与所述第一寄存器值相同,则可以判定所述机器指令码被正确执行。而如果所述第二寄存器值与所述第一寄存器值不同,则可以判定所述机器指令码未被正确执行。
在另一个实施方式中,如果机器指令码表征对寄存器的写入指令,CPU在对该机器指令码进行处理时,可以将机器指令码中携带的第三寄存器值写入寄存器中。为了验证CPU是否正确执行了该机器指令码,可以通过寄存器模块,以后门访问的方式,从寄存器中读取出第四寄存器值,该第四寄存器值就可以作为机器执行码的执行结果。将读取的所述第四寄存器值与所述第三寄存器值进行对比,从而可以判断所述第四寄存器值与所述第三寄存器值是否相同。其中,若所述第四寄存器值与所述第三寄存器值相同,则判定所述机器指令码被正确执行。而如果所述第四寄存器值与所述第三寄存器值不同,则可以判定所述机器指令码未被正确执行。
在本实施方式中,在对列表中的各条机器指令码都完成执行后,可以判断是否存在未被正确执行的机器指令码,如果存在,则表明CPU的设计不达标,需要重新设计。
本申请一个或者多个实施方式提供的技术方案,并不需要先生成测试代码,然后再通过编译的方式生成对应的机器指令码,而是可以直接按照指令配置文件生成机器指令码,这样省去了测试代码的编写和编译过程,简化了机器指令码的生成步骤,并无需先执行寄存器加载指令。
后续,在进行机器指令码的验证时,可以绕过取指和对齐流程,直接将机器指令码送入CPU的指令解码器中进行解码。这样,一方面简化了指令的验证流程,另一方面可以直接对机器指令码进行处理,从而提升了指令验证效率。
进一步地,指令验证装置可以通过寄存器模块以后门访问的方式,对寄存器进行数据读取或者数据写入,从而节省了CPU内部寄存器的读写时间,进一步提升了指令验证的效率。
请结合图2,本申请一个实施方式还提供一种指令验证装置,所述指令验证装置包括指令生成模块、指令解析模块以及比较器,其中:
所述指令生成模块,用于根据指令配置文件生成机器指令码;
所述指令解析模块,用于获取所述机器指令码,并将所述机器指令码发送至CPU中的指令解码器,以由所述CPU从所述指令解码器开始对所述机器指令码执行指令处理,并生成所述机器指令码的执行结果;
所述比较器,用于将所述机器指令码的执行结果与所述机器指令码对应的标准结果进行比对,以根据比对结果判断所述机器指令码是否被所述CPU正确执行。
在一个实施方式中,所述指令验证装置还包括监测器,所述监测器用于监听CPU针对机器指令码的执行结果,并将执行结果送入比较器中,以通过比较器将执行结果与标准结果进行比对,从而判断机器指令码是否被CPU正确执行。
在一个实施方式中,所述指令验证装置还包括寄存器模块,其中:
所述寄存器模块,用于在所述机器指令码表征对寄存器的配置指令的情况下,以后门访问的方式,对所述寄存器进行访问操作,其中,所述寄存器为所述CPU在执行指令处理过程中访问的寄存器。
在一个实施方式中,所述寄存器模块,具体用于若所述机器指令码表征对寄存器的读取指令,则以后门访问的方式,将所述机器指令码中携带的第一寄存器值写入所述寄存器中,以使得CPU在对所述机器指令码进行处理时,从所述寄存器中读取第二寄存器值,并将读取的所述第二寄存器值作为所述机器指令码的执行结果。
在一个实施方式中,所述机器指令码中携带的第一寄存器值作为所述机器指令码对应的标准结果;
所述比较器,具体用于获取所述机器指令码的执行结果表征的所述第二寄存器值;将所述第二寄存器值与所述第一寄存器值进行对比;若所述第二寄存器值与所述第一寄存器值相同,则判定所述机器指令码被正确执行。
在一个实施方式中,若所述机器指令码表征对寄存器的写入指令,所述机器指令码中携带的第三寄存器值被所述CPU写入所述寄存器中,所述第三寄存器值作为所述机器指令码对应的标准结果;
所述寄存器模块,具体用于以后门访问的方式,从所述寄存器中读取第四寄存器值,所述第四寄存器值作为所述机器指令码的执行结果;
所述比较器,具体用于将读取的所述第四寄存器值与所述第三寄存器值进行对比;若所述第四寄存器值与所述第三寄存器值相同,判定所述机器指令码被正确执行。
在一个实施方式中,所述指令解析模块通过解码器接口将所述机器指令码发送给CPU中的指令解码器。
本申请一个实施方式还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器执行时,实现上述的指令验证方法。
本申请一个实施方式还提供一种电子设备,所述电子设备中包括上述的指令验证装置。
其中,处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施方式中的方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施方式中的方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本领域技术人员可以理解,实现上述实施方式方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施方式的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random AccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (12)
1.一种指令验证方法,其特征在于,所述方法应用于指令验证装置中,所述方法包括:
获取机器指令码,所述机器指令码为基于指令配置文件中所述机器指令码的指令配置信息生成的;
将所述机器指令码发送至CPU中的指令解码器,以由所述CPU从所述指令解码器开始对所述机器指令码执行指令处理,并生成所述机器指令码的执行结果;
将所述机器指令码的执行结果与所述机器指令码对应的标准结果进行比对,以根据比对结果判断所述机器指令码是否被所述CPU正确执行。
2.根据权利要求1所述的方法,其特征在于,在获取待验证的机器指令码之后,所述方法还包括:
当所述机器指令码表征对寄存器的配置指令时,通过所述指令验证装置中的寄存器模块以后门访问的方式,对所述寄存器进行访问操作,其中,所述寄存器为所述CPU在执行指令处理过程中访问的寄存器。
3.根据权利要求1或2所述的方法,其特征在于,在将所述机器指令码发送至CPU的指令解码器之前,所述方法还包括:
若所述机器指令码表征对寄存器的读取指令,则通过所述指令验证装置中的寄存器模块以后门访问的方式,将所述机器指令码中携带的第一寄存器值写入所述寄存器中,以使得CPU在对所述机器指令码进行处理时,从所述寄存器中读取第二寄存器值,并将读取的所述第二寄存器值作为所述机器指令码的执行结果。
4.根据权利要求3所述的方法,其特征在于,所述机器指令码中携带的第一寄存器值作为所述机器指令码对应的标准结果;
将所述机器指令码的执行结果与所述机器指令码对应的标准结果进行比对,包括:
获取所述机器指令码的执行结果表征的所述第二寄存器值;
将所述第二寄存器值与所述第一寄存器值进行对比;
若所述第二寄存器值与所述第一寄存器值相同,则判定所述机器指令码被正确执行。
5.根据权利要求1或2所述的方法,其特征在于,若所述机器指令码表征对寄存器的写入指令,所述机器指令码中携带的第三寄存器值被所述CPU写入所述寄存器中,所述第三寄存器值作为所述机器指令码对应的标准结果;
将所述机器指令码的执行结果与所述机器指令码对应的标准结果进行比对,包括:
通过寄存器模块以后门访问的方式,从所述寄存器中读取第四寄存器值,所述第四寄存器值作为所述机器指令码的执行结果;
将读取的所述第四寄存器值与所述第三寄存器值进行对比;
若所述第四寄存器值与所述第三寄存器值相同,判定所述机器指令码被正确执行。
6.根据权利要求1所述的方法,其特征在于,所述指令验证装置包括解码器接口;将所述机器指令码发送至CPU中的指令解码器,包括:
通过所述解码器接口将所述机器指令码发送至CPU中的指令解码器。
7.一种指令验证装置,其特征在于,所述指令验证装置包括指令生成模块、指令解析模块以及比较器,其中:
所述指令生成模块,用于根据指令配置文件生成机器指令码;
所述指令解析模块,用于获取所述机器指令码,并将所述机器指令码发送至CPU中的指令解码器,以由所述CPU从所述指令解码器开始对所述机器指令码执行指令处理,并生成所述机器指令码的执行结果;
所述比较器,用于将所述机器指令码的执行结果与所述机器指令码对应的标准结果进行比对,以根据比对结果判断所述机器指令码是否被所述CPU正确执行。
8.根据权利要求7所述的指令验证装置,其特征在于,所述指令验证装置还包括寄存器模块,其中:
所述寄存器模块,用于在所述机器指令码表征对寄存器的配置指令的情况下,以后门访问的方式,对所述寄存器进行访问操作,其中,所述寄存器为所述CPU在执行指令处理过程中访问的寄存器。
9.根据权利要求8所述的指令验证装置,其特征在于,
所述寄存器模块,具体用于若所述机器指令码表征对寄存器的读取指令,则以后门访问的方式,将所述机器指令码中携带的第一寄存器值写入所述寄存器中,以使得CPU在对所述机器指令码进行处理时,从所述寄存器中读取第二寄存器值,并将读取的所述第二寄存器值作为所述机器指令码的执行结果。
10.根据权利要求9所述的指令验证装置,其特征在于,所述机器指令码中携带的第一寄存器值作为所述机器指令码对应的标准结果;
所述比较器,具体用于获取所述机器指令码的执行结果表征的所述第二寄存器值;将所述第二寄存器值与所述第一寄存器值进行对比;若所述第二寄存器值与所述第一寄存器值相同,则判定所述机器指令码被正确执行。
11.根据权利要求8所述的指令验证装置,其特征在于,若所述机器指令码表征对寄存器的写入指令,所述机器指令码中携带的第三寄存器值被所述CPU写入所述寄存器中,所述第三寄存器值作为所述机器指令码对应的标准结果;
所述寄存器模块,具体用于以后门访问的方式,从所述寄存器中读取第四寄存器值,所述第四寄存器值作为所述机器指令码的执行结果;
所述比较器,具体用于将读取的所述第四寄存器值与所述第三寄存器值进行对比;若所述第四寄存器值与所述第三寄存器值相同,判定所述机器指令码被正确执行。
12.根据权利要求7所述的指令验证装置,其特征在于,所述指令解析模块通过解码器接口将所述机器指令码发送至CPU中的指令解码器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111356003.5A CN114035846A (zh) | 2021-11-16 | 2021-11-16 | 一种指令验证方法及指令验证装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111356003.5A CN114035846A (zh) | 2021-11-16 | 2021-11-16 | 一种指令验证方法及指令验证装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114035846A true CN114035846A (zh) | 2022-02-11 |
Family
ID=80144628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111356003.5A Pending CN114035846A (zh) | 2021-11-16 | 2021-11-16 | 一种指令验证方法及指令验证装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114035846A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117172209A (zh) * | 2023-11-03 | 2023-12-05 | 睿思芯科(深圳)技术有限公司 | 芯片的验证系统、方法及相关设备 |
-
2021
- 2021-11-16 CN CN202111356003.5A patent/CN114035846A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117172209A (zh) * | 2023-11-03 | 2023-12-05 | 睿思芯科(深圳)技术有限公司 | 芯片的验证系统、方法及相关设备 |
CN117172209B (zh) * | 2023-11-03 | 2024-02-27 | 睿思芯科(深圳)技术有限公司 | 芯片的验证系统、方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704304B (zh) | 一种应用程序测试方法、装置、存储介质和服务器 | |
US9858057B2 (en) | Methods and apparatus to validate translated guest code in a dynamic binary translator | |
US8918678B2 (en) | Functional testing of a processor design | |
US9785536B2 (en) | Code injection for conditional breakpoints | |
CN107329889B (zh) | 一种c编译器自动化测试的方法 | |
CN111124870A (zh) | 一种接口测试方法及装置 | |
CN105094910A (zh) | 一种驱动函数用户态调试系统和方法 | |
US9639451B2 (en) | Debugger system, method and computer program product for utilizing hardware breakpoints for debugging instructions | |
CN107908490B (zh) | 一种服务器dc测试中gpu寄存器可靠性验证方法与系统 | |
KR100607023B1 (ko) | 프로그램 처리 장치 | |
CN112131573A (zh) | 安全漏洞的检测方法、装置及存储介质 | |
CN114035846A (zh) | 一种指令验证方法及指令验证装置 | |
CN112417014A (zh) | 动态修改执行计划方法、系统、计算机可读存储介质 | |
CN103294837B (zh) | 一种集成电路的验证调试方法及系统 | |
US12072789B2 (en) | Resumable instruction generation | |
CN110908882A (zh) | 一种应用程序的性能分析方法、装置、终端设备及介质 | |
CN109408063B (zh) | 基于虚拟机的指令插桩方法及装置 | |
CN114564396A (zh) | 基于数据路径约束求解的随机指令测试程序生成方法 | |
CN115858256A (zh) | 一种物联网设备的测试方法、装置及电子设备 | |
CN115495388B (zh) | 用于ai推理芯片的芯片验证方法、装置、设备及介质 | |
CN112580282B (zh) | 用于集成电路设计验证的方法、装置、设备以及存储介质 | |
CN113688359B (zh) | 针对程序代码的处理方法、装置、计算设备及介质 | |
CN109753308A (zh) | 指令通路验证系统及指令通路监测方法 | |
CN111240756B (zh) | 一种图形功能的处理模式可配置的应用程序的执行方法 | |
WO2024113786A1 (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 |