首页> 中国专利> 面向混合主存嵌入式系统的低能耗EDF实时任务调度方法

面向混合主存嵌入式系统的低能耗EDF实时任务调度方法

摘要

本发明公开了一种面向混合主存嵌入式系统的低能耗EDF实时任务调度方法,本发明利用PCM非易失、低功耗、高性能的优点,结合动态EDF算法保证整个任务集的时性约束,从而降低了整个系统的功耗又不影响任务的时性约束;本发明所述方法包括步骤:1)将任务集T中的任务按照(W

著录项

  • 公开/公告号CN104182180A

    专利类型发明专利

  • 公开/公告日2014-12-03

    原文格式PDF

  • 申请/专利权人 山东大学;

    申请/专利号CN201410369550.0

  • 发明设计人 贾智平;张志勇;鞠雷;蔡晓军;

    申请日2014-07-30

  • 分类号G06F3/06;G06F9/46;

  • 代理机构济南圣达知识产权代理有限公司;

  • 代理人张勇

  • 地址 250061 山东省济南市历下区经十路17923号

  • 入库时间 2023-12-17 03:04:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-08

    未缴年费专利权终止 IPC(主分类):G06F 3/06 专利号:ZL2014103695500 申请日:20140730 授权公告日:20170322

    专利权的终止

  • 2017-03-22

    授权

    授权

  • 2014-12-31

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20140730

    实质审查的生效

  • 2014-12-03

    公开

    公开

说明书

技术领域

本发明涉及实时嵌入式系统(Real-Time Embedded System)领域,尤其涉及 一种面向混合主存嵌入式系统的低能耗EDF实时任务调度方法。

背景技术

嵌入式系统是一个面向某些特定应用的计算机系统。考虑到嵌入式系统的安 全性和可靠性等因素,其应用通常具有实时性约束。近年来,嵌入式系统得到了 迅速发展,各种智能设备悄然进入人们的生活。然而,随着功能和应用变得越来 越复杂,电池的使用寿命成为这些设备上的最大限制。研究表明,在现代嵌入式 系统中,主存的能耗在整个系统能耗中所占的比例越来越大。因此,减少主存的 能耗是延长电池可用时间的行之有效的方法,而如何减少主存系统的能耗是一个 亟需解决的关键问题。

相变存储器(Phase-change memory,PCM),由于其非易失、低功耗及高性 能等特性引起了学术界和工业界的广泛关注。与传统主存DRAM相比,PCM拥 有低能耗和非易失性的优点。尽管PCM与FLASH相比拥有较高的读写性能, 然而与DRAM相比,依然具有较高的读写延时,特别是写延时。同时,PCM具 有写次数限制,该特点大大限制了其使用寿命。

综合PCM和DRAM的优缺点,学术界提出了基于PCM和DRAM的混合 主存架构(Hybrid Main Memory Architecture),即利用DRAM获得高性能(DRAM 的低读写延时),同时利用PCM取得较大的能耗节省(PCM的低能耗)。

然而,混合主存系统的引入使得实时任务调度问题变得更加复杂:作为智能 设备,应该提供较高的性能但同时消耗了较多的能量,而作为嵌入式系统,其应 该最大化电池使用寿命但却导致了任务的执行延时,甚至破坏了任务的实时性约 束。因此,性能与能耗二者的权衡是一个需要解决的重要问题。

尽管近年来针对混合主存系统的研究较多,但是针对混合主存实时任务调度 方面的研究较少。目前对混合主存系统的研究主要集中在操作系统的支持、变量 与任务在不同主存介质中的分配、能量优化模型、主存控制器等方面。目前的研 究只考虑了任务的分配而并未考虑任务的调度,只针对主存控制器优化而并未考 虑具体的实时调度算法。因此,研究混合主存架构下的实时任务调度是一个值得 研究的重要问题。

发明内容

为解决上述问题,本发明旨在针对混合主存嵌入式系统,提出一个任务的实 时调度方法以最大程度地节省能耗,同时保证整个任务集的实时约束。在本发明 所涉及到的混合存储架构中,PCM和DRAM采取统一编址方式,CPU可对各个 部分直接访问。操作系统区分这两部分地址空间,并对其进行管理。本发明提出 的实时调度算法旨在操作系统层面保证混合主存系统的高性能和低能耗。本发明 所采用的技术方案如下:

一种面向混合主存嵌入式系统的低能耗EDF实时任务调度方法,包括以下步骤:

1)将任务集T中的任务按照(Wpi-Wdi)/Nwi降序排列,其中Wpi表示该任 务在PCM中的最差情况执行时间,Wdi表示该任务在DRAM中的最差情况执行时 间,Nwi表示该任务的执行过程中的写次数;

