一种跨平台敏捷式动态可重构系统架构研究

2017-07-06 13:27臧维明赖炳宇
中国电子科学研究院学报 2017年3期
关键词:跨平台嵌入式分布式

臧维明,华 骅,赖炳宇,邓 文

(中国电子科技集团公司第二十九研究所,四川 成都 610036)



工程与应用

一种跨平台敏捷式动态可重构系统架构研究

臧维明,华 骅,赖炳宇,邓 文

(中国电子科技集团公司第二十九研究所,四川 成都 610036)

嵌入式系统的发展趋势是开放式跨平台,敏捷式重构,分布式协同,系统资源自适应适配等,而当前嵌入式系统架构解决方案普遍存在着功能相对固化,系统业务流程难以灵活重构,缺乏对多类型平台的适应能力等问题,无法匹配日益复杂的系统需求变化。因此本文提出了一种跨平台敏捷式动态可重构系统架构,该架构能够屏蔽硬件平台差异,提供高效的数据通信机制,具备硬件感知和组件动态重构能力,以及模块化图形化的系统配置能力。本文深入讨论了该架构的工作原理和关键技术,并在PowerPC, ARM, DSP等多种嵌入式处理平台上进行了工程应用验证。

跨平台;敏捷式;动态可重构;系统架构研究

0 引 言

近年来随着软硬件的技术发展,系统复杂度迅速提高,一个系统逐渐从简单的单机独立工作状态发展成多机分布式协同,包含PowerPC、ARM和DSP等多种平台,多种操作系统环境(包括各种版本的VxWorks操作系统、Windows操作系统、Linux操作系统),软件与FPGA等硬件紧密配合工作的形态。需要完成的工作类型和规模多样(包括桌面、服务器环境和嵌入式环境),并且用户对系统功能的要求也从以前一个系统完成一种单一功能,发展为要求系统功能可配置,在硬件环境基本不变的情况下,通过系统软件功能的加载和业务流程的定义完成新的系统功能。用户还对系统的可恢复性、可监控性和健康管理等都提出了很高的要求。

上述发展趋势下,各种专用嵌入式处理系统中往往存在多种传感器同时工作,从底层数据采集到上层信息处理,涉及到运行VxWorks操作系统的PowerPC设备、运行嵌入式Linux操作系统的ARM设备和DSP设备等多种平台,并且数据流和处理流程都很复杂。对于上述问题,本文提出一种跨平台敏捷式动态可重构系统架构,简化系统开发的难度,解决分布式环境下的通信问题,屏蔽多种平台和多种操作系统的差异,使得系统开发人员仅仅需要关注业务领域,使用符合直觉的可视化拖拽方式搭建系统功能,做到一键部署与运行,具备功能组件动态迁移等特性。

1 现有架构技术分析

面对复杂的分布式系统环境需求,当前不同行业分别提出了适应各自领域的一些系统架构解决方案,这些架构是为了解决某领域的特定问题的,具有一定的适应性和局限性。大数据处理相关架构和软件通信体系架构(SCA)是目前业界广泛使用的成熟架构,下文分别对这两种架构进行分析。

1.1 大数据处理架构

由于科学计算和当前大数据处理的兴起,分布式处理系统架构如雨后春笋般的出现,最为知名的即为Hadoop[1]、Storm等系统处理架构,它们绝大多数采用Java编写,运行在Linux集群上。Hadoop体系如图1所示。

图1 Hadoop体系结构图

大数据处理架构一般没有考虑嵌入式环境中的使用,当系统中存在大量嵌入式设备时,大数据分布式处理架构基本无法使用。我们面对的多种传感器嵌入式设备环境对功耗、体积、处理实时性等都有较高的要求,往往不支持也不适合使用Java语言进行开发,仅支持C或者C++语言进行开发。嵌入式设备附带的持久存储介质较小,速度也较慢,不适合采用分布式文件系统进行数据管理。基于TCP/IP的网络传输在嵌入式系统中不是主流的数据传输方式,在桌面环境中却往往是唯一的传输方式,嵌入式系统广泛使用的RapidIO互联[2]架构在桌面领域无一涉及。

1.2 软件通信体系架构

