CN105138309A - 基于cmp的推测多线程机制下的多推测路径线程划分方法 - Google Patents
基于cmp的推测多线程机制下的多推测路径线程划分方法 Download PDFInfo
- Publication number
- CN105138309A CN105138309A CN201510400552.6A CN201510400552A CN105138309A CN 105138309 A CN105138309 A CN 105138309A CN 201510400552 A CN201510400552 A CN 201510400552A CN 105138309 A CN105138309 A CN 105138309A
- Authority
- CN
- China
- Prior art keywords
- thread
- instruction
- precomputation
- fragment
- path
- 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.)
- Granted
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于CMP的推测多线程机制下的多推测路径线程划分方法,该方法线程划分是以过程为单位的,对每一个过程,划分时会限制线程结束点在过程的控制无关节点,限制线程激发点在过程的互斥路径段,以使得线程的激发受到更严格的限制;同时,对相互互斥的路径段上的激发点,让其对应到同一个线程结束点下,并在线程结束点后插入连续的多个预计算片段;预计算片段的内容随推测路径和激发点的变化而互异;模拟器在运行时执行不同的推测路径,会根据推测路径上对应的激发点选取对应的预计算片段进行执行。该方法能在多条路径上进行线程划分,从而增加了可推测并行执行的分支覆盖率。
Description
技术领域
本发明属于计算机领域,涉及基于CMP的推测多线程技术,特别是涉及基于CMP的推测多线程机制下的多推测路径线程划分方法。
背景技术
推测多线程(SpeculativeMultithreading,SpMT)是一种软硬件协同工作的程序自动并行化技术,它能够提高通用串行程序在多核硬件上的执行效率。编译器对串行程序采用激进的线程划分策略,并不完全保证各个线程之间独立,而是允许线程之间有一定的数据依赖和控制依赖。在线程执行过程中由多核硬件检测线程运行状态,如检测到依赖违规,硬件则使程序自动从错误中恢复,以此来保证程序的正确性。
线程之间的依赖通过值预测技术解决。通过编译技术分析得到当前线程的live_in数据,然后分析线程发起点到当前线程开始执行点之间的代码片段,获取live_in变量的依赖指令集。在当前线程被分配到新的核上执行时,先执行这部分依赖指令,以此对live_in变量的值进行预测。这种先被执行的部分依赖指令,通常称为预计算片段(Pre-computationslice,P-slice)。包括预计算片段在内的值预测技术能够很大程度上解决线程间的依赖问题。
在推测多线程的技术中,线程推测是在某一条或几条分支路径上进行的,这些分支路径也被称为推测路径。推测路径的选取过程包含了分支预测过程,其能直接影响程序的控制依赖,以及间接地影响数据依赖。当选取的推测路径与程序的实际运行轨迹相同的时候,程序的控制依赖被直接消除,而通过值预测技术提取的预计算片段此时能够较大概率地消除数据依赖,从而总体上使得推测执行的正确性较大地得到提高。反之,如果选取的推测路径与程序的实际运行轨迹出现较大的不一致,会造成程序由于控制依赖被直接撤销,或者降低了预计算片段提取依赖指令的准确性,最终使得程序的推测执行被撤销。因此,推测路径的选取要尽量能预测到程序执行的轨迹。
发明内容
本发明目的在于解决线程划分过程中由于多推测路径而导致的不同路径之间激发的线程相互干扰而造成较大概率撤销的问题,提供一种基于CMP的推测多线程机制下的多推测路径线程划分方法,以保证线程划分在多路径下进行时能够覆盖更多的分支,获得更高的推测并行性,同时减少由于值预测失败而造成的撤销。
本发明通过以下技术方案来实现:
一种基于CMP的推测多线程机制下的多推测路径线程划分方法,对于串行程序进行线程划分的方法,其步骤如下:
1)编译器会在对串行程序进行线程划分之前依据程序剖析器剖析运行的结果寻找执行概率大于阈值branch_probability∈[0.10,0.25]的路径作为推测路径,只在选取的推测路径上进行线程划分,推测路径是一条或者多条;
2)将串行程序的过程体的控制流图切分成线程体粒度大于阈值thread_size_lower∈[15,25]的控制流图子图,子图的切分点作为由控制子图生成的线程单元的结束点;在线程的结束点插入CQIP指令,其表示当前线程单元的执行结束;
3)在推测路径的互斥子路径段,寻找能使线程之间的数据依赖数目小于阈值dependence_threshold∈[2,5],而线程激发距离大于阈值spawning_distance_lower∈[3,8]的位置作为新线程激发点,在此激发新的线程单元执行,激发距离表示候选的线程激发点与线程结束点之间的距离;在线程激发点插入线程激发控制指令SPAWN指令,控制线程的激发;SPAWN指令格式为SPAWNaddr,addr表示新线程的指令起始地址;
4)在每一个待激发的新线程单元的开始部分插入预计算片段,每一段预计算片段与一个(SPAWN,CQIP)指令对对应。
切分控制流图成为控制子图的切分点满足如下语义:
切分点属于过程的控制无关基本块,即从过程的入口节点到过程的出口节点的任何路径都经过该基本块;通过切分点的切分,使控制流图子图的粒度大于thread_size_lower,而对其粒度上限不作直接约束。
SPAWN指令必须插入在互斥子路径段上,互斥子路径段的语义如下:
1)互斥子路径段是相邻两个CQIP指令之间的控制流图子图的边的集合的子集,即该路径段包含的指令集合,不跨越多个线程体,只在一个线程体内部;
2)一条路径上的属于互斥子路径段的部分与该控制子图其他路径无任何交集。
一段预计算片段由PSLICE_ENTRY指令标记起始,由PSLICE_EXIT指令标记结束;PSLICE_ENTRY指令的地址与激发运行该线程的SPAWN指令的addr值相等。
每一段互斥路径子段上的SPAWN指令,在激发新线程之前,对应有一段预计算片段,该预计算片段是对应互斥子路径段上的SPAWN指令到CQIP指令之间的指令集合的精简集;具体地,其预计算片段为当前线程在SPAWN指令到CQIP指令之间的livein变量的定义指令组成的指令集合。
相互互斥的多个互斥子路径段上的SPAWN指令对应的预计算片段都被放置在同一个CQIP指令的后面,每一个SPAWN指令的addr值与其中一段预计算片段的PSLICE_ENTRY指令地址相等。
模拟器端在执行时,互斥路径子段上的SPAWN指令能根据addr值跳转到对应的PSLICE_ENTRY指令开始执行一段预计算片段,并且执行完这段预计算片段后,由模拟器的硬件检测后续指令是否是PSLICE_ENTRY指令,若是,则继续跳过其后的预计算片段,若不是,则表示开始执行常规的线程体内容。
与现有技术相比,本发明具有以下有益的技术效果:
本发明通过对过程体提取多条路径,在多路径上进行线程划分,允许线程执行单元在多个路径上推测执行,扩大了线程可以推测执行的分支覆盖率,从而能更多地挖掘程序的潜在并行性。
当在多条路径上进行线程划分时,本发明使用的激发策略要求激发控制指令SPAWN指令必须处于互斥的路径子段,从而在模拟器运行期,能够严格保证只有程序的执行轨迹覆盖对应的互斥路径子段的时候,才会执行被插入的SPAWN指令,激发产生新的线程。这种对线程激发的严格控制,能够避免在过程的多条路径都被划分的情况下,线程体被过多的激发,然后又被过多的撤销,从而能够整体上降低线程的撤销率。
本发明采用的多预计算片段技术,使得模拟器在执行时能够根据执行的子分支动态地选择与该子分支对应的预计算片段。由于在编译器端对于多条子路径进行线程划分时,对其中每一条互斥路径段的子分支都相应地插入了SPAWN指令,并且对于每一个(SPAWN,CQIP)指令都在对应的CQIP指令后插入了一段预计算片段,因此对于相互互斥的多个子分支,其在对应的CQIP指令下被插入了多个预计算片段,每一段预计算片段与一个互斥子分支对应。因此当模拟器在执行的时候,当其执行到互斥子分支中的一条时,其会执行其上的SPAWN指令。该SPAWN指令能够激发新的线程的时候,会选择对应的预计算片段,会在新线程体的常规内容的开始部分执行之前先执行这段预计算片段。由于同一CQIP指令下可能同时存在多段预计算片段,新线程的执行单元能够根据SPAWN指令”跳转”到特定的预计算片段,并且只执行该段预计算片段。新线程的执行单元会跳过该该预计算片段之前和之后的其他预计算片段。通过在编译器生成多个预计算片段而在执行期由模拟器根据执行路径选择相应的预计算片段,能够提高预计算片段与实际执行的分支对应,提高预计算片段计算的准确性。
附图说明
图1为基于CMP的推测多线程机制下线程划分所涉及的模块和组件图;
图2为切分控制流图为控制子图并寻找线程结束点位置的流程图;
图3为寻找过程的互斥路径子段示意图;
图(a)表示的是一个线程块的控制流图;
图(b)表示的分支块节点(branchblock)构成的树,
图(c)和图(d)是图(a)表示的控制流图的推测路径。
图4为多分支下相互互斥的子路径对应的多预计算片段关系图;
图(a)是编译时的预计算片段放置图;
图(b)描述的是图(a)所示的子程序在运行时对应的程序地址示意图。
具体实施方式
下面结合附图对本发明作进一步详细说明。所述是对本发明的解释而不是限定。
参见图1,所示的推测多线程系统主要由编译器和模拟器两部分组成。其中,编译器部分包含了程序剖析器,线程划分器两部分。程序剖析器的作用是剖析试运行待处理的源程序,提取与输入程序相关的统计信息,如分支概率,循环体和过程动态指令数,并将该统计信息以注释的形式添加到相应的指令中。线程剖析器包含路径选取模块,控制子图切分模块,激发位置选取模块和预计算片段生成模块,其中路径选取模块的作用是对过程体提取出若干路径作为推测路径,使得线程划分在推测路径上进行,以降低线程划分的整体复杂度。
模拟器负责对程序的推测模拟执行。其在执行中如果执行到SPAWN指令,则会激发一个新的线程在空的核或者串行执行顺序的优先级较低的核上运行,当执行到CQIP指令的时候,结束当前线程单元的运行。为了使得线程之间的推测运行不因为线程之间的依赖而被过多的撤销,在模拟器运行新的线程单元的时候,会先运行一段由PSLICE_ENTRY和PSLICE_EXIT指令包围的预计算片段。通过引入预计算片段来消减线程间的数据依赖。
基于CMP的推测多线程机制下的多推测路径线程划分方法,包括以下步骤:
1)编译器会在线程划分之前寻找多条推测路径,在推测路径上进行线程划分;
2)将过程体的控制流图切分成大小在限定阈值thread_size_lower之上的控制流图子图,每一个控制流图子图称为一个线程块,以线程结束指令CQIP指令作为控制流图子图的切分点,插入CQIP指令;
3)在推测路径上寻找互斥子路径段,在推测路径的互斥子路径段插入线程激发控制指令SPAWN指令;
4)对于相互互斥的互斥子路径段上的SPAWN指令,将其对应到同一个CQIP指令,使在不同路径上执行时激发的新线程具有相同的常规线程体内容;
5)在每一个待激发的新线程单元的开始部分插入预计算片段,每一段预计算片段与一个(SPAWN,CQIP)指令对相对应,预计算片段的内容为SPAWN指令到CQIP指令之间包含的指令的精简集合。如果是多个相互互斥子路径上的SPAWN指令对应同一个CQIP指令,则对每一个(SPAWN,CQIP)指令对插入一段预计算片段,形成顺序叠加在一起的多段预计算片段;
在模拟器端,当模拟器执行到SPAWN指令,则会激发一个新的线程在空闲的核上运行,当执行到CQIP指令的时候,结束当前线程单元的运行。SPAWN指令的格式为SPAWNaddr,addr代表新线程使用的预计算片段的起始地址,也即是PSLICE_ENTRY的地址。新的线程在开始运行之前,会先运行指令起始地址为addr的一段预计算片段。
将过程体的控制流图切分成由CQIP指令分隔开的控制子图,进而形成线程块的过程如图2所示,有以下步骤:
1)计算该过程体的大小,即该过程体包含的指令数目,判断其值是否小于两倍的表示线程体大小的阈值下限lower_thread_size阈值,如果小于2*lower_thread_size,则表明该过程体过小,不适合划分,否则进行后续操作;
2)将当前待处理的线程块记为possible_thread,其内容为包含的超级块列表集合,将possible_thread初始化为空;余下子图表示的线程块记为future_thread,其包含的内容也是超级块列表集合,将其初始化为过程的最可能路径most_likely_path包含的所有的超级块的列表;将可以插入CQIP指令的超级块列表记为cqip_block_list,也初始化为空;
3)将curr_block指针指向most_likely_path的第一个超级块;
4)判断curr_block是否是most_likely_path的最后一个超级块,如果是,则停止继续对余下子图插入CQIP指令,否则的话,判断余下子图future_thread的大小是否小于阈值lower_thread_size,如果是也停止插入CQIP指令的过程;
5)如果possible_thread小于lower_thread_size,则将操作跳转到步骤2),否则,将curr_block追加到possible_thread,并判断curr_block是否是属于过程的支配路径(控制无关节点构成的路径)。若curr_block不属于支配路径,则遍历most_likely_path,将其加入到possible_thread直到curr_block是过程的支配节点进行步骤4);
6)若curr_block是过程的支配节点,并且future_thread的大小不小于lower_thread_size则将当前curr_block加入到cqip_block_list中,curr_block指向下一个超级块,继续步骤4),否则算法结束,对该过程插入CQIP指令完成。
经过上述过程,cqip_block_list存储的是适合插入CQIP指令的超级块列表。遍历该列表,对其中的每一个超级块的第一个基本块,寻找其第一个非标签指令的位置,该位置即为适合插入CQIP指令的线程技术点位置。在切分控制流程,确定线程块大小的时候,使用了三个准则:
1)线程块大小必须大于允许的线程块的最小阈值lower_thread_size;
2)线程块的开始超级块,也即是能插入CQIP点所在的超级块,必须是过程的非控制相关节点;
3)如果当前的线程块(possible_thread)过大,导致余下的子图构成的后继线程块(future_thread)过小,则禁止对当前线程块和其后继线程块进行切分,将二者作为一个线程块;
在推测路径上寻找互斥子路径段以找到适合插入SPAWN指令的过程如下,如图3所示。
在图3中,(a)表示的是一个线程块的控制流图,(b)表示的分支块节点(branchblock)构成的树,(c)和(d)是(a)表示的控制流图的推测路径。图中的节点是超级块节点。图中阴影部分标识的是两分支跳转概率之差的较小的分支节点。为了定位新线程激发点的可选位置集合,需要将这些分支节点按照在SCFG中的节点关系构成一棵分支节点树。对于待划分推测路径,使用分支节点树来寻找激发点在该推测路径中的合适的插入位置范围,找到推测路径中的节点在该树中的最低层的匹配节点,设其为match_block,则SPAWN指令适合插入的SP点的范围结合为(match_block,pdom(match_block)),不包括两端点。(a)对应的分支节点树如图3(b)所示。如给定图3(c)所示的一条推测路径{0,1,3,6,11,12,16,17,18,19},则该推测路径在分支节点树中的匹配节点为11,匹配节点的直接逆向支配节点为17。因此,(c)中可以作为线程激发点的节点集合为阴影部分表示的部分,即节点12和节点16。类似的(d)中的激发点可选位置集合为节点4,节点8和节点14。
阴影部分的表示的节点集合,都在对应的子路径上。在执行时只有当程序执行在特定的推测路径上时执行轨迹才会覆盖阴影部分,因此不会造成不同推测路径上的SPAWN指令在运行时相互干扰产生影响的情况。
当有多个互斥子路径产生时,如果在多个相互互斥的子路径上插入SPAWN指令,这时需要将多个预计算片段与同一个CQIP指令和多个SPAWN指令相对应。
在多路径下,一条CQIP指令可能会同时与多条SPAWN指令对应,并且SPAWN指令处于不同的路径上。当提取预计算片段的时候,由于预计算片段主要是SPAWN指令到CQIP指令之间的指令集的子集,因此需要产生多个预计算片段,每个预计算片段对应一个(SPAWN,CQIP)指令对。
多个预计算片段的放置是顺序放置在一起的,且第一段预计算片段放置在CQIP指令的下一个指令位置。由于存在多个预计算片段,需要对每一段放置一个对应的标签,以使得SPAWN指令能直接跳转到该标签上。
如图4所示。(a)是编译时的预计算片段放置图,(b)描述的是(a)图所示的子程序在运行时对应的程序地址示意图。
图4中所示的两条SPAWN指令分别位于两个分支上。其中0号节点的左分支里的SPAWN指令的跳转标签被设置成L1;0号节点的右分支里的SPAWN指令的跳转标签为L2。当程序执行时,如果执行轨迹覆盖左分支,则激发的新线程从L1标签开始执行,即新线程的第一条指令为PSLICE_ENTRYL1;相应地,如果程序的执行轨迹覆盖右分支,则新线程从L2标签开始执行,执行的是第二段预计算片段。在上述情况下,不管程序执行的是哪条分支,当前线程单元的结束标志始终是L1标签前的CQIP指令。图4(b)描述的是(a)图在运行的可能对应的程序地址。图4(b)表明在执行时,SPAWN指令能够使新的线程准确地跳转到各自的预计算开始位置开始执行。
图4所示的多预计算片段实现当执行的分支为左分支的时候,新的线程从L1标签开始执行。由于L1标签下还有第二段预计算片段,因此会导致新的线程执行两段预计算片段,这时必须使新的线程跳过第二段预计算片段。可以使用硬件检测来判断对应的指令,以跳过其他的预计算片段。当执行PSLICE_EXIT指令的时候,预读取下一条指令,检测其是否PSLICE_ENTRY指令。如果下一条指令是PSLICE_ENTRY则说明下一段指令是另一个预计算片段,跳过这段指令直到遇到该段指令的PSLICE_EXIT指令;如果不是则说明下一段是非预计算部分,因此继续执行后续指令,即开始执行新线程的常规线程体内容。
Claims (4)
1.一种基于CMP的推测多线程机制下的多推测路径线程划分方法,其特征在于,对于串行输入程序进行线程划分的方法,其步骤如下:
1)编译器会在对串行程序进行线程划分之前依据程序剖析器剖析运行的结果寻找执行概率大于阈值branch_probability∈[0.10,0.25]的路径作为推测路径,只在选取的推测路径上进行线程划分,推测路径是一条或者多条;
2)将串行程序的过程体的控制流图切分成线程体粒度大于阈值thread_size_lower∈[15,25]的控制流图子图,子图的切分点作为由控制子图生成的线程单元的结束点;在线程的结束点插入CQIP指令,其表示当前线程单元的执行结束;
3)在推测路径的互斥子路径段,寻找能使线程之间的数据依赖数目小于阈值dependence_threshold∈[2,5]而线程激发距离大于阈值spawning_distance_lower∈[3,8]的位置作为新线程激发点,在此激发新的线程单元执行,激发距离表示候选的线程激发点与线程结束点之间的距离;在线程激发点插入线程激发控制指令SPAWN指令,控制线程的激发;SPAWN指令格式为SPAWNaddr,addr表示新线程的指令起始地址;
4)在每一个待激发的新线程单元的开始部分插入预计算片段,每一段预计算片段与一个(SPAWN,CQIP)指令对对应。
2.如权利要求1所述的基于CMP的推测多线程机制下的多推测路径线程划分方法,其特征在于,所述的控制子图的切分点,切分点属于过程的控制无关基本块,即从过程的入口节点到过程的出口节点的任何路径都经过该基本块;通过切分点的切分,使控制流图子图的粒度大于thread_size_lower∈[15,25],而对其粒度上限不作直接约束。
3.如权利要求1所述的基于CMP的推测多线程机制下的多推测路径线程划分方法,其特征在于,所述的互斥子路径段的语义如下:
1)互斥子路径段是相邻两个CQIP指令之间的控制流图子图的边的集合的子集,即该路径段包含的指令集合,不跨越多个线程体,只在一个线程体内部;
2)一条路径上的属于互斥子路径段的部分与该控制子图其他路径无任何交集。
4.如权利要求1所述的基于CMP的推测多线程机制下的多推测路径线程划分方法,其特征在于,所述的预计算片段是指:
1)一段预计算片段由PSLICE_ENTRY指令标记起始,由PSLICE_EXIT指令标记结束;PSLICE_ENTRY指令的地址与激发运行该线程的SPAWN指令的addr值相等;
2)每一段互斥路径子段上的SPAWN指令,在激发新线程之前,对应有一段预计算片段,该预计算片段是对应互斥子路径段上的SPAWN指令到CQIP指令之间的指令集合的精简集;具体地,其预计算片段为当前线程在SPAWN指令到CQIP指令之间的livein变量的定义指令组成的指令集合;
3)相互互斥的多个互斥子路径段上的SPAWN指令对应的预计算片段都被放置在同一个CQIP指令的后面,每一个SPAWN指令的addr值与其中一段预计算片段的PSLICE_ENTRY指令地址相等;
模拟器端在执行时,互斥路径子段上的SPAWN指令能根据addr值跳转到对应的PSLICE_ENTRY指令开始执行一段预计算片段,并且执行完这段预计算片段后,由模拟器的硬件检测后续指令是否是PSLICE_ENTRY指令,若是,则继续跳过其后的预计算片段,若不是,则表示开始执行常规的线程体内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510400552.6A CN105138309B (zh) | 2015-07-09 | 2015-07-09 | 基于cmp的推测多线程机制下的多推测路径线程划分方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510400552.6A CN105138309B (zh) | 2015-07-09 | 2015-07-09 | 基于cmp的推测多线程机制下的多推测路径线程划分方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105138309A true CN105138309A (zh) | 2015-12-09 |
CN105138309B CN105138309B (zh) | 2018-07-17 |
Family
ID=54723668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510400552.6A Expired - Fee Related CN105138309B (zh) | 2015-07-09 | 2015-07-09 | 基于cmp的推测多线程机制下的多推测路径线程划分方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105138309B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108694080A (zh) * | 2017-04-09 | 2018-10-23 | 英特尔公司 | 高效线程组调度 |
CN108958793B (zh) * | 2018-07-24 | 2020-11-10 | 北京理工大学 | 一种基于改进gn算法的程序控制流图划分方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1540498A (zh) * | 2003-04-21 | 2004-10-27 | �Ҵ���˾ | 用于在同步多线程处理器中改变流水线长度的方法和电路 |
US6928645B2 (en) * | 2001-03-30 | 2005-08-09 | Intel Corporation | Software-based speculative pre-computation and multithreading |
CN101118486A (zh) * | 2006-06-29 | 2008-02-06 | 英特尔公司 | 多执行线程的分区流水线执行的方法和设备 |
CN101833440A (zh) * | 2010-04-30 | 2010-09-15 | 西安交通大学 | 编译器支持下的推测多线程内存数据同步执行方法及装置 |
CN101833476A (zh) * | 2010-05-28 | 2010-09-15 | 西安交通大学 | 基于cmp的推测多线程机制下的独立栈函数调用方法 |
CN101916183A (zh) * | 2009-04-08 | 2010-12-15 | 英特尔公司 | 用于多线程的寄存器检查点机制 |
CN103635877A (zh) * | 2011-05-13 | 2014-03-12 | 甲骨文国际公司 | 乱序处理器中的分支目标存储与检索 |
-
2015
- 2015-07-09 CN CN201510400552.6A patent/CN105138309B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6928645B2 (en) * | 2001-03-30 | 2005-08-09 | Intel Corporation | Software-based speculative pre-computation and multithreading |
CN1540498A (zh) * | 2003-04-21 | 2004-10-27 | �Ҵ���˾ | 用于在同步多线程处理器中改变流水线长度的方法和电路 |
CN101118486A (zh) * | 2006-06-29 | 2008-02-06 | 英特尔公司 | 多执行线程的分区流水线执行的方法和设备 |
CN101916183A (zh) * | 2009-04-08 | 2010-12-15 | 英特尔公司 | 用于多线程的寄存器检查点机制 |
CN101833440A (zh) * | 2010-04-30 | 2010-09-15 | 西安交通大学 | 编译器支持下的推测多线程内存数据同步执行方法及装置 |
CN101833476A (zh) * | 2010-05-28 | 2010-09-15 | 西安交通大学 | 基于cmp的推测多线程机制下的独立栈函数调用方法 |
CN103635877A (zh) * | 2011-05-13 | 2014-03-12 | 甲骨文国际公司 | 乱序处理器中的分支目标存储与检索 |
Non-Patent Citations (2)
Title |
---|
李远成,赵银亮,李美蓉,杜延宁: ""一种基于路径优化的推测多线程划分算法"", 《软件学报》 * |
李远成,阴培培,赵银亮: ""基于模糊聚类的推测多线程划分算法"", 《计算机学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108694080A (zh) * | 2017-04-09 | 2018-10-23 | 英特尔公司 | 高效线程组调度 |
CN108958793B (zh) * | 2018-07-24 | 2020-11-10 | 北京理工大学 | 一种基于改进gn算法的程序控制流图划分方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105138309B (zh) | 2018-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9703565B2 (en) | Combined branch target and predicate prediction | |
CN103348318A (zh) | 控制依赖于相同数据条件的相邻指令的执行 | |
US8201140B2 (en) | System and method for creating and using graphical object instances in a statechart environment | |
CN105138335B (zh) | 一种基于控制流图的函数调用路径提取方法及装置 | |
US5642512A (en) | Compiler with improved live range interference investigation | |
CN109189504B (zh) | 行为执行方法、行为树生成方法、装置和计算机设备 | |
CN102598001A (zh) | 用于分析具有瞬时逻辑的逻辑设计的技术 | |
Nadel et al. | Accelerated deletion-based extraction of minimal unsatisfiable cores | |
CN109784010A (zh) | 一种基于llvm的程序控制流混淆方法及装置 | |
Beyer et al. | Symbolic execution with CEGAR | |
CN102830954A (zh) | 指令调度方法及装置 | |
CN114817927B (zh) | 基于分支覆盖指导的有效符号执行方法 | |
CN105138309A (zh) | 基于cmp的推测多线程机制下的多推测路径线程划分方法 | |
US8516467B2 (en) | Method and apparatus for enhancing comprehension of code time complexity and flow | |
CN104809067B (zh) | 面向等式约束的测试用例生成方法和装置 | |
CN109634569A (zh) | 基于注解的流程实现方法、装置、设备及可读存储介质 | |
US11068463B2 (en) | System and method for managing log data | |
CN111176992B (zh) | 流程引擎的测试方法、装置、计算机设备及存储介质 | |
US20060047495A1 (en) | Analyzer for spawning pairs in speculative multithreaded processor | |
CN105119961B9 (zh) | 基于本体的语义Web服务自动组合方法 | |
CN116756382A (zh) | 检测敏感字符串的方法、装置、设置及存储介质 | |
US20060265695A1 (en) | Software development preprocessing method, solftware control method, software development method, and software development device | |
CN104317572B (zh) | 一种实时系统的循环边界内向分析方法 | |
CN109101480A (zh) | 一种企业名称的切分方法、装置及计算机可读存储介质 | |
CN103399741B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180717 Termination date: 20210709 |
|
CF01 | Termination of patent right due to non-payment of annual fee |