2)初始化所有任务:将所有任务标记为D-task,且Ci=Wdi,其中Ci表示该 任务的最差情况执行时间;

3)根据任务集T的任务顺序将任务逐个放入PCM中,如果任务集依然可调 度,则标记该任务为P-task,且Ci=Wpi,直至任务集T中所有任务检查完毕;

4)系统开始执行任务:其中D-task在DRAM中执行,P-task在PCM中执行;

5)计算动态EDF算法分配给所有任务的“空闲时间”;

6)根据EDF优先级排序,队头元素Ti拥有最小的deadline,表示为di,动 态EDF算法根据优先级将“空闲时间”的分配给即将执行的D-task任务实例, 直至该任务结束;

7)重复步骤6直至整个任务集T结束。

所述步骤3中任务集可调度的充分必要条件为:

Σi=1nCi/Pi1

其中Ci为任务Ti的最差情况执行时间,Pi为任务Ti的任务周期。

所述步骤5中,“空闲时间”计算如下:

Slack(i)=Σx|dx<diCx

其中,di表示任务Ti的deadline,dx为任务Tx的deadline,Cx表示任务Tx的最差 情况执行时间。

所述步骤6中当动态EDF算法将“空闲时间”分配给任务ti,数据结构 Preempt-Queue为非空,此时动态EDF算法不进行空闲时间的重新分配。

所述步骤6中如果空闲时间足够将该D-task转换为P-task,则将该任务放入PCM 中执行,直至该任务结束。

所述步骤6中如果空闲时间不足够将该D-task转换为P-task,则根据最大迁移数 据量Si和数据在不同主存中的迁移速率计算迁移时间,假设迁移时间为migTimei, 空闲时间为slack time,动态EDF算法将该任务放入PCM中执行的时间即slack  time-migTimei,如果在此时间内该任务未执行完,则将任务从PCM中迁移到 DRAM中,直至该任务执行完。

所述步骤6中当一个D-task任务被分配了额外的时间,但在其迁移过程发生之 前被抢占,当任务从抢占中恢复的时候,动态EDF算法将会对该任务进行第二 次时间分配,即当其从抢占中恢复时,由于抢占的任务可能会产生新的“空闲时 间”,该部分时间可分配给该被抢占的任务。

所述步骤6中如果任务已经从PCM迁移回DRAM,则该任务会在DRAM中一 直执行完,不会被分配额外时间。

有益效果:

本发明取得的有益效果为:

1)降低了功耗;

2)保证了整个任务集的实时约束;

3)保证了PCM中尽可能少的写操作;

4)保证了任务迁移只能从PCM向DRAM中迁移,而不会迁回,且每个任 务最多只迁移一次。

附图说明

图1本发明采用的混合主存系统架构;

图2本发明的流程图;

图3a动态EDF(Dynamic-EDF)调度算法统计全部空闲时间;

图3b任务T3提前结束产生40个空闲时间;

图3c所有空闲时间分配给任务T1,导致任务T2失去时性约束;

图4动态EDF(Dynamic-EDF)算法中一个D-task任务的执行流程图。

其中,D1,D2,D3分别为T1,T2,T3的deadline。

具体实施方式

针对混合主存架构,本发明采用的混合主存系统架构如附图1所示,存储既 包括DRAM存储又包括PCM存储。本发明基于EDF算法提出了2个实时任务 调度算法,包括静态EDF调度算法(static-EDF)和动态EDF调度算法 (dynamic-EDF)。

图2为本发明的流程图。一种面向混合主存嵌入式系统的低能耗EDF实时任 务调度方法,包括以下步骤:

