硬件辅助的辅核任务动态优先级调度的实现方法

文档序号:6466975阅读:180来源:国知局
专利名称:硬件辅助的辅核任务动态优先级调度的实现方法
技术领域
本发明涉及计算机体系结构设计领域,涉及操作系统设计领域,尤其涉及 一种硬件辅助的辅核任务动态优先级调度的实现方法。
背景技术
随着半导体以及相应的集成电路制造工艺的迅猛发展,集成在芯片上的晶 体管的密度不断的提高,使得越来越多的元件都可以集成到一块单一的芯片上。 在单个芯片上把各种不同用途的功能模块整合在一起,不但可以提升模块间的 通信速度,提升系统性能,而且还可以减少芯片的面积,从而也降低芯片的能耗。
为了满足各种各样的应用需求,各种针对特定应用而设计的异构多核系统 变得越来越流行。在这种体系中,除了针对特定应用优化设计的处理核外,还 有一个负责操作系统运行的通用处理核。在这种异构多核的体系架构中,通常 把运行操作系统的通用的处理核称为主处理核或者主核。而把针对特定应用设
计的处理核称为辅助处理核或者辅核,如DSP,还有针对JPEG,MPEG2,MPEG-4
以及HDTV应用设计的处理核都属于这一类。这些辅助处理核往往只能运行针 对特定应用设计的专用指令集,所以运行在辅助核上的辅助核任务需要主核的 管理和控制。
在支持异构多核体系的软件系统中,操作系统运行在主核上,而辅助核则 通过各种各样的方式抽象成软件接口。例如以驱动程序,系统调用,或者虚拟 文件系统等方式抽象出软件接口供应用程序直接使用。在驱动程序支持辅助核 的方式中,从操作系统的角度来看,辅助核是一个拥有强大计算能力的设备, 应用程序发挥辅助核强大计算能力的方式就是使用辅助核驱动程序。采用系统 调用方式支持辅助核的方式中,支持辅助核的软件接口被包装成操作系统内核 中的一组系统调用。而虚拟文件系统则是把辅助核的使用包装成一个虚拟文件 系统,通过对文件系统的操作来实现对辅助核的操作。
但是,无论采用驱动程序还是虚拟文件系统的方式支持异构多核体系,都 是把辅助核硬件抽象成相应的软件接口,在应用程序中通过使用这些软件接口 对辅助核硬件进行直接的操作。这种方式用于测试辅助核的功能完整性以及应 用在单任务的系统中是很合适的,实现方式和使用方式都很简单,但是,当有多个应用程序使用辅助核硬件的时候,由于这种软件直接操作硬件的方式,使 得应用程序很难发现某个辅助处理核是否已经被其他程序所使用,就会发生辅 助核资源使用的冲突。
因此,在支持主核和辅核这种体系的操作系统中,如何灵活而有效的调度 管理应用程序任务在辅助核运行成了一个很大的问题。而且随着辅核种类和数 量的增加,如果仍然由主核上运行的调度器来对众多的辅核种类和辅核任务进 行调度,调度器可能成为系统性能的瓶颈。