软件通信体系结构(SCA)是将计算机领域的面向对象、分布式中间件等技术应用于军事通信,基于“软总线”和波形组件化思想提出的一种开放体系设计架构。通过此架构用以解决软件无线电设备升级维护困难的问题,提升互联互通互操作能力。架构最新标准SCA 4.1草案[3]由OMG组织于2012年发布,加入了可裁剪特性,体系结构如图2所示。在军事通信领域美军已经装备了大量符合该规范要求的软件无线电设备。

图2 SCA体系结构图

由于最初是为了应用于军事通信设备,SCA架构可以适应于运行在嵌入式设备中,并考虑了与FPGA和DSP进行的通信方式。SCA对操作系统接口进行了规范,要求运行它的操作系统必须提供AEP(Application Environment Profile)中指定的服务和接口,从而简化了自身开发的难度,但是广泛使用的Windows操作系统是不满足AEP要求的。SCA在操作系统之上定义了核心框架(Core Framework),提供文件操作、设备管理等功能,屏蔽不同操作系统之间的差别。它使用了CORBA中间件[4]进行分布式环境下的数据和信息交互,CORBA使得分布式环境中的软件之间可以像单机软件一样相互调用。但是由于CORBA实现机制非常复杂,加上市场和技术发展方向变化等其它原因,CORBA不再有发展和完整的技术支持,当前已经基本退出了历史潮流。SCA使用了CORBA提供的函数调用(本质上是对象调用),通过参数传递完成各种通信需求,使得SCA无法脱离CORBA使用,无法使用另一种软件中间件进行替换。

最初SCA架构要求在FPGA和DSP中实现CORBA完成统一的系统通信,但是由于实现难度巨大,后续的标准中提出了硬件抽象层(Hardware Abstraction Layer)接口对特定硬件单元的对外接口进行抽象,定义一系列标准的通信应用编程接口,实现与其它计算单元应用组件的通信功能,使基于FPGA和DSP的专用处理器组件也具有良好的可移植性和可重用性。

2 架构工作原理

本文提出的跨平台敏捷式动态可重构架构软件由核心支撑框架、集成和部署环境以及组件集合的App Store组成,如图3所示。核心支撑框架对下屏蔽各种硬件平台差异,对功能组件的开发与运行提供平台无关抽象,使得用户可以编写具有跨平台移植性、高度可重用的功能组件。核心支撑框架内建了高效数据传输服务和远程方法调用(RPC)机制,形成了分布式控制与管理和组件重构能力的基础。集成和部署环境是架构提供给用户的可视化设计工具,用于配置系统功能,部署功能运行的硬件平台和监控系统的运行状态。

图3 跨平台敏捷式动态可重构系统架构

集成和部署可视化工具一方面从架构的核心支撑框架中获取硬件资源信息,一方面从组件集合的App Store获取业务功能信息,分别形成系统资源视图和系统业务视图。用户根据系统需求组合业务功能和硬件资源,通过架构提供的一键部署和启动功能把系统配置传输给核心支撑框架。核心支撑框架接收到系统配置后使用App Store向分布式硬件平台上加载功能组件,待加载完成自动启动组件运行。在运行状态中,核心支撑框架实时收集各种软硬件状态信息,在可视化工具中动态更新显示。用户在集成和部署可视化工具中向核心支撑框架发送停止指令,核心支撑框架负责停止当前分布式环境中运行的所有组件,并完成资源的清理和回收。

各个功能组件运行时采用基于分布式的管道过滤器(Pipe-and-Filter)模式[5],如图4所示。整个系统由域管理器进行统一管理,其下每一个硬件平台上运行一个节点管理器,用于管理本硬件平台的资源与组件。功能组件运行在各个硬件平台中,通过架构提供的数据通信服务进行数据交互,交互过程和生产流水线类似,在生产流水线上,原材料在流水线上经过一道一道的工序,最后形成某种有用的产品。在本架构中,数据经过一个一个的功能组件,最后得到需要的结果。

功能组件负责数据的处理,它们之间没有依赖关系,一个功能组件不必知道其它功能组件的存在。这种松耦合的设计,使得功能组件只需要实现单一的功能,从而降低了系统的复杂度,也使得功能组件之间依赖最小,从而以更加灵活的组合来实现新的功能。一个系统可以分为各个独立的处理单元,降低耦合性有助于进一步抽象处理单元,提升通用性,提高复用性。由于功能组件相互独立,系统可以并行运行多个功能组件,提升运行效率。

