CN102063291B - 一种前瞻线程的多级并行执行方法 - Google Patents
一种前瞻线程的多级并行执行方法 Download PDFInfo
- Publication number
- CN102063291B CN102063291B CN 201110006560 CN201110006560A CN102063291B CN 102063291 B CN102063291 B CN 102063291B CN 201110006560 CN201110006560 CN 201110006560 CN 201110006560 A CN201110006560 A CN 201110006560A CN 102063291 B CN102063291 B CN 102063291B
- Authority
- CN
- China
- Prior art keywords
- thread
- parallel
- foresight
- executed
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种前瞻线程的多级并行执行方法,其特征在于操作步骤如下:(1)、从需要执行的串行程序中提取出可并行执行的前瞻线程STi;(2)、对步骤(1)所述中提取出的可并行执行的前瞻线程STi进行预处理,标记出可并行执行的模块。(3)、对步骤(2)中所生成的前瞻线程STi按前瞻并行执行规则执行,直至该线程执行完;然后判断执行完的前瞻线程STi是否需要重启,若需重启,则以非前瞻线程执行此线程;否则,提交此前瞻线程。该方法能够间接的消除必需的数据同步以及数据依赖,有效避免了因线程等待和线程资源从处理器和内存的换入换出造成计算机资源浪费,充分利用计算机资源,提高了程序的执行效率。
Description
技术领域
本发明涉及一种前瞻线程的多级并行执行方法,属于计算机技术领域。
背景技术
随着计算机技术的不断发展,单片多核处理器(Chip Multi-Processors, CMP)技术已经成为提高处理器性能的关键技术之一,被广泛的应用在各个领域。单片多核技术通过在一块芯片上集成多个相对简单的微处理器核心来并行执行,提高系统的性能,并减小处理器的功耗。利用CMP技术提高系统性能的关键是全面发挥多个微处理器核心的并行处理优势,提高程序在多核处理器上的执行效率。
线程级前瞻(Thread-Level Speculative, TLS)技术, 在不确定的情况下提前创建并猜测执行一些将来可能需要执行的线程, 通过前瞻执行和相应的前瞻错误检测机制可以去除不必要的数据同步、发现并维护真正的数据相关, 从而降低线程划分的难度,成为提高线程级并行执行的有效途。但是,利用前瞻技术提取出的线程之间依然存在着一些必要的数据同步,这在线程并行执行时就会形成线程之间的等待,影响线程并行执行的效率。因此,如何优化线程执行,避免因数据同步而形成线程等待是串行程序并行化中的关键技术之一。
发明内容
本发明的目的在于针对现有技术存在问题,是提供一种前瞻线程的多级并行执行方法,该方法能够有效地降低因数据同步而造成线程等待的几率,充分利用多核处理器的资源,提高程序的并行执行效率。
为达到上述目的,本发明的构思是:根据并行执行的前瞻线程中仍旧存在可以并行执行的模块(程序语句序列),这样就可以通过对前瞻线程进行于处理,标记出可以并行执行的模块,在并行执行的前瞻线程因数据同步需要等待时,并不进行等待,转而寻找并执行前瞻线程中其它可并行执行的模块,有效地结合前瞻并行线程的执行,提高程序的并行执行效率。
根据上述的发明构思,本发明采用下述技术方案:
一种前瞻线程的多级并行执行方法,其特征在于,具体操作步骤如下:
(1)、从需要执行的串行程序中提取出可并行执行的前瞻线程STi;
(2)、对步骤(1)所述中提取出的可并行执行的前瞻线程STi进行预处理,标记出可并行执行的模块。
(3)、对步骤(2)中所生成的前瞻线程STi按前瞻并行执行规则执行,直至该线程执行完;然后判断执行完的前瞻线程STi是否需要重启,若需重启,则以非前瞻线程执行此线程;否则,提交此前瞻线程。
上述步骤(2)中所述的对步骤(1)中提取出的可并行执行的前瞻线程STi进行预处理,标记出可并行执行的模块,其具体步骤如下:
(21)、检测前瞻线程STi,从前瞻线程STi中检测出可并行执行的模块M1,M2,…,Mn;
(22)、在步骤(21)中检测出的每个并行模块Mk 的前后分别插入并行模块开始标识PMSn和并行模块结束标识PMEn;
上述步骤(2)中所述的前瞻线程中的可并行的模块是指,存在于前瞻线程中的可单独执行,并且不影响其它语句执行的若干语句序列或者若干个程序语句组成的模块。
上述步骤(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执行相关结果进行提交,执行结束。
本发明的一种前瞻线程的多级并行执行方法与已有技术相比较,具有如下显而易见的突出实质性特点和显著优点:该方法能够间接的消除必需的数据同步以及数据依赖,有效避免了因线程等待和线程资源从处理器和内存的换入换出造成计算机资源浪费,充分利用计算机资源,提高了程序的执行效率。
附图说明
图1是本发明的一种前瞻线程的多级并行执行方法的流程图;
图2是图1中步骤(3)的流程图。
具体实施方式
下面结合说明书附图和具体实施方式对本发明作进一步详细的说明。
本实施例所述方案的应用环境是面向多核处理器的并行前瞻线程级执行环境,本实施例不限定所述技术方案应用环境中多核处理器架构。
参照图1,本发明的一种前瞻线程的多级并行执行方法,其具体操作步骤如下:
步骤101、利用线程级前瞻技术从需要执行的串行程序中提取出可并行执行的线程STi。
步骤102、对提取可并行执行的各个前瞻线程进行预处理,标记出可并行执行的模块,其具体步骤如下:
步骤1021、检测前瞻线程STi,从前瞻线程STi中检测出可并行执行的模块M1,M2,…,Mn;
步骤1022、在步骤1021中检测出的每个并行模块Mk 的前后分别插入并行模块开始标识PMSn和并行模块结束标识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进入等待状态,等待线程STj发起唤起信号标识Awake(Tiv)后,转步骤1036;
步骤1035、执行上述步骤1033中检测到的可并行执行模块Mk,执行完毕后表示模块为已执行过标识,即用PMOk代替PMSn与PMEn,同时检测线程唤起信号是否到达,若唤起信号未到达,则转到步骤1034,继续执行;若唤起信号到达,则转步骤1036;
步骤1036、跳转到前瞻线程STi的等待标识Wait(Tjv)处继续执行,然后转步骤1037;
步骤1037、判断前瞻线程STi是否执行完毕,若前瞻线程STi未执行完毕,则转到(1032)继续执行;否则,转到步骤(1038);
步骤1038、判断线程STi前瞻是否失效,若前瞻失效,转步骤(1039);否则,转到步骤(1040);
步骤1039、对该线程重启操作,并在执行完线程STi后,转步骤1040。
步骤1040、对前瞻线程STi执行相关结果进行提交,执行结束。
以上对本一种前瞻线的多级并行执行方法,进行了详细的介绍。本文结合说明书附图和具体实施例进行阐述只是用于帮助理解本发明的方法和核心思想;同时,对于本领域的一般技术人员,依据本发明的方法和思想,在具体实施方式和应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (3)
1.一种前瞻线程的多级并行执行方法,其特征在于操作步骤如下:
(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执行相关结果进行提交,执行结束。
2.根据权利要求1所述的一种前瞻线程的多级并行执行方法,其特征在于,上述步骤(2)中所述的对步骤(1)中提取出的可并行执行的前瞻线程STi进行预处理,标记出可并行执行的模块,其具体步骤如下:
(21)、检测前瞻线程STi,从前瞻线程STi中检测出可并行执行的模块M1,M2,…,Mn;
(22)、在步骤21中检测出的每个并行模块Mk 的前后分别插入并行模块开始标识PMSn和并行模块结束标识PMEn。
3.根据权利要求1所述的一种前瞻线程的多级并行执行方法,其特征在于,上述步骤(2)中所述的前瞻线程中的可并行的模块是指,存在于前瞻线程中的可单独执行,并且不影响其它语句执行的若干语句序列或者若干个程序语句组成的模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110006560 CN102063291B (zh) | 2011-01-13 | 2011-01-13 | 一种前瞻线程的多级并行执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110006560 CN102063291B (zh) | 2011-01-13 | 2011-01-13 | 一种前瞻线程的多级并行执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102063291A CN102063291A (zh) | 2011-05-18 |
CN102063291B true CN102063291B (zh) | 2013-08-28 |
Family
ID=43998582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110006560 Expired - Fee Related CN102063291B (zh) | 2011-01-13 | 2011-01-13 | 一种前瞻线程的多级并行执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102063291B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102520915B (zh) * | 2011-11-25 | 2014-04-02 | 华为技术有限公司 | 非统一内存访问系统中线程化串行程序的方法及装置 |
CN102968295A (zh) * | 2012-11-28 | 2013-03-13 | 上海大学 | 基于加权控制流图的前瞻线程划分方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807144A (zh) * | 2010-03-17 | 2010-08-18 | 上海大学 | 一种前瞻多线程并行执行优化方法 |
CN101814019A (zh) * | 2010-03-25 | 2010-08-25 | 上海大学 | 一种前瞻失效的线程识别方法 |
CN101833440A (zh) * | 2010-04-30 | 2010-09-15 | 西安交通大学 | 编译器支持下的推测多线程内存数据同步执行方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2469822B (en) * | 2009-04-28 | 2011-04-20 | Imagination Tech Ltd | Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor |
-
2011
- 2011-01-13 CN CN 201110006560 patent/CN102063291B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807144A (zh) * | 2010-03-17 | 2010-08-18 | 上海大学 | 一种前瞻多线程并行执行优化方法 |
CN101814019A (zh) * | 2010-03-25 | 2010-08-25 | 上海大学 | 一种前瞻失效的线程识别方法 |
CN101833440A (zh) * | 2010-04-30 | 2010-09-15 | 西安交通大学 | 编译器支持下的推测多线程内存数据同步执行方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102063291A (zh) | 2011-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101807144B (zh) | 一种前瞻多线程并行执行优化方法 | |
CN109919310B (zh) | 一种面向深度学习训练任务的gpu内存优化方法及系统 | |
US8954775B2 (en) | Power gating functional units of a processor | |
CN103810035B (zh) | 智能上下文管理 | |
CN101593096B (zh) | 一种共享寄存器相关性消除的实现方法 | |
CN103034538B (zh) | 一种嵌入式操作系统中驱动程序的多级缓存处理方法 | |
US9740498B2 (en) | Opportunistic multi-thread method and processor | |
CN102063291B (zh) | 一种前瞻线程的多级并行执行方法 | |
CN101655783B (zh) | 前瞻多线程划分方法 | |
CN103761499B (zh) | 基于多核dsp的条码识别方法 | |
US11269693B2 (en) | Method, apparatus, and electronic device for improving CPU performance | |
WO2014004736A4 (en) | A method or apparatus to perform footprint-based optimization simultaneously with other steps | |
CN110083445B (zh) | 一种基于弱内存一致性的多线程确定性执行方法 | |
CN101482831A (zh) | 多线程计算机系统中对共存线程相伴调度的方法和设备 | |
CN101814019B (zh) | 一种前瞻失效的线程识别方法 | |
CN101520724B (zh) | 重启优化的前瞻线程颗粒及其重启优化方法 | |
CN114296886A (zh) | 一种基于范围行锁的并行执行方法及设备 | |
CN102012841B (zh) | 一种前瞻失效线程重启调度方法 | |
Pericas et al. | A two-level load/store queue based on execution locality | |
CN114297291B (zh) | 一种基于事务合并的并行执行方法及设备 | |
Dufresne Camaro et al. | Appearance shock grammar for fast medial axis extraction from real images | |
CN101526894A (zh) | 控制前瞻线程颗粒重启优化的结构 | |
CN102662629B (zh) | 一种减少处理器寄存器文件的写端口数目的方法 | |
CN202711237U (zh) | 机会多线程处理器 | |
CN118715506A (zh) | Smt核心控制器、编译器和在smt核心控制器上执行编译后的运行时代码的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130828 Termination date: 20160113 |