发明内容
为了向基于主核和辅核体系的操作系统提供更好的支持,为了提供更加灵 活有效的辅核管理性能,为了提高辅核任务调度的吞吐量,提高辅核执行的效 率,本发明的目的在于提供一种硬件辅助的辅核任务动态优先级调度的实现方 法。
本发明解决技术问题所采用的技术方案是 一种硬件辅助的辅核任务动态优先级调度的实现方法
1) 辅核任务的三个阶段
辅核是为特定应用领域的计算设计的,支持不同于主核的指令集;从操作系 统的角度来看,辅核不能进行资源管理,不能运行任何操作系统内核态的代码, 不具备完全独立运行进程的能力;因此辅核任务对执行可以分为三个阶段
① 辅核任务预处理阶段这一阶段由主核负责,创建辅核上运行的辅核任 务上下文,包括辅核任务指令以及待处理数据;主核上派生辅核任务的进程也
就是该辅核任务的控制进程;
② 辅核任务运行阶段在该阶段,辅核从主存载入在第一阶段初始化好的 辅核任务上下文并启动辅核任务的执行;当任务执行完毕后,将执行结果数据 写回内存空间;
③ 辅核任务结果处理阶段这个阶段运行在主核上,主要处理第二阶段在 辅核上运行的结果,将辅核任务结果整理写回到目标地址;
2) 硬件调度模块辅助的辅核任务调度过程-辅核任务的调度过程如下-
① 主核上运行的操作系统调用硬件调度器接口 ,将主核上进程派生的辅核 任务传送给硬件调度器;
② 辅核硬件调度器的调度单元,将就绪任务根据优先级组织为三个先进先 出硬件队列,然后依次从队列中选取任务,并分配到空闲状态的辅核上执行;③当辅核任务执行完毕,硬件调度单元产生中断通知主核上的控制进程进
行后期的数据处理;
所述的将就绪任务根据优先级组织为三个先进先出硬件队列,具体组织方
式如下
① 硬件调度器根据优先级高低维护了 3个就绪任务队列,分别为高优先 级任务队列、普通优先级任务队列和低优先级任务队列;
② 辅核任务根据优先级分别被分配到对应的3个任务队列中;在各任务队 列之内不再区分优先级高低,按照先到先服务的方法调度任务;
③ 硬件调度器每间隔一段时间把对任务队列中的任务第一个任务的优先级 进行提升,也就是说把普通优先级任务队列中的第一个任务提升为高优先级任 务,把低优先级任务队列中的第一个任务提升为普通优先级任务。
本发明具有的有益效果是-
首先,设计了硬件调度器辅助辅核任务的调度,由硬件调度器对辅核进行调 度管理,减轻主核调度和管理辅核任务的负担,消除了未来可能的性能瓶颈; 其次,在调度器上提供了基于动态优先级的调度策略,避免了低优先级任务饿 死的可能;再次,通过硬件调度器对操作系统调度的辅助,有效的降低了软件 系统对嵌入式异构多核体系的支持难度;最后,通过设计和使用硬件调度器, 明显提高了辅助核任务的吞吐量。


