CN102012844B - 一种面向cmp系统的线程调度方法 - Google Patents
一种面向cmp系统的线程调度方法 Download PDFInfo
- Publication number
- CN102012844B CN102012844B CN 201010562935 CN201010562935A CN102012844B CN 102012844 B CN102012844 B CN 102012844B CN 201010562935 CN201010562935 CN 201010562935 CN 201010562935 A CN201010562935 A CN 201010562935A CN 102012844 B CN102012844 B CN 102012844B
- Authority
- CN
- China
- Prior art keywords
- thread
- node
- ready
- acyclic graph
- directed acyclic
- 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
- Devices For Executing Special Programs (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种面向CMP系统的线程调度方法,首先用有向无环图来表示并行程序划分后的线程,然后创建就绪线程列表,分析线程前驱后继关系,降低线程间的依赖关系,利用有向无环图和就绪线程列表把线程分配到CMP中的各个核上,实现并行执行,其具体步骤如下:(1)设计有向无环图,用有向无环图表示并行程序划分后的线程之间的依赖关系;(2)创建一个就绪线程列表,用来存储运行状态为就绪态的线程;(3)处理器核对线程调度。该方法对调度时间影响较大的线程能够相对地被优先调度,从而降低程序运行时间,更有效地发挥CMP的优势,提高CMP系统的效率。
Description
技术领域
本发明涉及一种面向CMP系统的线程调度方法,属于计算机技术领域。
背景技术
为了提升单处理器性能,在一个芯片上集成多个微处理器核心的单片多核处理器(Chip Multi-Processor, CMP)成为微体系结构发展的趋势。CMP利用多个处理器核心实现了多个线程在不同的处理器内核上的并行执行,从而缩短程序调度时间,提高处理器的性能。
利用CMP技术提高系统性能的关键是充分发挥多个微处理器核心的并行优势,因此需要有一个好的线程调度机制。然而,在多核处理器系统中,针对多核处理器平台的线程调度机制尚未成熟,传统的调度机制只是把线程依次调度,直接把线程依次调度应用到多核处理器平台,不能充分发挥多核处理器的优势,因此多核处理器系统的线程调度技术已成为目前研究的重要问题。
发明内容
为解决上述现有技术存在的问题,本发明的目的是提供一种面向CMP系统的线程调度方法,该调度方法能降低程序运行时间,提高调度效率,从而提高程序整体的执行速度,充分发挥CMP的优势。
为达到上述目的,本发明的构思是:首先用有向无环图来表示并行程序划分后的线程,然后创建就绪线程列表,分析线程前驱后继关系,降低线程间的依赖关系,利用有向无环图和就绪线程列表把线程分配到CMP中的各个核上,实现并行执行。
根据上述的发明构思,本发明采用下述技术方案:
一种面向CMP系统的线程调度方法,其具体操作步骤如下:
(1)、设计有向无环图,用有向无环图表示并行程序划分后的线程之间的依赖关系;
(2)、创建一个就绪线程列表,用来存储运行状态为就绪态的线程;
(3)、处理器核对线程调度。
上述步骤(1)中所述的设计有向无环图如下:有向无环图采用五维数组表示,其表达式为:
G={V, E, R, C, S };
其中,V表示为有向无环图中顶点v集合,其表达式为:V={v1,v2,…,vi,…};
E表示为有向无环图中有向边e的集合,任意一条边表示为eij, 其中i≠j,若<vi, vj>∈eij,表示在线程Ti完成之后,Tj才能执行,即,Ti为Tj的一个前驱节点,Tj为Ti的一个后继节点,在有向无环图中没有前驱节点的节点为入口节点,没有后继节点的节点为出口节点;
R表示线程运行时间的集合,R(Ti)表示线程Ti的运行时间;
Cij表示线程Ti和Tj之间的通信开销,即,线程Ti传递数据给线程Tj所需的时间,线程Ti、Tj在同一个核上执行时,Cij=0;
S表示当前线程Ti的运行状态,当前线程运行状态为就绪态或非就绪态。
上述步骤(3)中所述的处理器核对线程的调度,具体步骤如下:
(3-1)、根据上述步骤(1)中所述的有向无环图,找出线程入口节点,调度该入口节点,若有多于一个入口节点的节点,则将多于一个以上的入口节点的节点分别调度到处理器的多个核上运行;
(3-2)、判断当前线程节点是否有后继节点,若当前线程节点有后继节点,则转步骤(3-3),若当前线程节点没有后继线程节点,则当前线程节点为出口线程节点,转步骤(3-8);
(3-3)、判断当前线程节点的直接后继线程中是否存在前驱后继关系,若存在前驱后继关系,则转到步骤(3-4);若不存在前驱后继关系,则转到步骤(3-5);
(3-4)、把当前线程节点的所有后继节点都加入就绪线程列表,转到步骤(3-6);
(3-5)、只把其中的前驱节点置为就绪态,并加入就绪线程列表中,转到步骤(3-6);
(3-6)、空闲的处理器核根据线程的执行时间R的大小依次调度就绪线程列表中的线程,线程间的通信开销Cij较大时,线程Ti和Tj尽可能调度在同一个核上运行,以降低核间的通信开销;
(3-7)、判断当前线程节点是否为出口节点,若当前线程节点不是出口节点,则返回步骤(3-2);若当前节点是出口节点,则转步骤(3-8);
(3-8)、线程调度结束。
本发明的一种面向CMP系统的线程调度方法与已有技术相比较具有如下显而易见的突出特点和显著优点:该方法首先用有向无环图来表示并行程序划分后的线程,降低线程间的依赖关系,然后创建就绪线程列表,分析线程前驱后继关系,利用有向无环图和就绪线程列表把线程分配到CMP中的各个核上,实现并行执行,对调度时间影响较大的线程能够相对地被优先调度,从而降低了程序运行时间,更有效地发挥了CMP的优势,提高了CMP系统的效率。
附图说明
图1是本发明的一种面向CMP系统的线程调度方法总流程图;
图2是图1中步骤3所述的处理器核对线程调度的流程图。
具体实施方式
下面结合说明书附图和具体实施例对本发明作进一步详细的说明。本实施例所述方案的应用环境是面向单片多核处理器的并行执行环境。参照图1、图2,本发明一种面向CMP系统的线程调度方法,其具体步骤如下:
步骤101、设计有向无环图,用有向无环图来表示程序划分后的线程之间的依赖关系,有向无环图采用五维数组表示,其表达式为:
G={V, E, R, C, S };
其中,V表示为有向无环图中顶点v集合,其表达式为:V={v1,v2,…,vi,…};
E表示为有向无环图中有向边e的集合,任意一条边表示为eij, 其中i≠j,若<vi, vj>∈eij,表示在线程Ti完成之后,Tj才能执行,即Ti为Tj的一个前驱节点,Tj为Ti的一个后继节点,在有向无环图中没有前驱节点的节点为入口节点,没有后继节点的节点为出口节点;
R表示线程运行时间的集合,R(Ti)表示线程Ti的运行时间;
Cij表示线程Ti和Tj之间的通信开销,即,线程Ti传递数据给线程Tj所需的时间,线程Ti、Tj在同一个核上执行时,Cij=0;
S表示当前线程Ti的运行状态,运行状态有就绪态和非就绪态;
步骤102、创建一个就绪线程列表,用来存储运行状态为就绪的线程;
步骤103、处理器核对线程的调度,其具体步骤如下:
步骤103-1、根据上述步骤101中所述的有向无环图,找出线程入口节点,调度该入口节点,若有多于一个入口节点的节点,则将多于一个以上的入口节点的节点分别调度到处理器的多个核上运行;
步骤103-2、判断当前线程节点是否有后继节点,若当前线程节点有后继节点,则转步骤103-3,若当前线程节点没有后继线程节点,则当前线程节点为出口节点,转步骤103-8;
步骤103-3、判断当前线程节点的直接后继线程中是否存在前驱后继关系,若不存在前驱后继关系,则转到步骤103-4;若存在前驱后继关系,则转到步骤103-5;
步骤103-4、把当前线程节点的所有后继节点都加入就绪线程列表,转到步骤103-6;
步骤103-5、只把其中的前驱节点置为就绪态,并加入就绪线程列表中,转到步骤103-6;
步骤103-6、空闲的处理器核根据线程的执行时间R的大小依次调度就绪线程列表中的线程,线程间的通信开销Cij较大时,线程Ti和Tj尽可能调度到同一个核上运行,以降低核间的通信开销;
步骤103-7、判断当前线程节点是否为出口节点,若当前线程节点不是出口节点,则转到步骤103-2;若当前节点是出口节点,则转到步骤103-8;
步骤103-8、线程调度结束。
以上对本发明的一种面向CMP系统的线程调度方法进行了详细的介绍,只是用于帮助理解本发明的方法和核心思想;同时,对于本领域的一般技术人员,依据本发明的方法和思想,在具体实施方式和应用范围上均会有所改变,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (1)
1.一种面向CMP系统的线程调度方法,其特征在于,首先用有向无环图来表示并行程序划分后的线程,然后创建就绪线程列表,分析线程前驱后继关系,降低线程间的依赖关系,利用有向无环图和就绪线程列表把线程分配到CMP中的各个核上,实现并行执行,其具体步骤如下:
(1)、设计有向无环图,用有向无环图表示并行程序划分后的线程之间的依赖关系,具体方法如下:有向无环图采用五维数组表示,其表达式为:G={V, E, R, C, S };其中,V表示为有向无环图中顶点v集合,其表达式为:V={v1,v2,…,vi,…};E表示为有向无环图中有向边e的集合,任意一条边表示为eij, 其中i≠j,若<vi, vj>∈eij,表示在线程Ti完成之后,Tj才能执行,即,Ti为Tj的一个前驱节点,Tj为Ti的一个后继节点,在有向无环图中没有前驱节点的节点为入口节点,没有后继节点的节点为出口节点;R表示线程运行时间的集合,R(Ti)表示线程Ti的运行时间;Cij表示线程Ti和Tj之间的通信开销,即,线程Ti传递数据给线程Tj所需的时间,线程Ti、Tj在同一个核上执行时,Cij=0;S表示当前线程Ti的运行状态,当前线程运行状态为就绪态或非就绪态;
(2)、创建一个就绪线程列表,用来存储运行状态为就绪态的线程;
(3)、处理器核对线程调度,具体步骤如下:
(3-1)、根据上述步骤(1)中所述的有向无环图,找出线程入口节点,调度该入口节点,若有多于一个入口节点的节点,则将多于一个以上的入口节点的节点分别调度到处理器的多个核上运行;
(3-2)、判断当前线程节点是否有后继节点,若当前线程节点有后继节点,则转步骤(3-3),若当前线程节点没有后继线程节点,则当前线程节点为出口线程节点,转步骤(3-8);
(3-3)、判断当前线程节点的直接后继线程中是否存在前驱后继关系,若存在前驱后继关系,则转到步骤(3-4);若不存在前驱后继关系,则转到步骤(3-5);
(3-4)、把当前线程节点的所有后继节点都加入就绪线程列表,转到步骤(3-6);
(3-5)、只把其中的前驱节点置为就绪态,并加入就绪线程列表中,转到步骤(3-6);
(3-6)、空闲的处理器核根据线程的执行时间R的大小依次调度就绪线程列表中的线程,线程间的通信开销Cij较大时,线程Ti和Tj尽可能调度在同一个核上运行,以降低核间的通信开销;
(3-7)、判断当前线程节点是否为出口节点,若当前线程节点不是出口节点,则返回步骤(3-2);若当前节点是出口节点,则转到步骤(3-8);
(3-8)、线程调度结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010562935 CN102012844B (zh) | 2010-11-29 | 2010-11-29 | 一种面向cmp系统的线程调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010562935 CN102012844B (zh) | 2010-11-29 | 2010-11-29 | 一种面向cmp系统的线程调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102012844A CN102012844A (zh) | 2011-04-13 |
CN102012844B true CN102012844B (zh) | 2013-01-09 |
Family
ID=43843020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010562935 Expired - Fee Related CN102012844B (zh) | 2010-11-29 | 2010-11-29 | 一种面向cmp系统的线程调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102012844B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912394A (zh) * | 2016-04-25 | 2016-08-31 | 深圳市万普拉斯科技有限公司 | 线程处理方法和系统 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103235742B (zh) * | 2013-04-07 | 2016-08-17 | 山东大学 | 多核集群服务器上基于依赖度的并行任务分组调度方法 |
CN106339252B (zh) * | 2015-07-08 | 2020-06-23 | 阿里巴巴集团控股有限公司 | 分布式dag系统的自适应优化方法和装置 |
CN109814986B (zh) * | 2017-11-20 | 2021-01-05 | 上海寒武纪信息科技有限公司 | 任务并行处理方法、存储介质、计算机设备、装置和系统 |
KR102569086B1 (ko) | 2017-11-20 | 2023-08-22 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 태스크 병렬 처리 방법, 장치, 시스템, 기억 매체 및 컴퓨터 기기 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005096143A1 (en) * | 2004-03-31 | 2005-10-13 | Coware, Inc. | Resource management in a multicore architecture |
CN101655783A (zh) * | 2009-05-08 | 2010-02-24 | 上海大学 | 前瞻多线程划分方法 |
CN101807144A (zh) * | 2010-03-17 | 2010-08-18 | 上海大学 | 一种前瞻多线程并行执行优化方法 |
CN101887367A (zh) * | 2010-06-22 | 2010-11-17 | 天津大学 | 一种多级并行化编程方法 |
-
2010
- 2010-11-29 CN CN 201010562935 patent/CN102012844B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005096143A1 (en) * | 2004-03-31 | 2005-10-13 | Coware, Inc. | Resource management in a multicore architecture |
CN101655783A (zh) * | 2009-05-08 | 2010-02-24 | 上海大学 | 前瞻多线程划分方法 |
CN101807144A (zh) * | 2010-03-17 | 2010-08-18 | 上海大学 | 一种前瞻多线程并行执行优化方法 |
CN101887367A (zh) * | 2010-06-22 | 2010-11-17 | 天津大学 | 一种多级并行化编程方法 |
Non-Patent Citations (1)
Title |
---|
杨洪斌,陈伟,吴悦.基于粒子群算法的多核处理器线程调度研究.《计算机工程与设计》.2010,全文. * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912394A (zh) * | 2016-04-25 | 2016-08-31 | 深圳市万普拉斯科技有限公司 | 线程处理方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102012844A (zh) | 2011-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102012844B (zh) | 一种面向cmp系统的线程调度方法 | |
CN102193826B (zh) | 一种异构多核处理器高效任务调度方法 | |
CN102360309B (zh) | 片上多核异构系统的调度系统与调度执行方法 | |
US20130283286A1 (en) | Apparatus and method for resource allocation in clustered computing environment | |
CN101923491A (zh) | 多核环境下线程组地址空间调度和切换线程的方法 | |
US10078357B2 (en) | Power gating functional units of a processor | |
US20120166731A1 (en) | Computing platform power management with adaptive cache flush | |
CN102193779A (zh) | 一种面向MPSoC的多线程调度方法 | |
CN103034614A (zh) | 基于关键路径和任务复制的单任务多核调度方法 | |
CN104899089A (zh) | 一种面向异构多核体系的任务调度方法 | |
CN101051280A (zh) | 智能卡嵌入式操作系统及其控制方法 | |
CN104598426A (zh) | 用于异构多核处理器系统的任务调度方法 | |
CN101299194A (zh) | 基于可配置处理器的异构多核系统线程级动态调度方法 | |
CN106575220B (zh) | 多个经集群极长指令字处理核心 | |
CN102147755A (zh) | 一种基于内存缓存技术的多核系统容错方法 | |
US9612867B2 (en) | Apparatus and method for data partition and allocation in heterogeneous multi-processor environment | |
CN104239134A (zh) | 一种众核系统的任务管理方法和装置 | |
CN105808346A (zh) | 一种任务调度方法与装置 | |
CN103488504A (zh) | 一种数据加载方法及装置 | |
CN101976204B (zh) | 面向服务的异构多核计算平台及其使用的任务调度方法 | |
CN1737764A (zh) | 支持osek标准的嵌入式实时操作系统的任务调度方法 | |
CN101794239A (zh) | 一种基于数据流模型的多处理器任务调度管理方法 | |
CN114661460A (zh) | 面向异构众核处理器的ai框架两级并行加速方法 | |
CN103543989A (zh) | 一种面向大数据的针对可变长度特征提取的自适应并行处理方法 | |
Vaidya et al. | Dynamic scheduler for multi-core systems |
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: 20130109 Termination date: 20151129 |