1)将任务集T中的任务按照(Wpi-Wdi)/Nwi降序排列,其中Wpi表示该任 务在PCM中的最差情况执行时间,Wdi表示该任务在DRAM中的最差情况执行时 间,Nwi表示该任务的执行过程中的写次数;

2)初始化所有任务:将所有任务标记为D-task,且Ci=Wdi,其中Ci表示该 任务的最差情况执行时间;

3)根据任务集T的任务顺序将任务逐个放入PCM中,如果任务集依然可调 度,则标记该任务为P-task,且Ci=Wpi,直至任务集T中所有任务检查完毕;

4)系统开始执行任务:其中D-task在DRAM中执行,P-task在PCM中执行;

5)计算动态EDF算法分配给所有任务的“空闲时间”;

6)根据EDF优先级排序,队头元素Ti拥有最小的deadline,表示为di,动 态EDF算法根据优先级将“空闲时间”的分配给即将执行的D-task任务实例, 直至该任务结束;

7)重复步骤6直至整个任务集T结束。

在传统实时系统模型中,EDF算法假设每一个任务必须在其下一次调用前 结束,且调度前所有任务同时就绪。本发明中采取同样的假设。此外,本发明中 所有的任务都是独立的,任务间不存在依赖关系,且所有任务不存在不可抢占的 部分。为简单起见,本发明假设调度的开销忽略不计。

在本发明中,对于一个周期任务集T={T1,T2,…,Tn},其中T1,T2,…,Tn为任务,n为自然数,每个周期任务Ti由一个五元组表示<Wdi,Wpi,Pi,Nwi,Si>, 其中Wdi表示该任务在DRAM中的最差情况执行时间(WCET),Wpi表示该任 务在PCM中的WCET(在本发明中,Wdi<Wpi),Pi为该任务的周期,Nwi为该 任务的执行过程中的写次数,Si表示当任务需要迁移时,需要迁移的最大数据量 (包括该任务的代码段、数据段、堆栈段等),i为小于等于n的自然数。本发明 假设所有任务在执行过程中不需要与用户交互,这对于实时嵌入式系统而言是合 理的。

本发明所提出的EDF调度算法保证了任务迁移只能从PCM向DRAM中迁 移,而不会迁回,且每个任务最多只迁移一次。

1、静态EDF调度算法

在静态EDF调度算法(static-EDF)中,针对周期任务集,为了保证PCM 中尽量少的写操作(延长PCM寿命),将所有任务按照(Wpi-Wdi)/Nwi降序排 序,逐个任务尝试放入PCM中执行。由于将任务放入PCM中增加了任务的执 行时间,因此需要检查此时是否破坏了任务集的可调度性,如果将该任务放入 PCM中,所有任务的实时性约束不受影响,则将该任务安排在PCM中执行,并 标记该任务为P-task,否则该任务为D-task。

对于EDF算法,任务集可调度的充要条件为CPU利用率不高于100%,即:

Σi=1nCi/Pi1

Ci为任务Ti的最差情况执行时间WCET,Pi为任务Ti的周期,n为自然数,i为 小于等于n的自然数。

静态EDF(static-EDF)算法步骤如下:

(1)对于任务集T中的任务按照(Wpi-Wdi)/Nwi降序排序;

(2)初始化所有任务为D-task,且Ci=Wdi

(3)按照任务集T中的任务顺序逐个尝试将其放入PCM中,按照前述可 调度性规则检查是否破坏了任务集的可调度性,如果任务集依然可调 度,则标记该任务为P-task,且Ci=Wpi

(4)重复(3)直至T中所有任务检查完毕;

(5)按照EDF调度算法调度该任务集,其中D-task在DRAM中执行, P-task在PCM中执行。

2、动态EDF(dynamic-EDF)调度算法

在本发明中,动态调度算法是对静态调度算法的优化。在静态调度算法中, 算法为每个任务预留了其最差情况执行时间(WCET),然而任务在实际执行中, 其实际执行时间往往远远小于其WCET。因此,当任务提前完成的时候,与预留 的WCET相比,会产生一些“未使用的时间”,在本发明中,称这些时间为“空 闲时间”(Slack Time)。显然,如果调度合理,在保证任务集可调度的情况下, slack time可以被重新分配给尚未执行的任务。如此,可为部分D-task分配更多 的时间,使其可以在PCM中执行,进而取得更好的能耗节省。

