中央计算单元架构已经成为汽车行业的共识,各主机厂都正努力在将其中央计算单元架构落地。
然而在将硬件、操作系统、中间件、管理程序、应用程序等集成到计算单元,还需要满足功能安全要求,这是一项耗时、复杂且容易出错,且非常具有挑战性的任务。
下图描述了系统架构师进行软件架构设计时需要考虑的方面,包括任务在不同核心的分析、调度分配,不同应用中的交互,同时还要考虑配置参数、系统的安全和非安全要求以及优化目标。此外,由于大型操作系统、中间件、应用程序的不可预测行为,系统架构师必须在部署后解决方案后,进行验证实际场景的验证是否满足要求。
▲图1 架构设计需要考虑的方面
接下来阐述考虑各种优化目标的多核处理器中动态和静态任务映射的方法,以及当前软件集成的技术和方法,包括模型分析、配置、模型检查和任务映射。
01.
多核芯片的任务映射
根据应用场景和用户需求,多核体系架构分为同构和异构两种,同构多核芯片是该芯片内的所有内核都相同,即这都具有相似的计算能力和指令集体系架构。而异构体系架构是不同内核集成到一个芯片中。例如提供高性能且低功耗的核心,通常采用的是异构。就任务映射而言,同构处理器比异构的工作量更少,不需要基于不同核的属性来确认任务的分配。
多核中的任务分配可以有两种,一种是静态的,也就是在架构设计时,各个任务运行在哪个核心就已经确定了,另外一种是动态的分配,根据当前的负载、运行场景等。
那不管是静态还是动态任务映射,如何设计一种合适的映射方案呢?首先前提是现有的硬件、以及性能参数要求,包括负载率、温度、可靠性等,对于静态设计时,可以使用图论算法、数学规划算法或者是基于启发式的算法,例如数学规划算法,将需求转化为数学不等式。然后通过使用不同的数学规划来解不等式,包括混合整数线性规划、分支和边界、约束规划和整数线性规划。在数学规划方法中,只要映射问题的复杂性不变为NP,就始终保证最优解。在NP问题的情况下,可以使用基于启发式的算法。对于动态设计时,可以使用贪婪算法或者是反馈控制理论算法等。
02.
架构设计工具分析
下面主要聊一聊嵌入式系统中现有的软件集成技术,包括嵌入式系统的模型分析、基于需求的模型检验和验证。此外,每个技术都是基于问题属性和各种设计指标、DSE方法、优化算法以及安全相关和优化属性进行分析的。
OSATE(开源 AADL 工具环境):这是一个功能强大的开源工具,它使用语法感知文本编辑器和同步图形编辑器创建 AADL(架构分析和设计语言)模型(如下图)。OSATE 是一个基于 Eclipse 的工具,包含使用 AADL 语言的航空航天和汽车系统的建模元素。
▲图2 将AADL文本编辑器(a)转换为OSATE框架中的同步图形编辑器(b)
AADL是一种建模语言,通过可扩展符号、工具框架和精确指定的语义,支持对系统架构的关键的性能属性进行早期和反复的分析,例如数据流分析,任务映射分析。该语言利用形式化的建模概念来描述和分析应用系统架构的不同组件及其交互。包括软件(例如,进程和线程)、计算硬件(例如,处理器、总线、设备和存储器)和系统组件的抽象。AADL对于复杂实时嵌入式系统基于模型的分析特别有效。
通过使用 OSATE 工具,用户可以对包括硬件和软件(应用程序级别)在内的系统(例如 ADAS 系统)进行建模,例如,可以对用于每个应用程序的线程进行建模,包括线程的周期、计算执行时间、每秒百万指令 (MIPS) 预算和参考处理器。OSATE 根据与 AADL 文本语法规则以及每个指定组件的属性定义中的违规来检查用户创建的模型。此外,可以使用该框架执行各种模型分析,该框架包括流延迟检查,包括端到端流延迟计算、调度分析(例如调度绑定线程,即处理器利用率报告、绑定和调度线程,即线程绑定报告,并对单调优先级分配进行评分),预算分析(包括分析总线负载,电力需求,资源分配,计算机资源预算,计算总权重),安全分析包括故障树分析(FTA),功能危险评估(FHA) )、故障影响分析、故障模式影响分析 (FMEA) 以及检查未处理的故障。此外,可以使用该框架执行各种语义检查或功能集成分析,例如检查绑定约束、连接绑定一致性、端口连接一致性等。此外,该工具具有利用各种插件(例如 Ocarina 和能够将模型从 MATLAB 和 Simulink 导入 OSATE)。但是OSATE不支持任何DSE方法,例如解决多核汽车计算单元的映射问题。
ArcheOpterix:如前所述,寻找可接受的架构设计对于软件和系统架构师来说是一项具有挑战性的任务,要考虑架构设计阶段的质量和功能需求。ArcheOpterix 是一个基于 Eclipse 的开源工具,它有助于使用评估技术、DSE 方法和针对 AADL 规范的优化启发式方法来简化任务。该框架支持软件组件的建模以及软件组件、ECU、总线和服务之间的通信。此外,考虑到设计约束和优化目标,包括冗余分配和成本,该工具可以优化软件组件到 ECU 的部署。该工具可以指定与系统参数相关的不确定信息,因此可以搜索最佳和稳健的候选架构,下图展示了ArcheOpterix的顶层框架。
▲图3 ArcheOpterix的顶层框架
然而,该工具在汽车平台上使用也存在一些限制。首先框架已经过时,没有很好的文档可供使用。它不支持任务映射分析和解决多核架构的映射问题,也不关注汽车应用的多核计算平台。此外该工具不包括ISO 26262的安全相关属性,框架本身不支持模型检查和模型分析。
App4MC:APP4MC 是一个开源 Eclipse 平台,专注于性能仿真,主要涉及多核平台中的调度和时序分析,使用基于模型的开发方法。可以对硬件和软件元素进行建模,包括处理器类型、各种指定模块之间的连接类型、操作系统调度程序以及任务属性,例如执行时间和截止日期。
▲图4 App4MC框架
此外,可以模拟硬件和软件模型和约束的定义以及整个模型,同时考虑包括负载平衡、能耗和内存在内的不同优化目标。
下图显示了APP4MC中的汽车系统建模示例,包括任务、硬件、操作系统、约束和任务映射。例如,在任务映射部分,可以将调度程序分配给核心。硬件模型方面,包括一个处理器(包括四个内核)、集成 GPU (iGPU)、缓存和内存等共享模块以及这些组件之间的通信,使用 AAP4MC 可视化功能进行了可视化。
▲图5 App4MC建模示例
然而,APP4MC 只分析和模拟任务映射而不是求解,在涵盖的安全属性和优化目标方面受到限制,并且有相当数量的 E/E 架构元素未被 AAP4MC 考虑。
上述几个都是开源的工具,除此之外还有商业化的工具可以支持E\E架构设计。
PreeVision:Vector的工具,用于汽车行业中基于模型的分布式嵌入式系统开发。它为面向信号和服务的架构构建以及 E/E 系统的所有方面提供了全面的功能,包括需求工程、AUTOSAR、软件和通信设计以及线束演变。集成和基于模型的方法有助于复杂任务保持简单和可控。它还支持经过实践检验的抽象、分解和重用系统工程原则,可以作为工程骨干。它支持从多个位置对共享数据库进行并行工作,以及可用于不同车辆的 E/E 架构平台的设计;此外,它还提供组件的设计和评估、信号路由、模型一致性检查和功能安全分析。
ASCET-DEVELOPER:这是一款基于商业模型的软件,面向汽车领域,构建在Eclipse平台上。它帮助系统架构师以低开销创建高性能、安全可靠的嵌入式软件。由于其具有ISO26262 ASIL-D等安全认证,因此适用于安全关键软件开发。该商业框架支持模型分析,包括图形和文本规范以及模型验证。此外,它支持从设计模型自动生成C代码,并提供单元测试功能;此外,可以通过提供不同的接口和标准化的文件交换格式来支持工具链集成,使工具易于集成到开发过程和工具链中。
SymTA/S:这是一个用于分析性能和优化支持异构架构的实时嵌入式系统的商业框架。SymTA/S可用于处理器、ECU、通信总线和网络预算、调度验证和优化。该工具支持分布式嵌入式架构的时序和调度分析,例如计算最坏情况执行时间(WCET)。它支持独特的端到端时序分析和可视化;此外,它可以通过定义多个优化目标及其集成概念来规划和优化系统设计,并在使用 DSE 方法时确定其可靠性和安全性。
关注公众号,点击公众号主页右上角“ ··· ”,设置星标,实时关注智能汽车电子与软件最新资讯