可穿戴计算机操作系统采用了 Android 系统。
(5)驱动程序:通过安装不同的驱动程序为相应的硬件需求提供支持,本文可
穿戴计算机主要包含了 FPGA 驱动和 PCIe 驱动。
(6)硬件支撑平台:由可穿戴计算机与 FPGA 组成,是整个软件平台的基础。
而主处理器与协处理器的相互合作,使平台在性能与功耗方面达到了平衡,通
过软硬件协同的方式满足可穿戴设备的要求。处理器架构图如图 3-2 所示。
3.4 面向关键任务的容错调度算法
3.4.1 已有的任务调度算法分析
Baruah 提出的模型 AMC [44] 能够在系统提供额外运行时间的基础上,为调度
提供更高的可靠性。该算法提出了系统关键等级的切换策略:任何任务的执行时
间超出了 C(LO) ,那么系统就会切换至高关键等级,同时将所有低关键等级任务
丢弃,并将系统保持在高关键等级。现有的许多研究都是基于该模型的,主要的工
作都集中在了改进任务分配阶段的分配策略和在系统高关键等级下对低关键等级
任务的优化。该模型能在系统负载较重时,以低关键等级任务为代价,在一定程度
上保证高关键等级任务的完成。然而却无法处理高关键等级任务出现的瞬态故障,
无法保证可穿戴设备所要求的高可靠性,因此需要为关键任务引入容错措施。
冗余机制被广泛应用于各类容错系统中,是一类主要的容错技术,该技术以
资源为代价来换取可靠性。冗余有三种:信息冗余、空间冗余和时间冗余 [45] 。信
息冗余是指利用冗余的数据来提供可靠性,例如汉明码。汉明码在数据流中插入
验证码,通过重复存储来防止数据的丢失或错误;空间冗余则是指在程序运行过
程中,通过设备或模块的冗余来保证系统的可靠性;时间冗余主要是通过定时保
存系统的信息,当发生故障或异常后通过保存的信息来对系统进行恢复,以时间
为代价为系统提供可靠性,例如检查点机制。检查点机制是一种有效提高系统可
靠性的技术,通过设置检查点来实现容错。程序在执行过程中,以一定的时间间
隔来记录内存映像以及日志,当硬件资源出现异常时,通过最近的检查点所存储
的信息来进行恢复。系统级容错由系统自动保存检查点,缺点是开销较大。
在基于双模冗余机制的算法中,使用两个处理器处理同样的工作,通过比对
运行结果来判断是否出错。基于双模冗余的容错算法只具有检查错误的功能,不
具有纠错的功能,这个特性限制了该类算法的使用场景。而基于三模冗余的容错
算法通过三个处理器处理同样的工作,采用多数原则,具有一定的纠错功能,能大
幅提高系统的可靠性,但是与双模冗余相比,会造成更大的计算开销。由于可穿
戴计算机有体积小、功耗低、计算资源紧张的特点,如何合理地设计冗余来平衡
可靠性与计算开销,是本章研究的重点。
3.4.2 异构多核系统与任务模型
本文通过将异构多核系统与任务抽象为数学模型,来对基于异构多处理器的
任务调度问题进行分析。
3.4.2.1 调度模型
待处理的任务到来后被存储在任务队列中。在对任务进行调度时,调度模块
将根据任务的信息和处理器的状况,根据调度算法将任务发往处理器所对应的任
务队列,同时更新处理器状态表,在任务完成后,更新任务状态表。为了使调度平
台能调用 FPGA ,使用专门的线程对 FPGA 进行控制。 FPGA 根据调度策略动态配
置计算任务区域的 IP 核。调度模块可以对多个线程做出响应,对任务状态表进行
统一管理。面向关键任务的调度模型如图 3-3 所示。
3.4.3 同步机制
基于双模冗余的容错调度算法通过将任务发往不同的处理器来保证系统的可
靠性,当其中一个版本的任务由于故障或异常导致错过截止时间时,另一个版本
能够在截止时间之前完成任务。该特性不但能够为任务提供可靠性保证,也能够
维持良好的性能。因此基于双模冗余的容错算法能够同时保证可穿戴设备的实时
性与可靠性。系统中,两个模块同时出现故障是低概率事件,所以冗余算法在运
行时,至多只有一个版本任务出现错误 [46] 。在该合理假设下,容错算法将所有任
务都重复运行两次,浪费了大量的计算资源。在异构处理器架构上,不同的处理
器拥有着不同特性,这也是异构架构的优势。而每一个单独的核,都可以单独完
成系统的计算任务。相同类型的任务在不同核心上不同的运行时间也会直接导致
不同的核心在处理任务时有着不同的效率。在任务开始执行一段时间后,不同处
理器完成的任务的进度会不同。而基于双模冗余的容错调度算法会控制系统中所
有的处理器处理所有计划中的任务,包括已经被其他处理器完成的任务,这种情
况浪费了可穿戴设备珍贵的计算资源。
因此,本文提出一种同步机制对基于双模冗余的容错调度算法进行改进。在
该同步机制内,处理器在运行任务时若接收到该任务已经完成的消息,则放弃当
前的任务。这样,所有的处理器在处理任务时都会以最快的核为基准。如图 3-4 所
示,在时刻 T 0 ,调度器将任务 v 0 复制并且分别发往发往 Core1 和 Core2 两个核心,
v 1 为调度模块即将调度的下一个任务。到了时刻 T 1 ,如图 3-5 ,此时各处理器经过
一段时间的运行,处理进度已经不同, Core1 刚处理完 v 0 、 v 1 和 v 2 ,即将处理 v 3 ,
而 Core2 刚处理完任务 v 0 和 v 1 ,即将处理 v 2 和 v 3 。而 v 2 已经由 Core1 完成并提交,
所以根据同步机制,此时应该进行一次同步, Core2 放弃执行任务 v 2 ,如图 3-6 所
示。
3.4.4 改进的容错调度算法
在本章算法中,由于考虑到异构多核系统中不同 CPU 的计算能力不同的特性
以及可穿戴设备的需求。在任务选择阶段,根据设备特点选择合适的任务进行调
度。在处理器映射阶段,对处理器进行了进一步划分,充分利用了异构系统的特
性。通过这些机制,一方面保证了系统的可靠性;另一方面提高了系统对任务的吞
吐率,具体如下:
(
1 )任务选择阶段
最早截止时间优先( EDF )调度算法在是理论上最佳的 [47] 。使用该算法对任
务进行调度,能够使得每个任务都满足截止期限的要求并且 CPU 利用率将会是
100% 。然而,在实际中,由于进程的上下文切换和中断处理的开销,要达到这种级
别的 CPU 利用率是不可能的。频繁切换线程的优先级,将带来较大的调度开销 [48] 。
虽然动态优先级调度算法在对资源的利用率方面要高于静态优先级调度算法。但
是根据上文对可穿戴设备的分析得知,基于具体应用场景的可穿戴设备往往在短
期内不会频繁地切换任务的种类。因此我们选择不可抢占式 EDF 调度算法对任务
队列中的任务进行调度,即总是选择截止时间最早的任务进行调度,如算法 3-1 所
示。
信迈提供RK3399/RK3588+FPGA的解决方案。