然而,当回收的slack time不足以将整个D-task完全转换为P-task时,为了 保证任务的实时约束,有时不得不将任务在PCM和DRAM中迁移,即任务前 一部分在PCM中执行,而后一部分不得不迁移到DRAM中执行。任务的迁移 导致了额外的时间、控制和能量开销,因此本发明尽量避免和最小化任务的迁移, 动态调度算法保证了所有任务最多会被迁移一次。

在动态调度算法中,关键问题在于slack time的计算和分配,因此,本发明 着重解决该问题,进而实现任务集的调度。

为优化静态EDF算法,由于EDF算法为动态优先级调度算法,因此,本发 明从全局的角度,对全局的“空闲时间”即slack time进行管理和分配,而不仅 仅局限于最近的deadline(最近的截止期限)。

然而,盲目地利用所有的slack time并不是安全的。考虑3个周期任务T1, T2和T3,其任务参数为Wd1=100,Wp1=140,P1=300;Wd2=180,P2=300;Wd3=60, P3=900。所有任务都为D-task,如附图3(a)所示。若T3在t=300的时候提前 完成,导致了40个slack time,如附图3(b)所示。如果将所有这40个单位时 间全部分配给T1,则T1变为P-task,然而却导致了任务T2并未在其deadline之 前完成,破坏了其实时性约束(如果T1和T2在执行过程中均消耗其各自的 WCET),如附图3(c)所示。

因此,为了避免上述情况,在对任务分配slack time之前,需要计算其“可 用”的slack time。为此,本发明引入了一个新的数据结构,Ready-Queue,以记 录static-EDF算法分配给所有任务的“空闲时间”。对一个周期任务集T={T1, T2,…,Tn},由于任务必须要在其下次调用之前完成,因此Ready-Queue中至多 包含n个元素,n为自然数。对Ready-Queue中的元素根据EDF优先级排序, 队头元素Ti拥有最小的deadline,表示为di,i为小于等于n的自然数。

利用Ready-Queue,本发明可以方便地对每个任务计算其可用的slack time。 对即将执行的任务Ti,其可用的slack time为优先级高于Ti且已完成的任务的空 闲时间的总和,由于此时具有高优先级的任务实际执行中已经完成,而其在 Ready-Queue中表明其在static-EDF调度中此时还并未完成。其可用slack time 计算如下:

Slack(i)=Σx|dx<diCx

由于EDF算法是动态优先级任务调度算法,因此在动态EDF算法中,低优 先级任务可随时被高优先级任务抢占。如果一个任务Ti被任务Tj抢占,如果将 本来分配给Ti的slack time分配给Tj,可能会破坏任务Ti的实时性约束,因在抢 占之前,任务Ti已经在低速内存(PCM)中运行了一段时间。因此,任务的抢 占的时候需要避免抢占其已经分配的slack time,为此,本发明引入另一个数据 结构,Preempt-Queue,来维护被抢占任务已经分配的slack time。当Preempt-Queue 非空的时候,动态EDF算法不进行空闲时间的重新分配。

动态EDF算法分配slack time的原则如下:如果slack time足够将该D-task 转换为P-task,则将该任务的此次调用放入PCM中执行(注意:该周期任务仍 然为D-task,只是此次调用的实例放入PCM中执行)。如果slack time不足以将 该任务完全放入PCM中,动态EDF算法将该任务一部分放入PCM中,另一部 分放入DRAM中执行。

当一个D-task被分配了额外的时间,但在其迁移过程发生之前被抢占。当 其从抢占中恢复时,由于抢占的任务可能会产生新的slack time,该部分时间可 分配给该被抢占的任务,可能会避免该任务的迁移。即当任务从抢占中恢复的时 候,动态EDF算法可能会对该任务进行第二次时间分配。如果任务已经从PCM 迁移回DRAM,则该任务会在DRAM中一直执行完,不会被分配额外时间。

为了给出本发明的详细实施过程,下面结合算法伪代码对本发明提出的静态 EDF算法和动态EDF算法做进一步地详细说明。

1、静态EDF调度算法

