CN101299194B - 基于可配置处理器的异构多核***线程级动态调度方法 - Google Patents

基于可配置处理器的异构多核***线程级动态调度方法 Download PDF

Info

Publication number
CN101299194B
CN101299194B CN200810039566XA CN200810039566A CN101299194B CN 101299194 B CN101299194 B CN 101299194B CN 200810039566X A CN200810039566X A CN 200810039566XA CN 200810039566 A CN200810039566 A CN 200810039566A CN 101299194 B CN101299194 B CN 101299194B
Authority
CN
China
Prior art keywords
thread
steps
instruction set
core
isa
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
Application number
CN200810039566XA
Other languages
English (en)
Other versions
CN101299194A (zh
Inventor
付宇卓
刘婷
陈劭
胡泊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN200810039566XA priority Critical patent/CN101299194B/zh
Publication of CN101299194A publication Critical patent/CN101299194A/zh
Application granted granted Critical
Publication of CN101299194B publication Critical patent/CN101299194B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

一种基于可配置处理器的异构多核***线程级动态调度方法,步骤为:第一步,所使用的异构多核结构由一组可配置处理核组成,每个处理核都具有一组公共指令集,每个核都具有一个指令集配置core_isa,表示此核能运行哪些指令集;第二步,应用程序被划分为多个线程,每个线程之间仅存在数据依赖,每个线程具有一个期望指令集属性thread_isa,表示该线程使用了此指令集中的指令集;第三步,操作***与运行在其上的应用一同编译为二进制可执行文件,所有处理器核共享同一个操作***数据区;第四步,在上述步骤完成后,进行线程级动态调度。本发明解决静态调度分配效率不高的缺点,可以减少学习时间,简化编程模型。

Description

基于可配置处理器的异构多核***线程级动态调度方法
技术领域
本发明涉及一种计算机技术领域的方法,尤其涉及一种基于可配置处理器的异构多核***线程级动态调度方法。
背景技术
现有的任务调度模型大致可以分为静态调度和动态调度两类,静态调度是指程序在编译时已经确定了调度规则,运行时操作***或控制程序只需根据调度规则将并发任务指派给对应的处理核心即可;而动态任务调度与之相反,程序在编译时没有确定调度规则,运行时操作***或控制程序根据当前***的工作状态,将并发任务指派给某一适合的处理核心,因此只有运行时才能确定任务在各个核上的执行序列。
实际上,有些异构结构本质上就不能实现动态调度。动态调度可行与否取决于异构多核处理器指令集的设计。现有的异构多核处理器指令集设计思路大致可以分为以下三类:(1)指令集完全不同。在此类设计中,选择不同功能导向的处理核心组成一个异构多核体系,其上的每一种处理核心针对某一类处理都具有较强的功能,因此每个处理核心在指令集设计方面都存在巨大差异。不过由于指令集完全不同,只能通过静态调度的方式完成任务指派。(2)指令集完全相同。在此类设计中,选取具有相同指令集但是硬件配置上有所不同的处理核心,组成异构多核***。这类设计由于性能提高不多,因此商业化程度较低。(3)指令集部分相同。此类设计是随着可配置处理器技术发展而出现的,它可以针对应用扩展指令集以增强处理能力。在此类设计中,处理核心是一组可配置处理器,所有的处理核心具有一个公共的指令集,每个核心又可以根据应用增加一些扩展指令,从而使该核心针对应用某一方面有较好的处理能力。
经对现有技术文献检索发现,Seng Lin Shee等在2008年二月的《International Journal of Parallel Programming》Vol.36,No.1(140~162页)上发表的《Architectural Exploration of Heterogeneous MultiprocessorSystems for JPEG》一文中,针对其提出的两种由可配置处理器组成的异构多核结构,采用了静态调度的方法。具体为:以JPEG编码程序为例,在两种异构多核结构中使用了静态调度的方法。一种是主从式结构,一个主核加上几个辅核,主核负责其他辅核数据的分发、输入/输出操作以及霍夫曼编码,JPEG编码过程中的剩余任务通过并行化,并发的在所有辅核上执行。另一种是流水结构,几个处理核组成流水线,每一个核处理的当前数据依赖于流水线上前一个核上一次的处理结果。作者将JPEG编码过程划分为几个顺序执行流水任务,然后按照任务的执行顺序依次指派给流水线的处理核执行,第一个核处理初始任务,第二个核处理第二个任务,依此类推。该方法不足在于:(1)必须认真分析任务之间复杂的流水关系,然后静态指派任务到合适的处理核上,这要求程序员具有较高的素质和经验,否则一旦任务指派不当,程序执行时间就会增加。而***实际运行时的信息很难准确掌握。(2)静态调度不够灵活,在解决问题内在逻辑的同时,还要考虑问题任务在各个处理核上的执行顺序,增加了编程时的复杂度。
发明内容
本发明的目的在于解决现有技术的不足,提供一种基于可配置处理器的异构多核***线程级动态调度方法,针对使用第三种指令集设计的异构多核***,该方法可以使得在由可配置处理器组成的异构多核***中,调度器根据***实际的运行情况,动态调度满足该方法的线程至空闲处理核上运行,从而解决静态调度分配效率不高的缺点。此外,由于方法中采用线程作为任务的描述,可以减少学习时间,简化编程模型。
本发明是通过以下技术方案实现的,本发明包括以下步骤:
第一步,选择异构多核结构
本发明所使用的异构多核结构由一组可配置处理核组成,每个处理核都具有一组公共指令集,此外每个核可根据应用的需求增加扩展指令集以优化处理核性能,因此每个核都具有一个指令集配置core_isa,表示此核可以运行哪些指令集。
第二步,划分线程
应用程序被划分为多个线程,每个线程之间仅存在数据依赖,而不存在内部的控制关系。每个线程具有一个期望指令集属性thread_isa,表示该线程使用的此指令集中的指令集。
第三步,操作***的工作机制的设置
操作***与运行在其上的应用一同编译为二进制可执行文件,所有处理器核共享同一个操作***数据区。操作***初始化时,首先初始化***区,然后才进入正常工作状态。正常工作状态下,每个处理核心通过调度器得到合适的线程以运行。
第四步,在上述三个步骤完成之后,进行线程级动态调度,具体调度步骤如下:
步骤d1:调度器在某一个处理核上启动,执行步骤d2;
步骤d2:调度器获得当前处理核的指令集配置core_isa;
步骤d3:获得线程就绪队列中第一个就绪线程的句柄,得到该线程的期望指令集属性thread_isa;
步骤d4:检查core_isa是否满足thread_isa的运行要求,如果满足调度器停止查找,执行步骤d7,如果不满足执行步骤d5;
步骤d5:检查是否还有未遍历的就绪线程,如果有执行步骤d6,如果无执行步骤d8;
步骤d6:获得下一个就绪线程的句柄,得到该线程的期望指令集属性thread_isa,然后执行步骤d4;
步骤d7:切换***上下文,执行选出的合适线程,到步骤d9;
步骤d8:***睡眠,然后重新执行步骤d1;
步骤d9:调度结束。
所述的调度器是在现有的成熟的软件线程调度器上进行的改进,现有调度器可以在同构多核***中正确的动态调度线程,本发明通过对其进行改进,使其实现上述的功能,从而达到本发明的目的。
以Motion-JPEG编码应用为例,本发明可以有效平衡芯片面积和执行速度之间的矛盾,能够获得较优的性价比指标。MJPEG(Motion JPEG)是在JPEG基础发展起来的动态图像压缩技术,它只对视频流中每一帧进行JPEG压缩,基本不考虑视频流中不同帧之间的变化,因此与背景技术所使用样例程序在技术实现和复杂度上相同。
与背景技术相比,最高性价比指标方面,是主从式结构静态调度的2.57倍,是流水式结构静态调度的1.56倍;如果以相同核数的加速比作比较,3核时,本发明比主从式结构静态调度加速比提高了111.25%,而流水式结构中作者给出的最少核数为5核。由此可见,本发明在提高执行性能上具有明显的优势。
此外,本发明可以使程序员从分配任务的工作中解放出来,从而减少了编程时的复杂度和学习时间。
附图说明
错误!未找到引用源。是处理核心、线程和指令集集合之间的映射关系示意图
错误!未找到引用源。是调度方法流程图
具体实施方式
下面结合附图对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
下面以使用3个处理核组成的异构多核***为例说明本发明的具体实施方式。
a)选择异构多核结构
每个核都具有一个硬件编号,最小编号为0,依次递增。三核分别记为core0,core 1,core2,每个处理核都具有一组公共指令集,记为ISA1,将core 1扩展一组指令集,记为ISA2,将core 2扩展一组指令集,记为ISA3。建立一个二维数组,第一维记录处理核编号,第二维记录每个处理核能够运行的指令集core_isa,例如core 0可以运行ISA1,core 1可以运行ISA1和ISA2。每个处理核只能有一个core_isa。
b)划分线程
将应用程序划分为多个线程,每个线程之间仅存在数据依赖,而不存在内部的控制关系。扩展POSIX线程标准,为每个线程添加一个thread_isa属性,用来记录该线程使用了的指令集,创建线程时设置该属性。例如线程1代码中只用了ISA1中指令,故thread_isa为ISA1,而线程2代码中使用了ISA2中指令,故thread_isa为ISA2。
c)操作***的工作机制的设置
所有处理器核共享同一个操作***数据区。操作***初始化时,首先由编号为0的处理核初始化***区,此时其他核处于等待状态,当***区初始化完成,***进入正常工作状态。正常工作状态下,每个处理核心通过调度器得到合适的线程以运行。
d)在上述三个步骤之后,进行线程级动态调度,调度步骤如下:
步骤d1:调度器在某一个处理核上启动,执行步骤d2;
步骤d2:根据步骤a)中的二维数组,调度器获得当前处理核的指令集配置core_isa;
步骤d3:所有就绪态线程组成了一个队列,调度器获得该队列中第一个就绪线程的句柄,从而得到步骤b)中thread_isa;
步骤d4:比较core_isa和thread_isa,如果thread_isa是core_isa的一个子集,表示线程使用的指令可以运行在当前的处理核上,于是调度器停止查找,执行步骤d7,如果不满足执行步骤d5;
步骤d5:检查是否到达了就绪队列的尾部,如果没有到达,说明还有未检查的就绪线程,于是执行步骤d6检查该就绪线程是否可以运行在当前处理核上,如果到达了队列尾部,说明现阶段,所有的就绪线程都无法运行在当前的处理核上,于是执行步骤d8;
步骤d6:从队列中获得下一个就绪线程的句柄,得到该线程的期望指令集属性thread_isa,然后执行步骤d4;
步骤d7:切换***上下文,执行选出的合适线程,到步骤d9;
步骤d8:***睡眠一定时间,然后重新执行步骤d1;
步骤d9:调度结束。
以单核,无指令集扩展为对比基准,使用本实施例调度方法,2核使用指令集扩展优化后的加速比为2.72,3核使用指令集扩展优化后的加速比为3.38。性价比指标方面,2核为1.36,是最高性价比指标,3核为1.13,优于背景技术中的指标。

