基于加权控制流图的前瞻线程划分方法

文档序号:6382409阅读:170来源:国知局
专利名称:基于加权控制流图的前瞻线程划分方法
技术领域
本发明涉及基于加权控制流图(WCFG)的前瞻线程划分方法,属于计算机技术领域。
背景技术
随着单片多核处理器(CMP)的发展,多核技术已经在许多应用方面都得到普及。但是,由于现在的大部分软件都采用串行模式,因此如何充分发挥CMP的优势来加速串行程序的执行已成为众多应用领域共同关注的问题。
线程级前瞻(Thread-Level Speculation, TLS)技术在不确定的情况下,提前创建并推测执行一些将来需要执行的线程,通过前瞻执行和相应的前瞻错误检测机制,可以去除冗余的数据同步、发现并维护真正的数据相关,从而降低线程划分的难度,提高程序的执行效率,使得在多核上加速传统上难以手工或自动并行化的串行程序成为可能。高效的线程划分方法离不开线程级前瞻执行的支持。另外线程的划分又需要编译和体系结构的紧密配合,这是因为借助编译过程的一些优化策略可以降低线程划分复杂度,而体系结构不仅是承接线程划分结果实现线程级并行的载体,而且其中的一些参数,线程控制和前瞻执行的延迟开销等也是线程划分时确定启发式规则的重要依据。同时,线程划分的过程中也要兼顾线程的体积,线程间的控制和数据相关性,线程间的访存负载平衡等。只有体积相近,控制和数据相关性小,负载均衡的线程才能发挥多线程系统的性能。

发明内容
本发明目的在于针对现有技术存在问题,提供一种相对较好的前瞻线程划分方法——基于加权控制流图的前瞻线程划分方法,该方法能够将编译与体系结构紧密结合,并使得划分后的前瞻线程体积相近,控制和数据相关性小,能够充分利用多核处理器的资源,提闻并行程序的执行效率。为了达到上述目的,本发明的构思是在建立加权控制流图前后进行多次优化,排除不适合并行化的循环和过程调用,这样最后在提取可执行的候选线程的时候就能够获得并行度很高的前瞻线程,整个划分过程将宏观和微观有机结合,经过划分后的前瞻线程能够充分的发挥单片多核(CMP)的性能。根据发明的构思,本发明采用下述技术方案
I、本发明公开了一种基于加权控制流图的前瞻线程划分方法,其特征在于操作步骤如

(1)自上而下扫描原串行程序,找出程序中所有的过程调用;
(2)对步骤(I)中找出的所有的过程调用进行处理,对不符合要求的过程调用插入到原来的串行程序中直接运行;
(3)根据profiling信息对步骤(2)中处理后的串行程序建立加权控制流T;(4)自上而下遍历整个复加权控制流图T,找出图中所有的循环区域;
(5)对步骤(4)中找出的所有的循环进行处理,对不符合要求的循环直接插入到串行程序中直接运行,并将符合要求的循环归结为一个单入口单出口的节点,由此可形成超控制流图F;
(6)根据染色法从超控制流图F中提取可执行的前瞻线程。2、根据权利要求I所述的一种基于加权控制流图的前瞻线程划分方法,其特征在于上述步骤(2)中所述的对步骤(I)中找出的所有的过程调用进行处理,其具体处理步骤如下
(21)规定候选线程的体积下限L0WER_UMIT及其上限UPPER_UMIT,并提取出所有的过程调用。 (22)对于体积小于候选线程体积下限L0WER_UMIT的过程调用,则将其函数体直接插入到原来的串行程序中直接运行;
(23)对于体积大于候选线程体积上限UPPER_UMIT的过程调用,则应该对其进行适当前瞻划分,使其能够成为多个可以并行执行的线程。3、根据权利要求I所述的一种基于加权控制流图的前瞻线程划分方法,其特征在于上述步骤(5)中所述的对步骤(4)中遍历出的所有循环进行处理,其具体处理步骤如下
(51)自上而下遍历整个加权控制流图T,提取出所有的循环或者循环区域;
(52)判断所有的循环或者循环区域是否适合并行化,若不符合则将其直接插入到原来的串行程序中直接运行。4、根据权利要求I所述的一种基于加权控制流图的前瞻线程划分方法,其特征在于上述步骤(6)中,利用染色法从超控制流图F中提取可执行的前瞻线程,其具体处理步骤如下
(61)在有向图F中选择一个没有前驱的顶点并输出;
(62)规定若图中的某一个顶点被选为线程,那么与它相邻的顶点便不能再作为线程;
(63)删除已输出的顶点以及与该顶点相邻的其它顶点和边;
(64)重复上述三个步骤,直到找出所有的可执行的候选线程。本发明基于WCFG的前瞻线程划分方法与已有技术相比较,具有如下显而易见的突出实质性特点和显著优点该方法能够将编译和体系结构的紧密配合,兼顾了线程的体积,线程间的控制和数据相关性,线程间的访存负载平衡等。另外在建立线程描述方法时,考虑到了程序的profiling信息,这可使线程划分很容易定位程序中执行频率最高的部分进行划分和优化。而对于自身难以解决的问题,借助硬件技术给予了相应的解决。


