CN103488563B - 并行程序的数据竞争检测方法、装置及多核处理系统 - Google Patents
并行程序的数据竞争检测方法、装置及多核处理系统 Download PDFInfo
- Publication number
- CN103488563B CN103488563B CN201310400690.5A CN201310400690A CN103488563B CN 103488563 B CN103488563 B CN 103488563B CN 201310400690 A CN201310400690 A CN 201310400690A CN 103488563 B CN103488563 B CN 103488563B
- Authority
- CN
- China
- Prior art keywords
- lock
- instruction
- access information
- processor core
- memory access
- 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
Landscapes
- Multi Processors (AREA)
Abstract
本发明提供一种并行程序的数据竞争检测方法、装置及多核处理系统,该方法在调用多核处理器中的一处理器核执行并行程序的指令之后,还包括:锁访问信息记录流程:记录所述处理器核的当前指令的锁访问信息,其中,所述锁访问信息与锁操作的锁地址对应记录;访存信息记录流程:记录所述处理器核的当前指令的访存信息;以及数据竞争判断流程:根据所述锁访问信息记录流程记录的锁访问信息以及所述访存信息记录流程记录的访存信息,判断存在冲突的两个指令之间是否存在数据竞争。本发明能够实现快速、准确和有效地检测并行程序中潜在的数据竞争,保证并行程序的正确性,为更好的调试和测试并行程序带来突破。
Description
技术领域
本发明涉及处理器芯片技术,尤其涉及一种并行程序的数据竞争检测方法、装置及多核处理系统。
背景技术
随着多核处理器的发展,需要更好的并行程序来获取由多核带来的性能提升。然而,由于并行程序执行结果的不确定性,调试并行程序有着极大的难度。在并行程序的众多类型的漏洞(bug)中,数据竞争(data race)是在实际并行程序中最常见的一种。
对于来自不同线程的一对访存操作,如果它们访问的地址相同,而且其中至少有一个是写操作,那么就称这对操作为一对冲突操作。如果一对冲突操作的执行过程之间没有同步操作把它们隔开,那么就认为产生一个数据竞争。数据竞争在大多数情况下都认为是一个漏洞,因为它给程序的执行带来了不确定性。
为了检测程序里面存在的数据竞争,目前已有的方法可以分为静态检测和动态检测两种。静态检测方法静态的分析整个并行程序,根据并行程序静态的构造可能的执行图,并判断执行图中的冲突操作是否被同步操作隔开。虽然静态检测方法可以找到所有可能的数据竞争,但是当并行程序规模变大时,静态检测方法不可避免的碰到状态爆炸的问题,使得静态分析无法进行。此外,静态检测方法需要推测并行程序可能的执行路径,对于含有指针的程序,还要推测访存操作的访问地址。因此,所有的静态检测方法都有很多的误报,即很多本来不是数据竞争的冲突操作被认为是数据竞争,极大的影响了检测的准确性。
与静态检测方法不同的是,动态检测方法通过记录并分析并行程序一次具体的执行来检测数据竞争。由于动态方法只用分析一次特定的执行,所以程序的执行流是可以知道的,也不会碰到状态爆炸的问题。但是,检测结果过于依赖并行程序的执行。对于一个有数据竞争的并行程序,可能只在很少的执行中才能把数据竞争暴露出来,一旦在某一次执行中没有暴露出来,已有的动态检测方法就会检测不到该数据竞争。并且,一个并行程序可能的执行种数跟指令数是指数关系的,即使重复执行了同一个程序数万次,也只能覆盖并行程序中极少一部分的执行种数。在对并行程序进行测试的过程中,即使同一个程序数万次的执行都没有数据竞争,我们也无法断定该并行程序是没有数据竞争的。
综上所述,现有技术中的方法在检测数据竞争中都有着明显的缺点:静态检测方法检测过程中可能碰到状态爆炸的问题、误报率高;现有的动态检测方法可能漏检并行程序中存在的数据竞争。
发明内容
本发明提供一种并行程序的数据竞争检测方法、装置及多核处理系统,用于解决现有技术中数据竞争检测方法误报和漏检的缺陷。
第一方面,本发明提供一种并行程序的数据竞争检测方法,在调用多核处理器中的一处理器核执行并行程序的指令之后,还包括:
锁访问信息记录流程:记录所述处理器核的当前指令的锁访问信息,其中,所述锁访问信息与锁操作的锁地址对应记录;
访存信息记录流程:记录所述处理器核的当前指令的访存信息;以及
数据竞争判断流程:根据所述锁访问信息记录流程记录的锁访问信息以及所述访存信息记录流程记录的访存信息,判断存在冲突的两个指令之间是否存在数据竞争。
结合第一方面,在第一方面的第一种可能的实现方式中,所述数据竞争判断流程具体包括:
根据记录的各条指令的访存信息,判断指令间是否满足程序序关系,如果两条指令在处理器核上被执行,则两条指令满足程序序关系;
根据记录的所述锁访问信息,判断所述锁操作间是否满足可行同步序关系,其中,对应于同一地址的先后执行的第一锁操作以及第二锁操作,若在所述第一锁操作的锁获取操作以及锁释放操作之间存在一个写操作,使得所述第二锁操作的锁获取和锁释放之间存在对与所述写操作为同一地址的冲突读操作,则所述锁操作间满足可行同步序关系;
当检测出存在冲突的两个指令时,判断存在冲突的两个指令是否满足可行序关系;如果两个指令之间不满足可行序关系,则确定所述第一锁操作和所述第二锁操作间存在数据竞争,其中,所述可行序关系为:若存在冲突的两条指令之间存在一串指令操作,这一串操作之间至少满足程序序关系和可行同步序关系之一。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在所述数据竞争判断流程之前,还包括:
根据记录的各处理器核的各条指令的访存信息,判断当前指令的访问地址与所述多核处理器中其它处理器核的各条指令的访问地址是否相同;
如果是,则判断所述当前指令与具有相同访问地址的指令中是否存在写操作;
如果存在写操作,则所述当前指令与其它处理器核的各条指令中,与该当前指令具有相同访问地址的指令存在冲突。
结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,还包括:向量时钟更新流程,其中,
记录所述处理器核的当前指令的锁访问信息具体包括:
当识别到当前指令触发锁操作或位于锁获取和锁释放之间时,记录所述锁访问信息,所述锁访问信息包括:处理器核标识、操作类型和本地时间戳;
所述锁访问信息记录流程还包括:
当识别到所述处理器核的当前指令触发锁操作时,将所述处理器核对应的本地时间戳加1;
所述向量时钟更新流程包括:
当识别到所述处理器核的本地时间戳加1时,根据本地时间戳更新所述处理器核当前指令的向量时钟中的元素值,其中,每个向量时钟与每个处理器核的每条指令对应设置,每个向量时钟包括N个元素,N为处理器核的数量,N个元素分别与各处理器核对应;
对于每个锁地址,当监测到所述锁地址的锁访问信息的操作类型为锁获取时,判断在当前的锁获取之前是否存在满足可行同步序关系的锁释放,若存在,根据该锁释放的向量时钟更新该锁获取的向量时钟。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,记录所述处理器核的当前指令的访存信息之前,还包括:
判断存储所述当前指令的访存历史记录器中记录的访存信息是否超过n条,n为大于等于2的预设正整数;
若是,则删除所述访存历史记录器中最早存入的一条访存信息,以将所述处理器核的当前指令的访存信息记录在所述访存历史记录器中。
结合第一方面的第三种可能的实现方式,在第一方面的第五种可能的实现方式中,所述根据该锁释放的向量时钟更新该锁获取的向量时钟,包括:
逐一对应比较所述满足可行同步序关系的锁获取和锁释放的向量时钟中各元素的大小,得到比较结果,取所述比较结果中较大的元素作为所述锁释放的向量时钟中对应的元素。
结合第一方面的第三种可能的实现方式,在第一方面的第六种可能的实现方式中,判断存在冲突的两个指令是否满足可行序关系,包括:
逐一对应比较存在冲突的两个指令的向量时钟中的各元素,判断所述当前指令的向量时钟中是否存在小于与其存在冲突的指令的向量时钟中的对应元素的元素,如果存在,则存在冲突的两个指令之间存在数据竞争。
第二方面,本发明提供一种并行程序的数据竞争检测装置,包括:中央锁访问模块、访存历史记录器和序关系分析模块,其中,
所述中央锁访问模块,用于在调用多核处理器中的一处理器核执行并行程序的指令之后,记录所述处理器核的当前指令的锁访问信息,其中,所述锁访问信息与锁操作的锁地址对应记录;
所述访存历史记录器,用于在调用多核处理器中的一处理器核执行并行程序的指令之后,记录所述处理器核的当前指令的访存信息;
所述序关系分析模块,用于根据所述中央锁访问模块记录的锁访问信息以及所述访存历史记录器记录的访存信息,判断存在冲突的两个指令之间是否存在数据竞争。
结合第二方面,在第二方面的第一种可能的实现方式中,所述序关系分析模块包括:
第一判断单元,用于根据记录的各条指令的访存信息,判断指令间是否满足程序序关系,如果两条指令在处理器核上被执行,则两条指令满足程序序关系;
第二判断单元,用于根据记录的所述锁访问信息,判断所述锁操作间是否满足可行同步序关系,其中,对应于同一地址的先后执行的第一锁操作以及第二锁操作,若在所述第一锁操作的锁获取操作以及锁释放操作之间存在一个写操作,使得所述第二锁操作的锁获取和锁释放之间存在对与所述写操作为同一地址的冲突读操作,则所述锁操作间满足可行同步序关系;
第三判断单元,用于当检测出存在冲突的两个指令时,判断存在冲突的两个指令是否满足可行序关系;如果两个指令之间不满足可行序关系,则确定所述第一锁操作和所述第二锁操作间存在数据竞争,其中,所述可行序关系为:若存在冲突的两条指令之间存在一串指令操作,这一串操作之间至少满足程序序关系和可行同步序关系之一。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述序关系分析模块还包括:第四判断单元,用于根据记录的各处理器核的各条指令的访存信息,判断当前指令的访问地址与所述多核处理器中其它处理器核的各条指令的访问地址是否相同;如果是,则判断所述当前指令与具有相同访问地址的指令中是否存在写操作;如果存在写操作,则所述当前指令与其它处理器核的各条指令中,与该当前指令具有相同访问地址的指令存在冲突。
结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述中央锁访问模块包括:
记录单元,用于当识别到当前指令触发锁操作或位于锁获取和锁释放之间时,记录所述锁访问信息,所述锁访问信息包括处理器核标识、操作类型和本地时间戳;
第一处理单元,用于当识别到所述处理器核的当前指令触发锁操作时,将所述处理器核对应的本地时间戳加1;
所述序关系分析模块还包括:
第一更新单元,用于当识别到所述处理器核的本地时间戳加1时,根据本地时间戳更新所述处理器核当前指令的向量时钟中的元素值,其中,每个向量时钟与每个处理器核的每条指令对应设置,每个向量时钟包括N个元素,N为处理器核的数量,N个元素分别与各处理器核对应;
第五判断单元,用于对于每个锁地址,当监测到所述锁地址的锁访问信息的操作类型为锁获取时,判断在当前的锁获取之前是否存在满足可行同步序关系的锁释放;
第二更新单元,用于若第五判断单元判断结果为存在,根据该锁释放的向量时钟更新该锁获取的向量时钟。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述访存历史记录器包括:
第六判断单元,用于判断存储所述当前指令的所述访存历史记录器中记录的访存信息是否超过n条,n为大于等于2的预设正整数;
第二处理单元,用于若所述第六判断单元判断结果为是时,则删除所述访存历史记录器中最早存入的一条访存信息,以使得所述处理器核的当前指令的访存信息记录在所述访存历史记录器中;
第二记录单元,用于记录所述处理器核的当前指令的访存信息。
结合第二方面的第三种可能的实现方式,在第二方面的第五种可能的实现方式中,所述第二更新单元具体用于:
逐一对应比较所述满足可行同步序关系的锁获取和锁释放的向量时钟中各元素的大小,得到比较结果,取所述比较结果中较大的元素作为所述锁释放的向量时钟中对应的元素。
结合第二方面的第三种可能的实现方式,在第二方面的第六种可能的实现方式中,所述第三判断单元具体用于:
逐一对应比较存在冲突的两个指令的向量时钟中的各元素,判断所述当前指令的向量时钟中是否存在小于与其存在冲突的指令的向量时钟中的对应元素的元素,如果存在,则存在冲突的两个指令之间存在数据竞争。
第三方面,本发明提供一种多核处理系统,包括:至少两个处理器核、至少一个非处理器核设备以及如第二方面任一项所述的并行程序的数据竞争检测装置,其中,
所述至少两个处理器核,用于执行并行程序;
所述至少一个非处理器核设备,与所述至少两个处理器核连接;
所述访存历史记录器,与所述至少两个处理器核连接;
所述中央锁访问模块,与所述至少两个处理器核连接;
所述序关系分析模块,与所述访存历史记录器和中央锁访问模块连接。
本发明在调用多核处理器中的处理器核执行并行程序的指令之后,通过首先两个指令之间是否存在冲突,再判断所述存在冲突的指令之间是否存在数据竞争,使得在并行程序单次执行的过程中能够快速、准确、有效的检测该并行程序中潜在的数据竞争,保证并行程序的正确性。
附图说明
图1为本发明并行程序的数据竞争检测方法实施例一的流程示意图;
图2为本发明并行程序的数据竞争检测方法实施例一中数据竞争判断流程示意图;
图3为本发明并行程序的数据竞争检测方法实施例二所适用的多核处理系统的结构示意图;
图4为本发明并行程序的数据竞争检测方法实施例二的流程示意图;
图5为本发明并行程序的数据竞争检测方法实施例二中向量时钟更新流程示意图;
图6为本发明并行程序的数据竞争检测方法实施例二中访存信息记录流程示意图;
图7为本发明并行程序的数据竞争检测装置实施例一的结构示意图;
图8为本发明并行程序的数据竞争检测装置实施例一中序关系分析模块的结构示意图;
图9为本发明并行程序的数据竞争检测装置实施例二的结构示意图。
具体实施方式
实施例一
本发明提供了一种并行程序的数据竞争检测方法,主要针对所述同步操作为锁操作时检测冲突操作之间是否存在数据竞争。图1为本发明并行程序的数据竞争检测方法实施例一的流程示意图,该方法可以由任意并行程序的数据竞争检测装置来执行,该装置可以通过软件和/或硬件实现。如图1所示,本实施例的方法包括:
步骤101、调用多核处理器中的一处理器核执行并行程序的指令。
具体地,当程序员或测试人员调试或测试并行程序时,触发所述并行程序,此时,由操作系统控制多核处理器从存储介质中获取所述并行程序,并调用多核处理器中的处理器核去执行所述并行程序的指令。其中,所述存储介质不同于上述非处理器核设备,可以是计算机中的存储部件,例如内存,用于预先存储待检测的并行程序。
在各处理器核执行并行程序指令的过程中,还会执行锁访问信息记录流程、访存信息记录流程和数据竞争判断流程,各流程之间没有必然的时序关系,且可并发执行,下面将详细介绍各流程的步骤。
步骤102、锁访问信息记录流程。
具体地,所述锁访问信息记录流程包括:记录所述处理器核的当前指令的锁访问信息,其中,所述锁访问信息与锁操作的锁地址对应记录。所述锁访问信息包括处理器核标识、操作类型和本地时间戳,锁操作包括锁获取操作,和锁释放操作。
需要说明的是,锁获取和锁释放是成对出现的,在大多数情况下,一对锁获取和锁释放之间只有很少的指令,所以记录下来不会带来很大的开销;成对出现的锁获取和锁释放对应同一个锁地址。
步骤103、访存信息记录流程。
具体地,所述访存信息记录流程包括:记录所述处理器核的当前指令的访存信息。其中,所述访存信息包括所述当前指令的访问地址和操作类型。在这里,指令的所述操作类型可以是读操作、写操作、计算操作等。
步骤104、数据竞争判断流程。
具体地,所述数据竞争判断流程包括:根据所述锁访问信息记录流程记录的锁访问信息以及所述访存信息记录流程记录的访存信息,判断存在冲突的两个指令之间是否存在数据竞争。
该步骤中,可以先判断两个指令之间是否存在冲突,再判断存在冲突的两个指令之间是否存在数据竞争。若已知两个指令之间是存在冲突的,则可以直接判断该存在冲突的两个指令之间是否存在数据竞争。
本发明根据多核处理器中的各处理器核中预先记录的访存信息和锁访问信息,判断指令之间是否存在数据竞争,实现能够快速、准确和有效地检测并行程序中潜在的数据竞争,保证并行程序的正确性,为更好的调试和测试并行程序带来突破。
如图2所示,在上述实施例的基础上,数据竞争判断流程可以进一步细化为:
步骤201、根据记录的各条指令的访存信息,判断指令间是否满足程序序关系。
具体地,如果两条指令在处理器核上被执行,则两条指令满足程序序关系。通常情况下,并行程序编写完成后,该并行程序中的各上下行指令之间已满足程序序关系,这里,在并行程序被执行过程中,根据相同或不同时刻所记录的各条指令的访存信息,判断该些指令之间是否满足程序序关系。
步骤202、根据记录的所述锁访问信息,判断所述锁操作间是否满足可行同步序关系。
具体地,对应于同一地址的先后执行的第一锁操作以及第二锁操作,若在所述第一锁操作的锁获取操作以及锁释放操作之间存在一个写操作,使得所述第二锁操作的锁获取和锁释放之间存在对与所述写操作为同一地址的冲突读操作,则所述锁操作间满足可行同步序关系。
举例说明,对应于相同锁地址的锁释放操作u和锁获取操作v,其中,u对应锁获取操作u’,v对应锁获取操作v’,若v在u之后执行,在u’与u之间有对所述锁地址的写操作,且在v与v’之间有对所述锁地址的读操作,则u与v满足可行同步序关系。
其中,步骤201和步骤202之间没有时序关系,可以同时执行,也可以先执行步骤201再执行步骤202,不对其时序进行限制。
步骤203、当检测出存在冲突的两个指令时,判断存在冲突的两个指令是否满足可行序关系;如果两个指令之间不满足可行序关系,则确定所述第一锁操作和所述第二锁操作间存在数据竞争。
其中,本领域技术人员可以将可行序关系理解为:若存在冲突的两条指令之间存在一串指令操作,这一串操作之间至少满足程序序关系和可行同步序关系之一,则这两条存在冲突的指令满足可行序关系。
在上述基础上,步骤104之前,还可以首先判断当前指令与其它各条指令之间是否存在冲突,具体操作如下:
1、根据记录的各处理器核的各条指令的访存信息,判断当前指令的访问地址与所述多核处理器中其它处理器核的各条指令的访问地址是否相同;
2、如果访问地址相同,则判断所述当前指令与具有相同访问地址的指令中是否存在写操作;
3、如果存在写操作,则所述当前指令与其它处理器核的各条指令中,与该当前指令具有相同访问地址的指令存在冲突。
具体地,若当前指令与其它处理器核的各条指令中至少一条的访问地址相同,则判断所述当前指令与该具有相同访问地址的指令的操作类型是否至少一个是写操作,若是,则所述处理器核的当前指令,与其它处理器核的各条指令中与该当前指令具有相同访问地址的指令存在冲突。
采用首先根据各条指令的访存信息判断处理器核的当前指令与多核处理器中其它处理器核的各条指令之间是否存在冲突的方案,可以提高检测并行程序中是否潜在数据竞争的效率,节省时间。
实施例二
本实施例中,该并行程序的数据竞争检测方法通过本发明提供的多核处理系统执行。结合多核处理系统,对本发明并行程序的数据竞争检测方法进行说明。
该多核处理系统的结构如图3所示,配置有至少两个处理器核,如图3所示,以四个处理器核为例,记为第一处理器核111、第二处理器核112、第三处理器核113和第四处理器核114。多核处理系统还包括至少一个非处理器核设备115,用于与其连接的各处理器核的内容交互,其中,所述非处理器核设备115包括但不限于二级缓存、片上网络、内存控制器等设备。本实施例中,该多核处理系统还进一步设置有访存历史记录器,访存历史记录器与所述处理器核相连,用于记录所述处理器核的当前指令的访存信息,其个数可以是一个,也可以是多个,例如图3中,与多核处理器中包含的处理器核个数相同。所述访存历史记录器与所述处理器核一一对应,分别记为第一访存历史记录器121、第二访存历史记录器122、第三访存历史记录器123和第四访存历史记录器124;该多核处理系统还进一步设置有中央锁访问模块和序关系分析模块,其中,中央锁访问模块用于记录所述处理器核的当前指令的锁访问信息,序关系分析模块用于根据所述中央锁访问模块和所述访存历史记录器记录的各处理器核的各条指令的访存信息以及锁访问信息,判断存在冲突的两个指令之间是否存在数据竞争,例如图3中,中央锁访问模块130和序关系分析模块140。中央锁访问模块与各所述处理器核相连,序关系分析模块与访存历史记录器和中央锁访问模块连接。
图4为本发明并行程序的数据竞争检测方法实施例二的流程示意图,如图4所示,该方法可以包括以下步骤:
步骤401、在调用多核处理器中的一处理器核执行并行程序的指令。
本步骤与步骤101类似,此处不再赘述。
步骤402、当识别到所述处理器核的当前指令触发锁操作时,将所述处理器核对应的本地时间戳加1。
其中,所述锁操作为锁获取或锁释放。本地时间戳记录在访存历史记录器中,例如图3所示的第一访存历史记录器121,本地时间戳的初始值为0,在其对应的处理器核每次执行锁操作时加1,即本地时间戳随着锁操作的执行而逐步递增。
步骤403、记录所述处理器核的当前指令的锁访问信息。
当识别到当前指令触发锁操作或位于锁获取和锁释放之间时,记录当前指令的锁访问信息,所述锁访问信息包括处理器核标识、操作类型和本地时间戳,且所述锁访问信息与锁操作的锁地址对应记录。
例如图3所示的中央锁访问模块130用于执行该步骤。中央锁访问模块130用于集中处理锁操作,即在多核处理器系统中的多个锁地址,由各处理器核通过向中央锁访问模块130发送锁获取请求来占用,并在操作完成后向中央锁访问模块130发送锁释放请求来释放该锁地址。当中央锁访问模块130接收到对同一锁地址的多个锁获取请求,或对占用状态锁地址的锁获取请求时,保证该锁地址仅分配给一个处理器核。其中,中央锁访问模块130记录至少两条锁访问信息。较优的是,锁访问历史记录器记录30条锁访问信息,不以此为限。
中央锁访问模块根据当前锁地址的状态,决定如何处理各处理器核送来的锁操作。例如,若当前锁地址是自由(free)状态,则中央锁访问模块只接收各处理器核来的锁获取操作;若当前锁地址是占用(held)状态,则中央锁访问模块只接收占用处理器核来的锁释放操作,其它操作,例如由其它处理器核来的锁获取操作,需要等待,直到该锁地址被释放,重新变为自由状态为止。
具体地,每个处理器核在记录其当前指令的锁访问信息时执行相同的操作,且各处理器核之间彼此不相互影响。
步骤404、记录所述处理器核的当前指令的访存信息。
此步骤与步骤103类似,此处不再赘述。
其中,步骤403和步骤404可以并行执行,该两个步骤之间执行顺序可以互换。
步骤405、向量时钟更新流程。
具体地,图5为本发明并行程序的数据竞争检测方法实施例二中的向量时钟更新流程示意图。如图5所示,向量时钟更新流程可以包括:
步骤501、当识别到所述处理器核的本地时间戳加1时,根据本地时间戳更新所述处理器核当前指令的向量时钟中的元素值。
其中,每个向量时钟与每个处理器核的每条指令对应设置,每个向量时钟包括N个元素,N为处理器核的数量,N个元素分别与各处理器核对应。
举例说明,如图3所示,多核处理器包含四个处理器核,则每个处理器核对应一个向量时钟,该向量时钟中元素个数为4,假设第一处理器核各指令的向量时钟用i表示,则某条执行对应的向量时钟为(i1,i2,i3,i4),其中,下标1、2、3、4对应各处理器核。i1为第一处理器核对应的元素值,i2为第二处理器核对应的元素值,依次类推。每个处理器核的各条指令均对应一个向量时钟,考虑存储空间的占用,可仅记录最近的设定数量指令的向量时钟。
当识别到本地时间戳加1时,根据本地时间戳更新序关系分析模块中记录的第一处理器核当前指令的向量时钟中的i1。
步骤502、对于每个锁地址,当监测到所述锁地址的锁访问信息的操作类型为锁获取时,判断在当前的锁获取之前是否存在满足可行同步序关系的锁释放。
可以通过以下步骤判断当前的锁获取之前是否存在满足可行同步序关系的锁释放:
1、自当前的第一锁获取u1起,从此前的任意锁获取和锁释放中查找第二锁获取u2以及第二锁释放v2,其中,u1对应第一锁释放v1。
具体可以是分别监测各个锁地址,对于任意一个锁地址,在监测到锁访问信息中出现锁获取起触发获取操作。第一锁释放、第二锁获取和第二锁释放可以是在第一锁获取前的任意获取和释放操作,若此前没有上述两对锁获取和锁释放操作,则不进行可行同步序判断,若存在多组两对锁操作的情况,可分别组合进行可行同步序判断。
2、根据记录的锁访问信息判断所述u1、u2、v1和v2是否满足如下条件:v2在u1之前执行,且在u1和v1之间有针对所述锁地址的写指令,在u2和v2之间有对所述锁地址的读指令;若满足,则v2在u1可行同步序之前,即u1之前存在满足可行同步序关系的v2。
3、确定v2和u1满足可行同步序关系。
若存在满足可行同步序关系的锁释放,则执行步骤503;否则,执行步骤406。
步骤503、根据该锁释放的向量时钟更新该锁获取的向量时钟。
根据该锁释放的向量时钟更新该锁获取的向量时钟可以具体为逐一对应比较u1和v2的向量时钟中各元素,取比较后较大的值更新u1的向量时钟中对应的该元素。例如,仍以四个处理器核为例进行说明,u1的向量时钟为(j1,j2,j3,j4),v2的向量时钟为(k1,k2,k3,k4),依次比较j1与k1,j2与k2,j3与k3,j4与k4的大小,取j1与k1中较大的值更新v2的向量时钟中k1,并以此类推。
由前述可知,在某个处理器核的各向量时钟中,与其它处理器核对应的元素是不随本地时间戳而更新的,但会在存在可行同步序的关系时,将相应操作的向量时钟进行更新。
步骤406、根据存在冲突的两个指令的向量时钟判断是否存在数据竞争。
逐一对应比较存在冲突的两个指令的向量时钟中的各元素,判断所述当前指令的向量时钟中是否存在小于与其存在冲突的指令的向量时钟中的对应元素的元素,如果存在,则存在冲突的两个指令之间存在数据竞争。
具体地,比较存在冲突的两个指令的向量时钟中对应的各元素,若所述当前指令的向量时钟中有一个元素小于与所述当前指令具有相同访问地址的指令的向量时钟中的对应元素,则存在冲突的两个指令之间存在数据竞争。例如,当前指令的向量时钟为(p1,p2,p3,p4),存在与该当前指令存在冲突的至少一条指令中的某一条指令的向量时钟为(q1,q2,q3,q4),若p1<q1、p2<q2、p3<q3和p4<q4中有至少一个满足,则该当前指令与向量时钟为(q1,q2,q3,q4)的指令之间存在数据竞争。
本实施例在调用多核处理器中的处理器核执行并行程序的指令之后,通过执行锁访问信息记录流程、访存信息记录流程、向量时钟更新流程和数据竞争判断流程查找存在冲突的指令,并判断所述存在冲突的指令之间是否存在数据竞争,使得在并行程序单次执行的过程中能够快速、准确、有效的检测该并行程序中潜在的数据竞争,保证并行程序的正确性;在并行程序的单次执行时可能没有数据竞争的情况下,也能根据该次执行检测出数据竞争存在的可能性,并且不会误报,即,所有检测出来的数据竞争都是真实在并行程序中真实存在的。本发明很好的弥补了现有技术中数据竞争检测方法在速度、准确性、有效性方面的不足,为更好的调试和测试并行程序带来突破。
在上述基础上,如图6所示,记录所述处理器核的当前指令的访存信息之前,还可以包括:
步骤601、判断存储所述当前指令的访存历史记录器中记录的访存信息是否超过n条。
其中,n为大于等于2的预设正整数。
若是,则执行步骤602,以将所述处理器核的当前指令的访存信息记录在所述访存历史记录器中;否则,直接执行步骤603。
步骤602、删除所述访存历史记录器中最早存入的一条访存信息。
步骤603、记录所述处理器核的当前指令的访存信息。
访存历史记录器中可以包含多个与各处理器核相对应的内容地址存储器(content-addressable memory,简称CAM),所述CAM用于记录与其对应的处理器核在执行所述并行程序过程中对应的指令的访存信息。较优地,每条访存指令存在CAM中的访存信息可以包括:指令访问的地址、指令操作类型(读或写)以及指令执行时对应处理器的本地时间戳。本发明中,n是预先设定的,n可以为任意大于等于2的正整数,优选的,取n=512。另外,当访存历史记录器与处理器核个数相同时,所述访存历史记录器可以一体化的配置在其对应的处理器核中,本发明不以此为限。
需要说明的是,本发明所有实施例中,通过并行程序的数据竞争检测方法对待检测并行程序中潜在的数据竞争进行检测过程中,若检测到有数据竞争存在,可以响应给程序检测人员该数据竞争在并行程序中的位置,由程序检测人员决定后续是否继续进行或对待检测并行程序进行修改,以避免该数据竞争;或者,直接在待检测并行程序中规避该数据竞争,并继续执行待检测并行程序的后续部分,本发明不对此进行限制。
实施例三
图7为本发明并行程序的数据竞争检测装置实施例一的结构示意图。该装置70包括:中央锁访问模块71、访存历史记录器72和序关系分析模块73。
其中,所述中央锁访问模块71,用于在调用多核处理器中的一处理器核执行并行程序的指令之后,记录所述处理器核的当前指令的锁访问信息,其中,所述锁访问信息与锁操作的锁地址对应记录;所述访存历史记录器72,用于在调用多核处理器中的一处理器核执行并行程序的指令之后,记录所述处理器核的当前指令的访存信息;所述序关系分析模块73,用于根据所述中央锁访问模块记录的锁访问信息以及所述访存历史记录器记录的访存信息,判断存在冲突的两个指令之间是否存在数据竞争。
本实施例的并行程序的数据竞争检测装置,可以用于并行程序的数据竞争检测方法实施例一的技术方案,其实现原理和技术效果类似,此处不再赘述。
在图7的基础上,如图8所示,本实施例中所述序关系分析模块80可以包括:第一判断单元81、第二判断单元82和第二判断单元83。其中,第一判断单元81用于根据记录的各条指令的访存信息,判断指令间是否满足程序序关系,如果两条指令在处理器核上被执行,则两条指令满足程序序关系;第二判断单元82用于根据记录的所述锁访问信息,判断所述锁操作间是否满足可行同步序关系,其中,对应于同一地址的先后执行的第一锁操作以及第二锁操作,若在所述第一锁操作的锁获取操作以及锁释放操作之间存在一个写操作,使得所述第二锁操作的锁获取和锁释放之间存在对与所述写操作为同一地址的冲突读操作,则所述锁操作间满足可行同步序关系;第三判断单元83用于当检测出存在冲突的两个指令时,判断存在冲突的两个指令是否满足可行序关系;如果两个指令之间不满足可行序关系,则确定所述第一锁操作和所述第二锁操作间存在数据竞争,其中,所述可行序关系为:若存在冲突的两条指令之间存在一串指令操作,这一串操作之间至少满足程序序关系和可行同步序关系之一。
进一步地,在上述实施例中,所述序关系分析模块80还可以包括:第四判断单元84用于根据记录的各处理器核的各条指令的访存信息,判断当前指令的访问地址与所述多核处理器中其它处理器核的各条指令的访问地址是否相同;如果是,则判断所述当前指令与具有相同访问地址的指令中是否存在写操作;如果存在写操作,则所述当前指令与其它处理器核的各条指令中,与该当前指令具有相同访问地址的指令存在冲突。
实施例四
图9为本发明并行程序的数据竞争检测装置实施例二的结构示意图,如图9所示,序关系分析模块90在包括第一判断单元906、第二判断单元907、第三判断单元908和第四判断单元905的基础上,还可以包括:第一更新单元901、第五判断单元902和第二更新单元903。
其中,第一判断单元906、第二判断单元907、第三判断单元908和第四判断单元905的作用与上述实施例中各对应单元所起的作用相同;第一更新单元901用于当识别到所述处理器核的本地时间戳加1时,根据本地时间戳更新所述处理器核当前指令的向量时钟中的元素值,其中,每个向量时钟与每个处理器核的每条指令对应设置,每个向量时钟包括N个元素,N为处理器核的数量,N个元素分别与各处理器核对应;第五判断单元902用于对于每个锁地址,当监测到所述锁地址的锁访问信息的操作类型为锁获取时,判断在当前的锁获取之前是否存在满足可行同步序关系的锁释放;第二更新单元903用于若第五判断单元判断结果为存在,根据该锁释放的向量时钟更新该锁获取的向量时钟。
此时,对应地,中央锁访问模块91可以包括:
记录单元911用于当识别到当前指令触发锁操作或位于锁获取和锁释放之间时,记录所述锁访问信息,所述锁访问信息包括处理器核标识、操作类型和本地时间戳;
第一处理单元912用于当识别到所述处理器核的当前指令触发锁操作时,将所述处理器核对应的本地时间戳加1。
本实施例的并行程序的数据竞争检测装置,可以用于本发明任意并行程序的数据竞争检测方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述基础上,所述访存历史记录器92可以包括:第六判断单元921、第二处理单元922和第二记录单元923。其中,第六判断单元921用于判断存储所述当前指令的所述访存历史记录器中记录的访存信息是否超过n条,n为大于等于2的预设正整数;第二处理单元922用于若第六判断单元921判断结果为是时,则删除所述访存历史记录器中最早存入的一条访存信息,以使得所述处理器核的当前指令的访存信息记录在所述访存历史记录器中;第二记录单元923用于记录所述处理器核的当前指令的访存信息。
进一步地,第二更新单元903具体用于逐一对应比较所述满足可行同步序关系的锁获取和锁释放的向量时钟中各元素的大小,得到比较结果,取所述比较结果中较大的元素作为所述锁释放的向量时钟中对应的元素。
进一步地,第三判断单元923具体用于逐一对应比较存在冲突的两个指令的向量时钟中的各元素,判断所述当前指令的向量时钟中是否存在小于与其存在冲突的指令的向量时钟中的对应元素的元素,如果存在,则存在冲突的两个指令之间存在数据竞争。
实施例五
本实施例在上述实施例的基础上,对多核处理系统实施例的技术方案进行详细说明。
该多核处理系统包括:至少两个处理器核、至少一个非处理器核设备以及如上述任一实施例中所提及的并行程序的数据竞争检测装置,其中,所述至少两个处理器核,用于执行并行程序;所述至少一个非处理器核设备,与所述至少两个处理器核连接;所述访存历史记录器,与所述至少两个处理器核连接;所述中央锁访问模块,与所述至少两个处理器核连接;所述序关系分析模块,与所述访存历史记录器和中央锁访问模块连接。
本实施例仍以四个处理器核为例进行说明,如图3所示,多核处理系统包括:第一处理器核111、第二处理器核112、第三处理器核113和第四处理器核114,用于执行并行程序;非处理器核设备115;第一访存历史记录器121、第二访存历史记录器122、第三访存历史记录器123和第四访存历史记录器124,与所述处理器核连接;中央锁访问模块130,与所述处理器核连接;序关系分析模块140,与各所述访存历史记录器(图3中标记为121、122、123和124)和中央锁访问模块130连接。
需要说明的是,本发明任意实施例所提及的非处理器核设备,用于与其连接的各处理器核的内容交互,其中,所述非处理器核设备可以包括但不限于二级缓存、片上网络、内存控制器等设备。
本实施例中的各访存历史记录器、中央锁访问模块和序关系分析模块与上述装置部分实施例中访存历史记录器、中央锁访问模块和序关系分析模块的工作原理相同,在此不再赘述。
本实施例的多核处理系统,可以用于执行本发明任意实施例所提供的并行程序的数据竞争检测方法的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明在调用多核处理器中的处理器核执行并行程序的指令之后,通过多个处理器核、非处理器核设备、访存历史记录器、中央锁访问模块和序关系分析模块相互协同作用,使得在并行程序单次执行的过程中,通过该多核处理系统能够快速、准确、有效的检测该并行程序中潜在的数据竞争,保证并行程序的正确性;在并行程序的单次执行时可能没有数据竞争的情况下,也能根据该次执行检测出数据竞争存在的可能性,并且不会误报,即,所有检测出来的数据竞争都是真实在并行程序中真实存在的。本发明很好的弥补了现有技术中数据竞争检测方法在速度、准确性、有效性方面的不足,为更好的调试和测试并行程序带来突破。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (15)
1.一种并行程序的数据竞争检测方法,其特征在于,在调用多核处理器中的一处理器核执行并行程序的指令之后,还包括:
锁访问信息记录流程:记录所述处理器核的当前指令的锁访问信息,其中,所述锁访问信息与锁操作的锁地址对应记录;
访存信息记录流程:记录所述处理器核的当前指令的访存信息;以及
数据竞争判断流程:根据所述锁访问信息记录流程记录的锁访问信息以及所述访存信息记录流程记录的访存信息,判断存在冲突的两个指令之间是否存在数据竞争。
2.根据权利要求1所述的方法,其特征在于,所述数据竞争判断流程具体包括:
根据记录的各条指令的访存信息,判断指令间是否满足程序序关系,如果两条指令在处理器核上被执行,则两条指令满足程序序关系;
根据记录的所述锁访问信息,判断所述锁操作间是否满足可行同步序关系,其中,对应于同一地址的先后执行的第一锁操作以及第二锁操作,若在所述第一锁操作的锁获取操作以及锁释放操作之间存在一个写操作,使得所述第二锁操作的锁获取和锁释放之间存在对与所述写操作为同一地址的冲突读操作,则所述锁操作间满足可行同步序关系;
当检测出存在冲突的两个指令时,判断存在冲突的两个指令是否满足可行序关系;如果两个指令之间不满足可行序关系,则确定所述第一锁操作和所述第二锁操作间存在数据竞争,其中,所述可行序关系为:若存在冲突的两条指令之间存在一串操作,这一串操作之间至少满足程序序关系和可行同步序关系之一,所述串操作为任意的读操作、写操作或者计算操作。
3.根据权利要求2所述的方法,其特征在于,在所述数据竞争判断流程之前,还包括:
根据记录的各处理器核的各条指令的访存信息,判断当前指令的访问地址与所述多核处理器中其它处理器核的各条指令的访问地址是否相同;
如果是,则判断所述当前指令与具有相同访问地址的指令中是否存在写操作;
如果存在写操作,则所述当前指令与其它处理器核的各条指令中,与该当前指令具有相同访问地址的指令存在冲突。
4.根据权利要求2所述的方法,其特征在于,还包括:向量时钟更新流程,其中,
记录所述处理器核的当前指令的锁访问信息具体包括:
当识别到当前指令触发锁操作或位于锁获取和锁释放之间时,记录所述锁访问信息,所述锁访问信息包括:处理器核标识、操作类型和本地时间戳;
所述锁访问信息记录流程还包括:
当识别到所述处理器核的当前指令触发锁操作时,将所述处理器核对应的本地时间戳加1;
所述向量时钟更新流程包括:
当识别到所述处理器核的本地时间戳加1时,根据本地时间戳更新所述处理器核当前指令的向量时钟中的元素值,其中,每个向量时钟与每个处理器核的每条指令对应设置,每个向量时钟包括N个元素,N为处理器核的数量,N个元素分别与各处理器核对应;
对于每个锁地址,当监测到所述锁地址的锁访问信息的操作类型为锁获取时,判断在当前的锁获取之前是否存在满足可行同步序关系的锁释放,若存在,根据该锁释放的向量时钟更新该锁获取的向量时钟。
5.根据权利要求4所述的方法,其特征在于,记录所述处理器核的当前指令的访存信息之前,还包括:
判断存储所述当前指令的访存历史记录器中记录的访存信息是否超过n条,n为大于等于2的预设正整数;
若是,则删除所述访存历史记录器中最早存入的一条访存信息,以将所述处理器核的当前指令的访存信息记录在所述访存历史记录器中。
6.根据权利要求4所述的方法,其特征在于,所述根据该锁释放的向量时钟更新该锁获取的向量时钟,包括:
逐一对应比较所述满足可行同步序关系的锁获取和锁释放的向量时钟中各元素的大小,得到比较结果,取所述比较结果中较大的元素作为所述锁释放的向量时钟中对应的元素。
7.根据权利要求4所述的方法,其特征在于,所述判断存在冲突的两个指令是否满足可行序关系,包括:
逐一对应比较存在冲突的两个指令的向量时钟中的各元素,判断所述当前指令的向量时钟中是否存在小于与其存在冲突的指令的向量时钟中的对应元素的元素,如果存在,则存在冲突的两个指令之间存在数据竞争。
8.一种并行程序的数据竞争检测装置,其特征在于,包括:中央锁访问模块、访存历史记录器和序关系分析模块,其中,
所述中央锁访问模块,用于在调用多核处理器中的一处理器核执行并行程序的指令之后,记录所述处理器核的当前指令的锁访问信息,其中,所述锁访问信息与锁操作的锁地址对应记录;
所述访存历史记录器,用于在调用多核处理器中的一处理器核执行并行程序的指令之后,记录所述处理器核的当前指令的访存信息;
所述序关系分析模块,用于根据所述中央锁访问模块记录的锁访问信息以及所述访存历史记录器记录的访存信息,判断存在冲突的两个指令之间是否存在数据竞争。
9.根据权利要求8所述的装置,其特征在于,所述序关系分析模块包括:
第一判断单元,用于根据记录的各条指令的访存信息,判断指令间是否满足程序序关系,如果两条指令在处理器核上被执行,则两条指令满足程序序关系;
第二判断单元,用于根据记录的所述锁访问信息,判断所述锁操作间是否满足可行同步序关系,其中,对应于同一地址的先后执行的第一锁操作以及第二锁操作,若在所述第一锁操作的锁获取操作以及锁释放操作之间存在一个写操作,使得所述第二锁操作的锁获取和锁释放之间存在对与所述写操作为同一地址的冲突读操作,则所述锁操作间满足可行同步序关系;
第三判断单元,用于当检测出存在冲突的两个指令时,判断存在冲突的两个指令是否满足可行序关系;如果两个指令之间不满足可行序关系,则确定所述第一锁操作和所述第二锁操作间存在数据竞争,其中,所述可行序关系为:若存在冲突的两条指令之间存在一串操作,这一串操作之间至少满足程序序关系和可行同步序关系之一,所述串操作为任意的读操作、写操作或者计算操作。
10.根据权利要求9所述的装置,其特征在于,所述序关系分析模块还包括:
第四判断单元,用于在所述序关系分析模块根据所述中央锁访问模块记录的锁访问信息以及所述访存历史记录器记录的访存信息,判断存在冲突的两个指令之间是否存在数据竞争之前,根据记录的各处理器核的各条指令的访存信息,判断当前指令的访问地址与所述多核处理器中其它处理器核的各条指令的访问地址是否相同;如果是,则判断所述当前指令与具有相同访问地址的指令中是否存在写操作;如果存在写操作,则所述当前指令与其它处理器核的各条指令中,与该当前指令具有相同访问地址的指令存在冲突。
11.根据权利要求9所述的装置,其特征在于,
所述中央锁访问模块包括:
记录单元,用于当识别到当前指令触发锁操作或位于锁获取和锁释放之间时,记录所述锁访问信息,所述锁访问信息包括处理器核标识、操作类型和本地时间戳;
第一处理单元,用于当识别到所述处理器核的当前指令触发锁操作时,将所述处理器核对应的本地时间戳加1;
所述序关系分析模块还包括:
第一更新单元,用于当识别到所述处理器核的本地时间戳加1时,根据本地时间戳更新所述处理器核当前指令的向量时钟中的元素值,其中,每个向量时钟与每个处理器核的每条指令对应设置,每个向量时钟包括N个元素,N为处理器核的数量,N个元素分别与各处理器核对应;
第五判断单元,用于对于每个锁地址,当监测到所述锁地址的锁访问信息的操作类型为锁获取时,判断在当前的锁获取之前是否存在满足可行同步序关系的锁释放;
第二更新单元,用于若第五判断单元判断结果为存在,根据该锁释放的向量时钟更新该锁获取的向量时钟。
12.根据权利要求11所述的装置,其特征在于,所述访存历史记录器包括:
第六判断单元,用于判断存储所述当前指令的所述访存历史记录器中记录的访存信息是否超过n条,n为大于等于2的预设正整数;
第二处理单元,用于若所述第六判断单元判断结果为是时,则删除所述访存历史记录器中最早存入的一条访存信息,以使得所述处理器核的当前指令的访存信息记录在所述访存历史记录器中;
第二记录单元,用于记录所述处理器核的当前指令的访存信息。
13.根据权利要求11所述的装置,其特征在于,所述第二更新单元具体用于:
逐一对应比较所述满足可行同步序关系的锁获取和锁释放的向量时钟中各元素的大小,得到比较结果,取所述比较结果中较大的元素作为所述锁释放的向量时钟中对应的元素。
14.根据权利要求11所述的装置,其特征在于,所述第三判断单元具体用于:
逐一对应比较存在冲突的两个指令的向量时钟中的各元素,判断所述当前指令的向量时钟中是否存在小于与其存在冲突的指令的向量时钟中的对应元素的元素,如果存在,则存在冲突的两个指令之间存在数据竞争。
15.一种多核处理系统,其特征在于,包括:至少两个处理器核、至少一个非处理器核设备以及如权利要求8-14中任一项所述的并行程序的数据竞争检测装置,其中,
所述至少两个处理器核,用于执行并行程序;
所述至少一个非处理器核设备,与所述至少两个处理器核连接;
所述访存历史记录器,与所述至少两个处理器核连接;
所述中央锁访问模块,与所述至少两个处理器核连接;
所述序关系分析模块,与所述访存历史记录器和中央锁访问模块连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310400690.5A CN103488563B (zh) | 2013-09-05 | 2013-09-05 | 并行程序的数据竞争检测方法、装置及多核处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310400690.5A CN103488563B (zh) | 2013-09-05 | 2013-09-05 | 并行程序的数据竞争检测方法、装置及多核处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103488563A CN103488563A (zh) | 2014-01-01 |
CN103488563B true CN103488563B (zh) | 2017-04-12 |
Family
ID=49828815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310400690.5A Active CN103488563B (zh) | 2013-09-05 | 2013-09-05 | 并行程序的数据竞争检测方法、装置及多核处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103488563B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063331B (zh) * | 2014-07-03 | 2017-04-12 | 龙芯中科技术有限公司 | 处理器、共享存储区域访问方法和锁管理器 |
CN104077144B (zh) * | 2014-07-07 | 2015-06-03 | 西安交通大学 | 基于多线程程序约束构建的数据竞争检测与证据生成方法 |
CN104461931B (zh) * | 2014-08-18 | 2018-04-27 | 记忆科技(深圳)有限公司 | 多核存储装置及多核环境的跟踪日志输出处理方法 |
CN104182360B (zh) * | 2014-08-18 | 2017-12-08 | 记忆科技(深圳)有限公司 | 多核环境的跟踪日志输出处理方法及系统 |
US10007549B2 (en) * | 2014-12-23 | 2018-06-26 | Intel Corporation | Apparatus and method for a profiler for hardware transactional memory programs |
CN105117369B (zh) * | 2015-08-04 | 2017-11-10 | 复旦大学 | 一种基于异构平台的多种并行错误检测系统 |
CN105260312B (zh) * | 2015-10-26 | 2018-04-06 | 北京航空航天大学 | 一种多核实时系统应用数据竞争错误的调试方法 |
CN108595371B (zh) * | 2016-01-20 | 2019-11-19 | 北京中科寒武纪科技有限公司 | 用于向量运算的数据读取、写入及读写调度器及保留站 |
CN107291371B (zh) * | 2016-03-31 | 2019-11-19 | 华为技术有限公司 | 一种读写锁的实现方法及装置 |
CN106201732B (zh) * | 2016-07-18 | 2019-05-14 | 电子科技大学 | 在粒子模拟算法并行中去除数据竞争的线分配并行方法 |
CN106294169B (zh) * | 2016-08-17 | 2018-08-03 | 华中科技大学 | 一种基于符号执行虚拟机的数据竞争检测与重放方法 |
CN106598845B (zh) * | 2016-11-18 | 2019-04-12 | 华中科技大学 | 一种基于块偏序的动态数据竞争检测方法及系统 |
CN110059014B (zh) * | 2019-04-28 | 2022-09-27 | 西安邮电大学 | 一种并发程序数据竞争指令级定位方法 |
CN110954762B (zh) * | 2019-11-06 | 2022-02-22 | 中国商用飞机有限责任公司 | 地面测试方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639803A (zh) * | 2008-07-30 | 2010-02-03 | 株式会社日立制作所 | 多线程应用系统的异常处理方法和异常处理装置 |
CN102314394A (zh) * | 2010-06-25 | 2012-01-11 | 微软公司 | 数据范围化的动态数据竞争检测 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7549150B2 (en) * | 2004-03-24 | 2009-06-16 | Microsoft Corporation | Method and system for detecting potential races in multithreaded programs |
-
2013
- 2013-09-05 CN CN201310400690.5A patent/CN103488563B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639803A (zh) * | 2008-07-30 | 2010-02-03 | 株式会社日立制作所 | 多线程应用系统的异常处理方法和异常处理装置 |
CN102314394A (zh) * | 2010-06-25 | 2012-01-11 | 微软公司 | 数据范围化的动态数据竞争检测 |
Also Published As
Publication number | Publication date |
---|---|
CN103488563A (zh) | 2014-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103488563B (zh) | 并行程序的数据竞争检测方法、装置及多核处理系统 | |
CN104750459B (zh) | 带有事务功能以及报告事务操作的日志记录电路的处理器 | |
CN109643255B (zh) | 在云系统中自动检测分布式并发错误 | |
CN104252481B (zh) | 主从数据库一致性的动态校验方法和装置 | |
CN103729204B (zh) | 一种网络平台中应用更新的数据在线迁移方法和装置 | |
CN104380264B (zh) | 运行时间检测报告 | |
EP2037368A2 (en) | Simulation of program execution to detect problem such as deadlock | |
CN110245067A (zh) | 安全关键软件自动化基于需求的测试实例生成系统和方法 | |
CN104364769B (zh) | 处理器特性的运行时间检测监控 | |
FI3382551T3 (fi) | Hajautettu laitteistojäljitys | |
US20190079849A1 (en) | Environment simulations | |
CN105074656B (zh) | 管理并发谓词表达式的方法和装置 | |
CN103440196B (zh) | 一种操作系统资源问题检测方法 | |
CN105683985B (zh) | 用于虚拟机内省的系统、方法及非暂时性计算机可读介质 | |
US10725889B2 (en) | Testing multi-threaded applications | |
CN110347590A (zh) | 业务系统的接口测试控制方法及装置 | |
CN109101416A (zh) | 一种内核故障注入方法及电子设备 | |
CN107710166A (zh) | 利用符号快速错误检测的硅后验证和调试 | |
CN103455313B (zh) | 用于关联被测系统的输入消息与输出消息的方法和设备 | |
CN107783844A (zh) | 一种计算机程序运行异常检测方法、装置和介质 | |
KR20120022467A (ko) | 데이터 경합 검출 장치 및 방법 | |
CN113127331B (zh) | 一种基于故障注入的测试方法、装置及计算机设备 | |
Madalinski et al. | Predictability verification with parallel LTL-X model checking based on Petri net unfoldings | |
US20180137036A1 (en) | Determining potential test actions | |
CN108021495A (zh) | 基于回放的代码调试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100190 No. 10 South Road, Haidian District Academy of Sciences, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CP03 | Change of name, title or address |