Claims (2)

1.一种基于可配置处理器的异构多核***线程级动态调度方法,其特征在于,包括以下步骤:
第一步,选择异构多核结构
所使用的异构多核结构由一组可配置处理核组成,每个处理核都具有一组公共指令集,每个核都具有一个指令集配置core_isa,表示此核能运行哪些指令集;
第二步,划分线程
应用程序被划分为多个线程,每个线程之间仅存在数据依赖,而不存在内部的控制关系,每个线程具有一个期望指令集属性thread_isa,表示该线程使用了什么指令集;
第三步,操作***的工作机制的设置
操作***与运行在其上的应用一同编译为二进制可执行文件,所有处理器核共享同一个操作***数据区;
第四步,在上述三个步骤完成之后,进行线程级动态调度,调度步骤如下:
步骤d1:调度器在某一个处理核上启动,执行步骤d2;
步骤d2:调度器获得当前处理核的指令集配置core_isa;
步骤d3:获得线程就绪队列中第一个就绪线程的句柄,得到该线程的期望指令集属性thread_isa;
步骤d4:检查core_isa是否满足thread_isa的运行要求,如果满足调度器停止查找,执行步骤d7,如果不满足执行步骤d5;
步骤d5:检查是否还有未遍历的就绪线程,如果有执行步骤d6,如果无执行步骤d8;
步骤d6:获得下一个就绪线程的句柄,得到该线程的期望指令集属性thread_isa,然后执行步骤d4;
步骤d7:切换***上下文,执行选出的线程,到步骤d9;
步骤d8:***睡眠,然后重新执行步骤d1;
步骤d9:调度结束。
2.根据权利要求1所述的基于可配置处理器的异构多核***线程级动态调度方法,其特征是,所述操作***初始化时,首先初始化***区,然后才进入正常工作状态,正常工作状态下,每个处理核通过调度器得到线程以运行。
CN200810039566XA 2008-06-26 2008-06-26 基于可配置处理器的异构多核***线程级动态调度方法 Expired - Fee Related CN101299194B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200810039566XA CN101299194B (zh) 2008-06-26 2008-06-26 基于可配置处理器的异构多核***线程级动态调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200810039566XA CN101299194B (zh) 2008-06-26 2008-06-26 基于可配置处理器的异构多核***线程级动态调度方法

