可穿戴医疗传感器中用于限制峰值电流消耗的任务调度
摘要
在本案例中,小型嵌入式系统(即可穿戴医疗设备)面临显著的工程挑战:一方面需要降低功耗以延长电池寿命,另一方面又要支持日益增长的处理需求,以实现更复杂的智能应用。现有研究主要集中在通过硬件设计和智能的软件任务调度方法来实现低功耗运行,目标是最小化总耗电量。然而,这种方法不可避免地会导致软件任务与外设同时运行,从而在某些时刻产生较大的电流峰值,给电池和电源调节器带来短期电气应力,并增加电磁干扰辐射。本文提出,在使用实时操作系统(RTOS)的嵌入式设备中,若任务调度器能够获知每个任务所需的电流曲线信息,则设备的功耗配置文件将得到显著改善。这使得调度器可以将高电流需求的任务在时间上分散安排,从而限制系统所消耗的峰值电流。我们提出了一种向任务调度器提供任务功耗配置文件信息的解决方案,并讨论了我们的应用场景,结果明确表明该方案带来了显著优势。
关键词
可穿戴设备;低功耗;嵌入式;任务调度器;医疗保健
1. 引言
个性化医疗设备的使用,从可穿戴健身追踪器到智能手机应用程序,正变得越来越重要。如今,我们看到基于人工智能(AI)的智能设备正在应对慢性疾病患者(包括阿尔茨海默病、脑瘫、慢性阻塞性肺疾病(COPD)、糖尿病、高血压、多发性硬化症、肥胖和帕金森病患者)的日常挑战。其中一个主要挑战是在保持设备轻量级的同时,将足够的计算能力嵌入可穿戴设备中。这给电池重量和尺寸带来了严苛的限制,因此电源管理至关重要。
能效一直是一个长期存在的研究挑战,通常通过低功耗设计来解决,从而使设备在两次充电之间能够长时间运行。这对于面向痴呆症患者群体的设备尤为重要,因为这些用户可能忘记为设备充电。
为了使电池供电设备在两次充电之间能够长时间运行,研究主要集中在硬件解决方案、软件解决方案以及两者的混合方案上。实现低功耗解决方案是通常被视为通过将中央处理器(CPU)置于低功耗空闲状态(即睡眠模式)以降低电池电流,与需要CPU以全时钟速度运行来执行任务代码从而消耗电池电流之间的权衡。尽管市场上存在大量基于通用操作系统的智能设备,但这些通用且广泛使用的设备旨在支持多种功能,因此功耗相对较高。另一方面,研究表明,低功耗嵌入式解决方案可来自基于实时操作系统(RTOS)的设备,这类系统专门针对资源受限的嵌入式设备进行优化,其应用程序仅专注于特定使用场景。
实时操作系统(RTOS)的一个重要组成部分是任务调度器(TS),它负责决定软件任务何时被抢占式执行,通常基于分配的任务优先级[1]。此外,电源管理也是实时操作系统的一个重要设计使能器。现代实时操作系统通过仅在需要处理时唤醒中央处理器(CPU),并在所有任务完成或处于等待状态时进入低功耗空闲状态来实现这一目标。尽管动态电压频率调节(DVFS)和动态电源管理(DPM)是重要且热门的研究课题[2—4],但本文关注的是通常只能处于运行或空闲状态、并仅使用一种核心电压的小型嵌入式设备。已有研究表明,当任务调度器(TS)使系统进入空闲状态时,电池电流会降低,从而使某些电池化学特性能够恢复部分电量[5],最高可达20%。因此,此类占空比循环可轻松通过实时操作系统机制实现。
李等人[6]提出了一种专注于节能的动态任务调度算法。该研究考虑了算法的动态调度,以实现云计算平台上的功耗全局最小化。
刘等人[7]研究了一种在移动设备上的延迟最优任务调度技术,旨在最小化本地CPU负载的功耗或将任务卸载到云边缘服务器。计算任务根据任务缓冲区的排队状态、CPU的执行状态以及传输单元的状态进行调度。他们的算法寻找一种能够最小化总功耗的最优解,但显然,搜索过程本身也会消耗功率。
格弗兰等人[8]使用神经网络(NN)来获得全局最小化功耗调度,而李和吴[9]为其任务调度器提出了一种蚁群优化(ACO)搜索方法。尽管这两种方法都能实现全局功耗节省,但由于执行优化搜索需要较大的功耗,这些方案主要面向高端计算系统,而非可穿戴医疗设备。
阮等人[10]通过考虑完成时间和运行成本,提出了针对物联网(IoT)任务调度的各种算法的有趣工作。尽管该研究本身并未涉及功率调度,但其中提出的一些概念也可能用于电源管理。
艾哈迈德等人[11]提出了一种用于关键任务系统中实时任务调度评估的形式化方法。此类研究对医疗物联网系统具有帮助,但他们未考虑电源管理。
扎甘等人[12]提出通过使用硬件架构而非基于软件的实时操作系统来实现任务调度。
辛格等人[13]通过考虑处理时间流来研究数据中心的任务调度,以最小化数据中心的总能耗。该研究提出了一种有趣的功耗模型,但其工作重点是最小化总能耗,而非限制峰值电流。
艾哈迈德等人[14]指出,由于小型嵌入式设备具有有限资源(功耗和内存),因此实时操作系统应考虑所需的任务,以实现仍能保证正确操作的最小CPU功耗。该研究提出了一种基于设备配置文件的资源感知方法来最小化任务。为每个设备建立功耗配置文件是一个有趣的想法,但该研究的重点仍是CPU功耗的全局最小化,而非限制峰值电流。
Chowdhury和Chakrabarti[15]通过考虑电池供电系统的功率配置文件以最大化电池中的剩余电量,提出了有趣的研究工作。他们的系统采用了动态电压调节(DVS),但该技术目前仅存在于高端CPU中,以当前技术水平而言不适用于我们的场景。此外,这项工作虽有助于实现整体功耗的降低,但并未限制峰值电流需求。
从文献中可以明显看出,在电力方面,以往的研究目标是通过任务调度来全局最小化消耗的功率,而不是限制峰值功耗。据作者们所知,目前尚无研究考虑过针对限制峰值电流的任务调度。这篇立场论文提出,在低功耗嵌入式系统中,特别是电池运行至关重要的可穿戴医疗设备中,若操作系统内嵌的软件任务调度器能够获知每个任务的电流消耗情况,从而将高电流任务分时执行,以保证最大峰值电流消耗不超标,则系统可显著受益。限制峰值电流有助于内部稳压器和电池管理电路的设计,同时由于设备启动状态下的电流峰值更低,还可支持能量采集系统和实现欠压恢复。本文首先通过我们的实际应用场景说明了此类系统需求的由来,然后提出了我们解决该问题的总体方案。
本文组织如下:第2节讨论了开发感知功耗的调度器以降低峰值功耗的需求概念。第3节介绍了我们提出的解决方案,第4节进行了讨论,第5节给出了结论。
2. 应用场景
本文的观点源自于在SPHERE(https://www.irc-sphere.ac.uk)项目中开发可穿戴设备的经验。
SPHERE是一个大型跨学科研究项目,旨在创建用于家庭医疗保健监测的技术和算法,目标是帮助人们更长久地居家生活。SPHERE架构将环境传感器、视频传感器和可穿戴传感器集成到智能中心和骨干网络中[16],通过传感器数据融合以及数据挖掘实现智能处理和数据驱动决策。
SPHERE可穿戴设备[16]专为低功耗运行而设计,以实现无处不在的监测;否则可能影响用户行为。它基于德州仪器CC2650(美国德克萨斯州达拉斯)[17]片上系统(SoC),支持蓝牙4.2[18](通常称为蓝牙低功耗(BLE)或蓝牙智能)或802.15.4[19]。该SoC包含一个ARM Cortex‐M0 CPU,专门用于控制无线接口,以及一个ARM Cortex‐M3 CPU,用于运行应用程序代码。
SPHERE可穿戴设备还配备了一个闪存设备[20]用于本地永久存储,两个低功耗加速度计[21]支持无陀螺仪的三维空间测量[22],以及一个惯性测量单元(IMU)[23]。CC2650在SoC内部确实带有DC‐DC转换器,允许SoC在1.8伏至3.8伏电压下工作。然而,为了将100mA锂聚合物(LiPo)电池(典型电压为4.2V到3.6V)的电压降至1.8伏供SoC核心使用,采用了高性能且高效的外部降压转换器[24]。该设备还具备通过Qi标准无线充电的功能。该可穿戴设备使用实时操作系统(RTOS)[25]进行编程。
SPHERE可穿戴设备被配置为在非连接模式下使用蓝牙低功耗无线电[26]。该可穿戴应用程序将感知到的运动、电池电压和片上系统核心温度测量值打包成一个不可连接的蓝牙低功耗广告数据包(ADV),并由分布在住宅中的被动蓝牙低功耗中心检测。在蓝牙低功耗中,设备通过依次在广播信道(37、38和39)上传输来通告其存在[26]。房间中心捕获封装的数据,并将数据转发以与视频数据进行融合。通常情况下,当每秒发送一个BLE ADV数据包时,该可穿戴设备一次充电可持续运行四周,同时也获取了更频繁传输的变体。上述配置下的SPHERE可穿戴设备在部署时工作良好。
随后,SPHERE可穿戴设备需要用于另一组实验中,以在其家中连续三天监测帕金森病患者,目的是捕捉称为接近跌倒的运动事件,这些是实际跌倒前发生的标志性动作。该应用要求惯性测量单元以60赫兹持续采样运动数据,并将数据存储到本地闪存中,三天后再进行下载。惯性测量单元每秒产生60次中断,请求中央处理器读取其数据。由于向闪存写入单页数据时的电池电流为12.4毫安(SoC核心电流加上闪存页写入电流),因此在这种情况下运动数据不会通过蓝牙低功耗流式传输,以节省功耗,实现三天运行。[27],
从IMU读取数据并将其写入FLASH页时的电池电流曲线如图1所示,覆盖整个惯性测量单元中断服务例程。在图1中,点(a)表示在IMU中断之前,CPU处于空闲状态;因此,1.2毫安的可穿戴设备电池电流主要由始终开启的IMU决定。当IMU产生中断时,系统级芯片在点(b)从低频时钟切换到高频时钟。一旦高频时钟开始运行,CPU便能完全运行并使用高频时钟执行代码,此时电池电流上升至5.2毫安。在点(c),通过系统级芯片的SPI总线读取IMU中的数据,在点(d)进行后处理,随后在点(e)将数据写入本地闪存,导致电池电流显著达到峰值(12.4毫安)。然后,在IMU仍在运行的情况下,系统级芯片在点(f)返回空闲状态。
中断服务程序(ISR)期间的电流曲线)
在我们的近跌倒检测应用中,使用了可连接的蓝牙低功耗模式,以使智能手机/平板电脑通过应用程序经由蓝牙低功耗控制可穿戴设备,从而让用户能够启动/停止日志记录,并下载运动数据。因此,该可穿戴设备每秒通过一次可连接蓝牙低功耗广播过程广播其存在,在图2中的点(g)处显示出三次从10.5毫安到12毫安的峰值。用户可以连接该设备以启动日志记录过程,然后断开连接,使设备在三天内持续将数据记录到闪存中,同时设备会周期性地广播其存在,以便主机连接到该设备。
然而,经发现,该设备在成功运行24小时后会发生电压过低现象。经过调查研究,我们意识到ADV传输过程与FLASH页写入过程是异步的。当BLE ADV和FLASH写入过程同时发生时,从降压转换器汲取的电流包含了SoC核心电流、写入FLASH的电流以及BLE ADV传输所需电流,如图3中点(h)所示。通过使用外部降压电路以所需的1.8伏驱动SoC核心,从而最小化功率损耗,但其后果是当出现大瞬时电流时,降压转换器需要时间响应,导致SoC核心电压下降,从而引发电压过低。
3. 对实时操作系统任务参数的建议修改
从文献中可以明显看出,尽管已有许多研究致力于创建任务调度器以全局最小化电能消耗为目标来调度任务,但尚未有研究专注于设计任务调度器以限制峰值电流。引入此类约束不仅能够简化可穿戴设备的电源输送电路,还有助于电磁干扰降低。
虽然艾哈迈德等人[14]提出实时操作系统应基于设备配置文件采用资源感知方法,考虑所需任务以实现最小的全局CPU功耗,但我们认为,可以在任务实例化时向调度器提供每个任务所需的电流消耗信息,从而使任务调度器能够随时间分散高电流任务。
操作系统任务调度器的设计和修改不在本工作的范围之内。相反,我们提出这样一种观点:如果任务调度器能够了解每个任务所需的电流,则在可穿戴设备的电力输送方面将获得显著优势。为了构建这样的任务调度器,需要为每个软件任务提供一个预期电流配置文件。显然,一个软件任务本身需要中央处理器执行该任务所消耗的电流,但也可能使用外围设备(例如,FLASH存储器页写入),并伴随执行该任务所需的电流。在所需外围设备电流相对于整个软件任务持续时间较短的情况下,可以将该任务拆分为多个并发任务,正如第2节中提出的应用场景。
为了创建软件任务,每个任务都需要通过调度器在运行时进行任务实例化。典型的任务实例化代码如图4所示。从图4中可以看出,创建了一个结构体
taskParams
以包含所需的任务参数,包括任务栈
TaskStack
(大小为
TASK_STACK_SIZE
)和任务优先级。然后,任务调度器可以在运行时使用
taskParams
中的信息以及任务地址在调度器中构建新任务。
由于参数用于定义任务,因此本文引入了一个额外的参数称为
additional_current
,可添加到结构中以通过预期附加电流(在任务运行时需要考虑的定义的单位)(由于外设如FLASH或无线电收发器操作),如图5所示。通过这种方式,可以完全了解任务执行时所需的电流,从而实现任务调度以限制峰值电流。FLASH写入任务向FLASH设备发送命令,启动其将页面内存传输到FLASH存储器中的内部过程,正是在此传输过程中,FLASH会消耗大电流。因此,FLASH写入任务被有意保持为短持续时间,以便我们可以将其近似视为在整个任务期间具有恒定电流(即FLASH写入电流)。可以使用编译时指令来指定给定系统的可接受峰值电流或目标受限峰值电流,调度器将安排任务以满足该目标受限峰值电流。如果调度器在给定峰值电流约束下无法安排任务,则会生成运行时错误,类似于实时操作系统因内存空间不足而无法管理新实例化任务的情况。
在图3所示的特定情况下,FLASH写入电流与BLE ADV传输同时发生,我们应用了调度器的概念来延迟FLASH写入过程,结果如图6所示。从图6可以看出,FLASH写入过程(点(e))在时间上被推迟,使其电流与BLE ADV传输(点(g))分离,从而成功限制了从电池中消耗的峰值电流。
4. 讨论
通过我们所经历的应用场景以及本文所呈现的结果,我们提出了一项立场声明:在执行任务调度过程时,若对嵌入式RTOS任务调度器进行改进,使其进一步考虑每个任务(包括外设和无线电收发器)处理所需的电流,则可带来显著优势。这不仅仅是通过调度来最小化功耗,还包括对峰值功耗的限制。显然,过去的研究在确定何时运行任务以最小化整体电流方面已非常成功,这种方法对于延长电池供电设备的使用寿命非常有用。然而,微型医疗传感器不仅受限于其可用的总电流,还受限于因电池和电压调节器能力有限而无法提供大电流峰值。将随时间消耗的电流进行分散,而不是出现大电流峰值,对于简化驱动可穿戴医疗设备的电源系统具有显著优势。
在许多应用场景中,随着时间推移会出现活动峰值(例如采样传感器数据),从而导致电流出现较大的峰值,这并不令人意外。然而,正如本文所述,调度器可以将任务推迟到未来某个时间点,以限制峰值电流,而实际上并不会消耗更多的电流。
具备限制电流能力的感知功耗的调度器具有重要意义。这种技术不仅可用于智能手表和智能手机,还可用于智能汽车的任务控制,因为在智能汽车中可能存在相当大的电流峰值。
5. 结论
本文探讨了在嵌入式系统中使用任务调度以限制峰值电流的方法,特别是针对对功耗敏感的可穿戴医疗设备。我们指出,此类设备在某一时刻可能会产生峰值电流,导致电池和电源电路出现短期的峰值需求,进而引起电源电压下降和欠压现象,并给能量采集系统带来困难。
我们提出,实时操作系统(RTOS)任务调度器在决定任务调度时间时,不仅应考虑任务优先级,还应考虑每个任务的功耗(电流)需求。为了避免出现大电流峰值,本研究将电流特性曲线与软件任务相关联。因此,调度器的目标是将需要大电流消耗的任务在时间上错开,而不是仅仅优化整体功耗。
我们的任务调度器可以延迟具有大电流特性的任务,从而将电源提供的电流消耗限制在给定范围内。
通过限制设备可能消耗的峰值电流,可以实现更简单的电源设计、能量收集,并减少大电流脉冲引起的电磁干扰效应。
1039

被折叠的 条评论
为什么被折叠?



