发明名称 一种前瞻线程的多级并行执行方法
摘要 本发明公开了一种前瞻线程的多级并行执行方法,其特征在于操作步骤如下:(1)、从需要执行的串行程序中提取出可并行执行的前瞻线程STi;(2)、对步骤(1)所述中提取出的可并行执行的前瞻线程STi进行预处理,标记出可并行执行的模块。(3)、对步骤(2)中所生成的前瞻线程STi按前瞻并行执行规则执行,直至该线程执行完;然后判断执行完的前瞻线程STi是否需要重启,若需重启,则以非前瞻线程执行此线程;否则,提交此前瞻线程。该方法能够间接的消除必需的数据同步以及数据依赖,有效避免了因线程等待和线程资源从处理器和内存的换入换出造成计算机资源浪费,充分利用计算机资源,提高了程序的执行效率。
申请公布号 CN102063291B 申请公布日期 2013.08.28
申请号 CN201110006560.4 申请日期 2011.01.13
申请人 上海大学 发明人 杨洪斌;徐振坤;吴悦;赵文江;刘清华;杨旭涛
分类号 G06F9/38(2006.01)I 主分类号 G06F9/38(2006.01)I
代理机构 上海上大专利事务所(普通合伙) 31205 代理人 陆聪明
主权项 一种前瞻线程的多级并行执行方法,其特征在于操作步骤如下:(1)、从需要执行的串行程序中提取出可并行执行的前瞻线程STi;(2)、对步骤(1)中提取出的可并行执行的前瞻线程STi进行预处理,标记出可并行执行的模块;(3)、对步骤(2)中所生成的前瞻线程STi按前瞻并行执行规则执行,直至该线程执行完;然后判断执行完的前瞻线程STi是否需要重启,若需重启,则以非前瞻线程执行此线程;否则,提交此前瞻线程,具体步骤如下:(31)、根据顺序语义靠前的前瞻线程先调度的原则,从候选等待调度的前瞻线程中选择前瞻线程STi到空闲的核上;(32)、执行前瞻线程STi并检测是否有需要线程同步的信号量出现,若出现线程同步的信号量,则转到步骤(33);否则,转至步骤(37);(33)、对步骤(32)中正在执行的前瞻线程STi的当前语句添加等待执行标识Wait(Tjv),对需要同步的线程STj添加唤起标识Awake(Tiv),标识后转步骤 (34);(34)、检测步骤(33)中的线程STi是否存在未执行过的可并行执行的模块,若检测到线程存在可并行执行的模块Mk,则执行步骤(35),否则此线程STi进入等待状态,等待线程STj发起唤起信号标识Awake(Tiv)后,转步骤(36);(35)、执行上述步骤(34)中检测到的可并行执行模块Mk,执行完毕后表示模块为已执行过标识,即用PMOk代替PMSn与PMEn,同时检测线程唤起信号是否到达,若唤起信号未到达,则转到步骤(34),继续执行;若唤起信号到达,则转步骤(36);(36)、跳转到前瞻线程STi的等待标识Wait(Tjv)处继续执行,然后转步骤(37); (37)、判断前瞻线程STi是否执行完毕,若前瞻线程STi未执行完毕,则转到(32)继续执行,否则,转到步骤(38);(38)、判断线程STi前瞻是否失效,若前瞻失效,转步骤(39);否则,转到步骤(40);(39)、对该线程重启操作,并在执行完线程STi后,转步骤(40)(40)、对前瞻线程STi执行相关结果进行提交,执行结束。
地址 200444 上海市宝山区上大路99号