Publications (2)

Publication Number Publication Date
CN101299194A CN101299194A (zh) 2008-11-05
CN101299194B true CN101299194B (zh) 2010-04-07

Family

ID=40079026

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810039566XA Expired - Fee Related CN101299194B (zh) 2008-06-26 2008-06-26 基于可配置处理器的异构多核***线程级动态调度方法

Country Status (1)

Country Link
CN (1) CN101299194B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882089B (zh) * 2009-05-07 2013-05-08 中兴通讯股份有限公司 一种采用多线程处理业务会话应用的方法及装置
CN101593125B (zh) * 2009-07-02 2012-03-14 上海交通大学 使用监控线程对二进制翻译程序执行流程动态监控的方法
CN101923492B (zh) * 2010-08-11 2013-05-01 上海交通大学 面向嵌入式异构多核上执行动态分配指令的方法
CN102129390B (zh) * 2011-03-10 2013-06-12 中国科学技术大学苏州研究院 片上多核计算平台的任务调度***及进行任务并行化方法
CN102193826B (zh) * 2011-05-24 2012-12-19 哈尔滨工程大学 一种异构多核处理器高效任务调度方法
DE102013110899B4 (de) * 2012-10-04 2019-07-04 Cognex Corporation Symbologie-Lesegerät mit Multicore-Prozessor und Systeme und Verfahren zum Betrieb desselben
CN103336684B (zh) * 2013-07-18 2016-08-10 上海寰创通信科技股份有限公司 一种并发处理ap消息的ac及其处理方法
US20170123775A1 (en) * 2014-03-26 2017-05-04 Empire Technology Development Llc Compilation of application into multiple instruction sets for a heterogeneous processor
CN105378674B (zh) * 2014-06-11 2019-10-22 华为技术有限公司 多内核操作***进程处理方法及装置
CN104360899B (zh) * 2014-11-03 2019-06-07 上海斐讯数据通信技术有限公司 一种进程管理***及管理方法
CN106864404A (zh) * 2017-02-17 2017-06-20 张军 一种基于多核异构处理器的智能行车预警感知***
CN110196737A (zh) * 2018-11-13 2019-09-03 张俊峰 一种异构多核处理***
CN112527393A (zh) * 2019-09-18 2021-03-19 无锡江南计算技术研究所 面向主从融合架构处理器的指令调度优化装置和方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1955931A (zh) * 2005-09-30 2007-05-02 科威尔公司 在多核架构中进行调度
CN101013388A (zh) * 2007-01-26 2007-08-08 浙江大学 面向异构多核体系的进程调度方法
CN101069170A (zh) * 2004-09-10 2007-11-07 卡威姆网络有限公司 数据包队列、调度和排序
CN101178666A (zh) * 2007-12-13 2008-05-14 中兴通讯股份有限公司 一种异构多核间协调调度的方法及异构多核***

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101069170A (zh) * 2004-09-10 2007-11-07 卡威姆网络有限公司 数据包队列、调度和排序
CN1955931A (zh) * 2005-09-30 2007-05-02 科威尔公司 在多核架构中进行调度
CN101013388A (zh) * 2007-01-26 2007-08-08 浙江大学 面向异构多核体系的进程调度方法
CN101178666A (zh) * 2007-12-13 2008-05-14 中兴通讯股份有限公司 一种异构多核间协调调度的方法及异构多核***

