面向多核并行程序的确定性懒惰释放一致性实现方法_2

文档序号:9597156阅读:来源:国知局
,步骤1)中利用多核并行程序的同步语句将多核并行程序的执行流执行切片,使得每一个执行切片都具有唯一的向量时钟值,其中执行切片是指线程执行中的一段指令序列,这段指令执行序列以一个同步语句开始,并以另一个同步语句结束。如图3所示,执行切片是一个动态的指令执行序列,在程序执行时以同步语句为边界自动划分,例如在线程代码执行方向上,执行切片η和执行切片η+1为相邻的两个执行切片,执行切片η和执行切片η+1之间即为一个同步语句,每个执行切片拥有唯一的向量时钟值与之对应。
[0025]本实施例中,步骤2)中针对线程访问的页面生成新的向量版本的详细步骤包括:
[0026]S1)首先判断触发针对线程访问的页面生成新版本的条件,如果条件为在执行切片中线程第一次修改页面,贝通过copy-on_write(写时复制,下同)技术针对线程访问的页面生成新版本,基于该执行切片的向量时钟生成新版本的向量版本号,并修改页表将该页面对应的虚地址指向新版本的向量版本号,退出;如果条件为在线程同步时导致版本合并,则跳转执行步骤S2);
[0027]S2)首先找到需要同步的各个线程访问页面当前版本的共同前驱版本,分别计算各个线程访问页面当前版本和共同前驱版本之间的差别,将这些差别分别合并到共同前驱版本生成新版本,基于该执行切片的向量时钟生成新版本的向量版本号,并修改页表将该页面对应的虚地址指向新版本的向量版本号。
[0028]如图4所示,目前普通的版本技术为全序关系,版本P1?P4的版本号是整数,修改一次版本号就增加1。但是在并行程序中,事件之间的关系并不是全序关系而是偏序关系(partial order),这是因为完全并行的事件之间是不能判断时序关系的。因此全序关系的版本号在反映并行程序中事件的偏序关系时会出现偏颇。本实施例中采用向量版本技术管理内存页面,向量版本之间就能够形成偏序关系,恰好用于描述程序执行中生成版本的事件之间的偏序关系。如图5所示,每一个方块表示一个页面版本,箭头方向表示版本的增长方向,也表示了版本之间的偏序关系。其中箭头1、2、4表示由于线程修改本地内存导致的版本增长,而箭头3、5表示由于线程同步合并内存修改导致的版本增长。
[0029]在本实施例中,每个页面P都有一个初始版本。页面新版本的生成有两种情况,一是在执行切片中线程第一次修改页面时,这时通过copy-on-write技术生成新的版本;二是在线程同步时导致版本合并,由多个老版本合并成一个新的版本。以图5为例,本实施例中新版本的生成过程具体如下:在初始状态下页面P的版本列表中只有一个版本,即PV<0, 0>。线程T1和线程T2初始的向量时钟分别为〈0,0>和〈0,0>。此时线程T1和线程T2开始并行执行,它们访问页面P的同一个版本PV〈0,0>。当线程T1进入第一个执行切片时,它的向量时钟为〈1,0>,当线程T1第一次写页面P时,它会创建页面P的一个新版本ρ〈1,0>,表示该版本是在向量时间为〈1,0>时被创建的,同时它会修改自己的页表,将页面P对应的虚地址指向版本PV〈1,0>。同样,当线程T2进入第一个执行切片时,它的向量时钟为〈0,1>,当线程T2第一次写页面P时,它会创建一个新的版本PV〈0,1>,并修改页表将页面P对应的虚地址指向版本PV〈0,1>。此时线程T1和线程T2仍然并行执行,但是访问的是页面P的不同版本。接下来线程T2在第二个执行切片生成了页面P的第三个版本P〈0,2>。此时,线程T1和线程T2发生了同步:线程T2释放锁,而线程T1获得锁,因此形成了线程间两个同步语句的happens-before关系。根据DLRC内存一致性模型,线程T1的向量时钟变为〈2,3>,本实施例需要创建页面P的一个新的版本PV〈2,3>。创建方法如下:首先找到PV〈1, 0>和PV〈0, 2>这两个版本的共同前驱版本P〈0, 0> (也可以看作是这两个版本的下确界),计算 PV〈1,0> 和 PV<0, 0> 之间的差别,即 Diff(PV<l, 0>,PV<0, 0)),以及 PV<0, 2> 和PV<0, 0>之间的差别,即Diff(PV<0, 2>,PV<0, 0?,并把这些差别合并到PV<0, 0>上以产生新的版本 PV<2, 3> = PV<0, 0>+Diff (PV<1, 0>,PV<0, 0))+Diff (PV<0, 2>, PV<0, 0?。最后把新版本加入到页面P的版本列表中。
[0030]本实施例中,步骤2)中为线程选择符合DLRC内存一致性的页面向量版本时,针对当前执行切片S,从访问的页面P的所有版本PV1?PVn中选择S当前向量时钟的下确界版本PVk,下确界版本PVk满足以下条件:(1)执行切片S的向量时钟大于或等于PVk的版本号;(2)不存在向量时钟大于下确界版本PVk的向量时钟的版本PVx。在选择PVk之后,修改线程T的页表,使得页面P的虚地址指向PVk所对应的物理地址。同时调用Linux系统调用mprotect函数保护页面PVk,使其不具有写权限,以便在执行切片S中线程T第一次写PVk 时,对 PVk 做 copy-on-write。
[0031]本实施例中,步骤1)中的向量时钟的值用形如<xl,x2, x3,…,xn>的向量形式描述,向量时钟中向量元素的个数为多核并行程序的线程数量,且向量时钟中第η个线程Τη对应于向量时钟的第η个元素χη。向量元素的个数取决于分布式系统中并行执行个体的数量,在多线程程序中,也就是线程数。线程Τη对应于向量时钟中的第η个元素。在实现中,每个线程Τ维护一个向量时钟V,跟踪它所看到的时间值,并用这个时间值给线程Τ中发生的事件做时间戳。两个事件的向量时钟如果能比较大小,则说明它们之间有时序关系,否则说明它们没有时序关系(没有时序关系表明系统不能判断两个事件发生的先后顺序)。
[0032]以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种面向多核并行程序的确定性懒惰释放一致性实现方法,其特征在于步骤包括: 1)在多核并行程序初始化时为多核并行程序的各个线程分配独立的地址空间以隔离线程的地址空间,将多核并行程序进程的虚地址空间划分成页面统一管理,每一个页面都具有一个初始版本,且将多核并行程序进程的每个线程通过页表项映射至指定页面的一个版本,使得每个线程在任一时刻只能看到指定页面的一个版本;同时,为多核并行程序的每个线程设置初始向量版本号并维护一个向量时钟,利用多核并行程序的同步语句将多核并行程序的执行流划分为执行切片,使得每一个执行切片都具有唯一的向量时钟值; 2)在多核并行程序运行后,如果在执行切片中线程第一次修改页面或者线程同步时导致版本合并时,针对线程访问的页面生成新的向量版本;在执行切片开始时,为线程选择符合DLRC内存一致性的页面向量版本。2.根据权利要求1所述的面向多核并行程序的确定性懒惰释放一致性实现方法,其特征在于,所述步骤2)中针对线程访问的页面生成新的向量版本的详细步骤包括: 51)首先判断触发针对线程访问的页面生成新版本的条件,如果条件为在执行切片中线程第一次修改页面,则通过copy-onirite技术针对线程访问的页面生成新版本,基于该执行切片的向量时钟生成新版本的向量版本号,并修改页表将该页面对应的虚地址指向新版本的向量版本号,退出;如果条件为在线程同步时导致版本合并,则跳转执行步骤S2); 52)首先找到需要同步的各个线程访问页面当前版本的共同前驱版本,分别计算各个线程访问页面当前版本和共同前驱版本之间的差别,将这些差别分别合并到共同前驱版本生成新版本,基于该执行切片的向量时钟生成新版本的向量版本号,并修改页表将该页面对应的虚地址指向新版本的向量版本号。3.根据权利要求2所述的面向多核并行程序的确定性懒惰释放一致性实现方法,其特征在于,所述步骤2)中为线程选择符合DLRC内存一致性的页面向量版本时,针对当前执行切片S,从访问的页面P的所有版本PV1?PVn中选择S当前向量时钟的下确界版本PVk,所述下确界版本PVk满足以下条件:(1)执行切片S的向量时钟大于或等于PVk的版本号;(2)不存在向量时钟大于下确界版本PVk的向量时钟的版本PVx。4.根据权利要求1或2或3所述的面向多核并行程序的确定性懒惰释放一致性实现方法,其特征在于,所述步骤1)中的向量时钟的值用形如<xl,x2,x3,…,xn>的向量形式描述,所述向量时钟中向量元素的个数为多核并行程序的线程数量,且所述向量时钟中第η个线程Τη对应于向量时钟的第η个元素χη。
【专利摘要】本发明公开了一种面向多核并行程序的确定性懒惰释放一致性实现方法,步骤包括:在多核并行程序初始化时为各个线程分配独立的地址空间,进程的虚地址空间划分成页面统一管理,将多核并行程序进程的每个线程通过页表项映射至指定页面的一个版本,为多核并行程序的每个线程设置初始向量版本号并维护一个向量时钟,利用同步语句划分为执行切片;在多核并行程序运行后,如果在执行切片中线程第一次修改页面或者线程同步时导致版本合并时,针对线程访问的页面生成新的向量版本;在执行切片开始时,为线程选择符合DLRC内存一致性的页面向量版本。本发明能够解决采用内存修改传播算法在空间上和时间上的开销问题,缩小内存空间使用,减少内存读写次数。
【IPC分类】G06F9/38
【公开号】CN105354011
【申请号】CN201510898408
【发明人】周旭, 卢凯, 杨灿群, 李 根, 王睿伯, 王小平, 迟万庆, 唐宏伟, 刘勇朋, 冯华, 蒋洁, 樊葆华
【申请人】中国人民解放军国防科学技术大学
【公开日】2016年2月24日
【申请日】2015年12月8日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1