一种前瞻线程的多级并行执行方法

文档序号:6353105阅读:271来源:国知局
专利名称:一种前瞻线程的多级并行执行方法
技术领域
本发明涉及一种前瞻线程的多级并行执行方法,属于计算机技术领域。
背景技术
随着计算机技术的不断发展,单片多核处理器(Chip Multi-Processors,CMP)技 术已经成为提高处理器性能的关键技术之一,被广泛的应用在各个领域。单片多核技术通 过在一块芯片上集成多个相对简单的微处理器核心来并行执行,提高系统的性能,并减小 处理器的功耗。利用CMP技术提高系统性能的关键是全面发挥多个微处理器核心的并行处 理优势,提高程序在多核处理器上的执行效率。线程级前瞻(Thread-Level Speculative,TLQ技术,在不确定的情况下提前创 建并猜测执行一些将来可能需要执行的线程,通过前瞻执行和相应的前瞻错误检测机制 可以去除不必要的数据同步、发现并维护真正的数据相关,从而降低线程划分的难度,成 为提高线程级并行执行的有效途。但是,利用前瞻技术提取出的线程之间依然存在着一些 必要的数据同步,这在线程并行执行时就会形成线程之间的等待,影响线程并行执行的效 率。因此,如何优化线程执行,避免因数据同步而形成线程等待是串行程序并行化中的关键 技术之一。

发明内容
本发明的目的在于针对现有技术存在问题,是提供一种前瞻线程的多级并行执行 方法,该方法能够有效地降低因数据同步而造成线程等待的几率,充分利用多核处理器的 资源,提高程序的并行执行效率。为达到上述目的,本发明的构思是根据并行执行的前瞻线程中仍旧存在可以并 行执行的模块(程序语句序列),这样就可以通过对前瞻线程进行于处理,标记出可以并行 执行的模块,在并行执行的前瞻线程因数据同步需要等待时,并不进行等待,转而寻找并执 行前瞻线程中其它可并行执行的模块,有效地结合前瞻并行线程的执行,提高程序的并行 执行效率。根据上述的发明构思,本发明采用下述技术方案
一种前瞻线程的多级并行执行方法,其特征在于,具体操作步骤如下 (1)、从需要执行的串行程序中提取出可并行执行的前瞻线程STi ; O)、对步骤(1)所述中提取出的可并行执行的前瞻线程STi进行预处理,标记出可并 行执行的模块。(3)、对步骤O)中所生成的前瞻线程STi按前瞻并行执行规则执行,直至该线程 执行完;然后判断执行完的前瞻线程STi是否需要重启,若需重启,则以非前瞻线程执行此 线程;否则,提交此前瞻线程。上述步骤O)中所述的对步骤(1)中提取出的可并行执行的前瞻线程STi进行预 处理,标记出可并行执行的模块,其具体步骤如下(21)、检测前瞻线程STi,从前瞻线程STi中检测出可并行执行的模块M1,M2,-,Mn;
(22)、在步骤中检测出的每个并行模块Mk的前后分别插入并行模块开始标识 PMSn和并行模块结束标识PMEn ;
上述步骤O)中所述的前瞻线程中的可并行的模块是指,存在于前瞻线程中的可单独 执行,并且不影响其它语句执行的若干语句序列或者若干个程序语句组成的模块。上述步骤(3)中所述的对步骤O)中所生成的各个前瞻线程STi按前瞻线程的并 行执行规则并行执行,直至该线程执行完,然后判断执行完的前瞻线程STi是否需要重启, 若需重启,则以非前瞻线程执行此线程;否则,提交此前瞻线程,其具体操作步骤如下
(31)、根据顺序语义靠前的前瞻线程先调度的原则,从候选等待调度的的前瞻线程中 选择前瞻线程STi到空闲的核上;
(32)、执行前瞻线程STi并检测是否有需要线程同步的信号量出现,若出现线程同步的 信号量,则转到步骤(33);否则,转至步骤(37);
(33)、对步骤(3 中正在执行的前瞻线程STi的当前语句添加等待执行标识 Wait (Tjv),对需要同步的线程STj添加唤起标识Awake (Tiv),标识后转步骤(34);
(34)、检测步骤(33)中的线程STi是否存在未执行过的可并行执行的模块,若检测到 线程存在可并行执行的模块Mk,则执行步骤(35),否则此线程STi进入等待状态,等待线程 STj发起唤起信号标识Awake (Tiv)后,转步骤(36);
(35)、执行上述步骤(34)中检测到的可并行执行模块Mk,执行完毕后表示模块为已执 行过标识,即用PMOk代替PM&与PMEn,同时检测线程唤起信号是否到达,若唤起信号未到 达,则转到步骤(34),继续执行;若唤起信号到达,则转步骤(36);
(36)、跳转到前瞻线程STi的等待标识Wait(Tjv)处继续执行,然后转步骤(37);
(37)、判断前瞻线程STi是否执行完毕,若前瞻线程STi未执行完毕,则转到(32)继续 执行,否则,转到步骤(38);
(38)、判断线程STi前瞻是否失效,若前瞻失效,转步骤(39);否则,转到步骤GO);
(39)、对该线程重启操作,并在执行完线程STi后,转步骤00);
(40)、对前瞻线程STi执行相关结果进行提交,执行结束。本发明的一种前瞻线程的多级并行执行方法与已有技术相比较,具有如下显而易 见的突出实质性特点和显著优点该方法能够间接的消除必需的数据同步以及数据依赖, 有效避免了因线程等待和线程资源从处理器和内存的换入换出造成计算机资源浪费,充分 利用计算机资源,提高了程序的执行效率。