Also Published As

Publication number Publication date
CN101299194A (zh) 2008-11-05

Similar Documents

Publication Publication Date Title
CN101299194B (zh) 基于可配置处理器的异构多核***线程级动态调度方法
CN101923492B (zh) 面向嵌入式异构多核上执行动态分配指令的方法
CN102576314B (zh) 具有横跨多个处理器的数据并行线程之映射处理逻辑
CN100401232C (zh) 多核处理器的处理器模式自动控制装置及其方法
US9417935B2 (en) Many-core process scheduling to maximize cache usage
CN101556545B (zh) 一种实现进程支持的方法、装置和多线程***
CN1199107C (zh) 控制使用动态反馈的指令转换
CN101017546A (zh) 一种用于可分类数据批处理的方法及装置
CN101887410B (zh) 文件转换装置、文件转换方法以及文件转换程序
CN102077172A (zh) 使用运行时间任务调度的多处理器电路
US20050166207A1 (en) Self-optimizing computer system
CN102193830B (zh) 面向众核环境的分治映射/归约并行编程模型
CN102103497A (zh) 有限状态机执行装置和方法、在应用中的建立和使用方法
TW201519091A (zh) 用於任務排程之電腦系統,方法及電腦可讀取記錄媒體
US6334137B1 (en) Method and system for controlling parallel execution of jobs
CN103984595A (zh) 一种异构cmp的静态任务调度方法
CN102708009A (zh) 一种基于cuda实现多任务共享gpu的方法
CN101499065A (zh) 基于fa的表项压缩方法及装置、表项匹配方法及装置
CN106383746A (zh) 大数据处理***的配置参数确定方法和装置
CN114217966A (zh) 基于资源调整的深度学习模型动态批处理调度方法和***
CN102004664A (zh) 一种空间飞行器嵌入式实时操作***调度方法
CN110347450B (zh) 多流并行控制***及其方法
CN113407343A (zh) 一种基于资源分配的业务处理方法、装置及设备
CN112346835A (zh) 一种基于协程的调度处理方法及***
CN102609306B (zh) 多核处理芯片对视频处理任务的处理方法及其***

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
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20081105

Assignee: JIANGSU RUITIAN INFORMATION TECHNOLOGY CO., LTD.

Assignor: Shanghai Jiao Tong University

Contract record no.: 2013320000214

Denomination of invention: Heterogeneous multi-core system thread-level dynamic dispatching method based on configurable processor

Granted publication date: 20100407

License type: Exclusive License

Record date: 20130322

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
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: 20100407

Termination date: 20190626