技术分享|可插扩多核板卡的汽车智能分布式实时系统架构设计与实现
1. 背景自动驾驶域、智能座舱域的功能庞大而复杂,通常基于异构分布式芯片的计算平台来满足不同的计算需求。通过分布式系统框架的设计,可将计算负载分散到不同的计算系统或计算芯片中,通过并行计算来提高系统的稳定性和计算效率。通过使用分布式系统架构,自动驾驶系统的故障管理可以变得更加方便。安全是运行和开发自动驾驶系统的最重要因素,仅使用单个计算单元来运行自动驾驶的所有功能,如果单个计算系统因硬件或软件出现故障,则可能非常危险。由于分布式自动驾驶系统由多个计算模块组成,每个子模块可以检查其他计算模块的健康状态,并作为故障时的冗余备份或接管。分布式系统架构可以将基础软件、应用、算法等软件模块分布在不同的计算芯片上独立运行,并按需实时同步汇聚、弹性扩展,开发者可以独立开发和测试各个子模块,从而提高开发效率。
2. 分布式系统需求构建能够支持从L2 到L4 平滑过渡的汽车智能分布式系统,需要满足低成本、低功耗、高稳定性、高实时性要求,能够支持智能驾驶域,并可扩展支持包括智能座舱域等多域计算系统。该系统需能够:
-
提供可线性叠加的计算平台,支持L2-L4的智能驾驶应用;
-
支持负载均衡并且可扩展,达到整个系统算力和计算资源优化利用;支持大量异构传感器接入,支持高阶自动驾驶功能,系统可抗住大数据处理峰值,至少达到50Gbps以上的接入数据处理带宽。
-
稳定可靠,包括可靠冗余、多级监控、满足功能安全。
-
确定性和可靠性通信,通过时钟同步、时间触发通信等技术来实现。
-
支持整车多域功能的集成。通过虚拟化(Hypervisor)实现在同一硬件平台上灵活承载异构操作系统,支持包括ADAS/AD、DMS、BMS、VCU等多域功能,并满足不同域的实时性等性能要求。
3. 设计思路就开发ADAS/AD应用而言,分布式系统具有如下优点:
-
可扩展
-
能够进行主/主、主/备等不同方式的故障管理
-
便于维护
-
能够满足多种系统需求
然而分布式系统的功能配置并不简单,首先它要考虑很多限制条件,例如每个计算单元的计算能力、通信网络特性以及传感器/执行器的接入位置;其次,不同类型的计算单元和操作系统内核特性,要部署不同的自动驾驶系统子模块;最后,通信系统的延迟和抖动可能降低自动驾驶的整体性能。为实现应用功能的分布式计算, 开发分三步: 软件组件设计、计算单元映射和功能实现。以下将讲解一个基于国汽智控车控操作系统ICVOS实现双Orin分布式计算的示例。
3.1 软件组件设计
软件组件代表封装的自动驾驶应用相关的功能模块。软件组件设计步骤的重要环节,包含自动驾驶组件的功能设计,并定义组件之间的信息/数据流。软件组件中,传感器以及执行器之间共享信息/数据的连接,通过虚拟功能总线 (VFB) 来定义。VFB虚拟功能总线是通过通信抽象实现的,包含两种通信方式:客户端-服务器CS、 发送者 - 接收者SR。虚拟功能总线使用国汽智控自研的AICC中间件实现同一计算单元内以及计算单元之间的通信。 软件组件如上图所示, 包括感知、规划等模块, 根据具体的应用功能,模块的颗粒度还可以进一步细化。
3.2 计算单元映射
软件组件应分配到或映射到分布式计算单元上。如何分配部署软件组件,需要根据经验来进行,我们主要考虑以下指南和约束:首先, 传感器或执行器的计算应部署在传感器或执行器附近的计算单元上,并包含操作传感器或执行器的特定软件组件。第二, 软件组件支持DAG这种有依赖关系的逻辑拓扑图,显示并定义节点/任务之间的依赖关系。第三,一个计算单元中所有部署的软件组件应在预定的时间内工作,可通过数据流的静态编排实现。第四、部分软件组件由于硬件的关系,可能有操作系统 (OS) 依赖性接口或可用库。第五、不同计算单元之间交换的信息量不应该超出通信带宽或通信能力。第六,可用的硬件外围设备受计算单元类型的限制。如上图所示, 考虑到硬件安装、所有软件组件的执行时间或其他限制,上面示例中三个软件组件,经过以上的考虑后,部署到两个计算单元。目前计算单元映射还是由人工在设计阶段来完成。
3.3 功能实现
考虑到计算单元的性能、操作系统、传感器和执行器接口以及网络等约束,软件组件可能被分配到特定的计算单元,软件组件的功能实现可能取决于计算单元平台的特性;这种依赖关系会增加功能实现的成本和软件的维护工作。为减少软件组件的依赖问题,有必要开发一种适用于不同计算单元的分布式通用软件平台,即适用于分布式计算的OS。
4. 分布式系统视图
汽车分布式系统的软件平台是一个分层架构,如下图所示
平台共三层:应用软件层、分布式OS层,传感器数据分发层。应用软件层包含软件组件的具体功能实现。分布式OS层分两层:一个系统软件层,由操作系统、通信模块、输入和输出 (I/O)硬件抽象模块和复杂的驱动程序组成;另一个是功能软件层,包括数据流框架、基础服务等。传感器数据分发层负责数据的采集、预处理以及分发。
5. 基于双Orin的分布式系统实现
5.1 负载均衡
通过硬件加速的全局数据获取单元DAQ(Data acquisition ),采集所有传感器数据, 然后通过 PCIe switch传输到各个板卡或计算单元。如下图所示,基于刀片存储(Memory blade)的设计,通过PCIe fabric实现CPU和存储器的解耦,来实现跨板存储器访问(memory access),从而实现传感器数据的交换。
5.2 虚拟功能总线
虚拟功能总线主要负责各类应用软件模块之间的通信,包括本机内部通信和跨机通信。本机内部通信实现零拷贝, 而跨机通信基于DDS。
5.3 功能安全自动驾驶分布式系统的可靠冗余设计对于整个系统的可靠稳定运行和功能安全至关重要,特别是高阶自动驾驶中,高可用性和无缝运行(fail-operational)是必须的。可靠冗余是多板卡分布式系统的核心功能模块,负责整个系统的功能安全可靠监控以及针对失效事件触发的恢复策略执行。分布式系统的可靠冗余功能除承接单计算系统本身的多级监控和冗余失效安全(fail-safe) 基本机制之外,还可通过跨板卡计算平台的监控及主主/主备冗余机制来保证整个分布式系统的可靠稳定运行。
5.4 示例4路摄像头的数据同时分发到两个Orin上面。感知实现负载均衡(active/active),Orin-1 负责处理front前视摄像头数据(车道线、交通灯识别、TSR、可行驶区域等目标检测)和负责处理rear后视摄像头数据(车道线检测等), Orin-2 负责left和right(目标识别等)。规控系统为可靠冗余(active/backup),两个Orin都做规划控制,正常情况下Orin-1是active,Orin-2是backup, 只有Orin-1通过虚拟IP发出控制指令(如图1)。当 Orin-1或其规控发生失效时,按失效情况调整感知负载均衡,同时规控系统切换到Orin-2,Orin-2为active,通过同样的虚拟IP发出控制命令(如图2)。
图1 注:Orin-1 和Orin-2共同负责感知,正常情况下,Orin-1 同时负责规控
图2 注:Orin-1 发生故障,调整感知负载均衡,同时规控系统无缝切换到Orin-2,Orin-2 负责感知和规控5.5结语国汽智控车控操作系统ICVOS具有车规级、高实时、高安全、高扩展特色,实现软硬解耦和对硬件适配抽象的平台化,可高效确保集成。ICVOS在双Orin上成功实现了集成与分布式OS部署,不仅意味着ICVOS扩大支持更多种类大算力异构SoC芯片,更意味着ICVOS可基于硬件平台及异构芯片数量、功能场景和需求等,自动调整重点模块在多芯片的部署和弹性扩展,实现系统负载均衡和最优,从而实现同一套OS下支持从L2到L4、域控到中央域控架构、智能驾驶应用到整车集成应用开发的升级;同时,其分布式架构也可提供主备等方式下的系统可靠冗余备份和动态切换、车云计算下的协同负载分配等。
作者Andy,国汽智控架构师,拥有十余年L2-L4自动驾驶研发及项目管理经验,曾先后供职于通用汽车、拜腾等车企。
-
汽车测试网V课堂
-
微信公众号
-
汽车测试网手机站
编辑推荐
最新资讯
-
厂商要多努力,才能让用户听起来毫不费力?
2024-11-22 17:10
-
TOP30!海克斯康入选2024福布斯中国数字科
2024-11-22 15:25
-
揭秘国产装备制造厂商的成功秘籍:好耐电子
2024-11-22 15:24
-
一文详解安全分析方法STPA:以自动紧急制动
2024-11-22 15:20
-
选对涉氢压力表:守护涉氢场所安全的关键一
2024-11-22 15:19