CN117806979B - 指令执行时间一致性测试方法、系统、设备及存储介质 - Google Patents
指令执行时间一致性测试方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN117806979B CN117806979B CN202410232253.5A CN202410232253A CN117806979B CN 117806979 B CN117806979 B CN 117806979B CN 202410232253 A CN202410232253 A CN 202410232253A CN 117806979 B CN117806979 B CN 117806979B
- Authority
- CN
- China
- Prior art keywords
- instruction
- execution time
- group
- consistency
- instruction group
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本申请实施例提供一种指令执行时间一致性测试方法、系统、设备及存储介质,涉及半导体技术领域。其中,本申请的方法包括:设定第一指令组和第二指令组;记录在基于指令执行时间一致性和不基于指令执行时间一致性情况下第一指令组和第二指令组的执行所需时钟数;根据第一指令组和第二指令组的执行所需时钟数,并基于预设规则,判断指令执行时间一致性操作是否有效;若是,认定测试通过;若否,则认定测试不通过。通过本申请提供的方法,可以保证条件跳转指令指令每次都预测正确或者每次都预测错误,能够测试固定执行时间,消除了分支预测带来的误差。
Description
技术领域
本申请涉及半导体技术领域,具体地,涉及一种指令执行时间一致性测试方法、系统、设备及存储介质。
背景技术
对于处理器而言,如果没有特殊干预,不同种类指令之间的执行时间会有相对固定的差异,同一类指令的执行时间有其明显特点。通过分析不同指令的执行时间特征,可以对处理器进行时序攻击。尤其是跳转指令,其执行时间受到操作数的影响明显,更容易遭受攻击。为了抵御这类攻击,处理器实现了指令执行时间一致的功能。
在现有技术中,一般使用计数器在固定跳转指令时间功能开启与关闭的情况下,分别计算设定次数的跳转指令的执行时钟数;根据固定跳转指令时间增加的时钟数,判断是否在原先不固定跳转指令时间的基础上增加相应的倍数;多次执行所述设定次数的固定次数的跳转指令,判断多次执行时间的一致性。
但现有技术中存在以下缺陷:
1、存在分支预测带来的误差,会影响测试结果的准确性;
2、未考虑到程序编译时指令的长度以及指令的位置,当取指的长度确定时,指令的长度和位置将影响指令的执行时间;
3、不支持执行载体为缓存时的测试,测试能否进行受限于处理器的配置。
发明内容
为了解决上述技术缺陷之一,本申请实施例中提供了一种指令执行时间一致性测试方法、系统、设备及存储介质。
根据本申请实施例的第一个方面,提供了一种指令执行时间一致性测试方法,该方法包括:
设定第一指令组和第二指令组,第一指令组均为确定不跳转的条件跳转指令,第二指令组均为确定跳转的条件跳转指令,第一指令组和第二指令组中指令数相同;
分别在基于指令执行时间一致性和不基于指令执行时间一致性情况下,多次执行第一指令组和第二指令组,并逐次增加第一指令组和第二指令组中的指令数,记录在基于指令执行时间一致性和不基于指令执行时间一致性情况下第一指令组和第二指令组的执行所需时钟数;
根据第一指令组和第二指令组的执行所需时钟数,并基于预设规则,判断指令执行时间一致性操作是否有效;若是,认定测试通过;若否,则认定测试不通过。
在本申请一个可选的实施例中,根据所需时钟数,并基于预设规则,判断指令执行时间一致性操作是否有效;若是,认定测试通过;若否,则认定测试不通过的步骤还包括:
基于指令执行时间一致性情况下,根据第一指令组和第二指令组的执行所需时钟数,判断执行时间一致次数是否满足比例阈值;若满足,则认定指令执行时间一致性操作有效;若不满足,则认定指令执行时间一致性操作无效。
在本申请一个可选的实施例中,根据所需时钟数,并基于预设规则,判断指令执行时间一致性操作是否有效;若是,认定测试通过;若否,则认定测试不通过的步骤还包括:
基于指令执行时间一致性情况下,判断第一指令组和第二指令组的执行所需时钟数是否均符合线性增加;若符合,则认定指令执行时间一致性操作有效;若不符合,则认定指令执行时间一致性操作无效。
在本申请一个可选的实施例中,根据所需时钟数,并基于预设规则,判断指令执行时间一致性操作是否有效;若是,认定测试通过;若否,则认定测试不通过的步骤还包括:
不基于指令执行时间一致性情况下,获取第一指令组和第二指令组中的执行所需时钟数较多的参照指令组;
判断参照指令组的执行所需时钟数,与基于指令执行时间一致性情况下第一指令组和第二指令组的执行所需时钟数的一致次数是否满足比例阈值;若满足,则认定指令执行时间一致性操作有效;若不满足,则认定指令执行时间一致性操作无效。
在本申请一个可选的实施例中,分别在基于指令执行时间一致性和不基于指令执行时间一致性情况下,多次执行第一指令组和第二指令组的步骤还包括:
通过汇编语言,并通过平铺展开方式实现对第一指令组和第二指令组的执行。
在本申请一个可选的实施例中,分别在基于指令执行时间一致性和不基于指令执行时间一致性情况下,多次执行第一指令组和第二指令组的步骤还包括:
对第一指令组和第二指令组进行编译后,保持每条指令长度一致,且每条指令的操作码所在存储单元的首地址为均对齐或均不对齐。
在本申请一个可选的实施例中,分别在基于指令执行时间一致性和不基于指令执行时间一致性情况下,多次执行第一指令组和第二指令组的步骤还包括:
判断执行第一指令组和第二指令组的存储载体;
若存储载体为缓存,则将用以执行第一指令组和第二指令组的代码锁入缓存后执行;
若存储载体不为缓存,则将用以执行第一指令组和第二指令组的代码预载后执行。
根据本申请实施例的第二个方面,提供了一种指令执行时间一致性测试系统,该系统包括:
指令组设定模块,用于设定第一指令组和第二指令组,第一指令组均为确定不跳转的条件跳转指令,第二指令组均为确定跳转的条件跳转指令,第一指令组和第二指令组中指令数相同;
指令组执行模块,用于分别在基于指令执行时间一致性和不基于指令执行时间一致性情况下,多次执行第一指令组和第二指令组,并逐次增加第一指令组和第二指令组中的指令数,记录在基于指令执行时间一致性和不基于指令执行时间一致性情况下第一指令组和第二指令组的执行所需时钟数;
测试判断模块,用于根据第一指令组和第二指令组的执行所需时钟数,并基于预设规则,判断指令执行时间一致性操作是否有效;若是,认定测试通过;若否,则认定测试不通过。
根据本申请实施例的第三个方面,提供了一种计算机设备,包括:存储器;
处理器;以及计算机程序;其中,计算机程序存储在存储器中,并被配置为由处理器执行以实现如本申请实施例的第一个方面任一项方法的步骤。
根据本申请实施例的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序;计算机程序被处理器执行以实现如本申请实施例的第一个方面任一项方法的步骤。
采用本申请实施例中提供的指令执行时间一致性测试方法,具有以下有益效果:
通过本申请中设定的均为确定不跳转的条件跳转指令的第一指令组和均为确定跳转的条件跳转指令的第二指令组,可以保证条件跳转指令指令每次都预测正确或者每次都预测错误,能够测试固定执行时间,消除了分支预测带来的误差。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的指令执行时间一致性测试方法的流程图;
图2为本申请实施例提供的指令执行时间一致性测试系统的结构图;
图3为本申请一个实施例提供的计算机设备结构示意图。
具体实施方式
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本申请的发明人发现,现有技术虽然存在对跳转指令固定执行时间进行测试的方法,但其存在以下缺陷:
1、存在分支预测带来的误差,会影响测试结果的准确性。现有技术的部分测试代码如下所示:
LOOP:
subs r3,r3,#1
bne LOOP #跳转指令
通过上述代码可以看出,现有技术中,无论处理器对跳转指令是静态预测还是动态预测,测试过程中每次执行该跳转指令所用的时间并非都是一致的。所以,现有技术使用测试开始到结束之间的总时钟数除以跳转指令的总执行次数,以此做为跳转指令的执行时间的做法是存在误差的;
2、未考虑到程序编译时指令的长度以及指令的位置,当取指的长度确定时,指令的长度和位置将影响指令的执行时间;
3、不支持执行载体为缓存时的测试,测试能否进行受限于处理器的配置。
基于此,请参见图1:
实施例1:
本申请的指令执行时间一致性测试方法包括:
S1:设定第一指令组和第二指令组,第一指令组均为确定不跳转的条件跳转指令,第二指令组均为确定跳转的条件跳转指令,第一指令组和第二指令组中指令数相同;
S2:分别在基于指令执行时间一致性和不基于指令执行时间一致性情况下,多次执行第一指令组和第二指令组,并逐次增加第一指令组和第二指令组中的指令数,记录在基于指令执行时间一致性和不基于指令执行时间一致性情况下第一指令组和第二指令组的执行所需时钟数;
S3:根据第一指令组和第二指令组的执行所需时钟数,并基于预设规则,判断指令执行时间一致性操作是否有效;若是,认定测试通过;若否,则认定测试不通过。
对于处理器而言,如果没有特殊干预,不同种类指令之间的执行时间会有相对固定的差异,同一类指令的执行时间有其明显特点。通过分析不同指令的执行时间特征,可以对处理器进行时序攻击。尤其是跳转指令,其执行时间受到操作数的影响明显,更容易遭受攻击。为了抵御这类攻击,处理器实现了指令执行时间一致的功能。
在本申请实施例中,设定两个指令组,即第一指令组和第二指令组,其中第一指令组是确定不会跳转的多条条件跳转指令,第二指令组是确定会跳转的多条条件跳转指令,且两个指令组中指令数量相等。作为一种优选,每个指令组中指令数量不少于30条,可以使得测试对象基数充足,保证测试准确性。
在具体实施中,条件跳转指令是一种控制流程指令,它能够根据特定的条件来改变程序执行的顺序。
在具体实施中,编写两段条件跳转指令的测试程序,两个程序段中分别包含第一指令组和第二指令组。基于此,实现了两个程序员中其中一段是确定不会跳转的,一段是确定跳转的,且两个程序段都包含相同数目的多条条件跳转指令。
在具体实施中,在分别在开启和关闭指令执行时间一致功能的两种情况下,多次执行上述条件跳转指令的测试程序,并逐次增加测试程序中跳转指令的数量,将执行确定不会跳转的程序段和确定跳转的程序段所需要的时钟数分别记录。
基于本实施例所提供的方法,设定均为确定不跳转的条件跳转指令的第一指令组和均为确定跳转的条件跳转指令的第二指令组,可以保证条件跳转指令指令每次都预测正确或者每次都预测错误,能够测试固定执行时间,消除了分支预测带来的误差。
实施例2:
在前述实施例的基础上,本实施例中步骤S3还包括:
基于指令执行时间一致性情况下,根据第一指令组和第二指令组的执行所需时钟数,判断执行时间一致次数是否满足比例阈值;若满足,则认定指令执行时间一致性操作有效;若不满足,则认定指令执行时间一致性操作无效。
在具体实施中,判断开启指令执行时间一致功能的情况下,每次测试中执行确定不会跳转的程序段和确定跳转的程序段的所需时钟数是否一致;具体的,通过设定比例阈值,判断执行时间一致次数是否满足比例阈值;在本实施例中,逐次增加测试程序中跳转指令的数量,数量越多,则测试基数越多,测试越准确,也即能够达到更佳的误差消除效果。
基于此,本实施例提供了一种以简便的方法完成对指令执行时间一致性操作的有效性的验证的方法,以进一步判断对指令执行时间一致性测试是否通过。本实施例的方法逻辑简单,复杂性低,能够以最低运算成本完成对指令执行时间一致性的测试。
实施例3:
在前述实施例的基础上,本实施例中步骤S3还包括:
基于指令执行时间一致性情况下,判断第一指令组和第二指令组的执行所需时钟数是否均符合线性增加;若符合,则认定指令执行时间一致性操作有效;若不符合,则认定指令执行时间一致性操作无效。
在具体实施中,判断随着测试次数的增加,执行所需时钟数是否严格的线性增加。
在本实施例中,由于逐次增加测试程序中跳转指令的数量,若指令执行时间一致性操作有效,那么指令执行时间必然会以线性形式增长。通过对线性增长的考核,能够以更准确、更直观的方式进行对指令执行时间一致性操作的有效性验证;并且,在本实施例中,逐次增加测试程序中跳转指令的数量,数量越多,则测试基数越多,所呈现出的线性增长更加贴合,测试越准确,也即能够达到更佳的误差消除效果。
实施例4:
在前述实施例的基础上,本实施例中步骤S3还包括:
不基于指令执行时间一致性情况下,获取第一指令组和第二指令组中的执行所需时钟数较多的参照指令组;
判断参照指令组的执行所需时钟数,与基于指令执行时间一致性情况下第一指令组和第二指令组的执行所需时钟数的一致次数是否满足比例阈值;若满足,则认定指令执行时间一致性操作有效;若不满足,则认定指令执行时间一致性操作无效。
在具体实施中,由于静态预测可能是都跳转,也可能是都不跳转,那么关闭指令执行时间一致功能的情况下,必然会出现执行确定不会跳转的程序段和确定跳转的程序段的所需时钟数不一致的情况,即预测失败的情况。在本实施例中,以每次测试中执行确定不会跳转的程序段和确定跳转的程序段的所需时钟数较多的指令组为参照指令组。
在具体实施中,判断开启指令执行时间一致功能的情况下,每次测试中执行确定不会跳转的程序段和确定跳转的程序段的所需时钟数,是否和关闭指令执行时间一致功能的情况下,预测失败所用的程序段(即执行参照指令组的程序段)所需时钟数一致;若一致,则说明指令执行时间一致功能达到了预期,按照所需时钟数较多的程序段统一了执行时间;若不一致,则说明其未达到预期效果。具体的,通过设定比例阈值,判断执行时间一致次数是否满足比例阈值。
基于此,本实施例提供的方法相对于实施例2来说参照因素更多,更加精准,不但能够对执行时间一致性操作进行有效性验证,还可以验证其是否基于预期按照所需时钟数较多的程序段统一了执行时间,拓宽了测试维度,提高了测试准确度。
综上所述,如下表所示,本申请实施例通过对开启执行时间一致性操作的开启与否和对第一指令组、第二指令组的选取,获取四组数据,并根据四组数据以不同方式进行测试:
基于此,本申请实施例实现了简便有效、精准度高的执行时间一致性测试。在具体实施中,实施例2-4可以分别适用,也可任意组合适用。
实施例5:
在前述实施例的基础上,本实施例中步骤S2还包括:
通过汇编语言,并通过平铺展开方式实现对第一指令组和第二指令组的执行。
在具体实施中,基于汇编语言编写测试代码,并使用平铺展开的方式,而非循环的方式。
基于此,可以进一步保证条件跳转指令指令每次都预测正确或者每次都预测错误,而不会出现既有预测正确的情况又有预测错误的情况,从而起到消除分支预测带来的测试误差的作用。
具体的,执行时,关闭处理器中分支预测单元(Branch Prediction Unit,BPU)使能。
在计算机领域,处理器为了提高运行效率,通常采用了流水线技术对指令进行并行处理。但是,有些指令的执行会依赖于之前的指令,这就会导致流水线中的某些段落停滞。此时BPU会根据之前的指令,预测接下来的指令是否会产生分支,以便处理器提前进行分支处理,避免了流水线的停滞。使能是用于标记、标定对象(某个管脚(引脚)、芯片或模块)的工作状态。例如,管脚接收到使能信号后所处的工作状态即为使能状态。
在具体实施中本申请为了避免分支预测带来的误差,将BPU使能关闭,能够将动态分支预测转为静态分支预测,减少分支预测对测试的影响。
实施例6:
在前述实施例的基础上,本实施例中步骤S2还包括:
对第一指令组和第二指令组进行编译后,保持每条指令长度一致,且每条指令的操作码所在存储单元的首地址为均对齐或均不对齐。
操作码(Operation Code,opcode)指计算机程序中所规定的要执行操作的哪一部分指令或字段(通常用代码表示),其实就是指令序列号,用来告诉处理器需要执行哪一条指令。
在具体实施中,在完成测试代码后,测试前需要设置编译器的相关选项,使编译出来的每条指令长度一致,以及其操作码所在存储单元的首地址都是对齐的或者都是不对齐的。原因是,对于同样长度的指令,对齐的情况下取指次数是固定的,不对齐的情况取指次数可能要比对齐的多一次,而取指次数不同会直接导致指令执行时间不一致。
基于此,本实施例通过设置编译选项,保证了代码的一致性,包括指令长度一致、指令位置相对于存储单元一致。克服了现有技术中未考虑到程序编译时指令的长度以及指令的位置,当取指的长度确定时,指令的长度和位置将影响指令的执行时间的缺陷。
实施例7:
在前述实施例的基础上,本实施例中步骤S2还包括:
判断执行第一指令组和第二指令组的存储载体;
若存储载体为缓存,则将用以执行第一指令组和第二指令组的代码锁入缓存后执行;
若存储载体不为缓存,则将用以执行第一指令组和第二指令组的代码预载后执行。
只读存储器(Read-Only Memory,ROM)以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。
随机存取存储器(Random Access Memory,RAM),也叫主存,是与中央处理器直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。
高速缓冲存储器(cache),即缓存,是为了让数据访问的速度适应中央处理器的处理速度,其基于的原理是内存中“程序执行与数据访问的局域性行为”,即一定程序执行时间和空间内,被访问的代码集中于一部分。
在具体实施中,开始测试时,需要根据不同的存储载体,使用不同的测试程序预载方式。对于ROM和RAM,可以使用常规的预载方式;对于cache,可以在将测试代码填入cache后,测试程序锁在cache中,不被替换。
中央处理器和主存之间也存在多级高速缓存,一般分为3级,分别是L1, L2和L3。另外,代码都是由2部分组成:指令和数据。L1 Cache比较特殊,每个中央处理器会有2个L1Cache。分别为指令高速缓存(Instruction Cache,iCache)和数据高速缓存(Data Cache,dCache)。
进一步的,对于iCache和dCache,将iCache或dCache的数据锁住,再进行测试。
基于此,本申请除了ROM和RAM等处理器读取程序时间迅速的存储空间以外,还支持以iCache和dCache做为执行载体来进行测试,扩大了该测试的应用范围。克服了现有技术中不支持执行载体为缓存时的测试,测试能否进行受限于处理器的配置的缺陷。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
请参见图2,本申请一个实施例提供了指令执行时间一致性测试系统,包括:
指令组设定模块10,用于设定第一指令组和第二指令组,第一指令组均为确定不跳转的条件跳转指令,第二指令组均为确定跳转的条件跳转指令,第一指令组和第二指令组中指令数相同;
指令组执行模块20,用于分别在基于指令执行时间一致性和不基于指令执行时间一致性情况下,多次执行第一指令组和第二指令组,并逐次增加第一指令组和第二指令组中的指令数,记录在基于指令执行时间一致性和不基于指令执行时间一致性情况下第一指令组和第二指令组的执行所需时钟数;
测试判断模块30,用于根据第一指令组和第二指令组的执行所需时钟数,并基于预设规则,判断指令执行时间一致性操作是否有效;若是,认定测试通过;若否,则认定测试不通过。
关于上述指令执行时间一致性测试系统的具体限定可以参见上文中对于指令执行时间一致性测试方法的限定,在此不再赘述。上述指令执行时间一致性测试系统中的各个单元可全部或部分通过软件、硬件及其组合来实现。上述各单元可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个单元对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备的内部结构图可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现如上的一种指令执行时间一致性测试方法。包括:存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上视频信号处理方法中的任一步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可以实现如上指令执行时间一致性测试方法中的任一步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请实施例中的方案可以采用各种计算机语言实现,例如,C语言、VHDL语言、Verilog语言、面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
本申请是参照根据本申请实施例的方法、系统、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (7)
1.一种指令执行时间一致性测试方法,其特征在于,包括:
设定第一指令组和第二指令组,所述第一指令组均为确定不跳转的条件跳转指令,所述第二指令组均为确定跳转的条件跳转指令,所述第一指令组和所述第二指令组中指令数相同;
分别在基于指令执行时间一致性和不基于指令执行时间一致性情况下,多次执行所述第一指令组和所述第二指令组,并逐次增加所述第一指令组和所述第二指令组中的指令数,记录在基于指令执行时间一致性和不基于指令执行时间一致性情况下所述第一指令组和所述第二指令组的执行所需时钟数;
根据所述第一指令组和所述第二指令组的执行所需时钟数,并基于预设规则,判断指令执行时间一致性操作是否有效;若是,认定测试通过;若否,则认定测试不通过,包括:
基于指令执行时间一致性情况下,根据所述第一指令组和所述第二指令组的执行所需时钟数,判断执行时间一致次数是否满足比例阈值;若满足,则认定指令执行时间一致性操作有效;若不满足,则认定指令执行时间一致性操作无效;
基于指令执行时间一致性情况下,判断所述第一指令组和所述第二指令组的执行所需时钟数是否均符合线性增加;若符合,则认定指令执行时间一致性操作有效;若不符合,则认定指令执行时间一致性操作无效;
不基于指令执行时间一致性情况下,获取所述第一指令组和所述第二指令组中的执行所需时钟数较多的参照指令组;判断所述参照指令组的执行所需时钟数,与基于指令执行时间一致性情况下所述第一指令组和所述第二指令组的执行所需时钟数的一致次数是否满足比例阈值;若满足,则认定指令执行时间一致性操作有效;若不满足,则认定指令执行时间一致性操作无效。
2.根据权利要求1所述的指令执行时间一致性测试方法,其特征在于,所述分别在基于指令执行时间一致性和不基于指令执行时间一致性情况下,多次执行所述第一指令组和所述第二指令组的步骤还包括:
通过汇编语言,并通过平铺展开方式实现对所述第一指令组和所述第二指令组的执行。
3.根据权利要求2所述的指令执行时间一致性测试方法,其特征在于,所述分别在基于指令执行时间一致性和不基于指令执行时间一致性情况下,多次执行所述第一指令组和所述第二指令组的步骤还包括:
对所述第一指令组和所述第二指令组进行编译后,保持每条指令长度一致,且所述每条指令的操作码所在存储单元的首地址为均对齐或均不对齐。
4.根据权利要求3所述的指令执行时间一致性测试方法,其特征在于,所述分别在基于指令执行时间一致性和不基于指令执行时间一致性情况下,多次执行所述第一指令组和所述第二指令组的步骤还包括:
判断执行所述第一指令组和所述第二指令组的存储载体;
若所述存储载体为缓存,则将用以执行所述第一指令组和所述第二指令组的代码锁入所述缓存后执行;
若所述存储载体不为缓存,则将用以执行所述第一指令组和所述第二指令组的代码预载后执行。
5.一种指令执行时间一致性测试系统,其特征在于,包括:
指令组设定模块,用于设定第一指令组和第二指令组,所述第一指令组均为确定不跳转的条件跳转指令,所述第二指令组均为确定跳转的条件跳转指令,所述第一指令组和所述第二指令组中指令数相同;
指令组执行模块,用于分别在基于指令执行时间一致性和不基于指令执行时间一致性情况下,多次执行所述第一指令组和所述第二指令组,并逐次增加所述第一指令组和所述第二指令组中的指令数,记录在基于指令执行时间一致性和不基于指令执行时间一致性情况下所述第一指令组和所述第二指令组的执行所需时钟数;
测试判断模块,用于根据所述第一指令组和所述第二指令组的执行所需时钟数,并基于预设规则,判断指令执行时间一致性操作是否有效;若是,认定测试通过;若否,则认定测试不通过,包括:
基于指令执行时间一致性情况下,根据所述第一指令组和所述第二指令组的执行所需时钟数,判断执行时间一致次数是否满足比例阈值;若满足,则认定指令执行时间一致性操作有效;若不满足,则认定指令执行时间一致性操作无效;
基于指令执行时间一致性情况下,判断所述第一指令组和所述第二指令组的执行所需时钟数是否均符合线性增加;若符合,则认定指令执行时间一致性操作有效;若不符合,则认定指令执行时间一致性操作无效;
不基于指令执行时间一致性情况下,获取所述第一指令组和所述第二指令组中的执行所需时钟数较多的参照指令组;判断所述参照指令组的执行所需时钟数,与基于指令执行时间一致性情况下所述第一指令组和所述第二指令组的执行所需时钟数的一致次数是否满足比例阈值;若满足,则认定指令执行时间一致性操作有效;若不满足,则认定指令执行时间一致性操作无效。
6.一种计算机设备,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如权利要求1-4任一项所述的方法。
7.一种计算机可读存储介质,其特征在于,其上存储有计算机程序;所述计算机程序被处理器执行以实现如权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410232253.5A CN117806979B (zh) | 2024-03-01 | 2024-03-01 | 指令执行时间一致性测试方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410232253.5A CN117806979B (zh) | 2024-03-01 | 2024-03-01 | 指令执行时间一致性测试方法、系统、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117806979A CN117806979A (zh) | 2024-04-02 |
CN117806979B true CN117806979B (zh) | 2024-05-17 |
Family
ID=90420138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410232253.5A Active CN117806979B (zh) | 2024-03-01 | 2024-03-01 | 指令执行时间一致性测试方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117806979B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107665159A (zh) * | 2016-07-27 | 2018-02-06 | 上海华虹集成电路有限责任公司 | 安全处理器跳转指令固定执行时间的测试方法 |
CN113760366A (zh) * | 2021-07-30 | 2021-12-07 | 浪潮电子信息产业股份有限公司 | 一种条件跳转指令的处理方法、系统及相关装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101892273B1 (ko) * | 2011-10-12 | 2018-08-28 | 삼성전자주식회사 | 스레드 프로그레스 트래킹 방법 및 장치 |
KR102028663B1 (ko) * | 2012-07-24 | 2019-10-04 | 삼성전자주식회사 | 에러 검출 방법 및 장치 |
-
2024
- 2024-03-01 CN CN202410232253.5A patent/CN117806979B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107665159A (zh) * | 2016-07-27 | 2018-02-06 | 上海华虹集成电路有限责任公司 | 安全处理器跳转指令固定执行时间的测试方法 |
CN113760366A (zh) * | 2021-07-30 | 2021-12-07 | 浪潮电子信息产业股份有限公司 | 一种条件跳转指令的处理方法、系统及相关装置 |
Non-Patent Citations (1)
Title |
---|
基于跳转轨迹的分支目标缓冲研究;熊振亚 等;计算机科学;20170315(03);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117806979A (zh) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5537559A (en) | Exception handling circuit and method | |
US7043416B1 (en) | System and method for state restoration in a diagnostic module for a high-speed microprocessor | |
US7178076B1 (en) | Architecture of an efficient at-speed programmable memory built-in self test | |
US20130152048A1 (en) | Test method, processing device, test program generation method and test program generator | |
US10191834B2 (en) | Methods and systems to identify and reproduce concurrency violations in multi-threaded programs | |
US8612944B2 (en) | Code evaluation for in-order processing | |
KR20110114432A (ko) | 멀티스레드 프로그램에서 교착을 감지하기 위한 방법 및 시스템 | |
US8756584B2 (en) | Code instrumentation method and code instrumentation apparatus | |
US20040078651A1 (en) | Method and apparatus for seeding differences in lock-stepped processors | |
US11507348B2 (en) | Method and apparatus for generating chip-based computing function, device, and storage medium | |
CN104978284A (zh) | 处理器子程序高速缓冲存储器 | |
US7991985B2 (en) | System and method for implementing and utilizing a zero overhead loop | |
US20140156978A1 (en) | Detecting and Filtering Biased Branches in Global Branch History | |
US20230367516A1 (en) | Program Detection Method and Apparatus | |
CN101533370B (zh) | 一种内存异常访问定位方法及装置 | |
CN117806979B (zh) | 指令执行时间一致性测试方法、系统、设备及存储介质 | |
US20200226050A1 (en) | Checksum generation | |
US7779393B1 (en) | System and method for efficient verification of memory consistency model compliance | |
CN114217856B (zh) | 面向AArch64架构的CPU指令微基准测试方法及系统 | |
US9436587B2 (en) | Test context generation | |
US5787241A (en) | Method and apparatus for locating exception correction routines | |
US9182990B1 (en) | Method and apparatus for detecting execution of unsupported instructions while testing multiversioned code | |
US7885806B2 (en) | Simulation method and simulation system of instruction scheduling | |
US20140282435A1 (en) | Performance profiling apparatus and performance profiling method | |
CN117063155A (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 |