附图是本发明的流程图。
具体实施例方式
本发明通过将辅核任务的执行分为上述的三个阶段,在任务的每个阶段, 由硬件调度器辅助主核上运行的操作系统调度器对辅核任务进行对应的管理和 调度。下面将就本发明的实现作详细介绍。
1、 一种硬件辅助的辅核任务动态优先级调度的实现方法,其特征在于
1)辅核任务的三个阶段 ①辅核任务预处理阶段
辅核任务预处理阶段由主核负责,主核上运行的需要辅核加速的进程在这个 阶段将会创建一个辅核上运行的辅核任务来进行应用程序的加速,主要创建的 是辅核任务的上下文,即包括辅核任务指令序列以及待处理的数据。主核上派 生出辅核任务的进程也就是该辅核任务的控制进程,该线程在创建辅核任务之 后将会挂起等待辅核任务的返回结果。② 辅核任务运行阶段
辅核任务运行阶段主要由硬件调度器和辅核共同进行,在这个阶段,由硬件 调度器调度执行的辅核任务被分配到空闲的辅核上,并从系统主存载入在辅核 任务预处理阶段所创建好的辅核任务上下文并启动辅核任务的执行。当任务执 行完毕后,将执行结果数据写回内存空间。
③ 辅核任务结果处理阶段
在辅核任务结果处理阶段,由运行在主核的相应辅核任务的控制进程进行, 主要对辅核任务运行阶段在辅核上运行的结果进行处理,具体处理过程视将实 际应用程序的要求而定,例如将辅核任务预处理阶段集中准备由辅核进行处理 的数据的返回结果重新分派回原存储空间等。
2)硬件调度模块辅助的辅核任务调度过程
辅核任务的调度过程如下-
① 在辅核任务预处理阶段,当主核上的控制进程完成辅核任务的创建之后, 将调用操作系统系统调用接口,通过硬件调度器所提供的接口将新创建的辅核 任务传送给硬件调度器。如果硬件调度器的就绪任务队列已满,则该任务挂起, 等待下次硬件调度器产生任务完成中断信号之后再重新尝试发送。
② 辅核硬件调度器的调度单元根据收到的辅核任务的优先级将符合任务任 务组织为三个先进先出的就绪任务队列。同时硬件调度器将轮询辅核的状态, 一旦有辅核空闲,调度器将从三个队列中选择辅核任务,并分配到空闲状态的 辅核上执行。具体任务队列组织方法和辅核任务选择方法如3)所述。
③ 当辅核任务执行完毕,硬件调度单元产生中断信号,通知主核上的辅核 任务控制进程进行后期的数据处理。
所述的将就绪任务根据优先级组织为三个先进先出硬件队列,多个辅核任务 的执行顺序即辅核任务的调度策略通过对硬件调度器中的就绪任务队列进行不 同的组织方式来设定,三个先进先出硬件队列的具体组织方式如下
① 硬件调度器根据优先级高低维护了 3个就绪任务队列,分别为高优先 级任务队列、普通优先级任务队列和低优先级任务队列。每个任务队列为一个 20个入口的先进先出队列,各队列是否已满的状态寄存器被映射到系统主存, 主核上的进程可以通过操作系统调用读取各任务队列是否己满的状态。
② 辅核任务根据优先级分别被分配到对应的3个任务队列中;辅核任务的 优先级为0到70的一个数值,硬件调度器将0 20优先级的辅核任务插入到高 优先级任务队列,将21 50优先级的辅核任务插入到普通优先级任务队列,51 70优先级的辅核任务插入到低优先级任务队列。在各任务队列之内不再区分优
先级高低,按照先到先服务的方法调度任务。
当硬件调度器轮询辅核发现空闲的辅核之后,硬件调度器的调度模块从队列
中选取任务进行执行首先从高优先级任务队列按照先到先服务原则选择先到 的辅核任务进行执行,当高优先级任务执行完毕后再选取普通优先级任务队列 中的辅核任务,最后选取低优先级任务队列中的辅核任务。
③为了防止低优先任务饿死的情况发生,每完成20个辅核任务,硬件调度 器将对任务队列中的第一个任务的优先级进行优先级提升,也就是把普通优先 级任务队列中的第一个任务提升为高优先级任务,把低优先级任务队列中的第 一个任务提升为普通优先级任务。
权利要求
1、一种硬件辅助的辅核任务动态优先级调度的实现方法,其特征在于1)辅核任务的三个阶段辅核是为特定应用领域的计算设计的,支持不同于主核的指令集;从操作系统的角度来看,辅核不能进行资源管理,不能运行任何操作系统内核态的代码,不具备完全独立运行进程的能力;因此辅核任务对执行可以分为三个阶段①辅核任务预处理阶段这一阶段由主核负责,创建辅核上运行的辅核任务上下文,包括辅核任务指令以及待处理数据;主核上派生辅核任务的进程也就是该辅核任务的控制进程;②辅核任务运行阶段在该阶段,辅核从主存载入在第一阶段初始化好的辅核任务上下文并启动辅核任务的执行;当任务执行完毕后,将执行结果数据写回内存空间;③辅核任务结果处理阶段这个阶段运行在主核上,主要处理第二阶段在辅核上运行的结果,将辅核任务结果整理写回到目标地址;2)硬件调度模块辅助的辅核任务调度过程辅核任务的调度过程如下①主核上运行的操作系统调用硬件调度器接口,将主核上进程派生的辅核任务传送给硬件调度器;②辅核硬件调度器的调度单元,将就绪任务根据优先级组织为三个先进先出硬件队列,然后依次从队列中选取任务,并分配到空闲状态的辅核上执行;③当辅核任务执行完毕,硬件调度单元产生中断通知主核上的控制进程进行后期的数据处理;
2、 根据权利要求1所述的一种硬件辅助的辅核任务动态优先级调度的实现 方法,其特征在于所述的将就绪任务根据优先级组织为三个先进先出硬件队 列,具体组织方式如下① 硬件调度器根据优先级高低维护了 3个就绪任务队列,分别为高优先 级任务队列、普通优先级任务队列和低优先级任务队列;② 辅核任务根据优先级分别被分配到对应的3个任务队列中;在各任务队 列之内不再区分优先级高低,按照先到先服务的方法调度任务;(D硬件调度器每间隔一段时间把对任务队列中的任务第一个任务的优先级 进行提升,也就是说把普通优先级任务队列中的第一个任务提升为高优先级任 务,把低优先级任务队列中的第一个任务提升为普通优先级任务。
全文摘要
本发明公开了一种硬件辅助的辅核任务动态优先级调度的实现方法。是通过为基于主核加辅核体系的操作系统调度提供体系结构上的支持,辅助操作系统调度器对辅核任务的调度,硬件调度器维护三个就绪任务的硬件队列,根据任务优先级将到达任务插入到相应的就绪任务队列中,并通过周期性的优先级提升来避免辅核任务饿死的情况发生。这一方法通过体系结构支持有效的降低了软件系统对嵌入式异构多核体系的支持难度,并减轻主核调度和管理辅核任务的负担,明显提高了辅助核任务的吞吐量。特别是在辅核种类多、数量大、调度算法复杂的情况下,更具有明显的效果。
文档编号G06F9/46GK101414270SQ20081016290
公开日2009年4月22日 申请日期2008年12月4日 优先权日2008年12月4日
发明者严力科, 冯德贵, 罡 王, 度 陈, 陈天洲 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1