当前位置: 首页 > 专利查询>上海大学专利>正文

一种前瞻失效线程重启调度方法技术

技术编号:6424997 阅读:252 留言:0更新日期:2012-04-11 18:40
本发明专利技术要解决的技术问题是提供一种前瞻失效线程重启调度方法。本方法是根据前瞻线程所占用的资源和相互之间的关系,决定前瞻失效线程重启的执行顺序。通过检测失效的前瞻线程;计算失效线程的资源和后继线程;判断他们之间的优先执行级别;再对其进行线程重启。本发明专利技术即能够满足优先重启资源需求少的线程,又能够考虑到该线程是其他线程的前驱线程和后继线程的情况,降低前瞻失效时的线程重启代价,提高了线程重启的效率。

【技术实现步骤摘要】

本专利技术涉及计算机领域,提出了。
技术介绍
目前,高性能处理器仅仅提高处理器主频和复杂的指令流水线技术已经难以显 著提高其性能,而且这样做还会导致高功耗和散热等棘手问题,因此,单片多核处理器 (Chip Multi-Processors, CMP)技术成为提高处理器性能的关键技术之一。虽然CMP技 术对并行执行多线程有很好的效果,但现在大多数程序还都是串行程序,如何将这些串 行程序应用于CMP平台,并让其高效的运行,这些问题一直阻碍着高性能计算的发展。基于线程级前瞻(Thread-Level Speculative,TLS)的并行技术是解决这些问题的 主要途径之一。但是前瞻技术推断得出的结果并不一定总是正确的,这表示有一部分线 程必然会前瞻失效。当出现前瞻失效时,失效线程往往都是在同一时刻请求重启,但是 由于处理器个数、内存块、寄存器等多个方面的影响,需要一个好的线程调度方法才能 更好的提高线程重启的效率,因此前瞻线程重启调度方法成为串行程序并行化的关键技 术之一。
技术实现思路
本专利技术的目的在于针对已有技术存在的缺陷,提供一种前瞻失效线程重启调度 方法,提高线程重启的效率。为达到上述目的,本专利技术的构思是根据前瞻线程所占有的资源和相互间的关 系,决定前瞻失效线程重启的执行顺序。通过检测失效的前瞻线程,计算失效线程的资 源和后继线程,判断他们之间的优先执行级别,在对其进行线程重启。根据上述专利技术构思,本专利技术采用下述技术方案—种前瞻失效线程重启调度方法,其特征在于具体操作步骤如下A、检测失效的前瞻线程;B、计算每个前瞻失效的线程所占用的资源,记为M(i),i e , η为所有 失效线程总数;C、计算每个前瞻失效线程的后继线程数,记为N(i),i e , η为所有失 效线程总数;D、判断步骤B中的M(i)之和与现有的空闲资源总数M的大小,有选择的执行 线程;E、对剩余的线程继续返回到步骤D,直到所有失效的线程全部重新执行;F、线程调度执行结束。上述步骤D线程的执行顺序直接依赖于步骤B、C中的参数,操作步骤如下DU当步骤B中的M(i)之和小于现有的空闲资源总数M,就转到步骤Dll;当 步骤B中的M(i)之和大于现有的空闲资源总数M,就转到步骤D21 ;Dl 1、判断重启线程是否互为前驱后继线程,如果是,先执行前驱线程,转到步 骤Dll ;否则转到步骤D12 ;D12、比较重启线程占用资源M(i),优先执行M(i)小的线程;转到步骤F;D21、判断重启线程是否互为前驱后继线程,如果是,先执行前驱线程,转到步 骤D21 ;否则转到步骤D22 ;D22、对步骤B、C中的参数进行比较当M(i)>M(j),j e , η为所 有失效线程总数,且N(i) <N(j)时,就优先执行M(j)线程;当M(i) <M(j)且N(i) >N(j)时,就优先执行 M(i)线程;当 M(i) >M(j)且 N(i) >N(j),或者 M(i)<M(j) 且 N(i) <N(j)时,设 Ν/Μ = P,把 P 称作“执行因子”,N(i)/M(i) = P (i),P 越大,说明执行的优先级别越高。按P从大到小的顺序依次执行线程,直到空闲资源M 被利用完,转到步骤E ;本专利技术与已有技术相比较,具有如下显而易见的突出实质性特点和显著优点 本专利技术即能够满足优先重启资源需求少的线程,又能够考虑到该线程是其他线程的前驱 线程和后继线程的情况,降低前瞻失效时的线程重启带价,提高线程重启的效率。附图说明图1是本专利技术中的前瞻失效线程重启调度方法流程图。 具体实施例方式本专利技术的优选实施例结合附图详述如下实施例一本前瞻失效线程重启调度方法,具体操作步骤如下A、检测失效的前瞻线程;B、计算每个前瞻失效的线程所占用的资源,记为M(i),i e , η为所有 失效线程总数;C、计算每个前瞻失效线程的后继线程数,记为N(i),i e , η为所有失 效线程总数;D、判断步骤B中的M(i)之和与现有的空闲资源总数M的大小,有选择的执行 线程;E、对剩余的线程继续返回到步骤D,直到所有失效的线程全部重新执行;F、线程调度执行结束。实施例二本实施例与实施例一基本相同,特别之处如下所述步骤D线程的执行顺序直接依赖于步骤B、C中的参数,操作步骤如下DU当步骤B中的M(i)之和小于现有的空闲资源总数M,就转到步骤Dll ;当 步骤B中的M(i)之和大于现有的空闲资源总数M,就转到步骤D21 ;Dl 1、判断重启线程是否互为前驱后继线程,如果是,先执行前驱线程,转到步 骤Dll ;否则转到步骤D12 ;D12、比较重启线程占用资源M(i),优先执行M(i)小的线程;转到步骤F;D21、判断重启线程是否互为前驱后继线程,如果是,先执行前驱线程,转到步 骤D21 ;否则转到步骤D22 ;D22、对步骤B、C中的参数进行比较当M(i) > M(j) j e , η为所有 失效线程总数,且N(i) <N(j)时,就优先执行M(j)线程;当M(i) <M(j)且N(i) > N(j)时,就优先执行 M(i)线程;当 M(i) >M(j)且 N(i) >N(j),或者 M(i) < M(j) 且 N(i) <N(j)时,设 Ν/Μ = P,把 P 称作“执行因子”,N(i)/M(i) = P (i),P 越大,说明执行的优先级别越高。按P从大到小的顺序依次执行线程,直到空闲资源M 被利用完,转到步骤E ;实施例三本实施例所述方案的应用环境是面向多核处理器的前瞻线程并行执 行环境,本实施例不限定所述技术方案应用环境中多核处理器架构和线程调度方式。参照图1,本前瞻失效线程重启调度方法的操作步骤如下步骤A(IOl)、检测失效的前瞻线程。步骤B (102)、计算每个前瞻失效的线程所占用的资源M (i)。步骤C (103)、计算每个前瞻失效线程的后继线程数N (i)。步骤Dl (104)、判断M(i)之和是否大于现有空闲资源总数Μ。步骤Dll (105)、判断重启线程是否互为前驱后继线程。步骤Dll (106)、执行前驱线程。步骤D12(107)、比较重启线程占用资源M(i),按M (i)从小到大的顺序执行。步骤D21(108)、判断重启线程是否互为前驱后继线程。步骤D22(109)、设Ν/Μ= P,把 P 称作“执行因子”,N(i)/M(i) = P (i), P越大,说明执行的优先级别越高,按P从大到小的顺序依次执行线程,直到空闲资源 被利用完,剩余的未重启线程继续执行下一步操作。以上对本,进行了详细的介绍。本文结合说明 书附图和具体实施例进行阐述只是用于帮助理解本专利技术的方法和核心思想;同时,对于 本领域的一般技术人员,依据本专利技术的方法和思想,在具体实施方式和应用范围上均会 有改变之处,综上所述,本说明书内容不应理解为对本专利技术的限制。本文档来自技高网...