通过以下对本发明基于WCFG的前瞻线程划分方法的实例结合其附图的描述,可以进一步理解本发明的目的、具体结构特征和优点。其中附图为
图I是基于WCFG的前瞻线程划分方法的流程图。图2是图I中步骤2的过程调用的处理流程图。图3是图I中步骤5的循环的处理流程图。图4是图I中步骤3建立的串行程序加权控制流图T。
图5表示的是从串行程序的加权控制流图T到串行程序的超控制流图F的推导过程,图5中的图(b)是推倒后的超控制流图F。图6是图I中步骤6可执行候选线程的提取过程图。
具体实施例方式本实施例所述方案的应用环境是面向多核处理器的线程级并行执行环境,本实施例不限定所述技术方案应用环境中多核处理器架构和线程划分方式。下面结合说明书附图和具体实施方式
对本发明作进一步详细的说明。实施例一 参照图1,本基于加权控制流图的前瞻线程划分方法,其特征在于操作步骤如下
(1)自上而下扫描原串行程序,找出程序中所有的过程调用;
(2)对步骤(I)中找出的所有的过程调用进行处理,对不符合要求的过程调用插入到原来的串行程序中直接运行;
(3)根据profiling信息对步骤(2)中处理后的串行程序建立加权控制流T;
(4)自上而下遍历整个复加权控制流图T,找出图中所有的循环区域;
(5)对步骤(4)中找出的所有的循环进行处理,对不符合要求的循环直接插入到串行程序中直接运行,并将符合要求的循环归结为一个单入口单出口的节点,由此可形成超控制流图F;
(6)根据染色法从超控制流图F中提取可执行的前瞻线程。实施例二
本实施例与实施例一基本相同,特别之处如下
上述步骤(2)中所述的对步骤(I)中找出的所有的过程调用进行处理,其具体处理步骤如下
(21)规定候选线程的体积下限L0WER_UMIT及其上限UPPER_UMIT,并提取出所有的过程调用;
(22)对于体积小于候选线程体积下限L0WER_UMIT的过程调用,则将其函数体直接插入到原来的串行程序中直接运行;
(23)对于体积大于候选线程体积上限UPPER_UMIT的过程调用,则应该对其进行适当前瞻划分,使其能够成为多个可以并行执行的线程。3、根据权利要求I所述的一种基于加权控制流图的前瞻线程划分方法,其特征在于上述步骤(5)中所述的对步骤(4)中遍历出的所有循环进行处理,其具体处理步骤如下
(51)自上而下遍历整个加权控制流图T,提取出所有的循环或者循环区域;
(52)判断所有的循环或者循环区域是否适合并行化,若不符合则将其直接插入到原来的串行程序中直接运行。4、根据权利要求I所述的一种基于加权控制流图的前瞻线程划分方法,其特征在于上述步骤(6)中,利用染色法从超控制流图F中提取可执行的前瞻线程,其具体处理步骤如下
(61)在有向图F中选择一个没有前驱的顶点并输出;
(62)规定若图中的某一个顶点被选为线程,那么与它相邻的顶点便不能再作为线程;(63)删除已输出的顶点以及与该顶点相邻的其它顶点和边;
(64)重复上述三个步骤,直到找出所有的可执行的候选线程。实施例三
参照图1,本发明的一种基于加权控制流图的前瞻线程划分方法,其具体操作步骤如 下
步骤101、针对需要划分的串行程序进行搜索,提取出所有函数的过程调用。步骤102、对步骤101中提取出的所有过程调用进行处理,对不符合要求的过程调用插入到原来的串行程序中直接运行,具体步骤如下
步骤1021、扫描遍历原串行程序,提取出所有的过程调用,并建立集合P={P」Pi表示串行程序中第i个过程调用};
步骤1022、判断集合P中的每个过程调用是否符合要求,符合跳转到步骤1023,不符合则跳转到步骤1024 ;
步骤1023、针对过程调用的体积小于线程体积下线L0WER_UMIT的,则将其插入到原来的串行程序中直接运行。步骤1024、判断集合P中的过程调用是否扫描完毕,没有过程调用则结束,否则直接跳转到步骤1022。步骤103、对上述处理过的串行程序,再根据profiling信息,建立加权控制流图T,如图4所示。步骤104、自上而下遍历整个加权控制流图T,搜索出所有的循环,并建立集合L =ILi I Li表示WCFG中的第i个循环或第i个循环区域}。步骤105、对集合L中的所有元素进行处理,将不适合并行化的循环直接插入到串行程序中直接运行,对符合要求的循环将其归结为一个带有单入口单出口的节点,扫描完集合L中的所有元素后,再由加权控制流图T推导出超控制流图F,推导过程如图5所示。参照图3,其具体操作步骤如下
步骤1051、自上而下遍历加权控制流图T,提取出所有的循环,并建立集合L = ILiI Li表示WCFG中的第i个循环或第i个循环区域};
步骤1052、判断L中的每一个循环是否符合并行化的要求,不符合则跳转到步骤1053,符合要求的循环则跳转到步骤1054 ;
步骤1053、对于不符合要求的循环则将其直接插入到串行程序中直接运行,如图4所示,区域I不符合要求,则将其直接插入到串行程序中,并将其从T中删除,之后再跳转到步骤 1055 ;
步骤1054、对于符合要求的循环则将其归结为一个具有单入口单出口的节点,如图5所示,区域2是符合要求的循环,则可将其归结会具有单出口单入口的节点B,之后再跳转到步骤1055 ;
步骤1055、判断集合L中是否还有待处理的循环或者区域,若不存在则跳转到步骤1056,若存在则跳转到步骤1052 ;
步骤1056、经过上述步骤处理后,则可建立一个新的超控制流图F,如图5中的图
(b)所示。步骤106、根据染色法,从超控制流图F中提取出最终可执行的前瞻线程。参照图6,其具体操作步骤如下
步骤1061、图6中的图(a)与图5中的图(b)是同一个图形,利用染色法,我们可以首先选择一个没有前驱的顶点并输出(如果图中的一个顶点被选为线程,那么与它相邻的顶点便不能再作为线程),之后再从图(a)中删除与该顶点相邻的顶点及边,可形成新的图形图(b)。步骤1062、从图(b)中,再次选择一个没有前驱的顶点8,之后再从图(b)中删除与顶点8相邻的顶点及边,可形成新的图形图(C)。步骤1063、从图(C)中,再次选择一个没有前驱的顶点9,之后再从图(C)中删除与顶点9相邻的顶点及边,可形成新的图形图(d)。步骤1064、从图(d)中,再次选择一个没有前驱的顶点15,之后再从图(d)中删除 与顶点15相邻的顶点及边,至此可形成一个可执行前瞻线程集合ST={1,8,9,15},划分结束。以上对基于WCFG的前线线程划分方法进行了详细的介绍,本文结合说明书附图和具体的实施例进行阐述只是用于帮助理解本发明的核心思想;同时对于本领域的一般技术人员,依据本发明的方法和思想,在具体实施方式
和应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.基于加权控制流图的前瞻线程划分方法,其特征在于操作步骤如下 (1)自上而下扫描原串行程序,找出程序中所有的过程调用; (2)对步骤(I)中找出的所有的过程调用进行处理,对不符合要求的过程调用插入到原来的串行程序中直接运行; (3)根据profiling信息对步骤(2)中处理后的串行程序建立加权控制流T; (4)自上而下遍历整个复加权控制流图T,找出图中所有的循环区域; (5)对步骤(4)中找出的所有的循环进行处理,对不符合要求的循环直接插入到串行程序中直接运行,并将符合要求的循环归结为一个单入口单出口的节点,由此可形成超控制流图F; (6)根据染色法从超控制流图F中提取可执行的前瞻线程。
2.根据权利要求I所述的一种基于加权控制流图的前瞻线程划分方法,其特征在于上述步骤(2)中所述的对步骤(I)中找出的所有的过程调用进行处理,其具体处理步骤如下 (21)规定候选线程的体积下限LOWER_UMIT及其上限UPPER_UMIT,并提取出所有的过程调用; (22)对于体积小于候选线程体积下限LOWER_UMIT的过程调用,则将其函数体直接插入到原来的串行程序中直接运行; (23)对于体积大于候选线程体积上限UPPER_UMIT的过程调用,则应该对其进行适当前瞻划分,使其能够成为多个可以并行执行的线程。
3.根据权利要求I所述的一种基于加权控制流图的前瞻线程划分方法,其特征在于上述步骤(5)中所述的对步骤(4)中遍历出的所有循环进行处理,其具体处理步骤如下 (51)自上而下遍历整个加权控制流图T,提取出所有的循环或者循环区域; (52)判断所有的循环或者循环区域是否适合并行化,若不符合则将其直接插入到原来的串行程序中直接运行。
4.根据权利要求I所述的一种基于加权控制流图的前瞻线程划分方法,其特征在于上述步骤(6)中,利用染色法从超控制流图F中提取可执行的前瞻线程,其具体处理步骤如下 (61)在有向图F中选择一个没有前驱的顶点并输出; (62)规定若图中的某一个顶点被选为线程,那么与它相邻的顶点便不能再作为线程; (63)删除已输出的顶点以及与该顶点相邻的其它顶点和边; (64)重复上述三个步骤,直到找出所有的可执行的候选线程。
全文摘要
本发明公开了一种基于加权控制流图的前瞻线程划分方法。本方法的操作步骤如下(1)自上而下扫描原串行程序;(2)对步骤(1)中找出的所有的过程调用进行处理;(3)根据profiling信息对步骤(2)中处理后的串行程序建立加权控制流图T;(4)自上而下遍历整个复加权控制流图T,找出图中所有的循环区域;(5)对步骤(4)中找出的所有的循环进行处理;(6)根据染色法从超控制流图F中提取出可执行的前瞻线程。本发明的方法兼顾了线程的体积,线程间的控制和数据相关性,线程间的访存负载均衡,对于自身难以解决的问题,借助硬件技术都给予了相应的解决,方法充分利用了计算机的资源,提高了程序的执行效率。
文档编号G06F9/38GK102968295SQ20121049145
公开日2013年3月13日 申请日期2012年11月28日 优先权日2012年11月28日
发明者李川, 杨洪斌, 吴悦 申请人:上海大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1