图4 功能组件运行状态

3 关键技术

3.1 系统资源的协同适配技术

当前分布式并行处理技术都是把多个物理机器看作一样平等的实体,每一个运行相同的程序。本架构区分每一个物理机器,可以通过配置在不同物理机器上运行不同的软件组件,通过这些软件组件的协作完成某种系统功能。整个系统中物理机器以系统资源视图的方式提供给用户,架构能够感知物理机器上运行的操作系统、物理内存和CPU参数等信息,使得用户可以根据需要安排运行其上的软件组件。

在系统运行过程中架构还持续采集内存使用量、CPU使用率等各种参数,使得用户可以对当前运行环境情况有全面整体的把握。架构通过采集和统计每一个物理机器上组件运行的时间和效率,可以对机器的计算能力和组件的资源占用量(包括内存资源和计算资源)有定量的估计,这些定量估计会持续记录在架构之中。组件设计人员也可以预先对组件需要的资源进行说明,架构通过组件配置文件记录这些说明,当系统运行时架构分析组件的资源要求和物理机器的计算能力,得到最佳的组件配置方式[6-7],提示用户参考。

3.2 跨平台高效数据交互技术

架构的操作系统抽象层屏蔽了Windows、Linux、VxWorks等平台的差异,使得运行在其上的软件可以以一份统一的代码展现出来。包括对上述各种操作系统的进程、线程(task)、异步管理、网络操作、路径和文件操作以统一的接口调用,并提供跨平台的XML操作、自动大小端转换和序列化功能。

采用基于二进制的高效率序列化和反序列化技术,数据序列化时自动消除冗余长度,有效节约传输带宽。序列化和反序列化功能能够根据所处硬件平台自动判断字节序情况,在后台完成各种数据类型的大小端转换,使得功能组件开发人员从繁琐、复杂的字节序转换中施放出来,关注于数据本身。

对序列化后的数据采用消息队列技术完成通信,与传统消息队列管理系统不同,系统不需要独立部署任何服务进程,架构内部没有采用一个消息服务器(Broker)来存储转发消息,而是直接在发送端缓存,避免了单点失效和传输延迟问题。使用Reactor模式[8]与不同操作系统平台的I/O模型进行通信,以达到高效率的多路I/O性能。

架构对多种通信方式进行了抽象,提供点对点双向通信、询问回答通信和一对多通信(即订阅发布通信)。基于这些通信方式,架构上层软件可以方便的选择需要的通信方式完成底层通信,不需要再考虑心跳、重连或者动态断开与加入等底层细节问题。

3.3 系统智能动态重构技术

架构可以通过系统的智能平台管理接口(IPMI)主动获取当前硬件设备的健康状况,知晓设备温度、是否掉电崩溃等情况,并通过分布式的冗余特点达到动态重构,持续提供服务的能力。本架构通过实现自动部署、组件动态启停和数据通信链路动态修改技术完成系统功能的动态重构。

架构通过内部实现的ftp服务器和ftp客户端完成组件在Windows和Linux操作系统上的自动部署,由于VxWorks操作系统自带ftp服务器端,架构直接使用内部实现的ftp客户端与之通信,完成组件的部署。在系统启动时全部的部署操作由域管理触发,需要运行的组件通过ftp传输到对应的物理平台上;在运行期间,架构感知到某台硬件设备宕机时它会触发域管理器选择一台可以使用的硬件平台,然后在组件库中把宕机类型的组件传输到那里,并动态启动。

组件动态启停技术在Windows和Linux操作系统中通过平台无关抽象层提供的进程封装抽象实现,每一个组件即为一个进程;在VxWorks操作系统中通过平台无关抽象层的动态库加载和线程抽象实现。架构使用统一的接口在VxWorks操作系统下加载组件到系统内存中,再找到程序入口点,然后通过程序入口启动组件成为一个task,至此完成组件在VxWorks操作系统下的动态启动。

经过动态重构后的系统需要关闭其它组件与宕机组件的数据连接,并对新启动的组件建立数据连接。这是基于架构提供的跨平台数据交互技术完成的。

3.4 敏捷的系统模型开发技术

