CN109408221B - 一种同步多线程用例生成方法及系统 - Google Patents
一种同步多线程用例生成方法及系统 Download PDFInfo
- Publication number
- CN109408221B CN109408221B CN201710708157.3A CN201710708157A CN109408221B CN 109408221 B CN109408221 B CN 109408221B CN 201710708157 A CN201710708157 A CN 201710708157A CN 109408221 B CN109408221 B CN 109408221B
- Authority
- CN
- China
- Prior art keywords
- thread
- data block
- case data
- use case
- generating
- 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
- 230000001360 synchronised effect Effects 0.000 title claims abstract description 88
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000013515 script Methods 0.000 claims abstract description 36
- 230000015654 memory Effects 0.000 claims description 63
- 238000012545 processing Methods 0.000 claims description 14
- 230000002452 interceptive effect Effects 0.000 claims description 4
- 238000012795 verification Methods 0.000 description 20
- 238000011161 development Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000002860 competitive effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
Abstract
本发明提供一种同步多线程用例生成方法及系统,所述方法包括:生成至少两条单线程用例数据块;将至少两条单线程用例数据块进行脚本拼接,得到完整的数据块并形成同步多线程用例。本发明能够通过多个单线程用例数据块进行脚本拼接形成多样化同步多线程用例,可以更快速的生成具有高随机性的同步多线程用例,减少时间开销,并且通过开发脚本高效生成同步多线程用例,进而提高生成同步多线程用例的成功率。
Description
技术领域
本发明涉及计算机处理器技术领域,尤其涉及一种同步多线程用例生成方法及系统。
背景技术
传统的CPU在某一时间只能处理一个指令序列,通常我们把它称为一个线程。在线程处理的过程中CPU的处理单元需要不断调入指令与数据进行处理。随着CPU技术的发展,CPU的主频与性能不断提高,需要调入指令和数据的速度不断提高。但是内存技术的发展并没有跟上CPU发展的速度,内存通常无法提供足够的指令和数据给CPU进行处理。受限于指令间的相关性,因此,为了提高处理器的性能,则采用同步多线程(SMT);其中,同步多线程(SMT)是一种在一个CPU的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上同步多线程是一种将线程级并行处理(多CPU)转化为指令级并行处理的方法。同步多线程是单个物理处理器从多个硬件线程上下文同时分派指令的能力。同时,由于每个线程相对独立,因此线程间资源竞争,以及单个线程的控制对其他线程的影响,也成为多线程验证的重中之重。
但是,市面上的用例生成器虽然生成单线程的成功率很高,并且操作简单。但是用例生成器的同步多线程用例成功率极低,即使用例生成成功,用例的指令数却很少,因此,使用用例工具生成同步多线程资源竞争用例成功率低,并且用例的质量和数量都无法达到充分验证同步多线程要求的问题。
发明内容
本发明提供的同步多线程用例生成方法及系统,能够通过多个单线程用例数据块进行脚本拼接形成多样化同步多线程用例,可以更快速的生成具有高随机性的同步多线程用例,减少时间开销,并且通过开发脚本高效生成同步多线程用例,进而提高生成同步多线程用例的成功率。
第一方面,本发明提供一种同步多线程用例生成方法,包括:
生成至少两条单线程用例数据块;
将至少两条单线程用例数据块进行脚本拼接,得到完整的数据块并形成同步多线程用例。
可选地,所述生成至少两条单线程用例数据块包括:
添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块;
添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块。
可选地,在添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块后,还包括:
判断第一单线程用例数据块是否成功生成,如果第一单线程用例数据块成功生成,则将第一单线程用例数据块储存在用例库内;如果第一单线程用例数据块没有成功生成,则继续添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块。
可选地,在添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块后,还包括:
判断第二单线程用例数据块是否成功生成,如果第二单线程用例数据块成功生成,则将第二单线程用例数据块储存在用例库内;如果第二单线程用例数据块没有成功生成,则继续添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块。
可选地,所述生成至少两条单线程用例数据块包括:
直接从用例库中调取至少两个单线程用例数据块并分别作为第一单线程用例数据块和第二单线程用例数据块。
可选地,在生成至少两条单线程用例数据块之前,还包括:
对各单线程配置系统寄存器;
对各单线程划分主存物理地址以使各单线程对应工作在不同的物理地址区间内。
可选地,所述单线程用例数据块包括系统的环境变量及路径、主存初始值、系统寄存器的初始值、寄存器的初始值、指令序列、主存最终值、系统寄存器的最终值和寄存器的最终值中一种或者任意组合。
可选地,所述将至少两条单线程用例数据块进行脚本拼接,得到完整的数据块并形成同步多线程用例,包括:
保留一份系统的环境变量及路径作为同步多线程用例数据块中的系统的环境变量及路径;
对应获取各单线程用例数据块中的主存初始值并合并形成同步多线程用例数据块中的主存初始值;
对各单线程用例对应赋予处理器ID,以及对应获取各单线程用例数据块中的指令序列、系统寄存器的初始值、寄存器的初始值、系统寄存器的最终值和寄存器的最终值,并将处理器ID、指令序列、系统寄存器的初始值、寄存器的初始值、系统寄存器的最终值和寄存器的最终值对应捆绑并按设定顺序进行拼接形成同步多线程用例数据块中的指令序列和寄存器信息;
对应获取各条单线程用例数据块中的主存最终值并合并形成同步多线程用例数据块中的主存最终值;
将同步多线程用例数据块中的系统的环境变量及路径、主存初始值、指令序列和寄存器信息和主存最终值进行处理得到完整的数据块并形成同步多线程用例。
第二方面,本发明提供一种同步多线程用例生成系统,包括:
数据生成单元,用于生成单线程用例数据块;
脚本拼接单元,用于将至少两条单线程用例数据块进行脚本拼接,得到完整数据块并形成同步多线程用例。
可选地,所述数据生成单元包括:
第一添加模块,用于添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块;
第一判断模块,用于判断第一单线程用例数据块是否成功生成。
可选地,所述数据生成单元还包括:
第二添加模块,用于添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块。
第二判断模块,用于第二单线程用例数据块是否成功生成。
可选地,所述系统还包括:
用例库,用于储存单线程用例数据块;
用例调取单元,用于直接从用例库中调取至少两个单线程用例数据块并分别作为第一单线程用例数据块和第二单线程用例数据块。
可选地,所述系统还包括:
配置单元,用于对各单线程配置系统寄存器;
划分单元,用于对各单线程划分主存物理地址以使各单线程对应工作在不同的物理地址区间内。
可选地,所述脚本拼接单元包括:
保留模块,用于保留一份系统的环境变量及路径作为同步多线程用例数据块中的系统的环境变量及路径;
第一合并模块,用于对应获取各单线程用例数据块中的主存初始值并合并形成同步多线程用例数据块中的主存初始值;
拼接模块,用于对各单线程用例对应赋予处理器ID,以及对应获取各单线程用例数据块中的指令序列、系统寄存器的初始值、寄存器的初始值、系统寄存器的最终值和寄存器的最终值,并将处理器ID、指令序列、系统寄存器的初始值、寄存器的初始值、系统寄存器的最终值和寄存器的最终值对应捆绑并按设定顺序进行拼接形成同步多线程用例数据块中的指令序列和寄存器信息;
第二合并模块,用于对应获取各条单线程用例数据块中的主存最终值并合并形成同步多线程用例数据块中的主存最终值;
处理模块,用于将同步多线程用例数据块中的系统的环境变量及路径、主存初始值、指令序列和寄存器信息和主存最终值进行处理得到完整的数据块并形成同步多线程用例。
本发明实施例提供的同步多线程用例生成方法及系统,解决了使用用例工具生成同步多线程资源竞争用例成功率低,并且用例的质量和数量都无法达到充分验证同步多线程要求的问题。本实施例中为了达到同步多线程的充分验证的要求,主要是提高在同步多线程资源竞争验证时场景与场景的匹配率,以及场景之间的覆盖率。因此,本实施例中首先通过数据生成单元生成至少两条单线程用例数据块,并将各单线程用例数据块通过脚本拼接形成同步多线程用例,本实施例中通过多个单线程用例进行复用形成多样化同步多线程用例,进而能够根据验证需求全面覆盖验证点,同时,本实施例中通过对多种不同的单线程用例进行脚本拼接并生成大量交错的同步多线程用例,提高了同步多线程用例的随机性,并使得遍历空间更大。
综上所述,第一方面,本实施例所述方法通过将各单线程用例进行脚本拼接可以更快速的生成同步多线程用例,减少时间开销,并且通过开发脚本高效生成同步多线程用例还可减少人力开销;第二方面,本实施例所述方法通过增加指令条数并对应生成多条单线程用例数据块,增加同步多线程用例的复杂性并触及更多的验证场景;第三方面,本实施例所述方法提高生成同步多线程用例的成功率,以及生成同步多线程用例的效率。
附图说明
图1为本发明一实施例同步多线程用例生成方法的流程图;
图2为本发明另一实施例同步多线程用例生成方法的流程图;
图3为本发明一实施例同步多线程用例生成系统的结构示意图;
图4为本发明另一实施例数据生成单元的结构示意图;
图5为本发明另一实施例脚本拼接单元的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种同步多线程用例生成方法,如图1所示,所述方法包括:
S11、生成至少两条单线程用例数据块;
S12、将至少两条单线程用例数据块进行脚本拼接,得到完整的数据块并形成同步多线程用例。
本发明实施例提供的同步多线程用例生成方法解决了使用用例工具生成同步多线程资源竞争用例成功率低,并且用例的质量和数量都无法达到充分验证同步多线程要求的问题。本实施例中为了达到同步多线程的充分验证的要求,主要是提高在同步多线程资源竞争验证时场景与场景的匹配率,以及场景之间的覆盖率。因此,本实施例中首先通过生成至少两条单线程用例数据块,并将各单线程用例数据块形成同步多线程用例,本实施例中通过多个单线程用例进行复用形成多样化同步多线程用例,进而能够根据验证需求全面覆盖验证点,同时,本实施例中通过对多种不同的单线程用例进行脚本拼接并生成大量交错的同步多线程用例,一方面提高了同步多线程用例的随机性,并使得遍历空间更大;另一方面还可积极响应中后期的回归验证。
同时,通过统计分析当采用传统的用例生成方法生成同步多线程用例时,每12小时可成功生成7条用例。当采用本实施例所述方法中首先生成多个单线程用例,然后将各单线程用例数据块进行脚本拼接形成同步多线程用例时,每12小时可成功生成70条用例。
因此,第一方面,所述方法通过将各单线程用例进行脚本拼接可以更快速的生成同步多线程用例,减少时间开销,并且通过开发脚本高效生成同步多线程用例还可减少人力开销;第二方面,所述方法通过增加指令条数并对应生成多条单线程用例数据块,增加同步多线程用例的复杂性并触及更多的验证场景;第三方面,所述方法提高生成同步多线程用例的成功率,以及生成同步多线程用例的效率。
可选地,如图2所示,所述生成至少两条单线程用例数据块包括:
S110、添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块;
S120、添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块。
具体的,对于同步多线程资源竞争的用例,本实施例中所述方法通过分别添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块,形成一定向单线程用例,其中,占用定点运算资源线程包括定点运算单元,访存单元,分支运算单元中一种或者任意的组合;和添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块,形成随机单线程用例,进而生成至少两条单线程用例数据块;其中,所述方法一方面主要是通过去观察一个占用定点运算资源的定向单线程用例,对另外至少一个随机单线程用例的影响,从而验证寄存器传输级的功能正确性;另一方面,所述方法通过定向单线程用例和各种随机单线程用例进行复用,进而增加同步多线程用例的复杂性并触及更多的验证场景,同时,还可以根据验证场景需求,产生多种不同的随机单线程用例并与定向单线程用例进行组合复用形成覆盖率高的同步多线程用例,进而具有针对性增加了所述同步多线程用例的复杂性并触及更多的验证场景,提高了场景与场景的匹配率,以及场景之间的覆盖率。
可选地,在添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块后,还包括:
S13、判断第一单线程用例数据块是否成功生成,如果第一单线程用例数据块成功生成,则将第一单线程用例数据块储存在用例库内;如果第一单线程用例数据块没有成功生成,则继续添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块。
可选地,在添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块后,还包括:
S14、判断第二单线程用例数据块是否成功生成,如果第二单线程用例数据块成功生成,则将第二单线程用例数据块储存在用例库内;如果第二单线程用例数据块没有成功生成,则继续添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块。
具体的,本实施例中所述方法在单线程用例生成后,还需判断单线程用例是否生成成功,进一步的提高了生成同步多线程用例的效率和稳定性。
可选地,所述生成至少两条单线程用例数据块包括:
直接从用例库中调取至少两个单线程用例数据块并分别作为第一单线程用例数据块和第二单线程用例数据块。
具体的,本实施例中所述方法还能够通过对用例库的调用可以更快速的生成同步多线程用例,减少时间开销,并且,提高所述用例生成方法的处理能力。
可选地,在生成至少两条单线程用例数据块之前,还包括:
S00、对各单线程配置系统寄存器;
S10、对各单线程划分主存物理地址以使各单线程对应工作在不同的物理地址区间内。
具体的,本实施例所述方法首先需要根据验证场景的需求对单线程用例进配置,首先是针对在测试不同的场景时,将各单线程配置到系统寄存器所对应的合理值。例如,当处理器工作在不同的层级时,则根据单线程用例需求修改例外层级;当遇到浮点类指令为避免其发生例外时,将对单线程用例配置相应的系统寄存器。然后对各单线程划分主存物理地址以使各单线程对应工作在不同的物理地址区间内,因此,所述方法可通过系统寄存器的配置和主存物理地址的划分提高所述单线程用例的效率,进而提高生成同步多线程用例的成功率,以及生成同步多线程用例的效率。
可选地,所述单线程用例数据块包括系统的环境变量及路径、主存初始值、系统寄存器的初始值、寄存器的初始值、指令序列、主存最终值、系统寄存器的最终值和寄存器的最终值中一种或者任意组合。
具体的,本实施例中所述系统寄存器用于暂存系统的指令、数据和地址并根据验证场景,对各单线程配置到系统寄存器所对应的合理值;例如,当处理器工作在不同的层级时,则根据单线程用例需求修改例外层级;当遇到浮点类指令为避免其发生例外时,将对单线程用例配置相应的系统寄存器。同时,所述寄存器用于暂存用例中的指令、数据和地址。
可选地,所述将至少两条单线程用例数据块进行脚本拼接,得到完整的数据块并形成同步多线程用例,包括:
S121、保留一份系统的环境变量及路径作为同步多线程用例数据块中的系统的环境变量及路径;
S122、对应获取各单线程用例数据块中的主存初始值并合并形成同步多线程用例数据块中的主存初始值;
S123、对各单线程用例对应赋予处理器ID,以及对应获取各单线程用例数据块中的指令序列、系统寄存器的初始值、寄存器的初始值、系统寄存器的最终值和寄存器的最终值,并将处理器ID、指令序列、系统寄存器的初始值、寄存器的初始值、系统寄存器的最终值和寄存器的最终值对应捆绑并按设定顺序进行拼接形成同步多线程用例数据块中的指令序列和寄存器信息;
S124、对应获取各条单线程用例数据块中的主存最终值并合并形成同步多线程用例数据块中的主存最终值;
S125、将同步多线程用例数据块中的系统的环境变量及路径、主存初始值、指令序列和寄存器信息和主存最终值进行处理得到完整的数据块并形成同步多线程用例。
具体的,本实施例中所述方法主要是通过使用脚本将各单线程生成的用例数据块进行拼接。其中,具体是将系统中环境变量及路径保留一份,将各单线程用例数据块中的主存初始值合并在一起,由于各单线程用例数据块生成时都可以设置处理器的ID,则可将各单线程用例数据块赋予不同的处理器ID,并将处理器ID和用例数据块中的指令序列以及寄存器信息捆绑在一起,然后将指令序列以及寄存器信息中的内容顺序拼接。最终将各单线程用例数据块中的主存最终值合并,即得到完整的数据块并形成同步多线程用例。综上所述,本实施例所述方法通过简单的脚本拼接,不仅快速的生成同步多线程用例,减少时间开销,还提高了生成同步多线程用例的成功率,以及生成同步多线程用例的效率。
本发明实施例还提供一种同步多线程用例生成系统,如图3所示,所述系统包括:
数据生成单元14,用于生成单线程用例数据块;
脚本拼接单元15,用于将至少两条单线程用例数据块进行脚本拼接,得到完整数据块并形成同步多线程用例。
本发明实施例提供的同步多线程用例生成系统为了达到同步多线程的充分验证的要求,主要是提高在同步多线程资源竞争验证时场景与场景的匹配率,以及场景之间的覆盖率。因此,本实施例中首先通过数据生成单元生成至少两条单线程用例数据块,并通过脚本拼接单元将各单线程用例数据块通过脚本拼接形成同步多线程用例,本实施例所述系统能够通过脚本拼接单元将多个单线程用例进行复用形成多样化同步多线程用例,进而能够根据验证需求全面覆盖验证点,同时,本实施例中所述装置通过数据生成单元生成多种不同的单线程用例并由脚本拼接单元进行脚本拼接并生成大量交错的同步多线程用例,不仅可以更快速的生成同步多线程用例,减少时间开销,并且通过开发脚本高效生成同步多线程用例还可减少人力开销;还能通过数据生成单元增加指令条数并对应生成多条单线程用例数据块,增加同步多线程用例的复杂性并触及更多的验证场景;进而提高所述系统生成同步多线程用例的成功率,以及生成同步多线程用例的效率。
可选地,如图4所示,所述数据生成单元14包括:
第一添加模块41,用于添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块;
第一判断模块42,用于判断第一单线程用例数据块是否成功生成。
可选地,所述数据生成单元还包括:
第二添加模块43,用于添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块。
第二判断模块44,用于判断第二单线程用例数据块是否成功生成。
可选地,所述系统还包括:
用例库17,用于储存单线程用例数据块;
用例调取单元16,用于直接从用例库中调取至少两个单线程用例数据块并分别作为第一单线程用例数据块和第二单线程用例数据块。
可选地,所述系统还包括:
配置单元12,用于对各单线程配置系统寄存器;
划分单元13,用于对各单线程划分主存物理地址以使各单线程对应工作在不同的物理地址区间内。
可选的,所述系统还包括:
控制单元11,分别与配置单元12、划分单元13、数据生成单元14、脚本拼接单元15、用例调取单元16和用例库17连接并用于控制协调上述各单元的工作。
可选地,如图5所示,所述脚本拼接单元15包括:
保留模块51,用于保留一份系统的环境变量及路径作为同步多线程用例数据块中的系统的环境变量及路径;
第一合并模块52,用于对应获取各单线程用例数据块中的主存初始值并合并形成同步多线程用例数据块中的主存初始值;
拼接模块53,用于对各单线程用例对应赋予处理器ID,以及对应获取各单线程用例数据块中的指令序列、系统寄存器的初始值、寄存器的初始值、系统寄存器的最终值和寄存器的最终值,并将处理器ID、指令序列、系统寄存器的初始值、寄存器的初始值、系统寄存器的最终值和寄存器的最终值对应捆绑并按设定顺序进行拼接形成同步多线程用例数据块中的指令序列和寄存器信息;
第二合并模块54,用于对应获取各条单线程用例数据块中的主存最终值并合并形成同步多线程用例数据块中的主存最终值;
处理模块55,用于将同步多线程用例数据块中的系统的环境变量及路径、主存初始值、指令序列和寄存器信息和主存最终值进行处理得到完整的数据块并形成同步多线程用例。
本实施例的系统,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (12)
1.一种同步多线程用例生成方法,其特征在于,包括:
生成至少两条单线程用例数据块;
将至少两条单线程用例数据块进行脚本拼接,得到完整的数据块并形成同步多线程用例;
其中,将至少两条单线程用例数据块进行脚本拼接包括:保留一份系统的环境变量及路径作为同步多线程用例数据块中的系统的环境变量及路径;
对应获取各单线程用例数据块中的主存初始值并合并形成同步多线程用例数据块中的主存初始值;
对各单线程用例对应赋予处理器ID,以及对应获取各单线程用例数据块中的指令序列、系统寄存器的初始值、寄存器的初始值、系统寄存器的最终值和寄存器的最终值,并将处理器ID、指令序列、系统寄存器的初始值、寄存器的初始值、系统寄存器的最终值和寄存器的最终值对应捆绑并按设定顺序进行拼接形成同步多线程用例数据块中的指令序列和寄存器信息;
对应获取各条单线程用例数据块中的主存最终值并合并形成同步多线程用例数据块中的主存最终值;
将同步多线程用例数据块中的系统的环境变量及路径、主存初始值、指令序列和寄存器信息和主存最终值进行处理得到完整的数据块并形成同步多线程用例。
2.根据权利要求1所述的方法,其特征在于,所述生成至少两条单线程用例数据块包括:
添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块;
添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块。
3.根据权利要求2所述的方法,其特征在于,在添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块后,还包括:
判断第一单线程用例数据块是否成功生成,如果第一单线程用例数据块成功生成,则将第一单线程用例数据块储存在用例库内;如果第一单线程用例数据块没有成功生成,则继续添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块。
4.根据权利要求2或3所述的方法,其特征在于,在添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块后,还包括:
判断第二单线程用例数据块是否成功生成,如果第二单线程用例数据块成功生成,则将第二单线程用例数据块储存在用例库内;如果第二单线程用例数据块没有成功生成,则继续添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块。
5.根据权利要求1任一所述的方法,其特征在于,所述生成至少两条单线程用例数据块包括:
直接从用例库中调取至少两个单线程用例数据块并分别作为第一单线程用例数据块和第二单线程用例数据块。
6.根据权利要求1任一所述的方法,其特征在于,在生成至少两条单线程用例数据块之前,还包括:
对各单线程配置系统寄存器;
对各单线程划分主存物理地址以使各单线程对应工作在不同的物理地址区间内。
7.根据权利要求1任一所述的方法,其特征在于,所述单线程用例数据块包括系统的环境变量及路径、主存初始值、系统寄存器的初始值、寄存器的初始值、指令序列、主存最终值、系统寄存器的最终值和寄存器的最终值中一种或者任意组合。
8.一种同步多线程用例生成系统,其特征在于,包括:
数据生成单元,用于生成单线程用例数据块;
脚本拼接单元,用于将至少两条单线程用例数据块进行脚本拼接,得到完整数据块并形成同步多线程用例;
所述脚本拼接单元包括:
保留模块,用于保留一份系统的环境变量及路径作为同步多线程用例数据块中的系统的环境变量及路径;
第一合并模块,用于对应获取各单线程用例数据块中的主存初始值并合并形成同步多线程用例数据块中的主存初始值;
拼接模块,用于对各单线程用例对应赋予处理器ID,以及对应获取各单线程用例数据块中的指令序列、系统寄存器的初始值、寄存器的初始值、系统寄存器的最终值和寄存器的最终值,并将处理器ID、指令序列、系统寄存器的初始值、寄存器的初始值、系统寄存器的最终值和寄存器的最终值对应捆绑并按设定顺序进行拼接形成同步多线程用例数据块中的指令序列和寄存器信息;
第二合并模块,用于对应获取各条单线程用例数据块中的主存最终值并合并形成同步多线程用例数据块中的主存最终值;
处理模块,用于将同步多线程用例数据块中的系统的环境变量及路径、主存初始值、指令序列和寄存器信息和主存最终值进行处理得到完整的数据块并形成同步多线程用例。
9.根据权利要求8所述的系统,其特征在于,所述数据生成单元包括:
第一添加模块,用于添加一用于生成占用定点运算资源线程的定向序列指令序列并生成第一单线程用例数据块;
第一判断模块,用于判断第一单线程用例数据块是否成功生成。
10.根据权利要求9所述的系统,其特征在于,所述数据生成单元还包括:
第二添加模块,用于添加至少一用于生成干扰线程的随机指令序列并对应生成至少一个用于第二单线程用例数据块;
第二判断模块,用于判断第二单线程用例数据块是否成功生成。
11.根据权利要求9或10所述的系统,其特征在于,所述系统还包括:
用例库,用于储存单线程用例数据块;
用例调取单元,用于直接从用例库中调取至少两个单线程用例数据块并分别作为第一单线程用例数据块和第二单线程用例数据块。
12.根据权利要求8任一所述的系统,其特征在于,所述系统还包括:
配置单元,用于对各单线程配置系统寄存器;
划分单元,用于对各单线程划分主存物理地址以使各单线程对应工作在不同的物理地址区间内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710708157.3A CN109408221B (zh) | 2017-08-17 | 2017-08-17 | 一种同步多线程用例生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710708157.3A CN109408221B (zh) | 2017-08-17 | 2017-08-17 | 一种同步多线程用例生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109408221A CN109408221A (zh) | 2019-03-01 |
CN109408221B true CN109408221B (zh) | 2022-03-01 |
Family
ID=65455048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710708157.3A Active CN109408221B (zh) | 2017-08-17 | 2017-08-17 | 一种同步多线程用例生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408221B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1540498A (zh) * | 2003-04-21 | 2004-10-27 | �Ҵ���˾ | 用于在同步多线程处理器中改变流水线长度的方法和电路 |
CN101304297A (zh) * | 2008-06-03 | 2008-11-12 | 华为技术有限公司 | 一种验证用例生成方法及装置 |
CN102567165A (zh) * | 2011-12-29 | 2012-07-11 | 中国科学院自动化研究所 | 对寄存器传输级硬件实现进行验证的系统及方法 |
CN102663164A (zh) * | 2012-03-16 | 2012-09-12 | 北京邮电大学 | 基于多目标测试用例生成的通行控制算法测试装置与方法 |
CN106933727A (zh) * | 2015-12-29 | 2017-07-07 | 北京国睿中数科技股份有限公司 | 处理器中断机制的验证方法及验证装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130332906A1 (en) * | 2012-06-08 | 2013-12-12 | Niloofar Razavi | Concurrent test generation using concolic multi-trace analysis |
-
2017
- 2017-08-17 CN CN201710708157.3A patent/CN109408221B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1540498A (zh) * | 2003-04-21 | 2004-10-27 | �Ҵ���˾ | 用于在同步多线程处理器中改变流水线长度的方法和电路 |
CN101304297A (zh) * | 2008-06-03 | 2008-11-12 | 华为技术有限公司 | 一种验证用例生成方法及装置 |
CN102567165A (zh) * | 2011-12-29 | 2012-07-11 | 中国科学院自动化研究所 | 对寄存器传输级硬件实现进行验证的系统及方法 |
CN102663164A (zh) * | 2012-03-16 | 2012-09-12 | 北京邮电大学 | 基于多目标测试用例生成的通行控制算法测试装置与方法 |
CN106933727A (zh) * | 2015-12-29 | 2017-07-07 | 北京国睿中数科技股份有限公司 | 处理器中断机制的验证方法及验证装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109408221A (zh) | 2019-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8082420B2 (en) | Method and apparatus for executing instructions | |
US9311157B2 (en) | Method and apparatus for dynamic resource allocation of processing units on a resource allocation plane having a time axis and a processing unit axis | |
US8869162B2 (en) | Stream processing on heterogeneous hardware devices | |
US20150149744A1 (en) | Data processing apparatus and method for performing vector processing | |
CN105893126A (zh) | 一种任务调度方法及装置 | |
US20190012176A1 (en) | Vector processing using loops of dynamic vector length | |
US10007495B2 (en) | Code generation method for scheduling processors using hook function and exception handling function | |
CN110503179B (zh) | 计算方法以及相关产品 | |
RU2010149889A (ru) | Конфигурируемое разделение для параллельных данных | |
US11288047B2 (en) | Heterogenous computer system optimization | |
US9396095B2 (en) | Software verification | |
US20220197858A1 (en) | Dynamic allocation of arithmetic logic units for vectorized operations | |
KR101177059B1 (ko) | 병렬 제어 모듈을 동적으로 할당하는 방법 | |
CN111767121A (zh) | 运算方法、装置及相关产品 | |
CN109408221B (zh) | 一种同步多线程用例生成方法及系统 | |
CN105378652A (zh) | 线程共享资源分配方法及装置 | |
US9229788B2 (en) | Performing a wait operation to wait for one or more tasks to complete | |
CN108984405B (zh) | 一种性能测试方法、装置及计算机可读存储介质 | |
CN107783817A (zh) | 处理器的模拟方法、功能模拟器、性能模拟器和模拟系统 | |
US9354890B1 (en) | Call stack structure for enabling execution of code outside of a subroutine and between call stack frames | |
US20140013312A1 (en) | Source level debugging apparatus and method for a reconfigurable processor | |
CN110543395B (zh) | 验证方法、装置以及相关产品 | |
CN109522048B (zh) | 一种同步多线程中断验证方法及系统 | |
CN109375991B (zh) | 一种将单进程改造为多进程的方法及系统 | |
CN112445587A (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 |