CN114064478A - 生成验证用例的方法及装置 - Google Patents
生成验证用例的方法及装置 Download PDFInfo
- Publication number
- CN114064478A CN114064478A CN202111357758.7A CN202111357758A CN114064478A CN 114064478 A CN114064478 A CN 114064478A CN 202111357758 A CN202111357758 A CN 202111357758A CN 114064478 A CN114064478 A CN 114064478A
- Authority
- CN
- China
- Prior art keywords
- verification
- instruction
- register
- case
- general
- 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
- 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/3684—Test management for test design, e.g. generating new test cases
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Advance Control (AREA)
Abstract
本公开涉及一种生成验证用例的方法、装置、设备、计算机程序产品和计算机可读存储介质。所述方法包括:对于多个通用寄存器中的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值;在指令库中随机地每次获取一条指令作为验证指令,执行所述验证指令,并根据所述验证指令的执行结果判断所述验证指令是否适合用于所述验证用例;根据适合用于所述验证用例的验证指令的执行结果,选择所述第一加载指令中的至少一部分加载指令;利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例。
Description
技术领域
本公开涉及处理器验证领域,更具体地,涉及一种生成验证用例的方法、装置、设备、计算机程序产品和存储介质。
背景技术
处理器作为计算机系统的运算和控制核心,负责读取指令、对指令译码并执行指令,是信息处理、程序运行的最终执行单元。处理器自产生以来,在逻辑结构、运行效率以及功能外延上取得了巨大发展。处理器架构设计的迭代更新以及集成电路工艺的不断提升促使其不断发展完善。
在设计处理器的全生命周期中,处理器验证占据着至关重要的地位。一方面,处理器制造商需要对自己的产品进行验证,另一方面,处理器的用户有时将自己集成在芯片中的功能用拓展指令去控制,因此会对处理器进行改动,因此,进行处理器验证的需求日益增多。通常,处理器验证的主要步骤包括:根据设计需求、功能需求编写验证计划;设计验证环境构架、搭建验证环境;根据验证计划设计验证用例;运行验证用例,收集验证结果,等。
在设计验证用例的过程中,完全随机生成的原始验证用例难免包含会导致执行结果出现异常的验证指令,在这种情况下,运行验证用例的流程将结束、中断或进入异常处理程序,阻碍验证过程的正常执行。而根据图2的具体实施例所述的根据现有技术的、在原始验证用例的基础上消除异常以生成新验证用例的方法仍存在破坏原本验证指令次序的缺点,其导致处理器无法按照验证用例中的指令进行顺序执行,可能会漏验需要连续执行某几条验证指令才能实现验证的功能,此外,在原本的验证指令次序中插入指令,由于处理器的运行原理,可能会导致在前验证指令的执行结果在传输网络中丢失而无法用于在后的验证指令。
发明内容
为了解决上述问题,本公开提出一种生成验证用例的方法,在以验证指令构造验证用例的同时,引进了对于是否出现异常、异常是何类别的判断逻辑以及后续相应地采取的不同处理方式,以完整的方法步骤和逻辑流程生成了在指令序列连续的同时也消除了异常的验证用例,避免验证程序结束或进入异常处理程序,并且使得处理器能够按照所期望的指令序列执行验证用例中的验证指令。
本公开的实施例提供了涉及一种生成验证用例的方法、装置、设备、计算机程序产品和计算机可读存储介质。
本公开的实施例提供了一种生成验证用例的方法,包括:对于多个通用寄存器中的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值;在指令库中随机地每次获取一条指令作为验证指令,执行所述验证指令,并根据所述验证指令的执行结果判断所述验证指令是否适合用于所述验证用例;根据适合用于所述验证用例的验证指令的执行结果,选择所述第一加载指令中的至少一部分加载指令;以及利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例。
根据本公开的实施例,在指令库中随机地每次获取一条指令作为验证指令,直至判断满足验证用例结束条件,其中被判断为适合用于所述验证用例的验证指令的数量为第一数量,所述验证用例结束条件包括:所述第一数量达到阈值。
根据本公开的实施例,所述判断所述验证指令是否适合用于所述验证用例,包括:对于所述验证指令,判断所述验证指令的执行结果是否出现异常;在所述验证指令的执行结果出现异常的情况下,判断所述异常是否是可消除的;在所述验证指令的执行结果出现异常且所述异常是不可消除的情况下,判断所述验证指令不适合用于所述验证用例。
根据本公开的实施例,所述判断所述异常是否是可消除的,包括:判断所述验证指令涉及的源操作数所对应的源操作寄存器是否未被更新过,其中,所述源操作寄存器为所述多个通用寄存器之一;在所述源操作寄存器未被更新过的情况下,则判断所述异常能够被消除;以及在所述源操作寄存器已被更新过的情况下,则判断所述异常不能被消除。
根据本公开的实施例,所述判断所述异常是否是可消除的,还包括:在判断所述异常能够被消除的情况下,利用第二加载指令为所述源操作寄存器所对应的通用寄存器加载指定值,其中,所述指定值代表执行任何指令时都不导致异常的值,其中,所述利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例,包括:利用所述至少一部分加载指令、所述第二加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例。
根据本公开的实施例,所述判断所述验证指令是否适合用于所述验证用例,还包括:在判断所述异常能够被消除的情况下或者在所述验证指令的执行结果未出现异常的情况下,判断所述多个通用寄存器是否均被更新过;以及在判断所述多个通用寄存器均被更新过的情况下,对于多个通用寄存器的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值。
根据本公开的实施例,判断所述多个通用寄存器是否均被更新过包括以下情况中的至少一种:判断所述通用寄存器是否已经作为目的操作寄存器被执行结果未出现异常的验证指令更新过;或者,判断所述通用寄存器是否已经作为源操作寄存器被加载过非随机值。
根据本公开的实施例,所述判断所述验证指令是否适合用于所述验证用例,还包括:在执行每次获取到的所述验证指令之前,保存所述多个通用寄存器的寄存器状态;以及对于每次随机获取的验证指令,将其依序包括在所述验证用例中,并且所述方法还包括:在判断所述异常是可消除的情况下,恢复最近一次保存的每个通用寄存器的寄存器状态。
根据本公开的实施例,所述保存所述多个通用寄存器的寄存器状态,还包括:对于每次随机获取的验证指令,在所述验证指令的执行出现异常且所述异常是不可消除的情况下,恢复最近一次保存的每个通用寄存器的寄存器状态,其中,所述利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令构造所述验证用例,包括:删除其执行结果出现异常且该异常是不可消除的验证指令。
根据本公开的实施例,所述方法还包括:为每个通用寄存器分别相对应地设置寄存器运行标识。
根据本公开的实施例,所述寄存器运行标识包含:符号执行标识、指令写入标识、执行值,其中,符号执行标识用于指示所对应的通用寄存器是否已经被加载过所述指定值,指令写入标识用于指示所对应的通用寄存器是否已经作为目的操作寄存器被更新过,执行值代表与所述通用寄存器对应的验证指令被执行时进行运算的值。
根据本公开的实施例,所述利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例,还包括:对于所述多个通用寄存器中作为目的操作寄存器已经被更新过的通用寄存器、和/或作为源操作寄存器未被加载过所述指定值的通用寄存器,删除对其进行加载操作的所述第一加载指令。
根据本公开的实施例,所述为每个通用寄存器分别相对应地设置寄存器运行标识,还包括:对于所述多个通用寄存器中指令写入标识等于第一值和/或符号执行标识等于第二值的通用寄存器,删除对其进行加载操作的第一加载指令,其中,第一值指示所对应的通用寄存器已经被作为目的操作寄存器更新过,第二值指示所对应的通用寄存器没有被作为源操作寄存器被加载过所述指定值。
本公开的实施例提供了一种用于生成验证用例的装置,所述装置包括:加载模块,被配置为对于多个通用寄存器中的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值;获取模块,被配置为在指令库中随机地每次获取一条指令作为验证指令;执行模块,被配置为执行所述验证指令;判断模块,被配置为根据所述验证指令的执行结果判断所述验证指令是否适合用于所述验证用例,直至判断满足验证用例结束条件;构造模块,被配置为根据适合用于所述验证用例的验证指令的执行结果,选择所述第一加载指令中的至少一部分加载指令,然后利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例。
本公开的实施例提供了一种用于生成验证用例的设备,所述设备包括:一个或多个处理器;以及一个或多个存储器,其中,所述一个或多个存储器中存储有计算机可执行程序,当由所述处理器执行所述计算机可执行程序时,执行权利要求1-13中任一项所述的方法。
本公开的实施例提供了一种计算机可读存储介质,其上存储有计算机可执行指令,所述指令在被处理器执行时用于实现如权利要求1-13中任一项所述的方法。
本公开的实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开的实施例的方法。
本公开的实施例提供了涉及一种用于生成验证用例的方法、装置、设备、计算机程序产品和计算机可读存储介质。
本公开的实施例所提供的方法在以验证指令构造验证用例的同时,引进了对于是否出现异常、异常是何类别的判断逻辑和后续相应地采取的不同处理方式,以完整的方法步骤和逻辑流程生成了在指令序列连续的同时也消除了异常的验证用例。在后续应用中,可以将根据本公开的实施例所生成的验证用例运行在处理器参考模型和设计处理器上,以实现执行流畅且验证指令功能完整的验证过程。
通过本公开的方法,在从指令库随机获取验证指令形成验证用例时,均能实现针对不同的指令情况生成后续可无异常地运行的验证用例,并且通过对本公开的方法的适当调整,可以对指令库进行设计和限制,使得用户的选择更具多样性且验证用例的应用场景更丰富具体。
附图说明
为了更清楚地说明本公开的实施例的技术方案,下面将对实施例的描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本公开的一些示例性实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是示出利用验证用例对设计处理器进行验证的示例性示意图;
图2是示出现有技术中在执行验证用例的过程中出现异常以及对异常进行处理的示例性示意图;
图3是示出根据本公开的实施例的用于生成验证用例的方法的第一实施例的示意性流程图;
图4是示出根据图3的步骤S140的扩展方案的示意性流程图。
图5是示出根据本公开的实施例的用于生成验证用例的方法的第二实施例的示意性流程图;
图6是示出根据图5的步骤S8、S81、S7的扩展方案的示意性流程图;
图7是示出根据本公开的实施例的用于生成验证用例的方法的基于图6的第三实施例的示意性流程图;
图8是示出根据本公开的实施例的用于生成验证用例的装置800的示意图;
图9是示出根据本公开的实施例的生成验证用例设备2000的示意图;
图10是示出根据本公开的实施例的计算设备的架构的示意图;以及
图11是示出根据本公开的存储介质的示意图。
具体实施方式
为了使得本公开的目的、技术方案和优点更为明显,下面将参考附图详细描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
在本说明书和附图中,具有基本上相同或相似步骤和元素用相同或相似的附图标记来表示,且对这些步骤和元素的重复描述将被省略。同时,在本公开的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性或排序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公开实施例的目的,不是旨在限制本公开。
为便于描述本公开,以下介绍与本公开有关的概念。
寄存器:在计算机领域,寄存器是处理器内部的元件,包括通用寄存器、专用寄存器和控制寄存器。寄存器是重要的数据存储资源,用来暂存数据和地址,是汇编程序员能直接使用的硬件资源之一。寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。寄存器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。
通用寄存器:通用寄存器包括整形寄存器、浮点寄存器等。处理器与位数相关地包含8个或16个或其他数量的通用寄存器。
指令:指令由操作码和操作数两部分组成。操作码表示该指令应进行哪种类型的操作,例如加载操作、加法操作、除法操作等。不同的操作类型用不同的操作码表示。操作数表示参加指令所规定的操作的数或数的存放地址,操作数主要存放在寄存器或内存中。在操作数中,前一个操作数为目的操作数/第一源操作数,后一个操作数为第二源操作数。目的操作数是通用寄存器,源操作数可以是立即数、通用寄存器或内存位置,指令执行后的结果放入目的操作数中。在本公开中,目的操作数对应的通用寄存器也称为目的操作寄存器,源操作数所对应的通用寄存器也称为源操作寄存器。举例来说:
ADDPS X1,X2:ADDPS表示单精度浮点加法操作,X1和X2为通用寄存器,X1表示目的操作数,也表示第一源操作数,X2表示第二源操作数,这条指令表示X1和X2相加,结果放入到X1中,X1既是目的操作寄存器也是源操作寄存器,X2是源操作寄存器;
DIVPS X1,X2:DIVPS表示单精度浮点除法操作,X1和X2为通用寄存器,X1表示目的操作数,也表示第一源操作数,X2表示第二源操作数,这条指令表示X1除以X2,结果放入到X1中,X1既是目的操作寄存器也是源操作寄存器,X2是源操作寄存器,在此,如果X2的值是0,则处理器会报告除零异常,;
MOVPS X1[1000]:MOVPS表示单精度加载操作,X1表示目的操作数,[1000]表示第一源操作数,这条指令表示把位置为内存地址1000的数据加载到寄存器X1中,X1是目的操作寄存器。
验证用例:对设计处理器进行验证时所使用的包含多条指令的序列,用于实现一个或多个特定功能。
异常:执行运算后可能会出现结果异常。例如IEEE 754提出5种类型的浮点异常类型:不精确异常(PE),表示会有精度丢失;下溢出异常(UE),表示超出了目标浮点格式所表示的最小规格化值;上溢出异常(OE):表示超出了目标浮点格式所表示的最大规格化值;除零异常(ZE);无效操作异常(IE),一般出现在操作数是NaN(Not a Number,未定义或不可表示的值)时。
对于每种异常类型,需要修改寄存器值的处理过程包括:对于OE、UE、PE这种在指令执行后发生的异常,要修改指令的所有操作数,即要为所有操作数设置新的值,以便消除异常;对于ZE,其只会发生在除法指令上,因此需要将第二源操作数设置为非0值;对于IE,需要将对应操作数的值设置为规格化数。
寄存器状态:在本公开中,寄存器状态表示寄存器本身随着运行指令的过程发生变化的内部状态(例如读取指令时发生移位)的总称,其保存在内存中。
寄存器的更新:在本公开的框架下,通用寄存器的更新包括:通用寄存器作为目的操作寄存器执行了操作指令(例如ADDPS指令)之后被写入结果;以及通用寄存器作为源操作寄存器被MOVPS指令加载了值。
综上所述,本公开的实施例提供的方案涉及处理器验证、验证用例、寄存器更新等技术,下面将结合附图对本公开的实施例进行进一步地描述。
图1是示出利用验证用例对设计处理器进行验证的示例性示意图。
由上述背景技术可知,在根据功能需求设计出设计处理器后,需要对所述设计处理器进行验证,以判断相关设计功能是否符合需求。如图1所示,进行处理器验证的通常做法是根据约束随机生成验证用例,然后在处理器参考模型和所述设计处理器上都运行该验证用例并且在检查器中对比处理器参考模型和设计处理器在执行验证用例中的每条验证指令时的结果。如果设计处理器和处理器参考模型的执行结果一致,则说明对该条验证指令的执行正确,设计处理器符合相关功能需求。其中,处理器参考模型代表符合功能需求的参考处理器,其在运行验证用例时能够输出符合设计框架的结果,但是,对于完全随机生成的验证用例,有些验证指令会导致执行结果出现如上所述的异常,从而导致验证过程中断或进入异常处理程序。对于由个别验证指令导致的执行结果的异常,现有技术中的解决方案如图2所示。
图2是示出现有技术中在执行验证用例的过程中出现异常以及对异常进行处理的示例性示意图。
从图2可以看出,从验证用例中获取待执行的指令之后,在执行结果出现异常的情况下,指令执行流程进入异常处理程序,然后从该异常处理程序中获取另一指令进行执行,直至处理器对指令的执行结果不再出现异常为止,而后再重新回到正常指令执行流程。即便从该异常处理程序中一次性地获取可以导致执行结果正常的指令,整个指令执行流程仍然是被异常处理程序中断,且验证用例中验证指令的原本序列被新插入的指令破坏。
例如以下是一种验证ADDPS指令和DIVPS指令交替执行功能的验证用例示例1:
指令0:ADDPS R1,R0
指令1:DIVPS R3,R2//->R2值是非规则数,发生IE
指令2:ADDPS R5,R4
指令3:DIVPS R7,R6//->R6值是ZERO,发生ZE
指令4:ADDPS R9,R8//->R8+R9结果发生PE
指令5:DIVPS R11,R10//->R11÷R10结果发生OE
指令6:ADDPS R13,R12
指令7:DIVPS R15,R14
在该验证用例中,验证指令1、3、4、5分别发生了IE、ZE、PE、OE异常,且每次执行结果出现异常之后,验证流程都会进入异常处理程序,而原本的验证用例期望的是交替地执行ADDPS指令和DIVPS指令,而不期望在指令执行之间存在异常处理程序。根据现有技术的解决方法,进入异常处理程序后,从该异常处理程序中获取另一指令进行执行,通常为在验证用例中在导致执行结果出现异常的指令前面插入MOVPS指令,从而将寄存器中原本会导致异常的值修改为不会导致异常的值,也就是说,在逻辑流程上为该导致异常的指令的源操作数所对应的源操作寄存器加载不会发生异常的值,从而消除原本会发生的异常。在插入MOVPS指令之后,在上述验证用例的基础上新生成的验证用例如下:
指令0:ADDPS R1,R0
指令x:MOVPS R2,[1000]//为消除异常而插入的MOVPS指令
指令1:DIVPS R3,R2//->为R2加载规则数,消除IE
指令2:ADDPS R5,R4
指令x:MOVPS R6,[1008]//为消除异常而插入的MOVPS指令
指令3:DIVPS R7,R6//->为R6加载非0值,消除ZE
指令x:MOVPS R8,[1018]//为消除异常而插入的MOVPS指令
指令x:MOVPS R9,[1020]//为消除异常而插入的MOVPS指令
指令4:ADDPS R9,R8//->为R8和R9加载不发送异常的值,消除PE
指令x:MOVPS R10,[1018]//为消除异常而插入的MOVPS指令
指令x:MOVPS R11,[1020]//为消除异常而插入的MOVPS指令
指令5:DIVPS R11,R10//->为R10和R11加载不发送异常的值,消除OE
指令6:ADDPS R13,R12
指令7:DIVPS R15,R14
其中,不发生异常的值为保存在特定地址中的预先给定的值,其不会导致任何指令的执行结果出现异常。在该示例中,特定地址包括[1018]、[1020]等,其表示一种直接寻址的取操作数方式。
在以上述方式生成新验证用例之后,然后将其在处理器参考模型和设计处理器上运行以进行后续的处理器验证过程。该新验证用例的确避免了在执行验证用例时出现异常,但是其存在如下缺点:改变了原始验证用例中的指令序列,在每个导致执行结果异常的指令前面都存在特定的MOVPS指令,这与原始验证用例中期望验证交替发送ADDPS指令和DIVPS指令的场景不一致,可能会漏验需要交替执行多次ADDPS和DIVPS才会出现的设计问题,此外,在原本的验证指令次序中插入了新的操作指令,由于处理器的运行原理,这可能会导致在前验证指令的执行结果在传输网络中丢失而无法用于在后的验证指令。
图3是示出根据本公开的实施例的用于生成验证用例的方法的第一实施例的示意性流程图。
根据第一实施例,在步骤S110中,对于多个通用寄存器(例如16个)中的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值;
接着,在步骤S120中,在指令库中随机地每次获取一条指令作为验证指令;
接着,在步骤S130中,执行该验证指令;
接着,在步骤S140中,根据该验证指令的执行结果来判断该验证指令是否适合用于该验证用例;
接着,在步骤S150中,根据适合用于所述验证用例的验证指令的执行结果选择出第一加载指令中的至少一部分加载指令,然后利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令来构造验证用例。
可选地,在指令库中随机地每次获取一条指令作为验证指令,直至判断满足验证用例结束条件,其中,被判断为适合用于该验证用例的验证指令的数量为第一数量,所述验证用例结束条件包括:所述第一数量达到阈值。例如,阈值为1000条,那么当被判断为适合用于该验证用例的验证指令的数量,即第一数量达到1000条时,满足验证用例结束条件,从而生成并输出验证用例。
图4是示出根据图3的步骤S140的扩展方案的示意性流程图。
在图4中示出步骤S140的扩展判断逻辑,所述根据该验证指令的执行结果来判断该验证指令是否适合用于该验证用例,包括:对于所述验证指令,判断所述验证指令的执行结果是否出现异常。在所述验证指令的执行结果出现异常的情况下,判断所述异常是否是可消除的。在所述验证指令的执行结果出现异常且所述异常是不可消除的情况下,判断所述验证指令不适合用于所述验证用例;在所述验证指令的执行结果未出现异常和执行结果出现异常且所述异常是可消除的情况下,判断所述验证指令适合用于所述验证用例。
可选地,所述判断所述异常是否是可消除的,包括:判断所述验证指令涉及的源操作数所对应的源操作寄存器是否未被更新过,在所述源操作寄存器未被更新过的情况下,则判断所述异常能够被消除;在所述源操作寄存器已被更新过的情况下,则判断所述异常不能被消除。
可选地,在判断所述异常能够被消除的情况下,利用第二加载指令为所述源操作寄存器所对应的通用寄存器加载指定值,其中,所述指定值代表执行任何指令时都不导致异常的值,然后利用所述第一加载指令中的至少一部分、所述第二加载指令以及所述适合用于验证用例的验证指令来构造验证用例。
图5是示出根据本公开的实施例的用于生成验证用例的方法的第二实施例的示意性流程图。
根据第二实施例,在步骤S1中,对于多个通用寄存器(例如16个)中的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值;
接着,在步骤S2中,保存所述多个通用寄存器的寄存器状态,换句话说,在执行每次获取到的验证指令之前,保存所述多个通用寄存器的寄存器状态,以便在所述验证指令的执行结果出现异常的情况下可以将所述多个通用寄存器恢复到执行该验证指令之前的状态;
接着,在步骤S3中,在指令库中随机地每次获取一条指令作为验证指令;
接着,在步骤S4中,执行该验证指令;
接着,在步骤S5中,判断所述验证指令的执行结果是否发生异常,若判断结果为否,即执行结果未发生异常,则认为该验证指令适合于验证用例,然后执行步骤SW,在该步骤中,将所述验证指令写入验证用例,然后执行步骤S6;若判断结果为是,即执行结果发生异常,则执行步骤S8;
在步骤S6中,判断是否已经将限定数量的验证指令写入了所述验证用例,即适合于验证用例的验证指令的第一数量是否达到阈值,若判断结果为是,则执行步骤SE,在该步骤中,输出所生成的验证用例并且结束所述方法;若判断结果为否,则执行步骤S7;
在步骤S7中,判断是否每个通用寄存器都已经被更新过,若判断结果为是,则返回至步骤S1,为每个通用寄存器重新加载随机值,然后对于下一条验证指令继续执行所述方法的新一轮循环;若判断结果为否,则返回至步骤S2,对于下一条验证指令继续执行所述方法的新一轮循环;
在步骤S8中,判断所述异常是否是可消除的,若判断结果为是,则执行步骤S81,在该步骤中,消除异常并且恢复最近一次保存的每个通用寄存器的寄存器状态,然后执行步骤SW;若判断结果为否,则执行步骤S82,在该步骤中,恢复最近一次保存的每个通用寄存器的寄存器状态并且删除所述验证指令,然后返回至步骤S1,为每个通用寄存器重新加载随机值,然后对于下一条验证指令继续执行所述方法的新一轮循环。
可选地,对于每次随机获取的验证指令,将其依序包括在所述验证用例中,然后利用所述第一加载指令中的至少一部分和所述适合用于验证用例的验证指令构造所生成的验证用例。
图6是示出根据图5的步骤S8、S81、S7的扩展方案的示意性流程图。
从图6中可以看出,在步骤S8的扩展方案中,所述判断所述异常是否是可消除的,包括:判断所述验证指令涉及的源操作数所对应的源操作寄存器是否未被更新过,在所述源操作寄存器未被更新过的情况下,认为所述异常能够被消除,判断结果为是;在所述源操作寄存器已被更新过的情况下,认为所述异常不能被消除,判断结果为否。
在步骤S81的扩展方案中,所述消除异常包括:利用第二加载指令为所述验证指令的源操作数涉及的源操作寄存器所对应的通用寄存器加载指定值,其中,所述指定值代表执行任何指令时都不导致异常的值。
可选地,利用所述第一加载指令中的至少一部分、所述第二加载指令以及所述适合用于验证用例的验证指令来构造验证用例。
在步骤S7的扩展方案中,所述判断所述多个通用寄存器是否被更新过包括以下情况中的至少一种:判断所述通用寄存器是否已经作为目的操作寄存器被执行结果未出现异常的验证指令更新过;或者判断所述通用寄存器是否已经作为源操作寄存器被加载过非随机值,若判断结果为是,则认为所述多个通用寄存器均被更新过,然后对于多个通用寄存器的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值;若判断结果为否,则认为不是每个通用寄存器都被更新过,然后保存寄存器状态、获得并执行下一条验证指令。
可选地,在步骤S81和步骤S1之间执行步骤S821,在该步骤中,对于所述多个通用寄存器中作为目的操作寄存器已经被更新过的通用寄存器、和/或作为源操作寄存器未被加载过所述指定值的通用寄存器,删除对其进行加载操作的所述第一加载指令。
图7是示出根据本公开的实施例的用于生成验证用例的方法的基于图6的第三实施例的示意性流程图。
在第三实施例中,为每个通用寄存器分别相对应地设置寄存器运行标识。所述寄存器运行标识不保存在寄存器中,而是保存在寄存器外部,随着方法步骤的执行相应地改变。所述寄存器运行标识包含:符号执行标识、指令写入标识、执行值,其中,符号执行标识用于指示所对应的通用寄存器是否已经被加载过所述指定值,指令写入标识用于指示所对应的通用寄存器是否已经作为目的操作寄存器被更新过,执行值代表与所述通用寄存器对应的验证指令被执行时进行运算的值,其中,利用第一值指示所对应的通用寄存器已经被作为目的操作寄存器更新过,利用第二值指示所对应的通用寄存器没有被作为源操作寄存器被加载过所述指定值。在本实施例中,例如,指令写入标识为1或0,第一值等于1,符号执行标识为1或0,第二值等于1。
从图7可以看出,在图6的基础上,在步骤S1中,所述对于多个通用寄存器(例如16个)中的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值,还包括:将每个通用寄存器的寄存器运行标识设置为符号执行标识等于1、指令写入标识等于0,表示每个通用寄存器既没有被作为目的操作寄存器更新过也没有被作为源操作寄存器加载过指定值。
在步骤S5和步骤SW之间执行步骤S51,在该步骤中,将所述验证指令涉及的目的操作数所对应的目的操作寄存器的寄存器运行标识修改为指令写入标识等于1,这表示在所述验证指令的执行结果没有出现异常的情况下,目的操作寄存器已经被成功写入,即已经被更新。
在步骤S7中,所述判断所述通用寄存器是否已经作为目的操作寄存器被执行结果未出现异常的验证指令更新过或者判断所述通用寄存器是否已经作为源操作寄存器被加载过非随机值,包括:判断是否每个通用寄存器的寄存器运行标识都为符号执行标识等于0和/或指令写入标识等于1。若判断结果为是,则说明每个通用寄存器都已经被更新过,然后返回至步骤S1继续执行所述方法的新一轮循环;若判断结果为否,则说明并非每个通用寄存器都已经被更新过,返回至步骤S2继续执行所述方法的新一轮循环。
在步骤S8中,所述判断所述验证指令涉及的源操作数所对应的源操作寄存器是否未被更新过,包括:判断所述验证指令涉及的源操作数所对应的源操作寄存器的寄存器运行标识是否为符号执行标识等于1且指令写入标识等于0,若判断结果为是,则说明所述源操作寄存器未被更新过,然后执行步骤S81;若判断结果为否,则说明所述源操作寄存器已经被更新过,然后执行步骤S82;
在步骤S81中,还包括:将所述验证指令涉及的源操作数所对应的源操作寄存器的寄存器运行标识修改为符号执行标识等于0,这表示所述源操作寄存器已经被加载指定值。
在步骤S821中,包括:删除对指令写入标识等于1和/或符号执行标识等于1的通用寄存器进行加载操作的第一加载指令。
对于在图2中所述的验证用例示例1,通过根据本公开的实施例生成的验证用例如下:
指令x:MOVPS R2,[1000]//为消除指令1异常而插入的MOVPS指令
指令x:MOVPS R6,[1008]//为消除指令3异常而插入的MOVPS指令
指令x:MOVPS R8,[1018]//为消除指令4异常而插入的MOVPS指令
指令x:MOVPS R9,[1020]//为消除指令4异常而插入的MOVPS指令
指令x:MOVPS R10,[1018]//为消除指令5异常而插入的MOVPS指令
指令x:MOVPS R11,[1020]//为消除指令5异常而插入的MOVPS指令
指令0:ADDPS R1,R0
指令1:DIVPS R3,R2
指令2:ADDPS R5,R4
指令3:DIVPS R7,R6
指令4:ADDPS R9,R8
指令5:DIVPS R11,R10
指令6:ADDPS R13,R12
指令7:DIVPS R15,R14
可以看出,通过根据本公开的实施例生成的验证用例中的验证指令序列是连续的,不会被为消除异常而插入的MOVPS指令打断。
图8是示出根据本公开的实施例的用于生成验证用例的装置800的示意图。
根据本公开的实施例,用于生成验证用例的装置800可以包括加载模块(801)、获取模块(802)、执行模块(803)、判断模块(804)和构造模块(805)。
其中,加载模块(801)可以被配置为对于多个通用寄存器中的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值。
可选地,加载模块(801)还可以被配置为在相关方法步骤中利用第二加载指令为源操作寄存器所对应的通用寄存器加载指定值。
获取模块(802)被配置为在指令库中随机地每次获取一条指令作为验证指令。
执行模块(803)可以被配置为执行所述验证指令。
判断模块(804)可以被配置为根据所述验证指令的执行结果判断所述验证指令是否适合用于所述验证用例,直至判断满足验证用例结束条件,其中被判断为适合用于所述验证用例的验证指令的数量为第一数量。
可选地,所述验证用例结束条件为所述第一数量达到阈值。
可选地,判断模块可以包括第一判断模块(8041),所述第一判断模块可以被配置为对于所述验证指令,判断所述验证指令的执行结果是否出现异常;在所述验证指令的执行结果出现异常的情况下,判断所述异常是否是可消除的;在所述验证指令的执行结果出现异常且所述异常是不可消除的情况下,判断所述验证指令不适合用于所述验证用例。
可选地,判断模块可以包括第二判断模块(8042),所述第二判断模块可以被配置为判断所述验证指令涉及的源操作数所对应的源操作寄存器是否未被更新过;在所述源操作寄存器未被更新过的情况下,则判断所述异常能够被消除;在所述源操作寄存器已被更新过的情况下,则判断所述异常不能被消除。
可选地,在判断所述异常能够被消除的情况下,利用第二加载指令为所述源操作寄存器所对应的通用寄存器加载指定值,其中,所述指定值代表执行任何指令时都不导致异常的值。
可选地,判断模块可以包括第三判断模块(8043),所述第三判断模块可以被配置为在判断所述异常能够被消除的情况下或者在所述验证指令的执行结果未出现异常的情况下,判断所述多个通用寄存器是否均被更新过;在判断所述多个通用寄存器均被更新过的情况下,对于多个通用寄存器的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值。
可选地,所述判断所述多个通用寄存器是否被更新过包括以下情况中的至少一种:判断所述通用寄存器是否已经作为目的操作寄存器被执行结果未出现异常的验证指令更新过;或者判断所述通用寄存器是否已经作为源操作寄存器被加载过非随机值。
可选地,判断模块可以包括第四判断模块(8044),所述第四判断模块可以被配置为判断是否满足验证用例结束条件。
构造模块(805)可以被配置为根据适合用于所述验证用例的验证指令的执行结果,选择所述第一加载指令中的至少一部分加载指令,然后利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例。
可选地,利用所述至少一部分加载指令、所述第二加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例。
根据本公开的又一方面,还提供了一种用于生成验证用例的设备。图9示出了根据本公开的实施例的生成验证用例设备2000的示意图。
如图9所示,所述生成验证用例设备2000可以包括一个或多个处理器2010,和一个或多个存储器2020。其中,所述存储器2020中存储有计算机可读代码,所述计算机可读代码当由所述一个或多个处理器2010运行时,可以执行如上所述的方法。
本公开的实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。上述处理器可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,可以是X86架构或ARM架构的。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
例如,根据本公开的实施例的方法或装置也可以借助于图10所示的计算设备3000的架构来实现。如图10所示,计算设备3000可以包括总线3010、一个或多个CPU 3020、只读存储器(ROM)3030、随机存取存储器(RAM)3040、连接到网络的通信端口3050、输入/输出组件3060、硬盘3070等。计算设备3000中的存储设备,例如ROM 3030或硬盘3070可以存储本公开提供的方法的处理和/或通信使用的各种数据或文件以及CPU所执行的程序指令。计算设备3000还可以包括用户界面3080。当然,图9所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略图10示出的计算设备中的一个或多个组件。
根据本公开的又一方面,还提供了一种计算机可读存储介质。图11示出了根据本公开的存储介质的示意图4000。
如图11所示,所述计算机存储介质4020上存储有计算机可读指令4010。当所述计算机可读指令4010由处理器运行时,可以执行参照以上附图描述的根据本公开的实施例的方法。本公开的实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存。易失性存储器可以是随机存取存储器(RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)、增强型同步动态随机存取存储器(ESDRAM)、同步连接动态随机存取存储器(SLDRAM)和直接内存总线随机存取存储器(DR RAM)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本公开的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开的实施例的方法。
本公开的实施例提供了涉及一种用于生成验证用例的方法、装置、设备、计算机程序产品和计算机可读存储介质。
本公开的实施例所提供的方法在以验证指令构造验证用例的同时,引进了对于是否出现异常、异常是何类别的判断逻辑和后续相应地采取的不同处理方式,以完整的方法步骤和逻辑流程生成了在指令序列连续的同时也消除了异常的验证用例。在后续应用中,可以将根据本公开的实施例所生成的验证用例运行在处理器参考模型和设计处理器上,以实现执行流畅且验证指令功能完整的验证过程。
通过本公开的方法,在从指令库随机获取验证指令形成验证用例时,均能实现针对不同的指令情况生成后续可无异常地运行的验证用例,并且通过对本公开的方法的适当调整,可以对指令库进行设计和限制,使得用户的选择更具多样性且验证用例的应用场景更丰富具体。
需要说明的是,附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含至少一个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
在上面详细描述的本公开的示例实施例仅仅是说明性的,而不是限制性的。本领域技术人员应该理解,在不脱离本公开的原理和精神的情况下,可对这些实施例或其特征进行各种修改和组合,这样的修改应落入本公开的范围内。
Claims (17)
1.一种生成验证用例的方法,包括:
对于多个通用寄存器中的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值;
在指令库中随机地每次获取一条指令作为验证指令,执行所述验证指令,并根据所述验证指令的执行结果判断所述验证指令是否适合用于所述验证用例;
根据适合用于所述验证用例的验证指令的执行结果,选择所述第一加载指令中的至少一部分加载指令;以及
利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例。
2.根据权利要求1所述的方法,其中,在指令库中随机地每次获取一条指令作为验证指令,直至判断满足验证用例结束条件,其中被判断为适合用于所述验证用例的验证指令的数量为第一数量,所述验证用例结束条件包括:所述第一数量达到阈值。
3.根据权利要求2所述的方法,其中,所述判断所述验证指令是否适合用于所述验证用例,包括:
对于所述验证指令,判断所述验证指令的执行结果是否出现异常;
在所述验证指令的执行结果出现异常的情况下,判断所述异常是否是可消除的;
在所述验证指令的执行结果出现异常且所述异常是不可消除的情况下,判断所述验证指令不适合用于所述验证用例。
4.根据权利要求3所述的方法,其中,所述判断所述异常是否是可消除的,包括:
判断所述验证指令涉及的源操作数所对应的源操作寄存器是否未被更新过,其中,所述源操作寄存器为所述多个通用寄存器之一;
在所述源操作寄存器未被更新过的情况下,则判断所述异常能够被消除;以及
在所述源操作寄存器已被更新过的情况下,则判断所述异常不能被消除。
5.根据权利要求4所述的方法,还包括:
在判断所述异常能够被消除的情况下,利用第二加载指令为所述源操作寄存器所对应的通用寄存器加载指定值,其中,所述指定值代表执行任何指令时都不导致异常的值,
其中,所述利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例,包括:
利用所述至少一部分加载指令、所述第二加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例。
6.根据权利要求4或5所述的方法,还包括:
在判断所述异常能够被消除的情况下或者在所述验证指令的执行结果未出现异常的情况下,判断所述多个通用寄存器是否均被更新过;以及
在判断所述多个通用寄存器均被更新过的情况下,并且在所述第一数量尚未达到阈值的情况下,对于多个通用寄存器的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值。
7.根据权利要求6所述的方法,其中,判断所述多个通用寄存器是否均被更新过包括以下情况中的至少一种:
判断所述通用寄存器是否已经作为目的操作寄存器被执行结果未出现异常的验证指令更新过;或者
判断所述通用寄存器是否已经作为源操作寄存器被加载过非随机值。
8.根据权利要求3所述的方法,还包括:
在执行每次获取到的所述验证指令之前,保存所述多个通用寄存器的寄存器状态;以及
对于每次随机获取的验证指令,将其依序包括在所述验证用例中,
并且所述方法还包括:在判断所述异常是可消除的情况下,恢复最近一次保存的每个通用寄存器的寄存器状态。
9.根据权利要求8所述的方法,还包括:
对于每次随机获取的验证指令,在所述验证指令的执行出现异常且所述异常是不可消除的情况下,恢复最近一次保存的每个通用寄存器的寄存器状态,
其中,所述利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令构造所述验证用例,包括:
删除其执行结果出现异常且该异常是不可消除的验证指令。
10.根据权利要求8所述的方法,还包括:为每个通用寄存器分别相对应地设置寄存器运行标识。
11.根据权利要求10所述的方法,其中,所述寄存器运行标识包含:符号执行标识、指令写入标识、执行值,其中,符号执行标识用于指示所对应的通用寄存器是否已经被加载过所述指定值,指令写入标识用于指示所对应的通用寄存器是否已经作为目的操作寄存器被更新过,执行值代表与所述通用寄存器对应的验证指令被执行时进行运算的值。
12.根据权利要求1所述的方法,其中,所述利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例,还包括:
对于所述多个通用寄存器中作为目的操作寄存器已经被更新过的通用寄存器、和/或作为源操作寄存器未被加载过所述指定值的通用寄存器,删除对其进行加载操作的所述第一加载指令。
13.根据权利要求11所述的方法,还包括:
对于所述多个通用寄存器中指令写入标识等于第一值和/或符号执行标识等于第二值的通用寄存器,删除对其进行加载操作的第一加载指令,
其中,第一值指示所对应的通用寄存器已经被作为目的操作寄存器更新过,第二值指示所对应的通用寄存器没有被作为源操作寄存器被加载过所述指定值。
14.一种生成验证用例的装置,所述装置包括:
加载模块,被配置为对于多个通用寄存器中的每个通用寄存器,利用第一加载指令为所述通用寄存器加载随机值;
获取模块,被配置为在指令库中随机地每次获取一条指令作为验证指令;
执行模块,被配置为执行所述验证指令;
判断模块,被配置为根据所述验证指令的执行结果判断所述验证指令是否适合用于所述验证用例;
构造模块,被配置为根据适合用于所述验证用例的验证指令的执行结果,选择所述第一加载指令中的至少一部分加载指令,然后利用所述至少一部分加载指令以及所述适合用于验证用例的验证指令,构造所述验证用例。
15.一种生成验证用例的设备,包括:
一个或多个处理器;以及
一个或多个存储器,其中存储有计算机可执行程序,当由所述处理器执行所述计算机可执行程序时,执行权利要求1-13中任一项所述的方法。
16.一种计算机程序产品,所述计算机程序产品包括计算机软件代码,所述计算机软件代码在被处理器运行时用于实现如权利要求1-13中任一项所述的方法。
17.一种计算机可读存储介质,其上存储有计算机可执行指令,所述指令在被处理器执行时用于实现如权利要求1-13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111357758.7A CN114064478A (zh) | 2021-11-16 | 2021-11-16 | 生成验证用例的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111357758.7A CN114064478A (zh) | 2021-11-16 | 2021-11-16 | 生成验证用例的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064478A true CN114064478A (zh) | 2022-02-18 |
Family
ID=80272791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111357758.7A Pending CN114064478A (zh) | 2021-11-16 | 2021-11-16 | 生成验证用例的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064478A (zh) |
-
2021
- 2021-11-16 CN CN202111357758.7A patent/CN114064478A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20180137521A (ko) | 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법 | |
JP3563412B2 (ja) | コードシーケンスを変更する方法及び関連の装置 | |
CN112395093A (zh) | 多线程数据处理方法、装置、电子设备及可读存储介质 | |
US5761467A (en) | System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field | |
CN106802837B (zh) | 一种更新错误检测和纠正ecc码的方法及装置 | |
US9715398B2 (en) | Program code loading method of application and computing system using the same | |
JP4865016B2 (ja) | プロセッサ | |
US6925522B2 (en) | Device and method capable of changing codes of micro-controller | |
JP2007206933A (ja) | 情報処理装置、情報処理装置におけるブートローダ生成方法およびプログラム転送方法 | |
CN107506623B (zh) | 应用程序的加固方法及装置、计算设备、计算机存储介质 | |
CN114064478A (zh) | 生成验证用例的方法及装置 | |
US3618042A (en) | Error detection and instruction reexecution device in a data-processing apparatus | |
US8484446B2 (en) | Microprocessor saving data stored in register and register saving method | |
US11886839B2 (en) | Non-transitory computer-readable recording medium, function generation method, and information processing device | |
JP6943890B2 (ja) | 命令パケットのためのパリティ | |
US10162728B2 (en) | Method and device for monitoring the execution of a program code | |
US20170192715A1 (en) | Method and device for saving data | |
CN110308933B (zh) | 访问指令确定方法、装置及存储介质 | |
CN114116002A (zh) | 一种存储重命名的实现方法、处理器及计算机设备 | |
US7783691B2 (en) | Sharing of a logic operator having a work register | |
US20080133838A1 (en) | Data processing device | |
US7353343B2 (en) | Memory management system for preventing program execution when CPU fetches execution code from unoccupied region of memory | |
US10592329B2 (en) | Method and electronic device for continuing executing procedure being aborted from physical address where error occurs | |
US6564178B1 (en) | Method and apparatus for evaluating processors for architectural compliance | |
KR20080044652A (ko) | Cpu에서의 스택을 이용한 디버깅 방법 |
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 |