在复杂的系统中往往会把系统功能分解成多个组件,并通过组件之间数据交互协作完成整体功能。在本架构的集成和部署环境中,功能组件以模块化的形式显示给用户,用户使用鼠标拖动定义组件之间的数据传输路径和方向。与传统的图形化配置功能相比,本架构还把硬件资源也以图形化模块的形式提供给用户选择,并且组件模块必须依附于某个硬件资源模块之上,用以表明选择特定硬件平台运行此组件。通过图形化配置完成系统设定后生成XML格式的配置文件,架构读取此配置文件完成分布式环境下组件的加载、连接和运行。集成和部署配置用户界面见图5所示。

图5 敏捷式的系统集成与部署配置方式

架构的核心支撑框架与集成和部署环境的图形化界面松耦合,图形化配置功能不仅可以使用Qt进行桌面软件实现,也可以使用Web技术实现,避免用户安装任何客户端软件。

4 与软件通信体系架构对比

本文架构与软件通信体系架构对比,类似之处在于:

(1)本架构与软件通信体系架构(SCA)都采用了管道过滤器模式,这与嵌入式系统的特点有紧密关系。但是两者在实现方式上有较大区别。

(2)本架构采用与SCA基本兼容的配置文件格式。

差异之处在于:

(1)架构自身管理的方式不同。SCA内部各部分交互依赖于CORBA,本架构自身管理与控制是通过轻量级的远程方法调用(RPC)完成的。

(2)业务组件之间的数据通信方式不同。SCA的业务单元之间数据交互也是由CORBA完成的,往往效率较低;本架构的业务组件之间数据通信时通过消息队列技术完成的,效率很高。

(3)对组件的层级设计不同。SCA在每一个硬件平台上有Device Manager,其下可以管理多个Device,每一个Device下有一个或者多个Component,一共是三层关系。本架构采用一个硬件平台一个节点管理器,其下管理多个功能组件的两层结构,其中FPGA可以理解为一种特殊的功能组件。这样的结构使得硬件平台和在其上运行的组件之间的对应关系更加清晰。

(4)对组件的管理能力不同。SCA仅定义了对整个系统的启动和停止操作,不能单独控制某一个组件的启停,本架构实现了单个组件的精细控制,使得动态重构和迁移成为可能。

(5)SCA标准没有定义状态监控相关内容,本架构内部实现了硬件资源状态监控和组件运行状态监控功能。

(6)SCA标准没有定义组件部署相关内容,大多数SCA实现的厂商使用集成开发环境(IDE)完成组件的部署,部署方式各不相同。本架构内建部署相关流程,在不借助任何外部工具的情况下能够完成组件在分布式环境中的部署操作,使得在系统运行期间动态部署某些组件成为可能。

5 工程应用与效果评价

5.1 工程应用与验证

在某监控系统的工程应用中,利用本文架构在存在ARM、PowerPC和DSP几种硬件平台的系统环境下,分别定义了两种不同的系统处理流程,形成了不同的系统能力,满足了工程应用的实际需要。在系统概念验证与初样阶段,通过分析系统功能、性能需求,完成组件功能划分和串并处理流程的定义,搭建了具有完整功能的系统,其基础业务模型如图6所示。

图6 某监控系统基础业务模型

图7 某监控系统业务扩展模型

在实际应用环境中安装有一对高分辨率摄像头,用户也对系统能力提出了更高的要求。得益于本文架构提供的“算法可加载、规则可配置、流程可定义”的能力,在原有基础业务模型的状态下,对软件功能组件进行替换,对流程进行编排,快速开发出了业务扩展模型,如图7所示。在图形采集与预处理PowerPC机器上增加图像分块组件,把高分辨率图像分解为多个子图,并增加一个并行处理计算单元,提高系统处理吞吐量,获得更好的实时监控效果。配置第二台采集与预处理机器,获取另一个摄像头采集的数据。利用双摄像头的优势,增加了双目景深计算组件,使得系统对监控环境中的位置信息有更精确的理解。最后替换告警判断算法,加入距离和物体的关联信息,综合判断降低虚警率。

5.2 效果评价

在此监控系统的工程应用中,系统设计者可以方便的选择不同的图像增强预处理算法、分类器算法和告警判断算法,评估算法运行效果;系统运行期间,系统维护者可以使用新算法动态替换已有算法,立即提升功能和效果。每种组件有明确的数据输入和结果输出接口,使组件开发人员从系统流程和底层硬件的复杂度中解放出来,专注于业务功能的开发。通过功能组件的配合使用,自由定义各种运行规则,并与特定硬件解耦,本架构保证了该工程应用的高质高效完成。