【技术保护点】
一种前瞻失效线程重启调度方法,其特征在于具体操作步骤如下:A、检测失效的前瞻线程;B、计算每个前瞻失效的线程所占用的资源,记为M(i),i∈[0,n],n为所有失效线程总数;C、计算每个前瞻失效线程的后继线程数,记为N(i),i∈[0,n],n为所有失效线程总数;D、判断步骤B中的M(i)之和与现有的空闲资源总数M的大小,有选择的执行线程;E、对剩余的线程继续返回到步骤D,直到所有失效的线程全部重新执行;F、线程调度执行结束。

【技术特征摘要】
1.一种前瞻失效线程重启调度方法,其特征在于具体操作步骤如下A、检测失效的前瞻线程;B、计算每个前瞻失效的线程所占用的资源,记为M(i),ie , η为所有失效 线程总数;C、计算每个前瞻失效线程的后继线程数,记为N(i),ie , η为所有失效线 程总数;D、判断步骤B中的M(i)之和与现有的空闲资源总数M的大小,有选择的执行线程;Ε、对剩余的线程继续返回到步骤D,直到所有失效的线程全部重新执行; F、线程调度执行结束。2.根据权利要求1所述的前瞻失效线程重启调度方法,其特征在于所述步骤D线程的 执行顺序直接依赖于步骤B、C中的参数,操作步骤如下DU当步骤B中的M(i)之和小于现有的空闲资源总数Μ,就转到步骤Dll;当步 骤B中的M(i)之和大于现有的空闲资源总数M,就转到步骤D21 ;DlU判断重启线程是否互为前驱后继线程,如果是,先执行前驱线程,转到...

【专利技术属性】
技术研发人员:赵文江杨洪斌吴悦徐振坤刘清华
申请(专利权)人:上海大学
类型:发明
国别省市:31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1