本发明提出的静态调度算法通过逐个任务放入PCM,然后测试整个任务集 可调度性的方式静态确定任务执行的存储介质。初始的时候所有任务均为D-task, 如果一个任务可以完全放入PCM中执行,则静态调度算法将该任务标记为P-task。 在静态调度算法中,任务的属性一旦确定(D-task or P-task),则在整个任务集的 执行过程中,该任务的属性不会改变。静态EDF调度算法的执行过程如下:

显然,如果一个任务集在EDF算法中是可调度的(纯DRAM主存架构中), 则该任务集在静态EDF(static-EDF)算法中也是可调度的(混合PCM/DRAM 主存架构中)。

2、动态EDF调度算法

在详细表述动态EDF算法之前,表1列出了动态EDF算法中用到的各符号 及其含义。

表1.动态EDF算法中各符号及描述

符号 描述 ti任务Ti的一个任务实例(或任务Ti的一次调用) allocationi分配给ti的任务时间 migTimei任务Ti从PCM迁移到DRAM中的最大迁移时间 migFlagi任务ti的迁移标志位,1表示ti需要从PCM迁移到DRAM exedTimei实例ti在PCM中已经执行的时间(任务Ti为D-task) PTimei实例ti被分配的PCM时间(任务Ti为D-task) Ci任务ti的WCET,若Ti为P-task,则Ci=Wpi,否则Ci=Wdi

本发明采用Ci记录任务ti的最差情况执行时间,如果任务为P-task,则初始 化Ci=Wpi,否则,初始化Ci=Wdi。当且仅当Ci=0时,该任务从Ready-Queue中 移除。

在dynamic-EDF算法中,队列Ready-Queue不断动态更新。队列中的第一 个元素的Ci随着时间递减,当Ci为0的时候第一个元素从队列中删除,此后队 列下一个元素重复此过程。为了效率的考虑,本发明只在任务到达、任务完成、 任务迁移的时候执行Ready-Queue的更新,其更新过程UpdateQueue(t)如下所 示,其中符号t表示自上次事件之后经过的时间。

动态EDF调度算法(dynamic-EDF)的具体执行过程如下:

图4动态EDF(Dynamic-EDF)算法中一个D-task任务的执行流程图。动态 EDF算法给未完成的任务分配额外的时间,但分配算法不会抢占静态EDF算法 初始分配给其他任务的时间。如果slack time足够将该D-task转换为P-task,则 将该任务的此次调用放入PCM中执行(注意:该周期任务仍然为D-task,只是 此次调用的实例放入PCM中执行)。如果slack time不足以将该任务完全放入 PCM中,则算法检查空闲时间是否可以保证任务在PCM中执行至少threshold% (例如50%)。这样做的原因在于,任务的实际执行时间远远小于其WCET,阈 值threshold%可能可以满足该任务完全在PCM执行,从而避免了任务的迁移。 Ready-Queue保证了空闲时间的安全分配,Preempt-Queue队列的引入确保高优 先级任务不会抢占已分配给低优先级任务的时间,即任务的执行可以被抢占,但 已分配给该任务的空闲时间不能被抢占。本发明提出的动态EDF算法保证了: 在EDF算法执行的任何时间,所有任务的完成时间不会比静态EDF算法中的完 成时间晚。相似的理论已经在论文“Dynamic and aggressive scheduling techniques  for power-aware real-timesystems”中给出了详细证明,因此,如果一个任务集在 static-EDF算法下是可调度的,则其在dynamic-EDF算法下依然是可调度的,即 动态EDF算法保证了任务集的可调度性。

此外,在动态EDF调度方法中,如果当前空闲时间不足以将整个任务放入 PCM中执行,该任务将从PCM迁移到DRAM中。任务迁移之后,如果此时被 高优先级任务抢占,该任务不会进入队列Preempt-Queue,因此时该任务的 allocationi≤Ci(动态EDF算法第4行)。当该任务从抢占中恢复的时候,它不 会被重新分配时间,因只有当恢复的任务为Preempt-Queue中的唯一元素时才会 被再次分配slack time(动态EDF算法第6行)。因此,迁移之后的任务将在DRAM 中执行,直至该任务执行完,即每个任务至多被迁移一次。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保 护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本 领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的 保护范围以内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号