图1是本发明的一种前瞻线程的多级并行执行方法的流程图; 图2是图1中步骤(3)的流程图。
具体实施例方式下面结合说明书附图和具体实施方式
对本发明作进一步详细的说明。本实施例所述方案的应用环境是面向多核处理器的并行前瞻线程级执行环境,本 实施例不限定所述技术方案应用环境中多核处理器架构。
参照图1,本发明的一种前瞻线程的多级并行执行方法,其具体操作步骤如下 步骤101、利用线程级前瞻技术从需要执行的串行程序中提取出可并行执行的线程
STi。步骤102、对提取可并行执行的各个前瞻线程进行预处理,标记出可并行执行的模 块,其具体步骤如下
步骤1021、检测前瞻线程STi,从前瞻线程STi中检测出可并行执行的模块M1,M2,…,
Mn;
步骤1022、在步骤1021中检测出的每个并行模块Mk的前后分别插入并行模块开始标 识PM&和并行模块结束标识PMEn ;
步骤103、对所生成的各个前瞻线程ST1按照前瞻并行执行规则执行,直至该线程执行 完,然后判断执行完的前瞻线程STi是否需要重启,若需重启,则以非前瞻线程执行此线程; 否则,提交此前瞻线程。参照图2,其具体操作步骤如下
步骤1031、根据顺序语义靠前的前瞻线程先调度的原则,从候选等待调度的前瞻线程 中选择线程到空闲的内核上;
步骤1032、执行前瞻线程STi并检测是否有需要线程同步的信号量出现,若出现线程 同步的信号量,转步骤1033 ;否则,转至步骤1037 ;
步骤1033、对步骤1032中的前瞻线程STi的当前语句添加等待执行标识Wait (Tjv),对 需要同步的线程STj添加唤起标识Awake(Tiv),然后转至步骤1034 ;
步骤1034、检测步骤1033中标识后的前瞻线程STi是否存在未执行过的可并行执行的 模块,若检测到线程存在可并行执行的模块Mk,则执行步骤1035,否则此线程STi进入等待 状态,等待线程ST」发起唤起信号标识Awake (Tiv)后,转步骤1036 ;
步骤1035、执行上述步骤33中检测到的可并行执行模块Mk,执行完毕后表示模块为已 执行过标识,即用PMOk代替,同时检测线程唤起信号是否到达,若唤起信号未到 达,则转到步骤1034,继续执行;若唤起信号到达,则转步骤1036 ;
步骤1036、跳转到前瞻线程STi的等待标识Wait (Tjv)处继续执行,然后转步骤1037 ; 步骤1037、判断前瞻线程STi是否执行完毕,若前瞻线程STi未执行完毕,则转到 (1032)继续执行;否则,转到步骤(1038);
步骤1038、判断线程STi前瞻是否失效,若前瞻失效,转步骤(1039);否则,转到步骤 (1040);
步骤1039、对该线程重启操作,并在执行完线程STi后,转步骤1040。步骤1040、对前瞻线程STi执行相关结果进行提交,执行结束。以上对本一种前瞻线的多级并行执行方法,进行了详细的介绍。本文结合说明书 附图和具体实施例进行阐述只是用于帮助理解本发明的方法和核心思想;同时,对于本领 域的一般技术人员,依据本发明的方法和思想,在具体实施方式
和应用范围上均会有改变 之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种前瞻线程的多级并行执行方法,其特征在于操作步骤如下 (1)、从需要执行的串行程序中提取出可并行执行的前瞻线程STi ;O)、对步骤(1)中提取出的可并行执行的前瞻线程STi进行预处理,标记出可并行执 行的模块;(3)、对步骤O)中所生成的前瞻线程STi按前瞻并行执行规则执行,直至该线程执行 完;然后判断执行完的前瞻线程STi是否需要重启,若需重启,则以非前瞻线程执行此线程; 否则,提交此前瞻线程。
2.根据权利要求1所述的一种前瞻线程的多级并行执行方法,其特征在于,上述步骤 ⑵中所述的对步骤⑴中提取出的可并行执行的前瞻线程STi进行预处理,标记出可并行 执行的模块,其具体步骤如下(21)、检测前瞻线程STi,从前瞻线程STi中检测出可并行执行的模块M1,M2,-,Mn;(22)、在步骤21中检测出的每个并行模块Mk的前后分别插入并行模块开始标识PM& 和并行模块结束标识PM&。
3.根据权利要求1所述的一种前瞻线程的多级并行执行方法,其特征在于,上述步骤(2)中所述的前瞻线程中的可并行的模块是指,存在于前瞻线程中的可单独执行,并且不影 响其它语句执行的若干语句序列或者若干个程序语句组成的模块。
4.根据权利要求1所述的一种前瞻线程的多级并行执行方法,其特征在于,上述步骤(3)中所述的对步骤(2)中所生成的前瞻线程ST1按前瞻线程的并行执行规则并行执行,直 至该线程执行完,然后判断执行完的前瞻线程STi是否需要重启,若需重启,则以非前瞻线 程执行此线程;否则,提交此前瞻线程,其具体步骤如下(31)、根据顺序语义靠前的前瞻线程先调度的原则,从候选等待调度的前瞻线程中选 择前瞻线程STi到空闲的核上;(32)、执行前瞻线程STi并检测是否有需要线程同步的信号量出现,若出现线程同步的 信号量,则转到步骤(33);否则,转至步骤(37);(33)、对步骤(3 中正在执行的前瞻线程STi的当前语句添加等待执行标识 Wait (Tjv),对需要同步的线程STj添加唤起标识Awake (Tiv),标识后转步骤(34);(34)、检测步骤(33)中的线程STi是否存在未执行过的可并行执行的模块,若检测到 线程存在可并行执行的模块Mk,则执行步骤(35),否则此线程STi进入等待状态,等待线程 STj发起唤起信号标识Awake (Tiv)后,转步骤(36);(35)、执行上述步骤(34)中检测到的可并行执行模块Mk,执行完毕后表示模块为已执 行过标识,即用PMOk代替PM&与PMEn,同时检测线程唤起信号是否到达,若唤起信号未到 达,则转到步骤(34),继续执行;若唤起信号到达,则转步骤(36);(36)、跳转到前瞻线程STi的等待标识Wait(Tjv)处继续执行,然后转步骤(37);(37)、判断前瞻线程STi是否执行完毕,若前瞻线程STi未执行完毕,则转到(32)继续 执行,否则,转到步骤(38);(38)、判断线程STi前瞻是否失效,若前瞻失效,转步骤(39);否则,转到步骤GO);(39)、对该线程重启操作,并在执行完线程STi后,转步骤00)(40)、对前瞻线程STi执行相关结果进行提交,执行结束。
全文摘要
本发明公开了一种前瞻线程的多级并行执行方法,其特征在于操作步骤如下(1)从需要执行的串行程序中提取出可并行执行的前瞻线程STi;(2)对步骤(1)所述中提取出的可并行执行的前瞻线程STi进行预处理,标记出可并行执行的模块。(3)对步骤(2)中所生成的前瞻线程STi按前瞻并行执行规则执行,直至该线程执行完;然后判断执行完的前瞻线程STi是否需要重启,若需重启,则以非前瞻线程执行此线程;否则,提交此前瞻线程。该方法能够间接的消除必需的数据同步以及数据依赖,有效避免了因线程等待和线程资源从处理器和内存的换入换出造成计算机资源浪费,充分利用计算机资源,提高了程序的执行效率。
文档编号G06F9/38GK102063291SQ201110006560
公开日2011年5月18日 申请日期2011年1月13日 优先权日2011年1月13日
发明者刘清华, 吴悦, 徐振坤, 杨旭涛, 杨洪斌, 赵文江 申请人:上海大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1