对比原有系统开发流程和架构,使用本文架构进行开发的项目缩短了研发周期,显著增加了代码复用度,极大降低了测试工作量,进而提升了产品质量。

6 结 语

本文分析了当前一些分布式架构的特点和问题,根据系统研发的实际需要,提出并实现了一种跨平台敏捷式动态可重构系统架构,通过在PowerPC, ARM, DSP等多种硬件平台组成的系统中进行工程验证,表明此架构解决了复杂系统环境下,系统开发困难、灵活性差、处理流程和功能固化等问题。

[1] MURTHY A. Apache Hadoop YARN - background and an overview [EB/OL]. [2016-04-08] http://hortonworks.com/blog/apache-hadoop-yarn-background-and-an-overview/.

[2] Tom Cox.RapidIO Technical Overview and Spec 2.1 Features [EB/OL]. http://www.rapidio.org, 2010.12.

[3] Joint Tactical Networking Center (JTNC). SCA_4.1_DRAFT_Sca Specification Version: 4.1 [S].2014-12-31.

[4] Michi Henning, Steve Vinoski. Advanced CORBA Programming with C++ [M]. Addison Wesley. 1999.

[5] Frank Buschmann, Kevlin Henney, Douglas C. Schmidt. Pattern Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing [M]. Wiley. 2007.

[6] Abrishami S, Naghibzadeh M, Epema D. Deadline-constrained workflow scheduling algorithms for IaaS clouds [J]. Future Generation Computer Systems, 2013, 29(1):158-169。

[7] 叶常华, 左朝树. 基于多核处理器的节能任务调度方法[J]. 中国电子科学研究院学报, 2012, 7(2):204-207.

[8] SCHMIDT D C. Reactor: an object behavioral pattern for demultiplexing and dispatching handles for synchronous events [J]. Compilers Principles Techniques & Tools, 1999, 261(2):201-208.

Research on Cross-platform Agile Dynamic Reconfigurable System Architecture

ZANG Wei-ming, HUA Hua, LAI Bing-yu, DENG Wen

(No.29 Research Institute of CETC, Sichuan, ChengDu, 610036)

The trend of the embedded system is open cross-platform, agile reconstruction, distributed collaboration, system resource adaptive adaptation. However, the software architecture in embedded system usually with fixed functionality, lack of flexibility of processing, lack of adaptability to different type of platforms. It is difficult to match the increasingly changing of complex system requirements. Therefore, this paper proposes a cross-platform agile dynamic reconfigurable software architecture that shields the hardware platform differences and provides efficient data communication mechanisms with hardware awareness and component dynamic reconfiguration capabilities, as well as modular graphical system configuration capabilities. This paper discusses the principle and key technologies of this architecture in depth. Architecture already used and verified on a variety of embedded processing platforms such as PowerPC, ARM, DSP devices.

cross-platform; agile; dynamic reconfigurable; system architecture research

10.3969/j.issn.1673-5692.2017.03.001

2017-04-01

2017-06-05

装发重点实验室基金项目资助(9140C100602150C10046);国家自然科学基金资助项目(61271330)

TP311.52

A

1673-5692(2017)03-225-06

臧维明(1961—),男,四川人,研究员,主要研究方向为系统工程与软件架构、信号处理等;

E-mail:doubhua@163.com

华 骅(1981—),男,四川人,工程师,主要研究方向为软件架构、数字图像处理等;

赖炳宇(1981—),男,四川人,高级工程师,主要研究方向为嵌入式软件架构、信号处理等;

邓 文(1978—),男,广西人,高级工程师,主要研究方向为嵌入式软件架构、信号处理等。

猜你喜欢
跨平台嵌入式分布式
基于RTDS的分布式光伏并网建模研究
跨层级网络、跨架构、跨平台的数据共享交换关键技术研究与系统建设
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
一款游戏怎么挣到全平台的钱?
TS系列红外传感器在嵌入式控制系统中的应用
嵌入式PLC的设计与研究
基于C++语言的跨平台软件开发的设计
基于预处理MUSIC算法的分布式阵列DOA估计
嵌入式单片机在电机控制系统中的应用探讨
基于DDS的分布式三维协同仿真研究