专利名称:多核平台下基于硬件计时器与任务队列的调度方法
技术领域:
本发明涉及多核平台下任务调度模式设计领域,尤其是涉及一种多核平台 下基于硬件计时器与任务队列的调度方法。
背景技术:
20世纪人类的杰出成果之一计算机技术把人类社会带入了信息化时代。随 着计算需求的不断增大以及CPU频率瓶颈出现,单芯片多处理器(Multi-Core)
技术成为了计算机领域的新的研究热点。同时也产生了一个新的研究领域一多 核平台下任务调度方法。
多核平台从原有的单纯提高单处理器频率以提高性能,转变到以增加处理 单元的数量,提高平行能力的全新角度。其尚且处于新兴发展阶段,有着巨大 发展潜力与市场前景。目前全球已有多款多核处理器,越来越多的厂商已经将 处理器发展的重点转移到多核领域,无论是商用大型机,民用桌面平台以及嵌 入式领域,多核处理器已经占据了市场很大的份额。
由于多核任务平台下,无论从任务的多样性以及运行状态的丰富性,都比 原来单处理器平台下更加复杂,传统的基于单核平台的任务调度方法即使经过 修改,应用于多核平台,但其显然己经不能充分发挥出多核平台的优势所在, 因此,如何设计一个适用于多核平台的任务调度方法,己经成为研究的热点。
目前市场上,基于多核平台的调度方法中,通常经过OS的帮助,采用各个 CPU核主动申请任务,主动发起任务切换等方法,我们称之为CPU核的主动模式。 这种模式下,CPU核必须要分出一定的时间来运行调度任务。同时CPU核之间的 状态是不可知的,调度任务由操作系统完成。
发明内容
本发明的目的在于提供一种多核平台下基于硬件计时器与任务队列的调度 方法。
本发明解决技术问题所采用的技术方案是 一种多核平台下基于硬件计时器与任务队列的调度方法
1)多条硬件任务队列
每条硬件任务队列对应--个通用era核,任务队列记录了任务号以及下一
轮调度时任务的可运行时间片长度,队列采用FIFO策略;队首的任务将被最先发射到对应于该硬件任务队列的CPU核上,每个硬件任务队列包含了一个计时 器;
2) 初始任务分配
根据任务优先级TaskMOTity,上一轮运行该任务的CPU核号Nolast—。pu以及每个 CPU的忙碌程度Nota,Task一进行任务调度,调度的原则是根据优先级,按照 优先级高低的顺序调度任务。某一个任务的调度方法为,分别计算各个CPU核 调度值,该值是由CPU核的忙碌程度减去该任务上一次是否在该CPU核上运行 的权值得到,权值的计算方法是如果该任务上一次运行在该CPU核,则权值 为l,否则权值为零,计算结束,选择调度值最小的CPU核,将任务放入对应该 CPU核的硬件任务队列中;
3) 由计时器触发的任务发射
当任务从硬件任务队列发射到对应CPU核的同时,该硬件队列设置其计时
器的值,该值为任务该轮执行的时间片长度。任务开始运行时,启动计时器,
当计时器到时,代表该任务的本轮运行时间已经结束,计时器触发CPU核进行 任务切换,位于硬件任务队列列首的任务将被发射到CPU核上运行,新任务以 中断的形式发射;
4) 当前运行任务发生阻塞,计时器即刻清零,任务切换发生 当前运行任务由于需要某些资源或计算结构,需要挂起等待,则发射消息
给硬件任务队列,其对应的计时器即刻清零,任务切换发生;
5) 任务切换前的预处理过程
当计时器剩余时钟周期小于等于5时,下一个任务所需的内容被提前放入 cache,以为任务切换做准备,达到加快任务切换速度,减小任务切换开销的目 的。
本发明与背景技术相比,本发明具有的有益的效果是
该设计是一种CPU核运行与被动模式的调度方法,利用外加调度硬件的手 段,将任务分配给对应CPU核,从而将调度任务从通用CPU核中分离出来,通 用CPU核只需要响应调度硬件发出的任务,进行任务切换。
(1) 减轻通用CPU核的负担调度过程将不再需要通用CPU核的帮助,令 通用CPU可以专注与常规任务的运行。
(2) 加快调度速度,提高系统并行性利用硬件的计算速度以及并行能力, 保证系统的性能极大的提高。
(3) 任务切换预处理,加快任务切换速度,减小任务切换开销通用CPU核的运行状态是透明的,系统知道大部分情况下任务切换发生的时间,从而可
以预先为调度做准备。
附图是本发明的流程图。 具体实施方法
方法中涉及到相关的符号解释
TaskPH。Hty :任务优先级。
Nolast,任务上次一运行在的CPU核编号。
Task*"队列中任务本轮调度可运行时间。
Notask: CPU核当前队列任务数。
G (x):前次运行权值计算函数,如果运行G函数的CPU核与X所标的核号 相同,则G函数为1,否则为0。
多核平台下基于硬件计时器与任务队列的调度方法,其运行模式是通过外 部硬件帮助调度任务,并且通过中断的形式,将任务发射给对应CPU,如图l所 示,所需添加的硬件部分,包括硬件调度模块,其中包含了对应各个CPU核的 硬件任务队列以及计时器,如附图所示,其的运行关键步骤如下
1) 多条硬件任务队列
每条硬件任务队列对应一个通用CPU核,任务队列记录了任务号以及下一 轮调度时任务的可运行时间片长度,队列采用FIFO策略;队首的任务将被最先 发射到对应于该硬件任务队列的CPU核上。每个硬件任务队列包含了一个计时 器;
2) 初始任务分配
根据任务优先级TaskPriOTity,上一轮运行该任务的CPU核号Nolast-。pu以及每个 CPU的忙碌程度No^^Taskt^进行任务调度,调度的原则是根据优先级,按照 优先级高低的顺序调度任务。某一个任务的调度方法为,分别计算各个CPU核
调度值,该值是由cpu核的忙碌程度减去该任务上一次是否在该era核上运行
的前次运行权值得到,权值的计算方法是如果该任务上一次运行在该CPU核, 则权值为l,否则权值为零,计算结束,选择调度值最小的CPU核,将任务放入 对应该CPU核的硬件任务队列中。具体实施时,根据各个任务的优先级TaSkPriOTity, 选取最高优先级的任务优先调度,通过计算各个核的调度值二 Notask * Taskw。-G (Nolast-。pu ),该值的意义是表现各个CPU核当前的忙碌程度,以及考虑当前被 调度的任务如果被调度到上一次运行CPU核时的奖励G (Nolast,)。选择CPU核过程完成后,该任务就被放入对应核的硬件任务队列中,等待发射。这一过程,
由于是硬件完成,速度相对软件手段更快,同时调度过程可以独立与CPU核运
行,提高了系统的并行度。
3) 由计时器触发的任务发射
当任务从硬件任务队列发射到对应CPU核的同时,该硬件队列设置其计时
器的值,该值为任务该轮可执行的时间片长度,单位为时钟周期数。任务开始 运行时,启动计时器,当计时器到时,代表该任务的本轮运行时间己经结束,
计时器触发CPU核进行任务切换,位于硬件任务队列列首的任务将被发射到CPU 核上运行,新任务以中断的形式发射。
4) 当前运行任务发生阻塞,计时器即刻清零,任务切换发生
当前运行任务由于需要某些资源或计算结构,需要挂起等待,则发射消息
给硬件任务队列,其对应的计时器即刻清零,任务切换发生;当前运行任务由 于外部某一条件未达成,例如等待某一系统资源,而需要挂起,则发送消息给 对应CPU核的硬件任务队列,相应计时器立刻清零,任务切换即刻发生。
5) 任务切换前的预处理过程 当计时器剩余时钟周期小于等于5时,下一个任务所需的内容可以被提
前放入cache,以为任务切换做准备,达到加快任务切换速度,减小任务切换开 销的目的。任务预处理过程,提前将接下来要运行的任务所需的内容提前装载 入内存与cache中,可以让任务切换的速度加快,同时使系统在进行任务切换 的开销减小。通用CPU核在运行过程中,只有当接到计时器发出的任务中断消 息,或任务自身要求,才会发生任务切换,而下一个运行的任务,是提前放入 硬件队列中的,因此也加快了任务从调度直到任务切换的速度。
权利要求
1. 一种多核平台下基于硬件计时器与任务队列的调度方法,其特征在于1)多条硬件任务队列每条硬件任务队列对应一个通用CPU核,任务队列记录了任务号以及下一轮调度时任务的可运行时间片长度,队列采用FIFO策略;队首的任务将被最先发射到对应于该硬件任务队列的CPU核上,每个硬件任务队列包含了一个计时器;2)初始任务分配根据任务优先级TaskPriority,上一轮运行该任务的CPU核号Nolast-cpu以及每个CPU的忙碌程度Notask*Tasktime进行任务调度,调度的原则是根据优先级,按照优先级高低的顺序调度任务。某一个任务的调度方法为,分别计算各个CPU核调度值,该值是由CPU核的忙碌程度减去该任务上一次是否在该CPU核上运行的权值得到,权值的计算方法是如果该任务上一次运行在该CPU核,则权值为1,否则权值为零,计算结束,选择调度值最小的CPU核,将任务放入对应该CPU核的硬件任务队列中;3)由计时器触发的任务发射当任务从硬件任务队列发射到对应CPU核的同时,该硬件队列设置其计时器的值,该值为任务该轮执行的时间片长度。任务开始运行时,启动计时器,当计时器到时,代表该任务的本轮运行时间已经结束,计时器触发CPU核进行任务切换,位于硬件任务队列列首的任务将被发射到CPU核上运行,新任务以中断的形式发射;4)当前运行任务发生阻塞,计时器即刻清零,任务切换发生当前运行任务由于需要某些资源或计算结构,需要挂起等待,则发射消息给硬件任务队列,其对应的计时器即刻清零,任务切换发生;5)任务切换前的预处理过程当计时器剩余时钟周期小于等于5时,下一个任务所需的内容被提前放入cache,以为任务切换做准备,达到加快任务切换速度,减小任务切换开销的目的。
全文摘要
本发明公开了一种多核平台下基于硬件计时器与任务队列的调度方法。是通过采用在硬件手段,添加多个硬件任务队列与计时器,通过计时器到时触发任务分发的方法,将任务切换的控制从通用CPU中分离出来,从而解决多核环境下的任务调度问题。本发明减轻通用CPU核的负担调度过程将不再需要通用CPU核的帮助,令通用CPU可以专注与常规任务的运行;加快调度速度,提高系统并行性利用硬件的计算速度以及并行能力,保证系统的性能极大的提高;任务切换预处理,加快任务切换速度,减小任务切换开销通用CPU核的运行状态是透明的,系统知道大部分情况下任务切换发生的时间,从而可以预先为调度做准备。
文档编号G06F9/46GK101414271SQ20081016290
公开日2009年4月22日 申请日期2008年12月4日 优先权日2008年12月4日
发明者冯德贵, 刘敬伟, 吴斌斌, 罡 王, 度 陈, 陈天洲 申请人:浙江大学