一、多核的分类
1、同构 vs.异构
从硬件视角来看,多核架构可以分为同构多核和异构多核。
同构多核(Homogenous):具备相同微架构的core集成到一颗芯片;
异构多核(Heterogeneous):不同微架构的Core集成到一颗芯片;
从目前常用的车规MCU趋势来看,在一颗芯片上可能会同时看到同构和异构多核,我们以英飞凌TC37x为例,它包含内核有TriCore、Cortex-M3(HSM)、MCS(GTM)、XC800(SCR)等。
2、SMP和AMP
那么从软件角度来看,多核系统又可以分为SMP和AMP。
SMP(Symmetric Multi-Processing,对称处理):所有核运行同一套程序;
AMP(Asymmetric Multi-Processing,非对称处理):不同核运行不同程序;
需要注意的是,SMP只能在同构多核的硬件架构下实现,因为内核指令集、寄存器等均相同,在软件实现就不太需要考虑平台兼容的问题,但需要通过Core ID来调度当前任务执行。
AMP表示不同核运行不同程序,不管在同构还是异构多核硬件下都可以实现,但是由于指令集、操作系统的不同,对于公共资源的访问会存在竞争,为了避免资源冲突,AMP设计上还需要提供访问共享硬件组件的标准化接口。
二、为什么要使用多核
1、单核性能极限
多核技术是处理器发展的必然。推动微处理器性能不断提高的因素主要有两个:半导体工艺技术的飞速进步和体系结构的不断发展。半导体工艺技术的每一次进步都为微处理器体系结构的研究提出了新的问题,开辟了新的领域;体系结构的进展又在半导体工艺技术发展的基础上进一步提高了微处理器的性能。这两个因素是相互影响,相互促进的。一般说来,工艺和电路技术的发展使得处理器性能提高约20倍,体系结构的发展使得处理器性能提高约4倍,编译技术的发展使得处理器性能提高约1.4倍。但是今天,这种规律性的东西却很难维持。多核的出现是技术发展和应用需求的必然产物。
多核出现前,商业化处理器都致力于单核处理器的发展,其性能已经发挥到极致,仅仅提高单核芯片的速度会产生过多热量且无法带来相应性能改善,但CPU性能需求大于CPU发展速度。尽管增加流水线提高频率,但缓存增加和漏电流控制不力造成功率大幅增加,性能反而不如之前低频率的CPU。功率增加,散热问题也严重了,风冷已经不能解决问题了。那么新技术必须出现-多核处理器。早在1996年就有第一款多核CPU原型Hydra。2001年IBM推出第一个商用多核处理器POWER4,2005年Intal和AMD多核处理器大规模应用。多核处理器越来越流行,无论在服务器、桌面、上网本、平板、手机还是医疗设备、国防、航天等方面。
2、功能安全需要
考虑到功能安全的需要,一般而言既定功能的代码运行要和监控功能的代码运行分离开来;换言之,QM级别的既定功能分布在一个OS-Application,ASIL级别的监控功能分布在与之不同的OS-Application。而事实上,考虑到物理隔离的需要,每一个OS-Application会配置到一个完整的核上去。如此一来,就需要至少一个独立的安全核来运行leve2的监控功能代码;同时需要至少一个独立的核(可以是安全核)来运行level1的既定功能代码。如果要做多合一或者域控制器,在不增加芯片数量的基础上,就需要更多的安全核或者非安全核来执行监控功能代码和既定功能代码。
3、简化系统架构的需要
E/E Archi简化的需要,也促使芯片向具备并行计算能力的多核架构进化。
三、多核芯片软件开发面临的挑战
1、软件架构从分布式到集中式演进
原本部署在多个控制器的软件,经调整后部署到多核控制器。原来各控制器之间基于网络进行通信交互,经调整后变成组件(SWC)之间的交互,随之而来的是考虑功能布局进而降低核间通信的负载。
-
软件架构设计不得不考虑多核分布(Multicore Distribution)。
-
多核架构下系统服务与外设资源的访问。事实上,各核应用层软件都对系统服务和外设资源的访问存在需求,如何更好地将BSW各个模块分配至不同的核或OS-Application或不同的安全分区,是考验软件架构设计师的重要指标。
-
多核并发任务对系统功能软件开发和布局带来挑战。多核的引入原本是为了提高整体的运行效率,然而不合适的功能Layout布局可能带来更多的核间通信,进而降低整体的运行效率。
-
支持多核多任务的操作系统以及EcuM、BswM、WdgM等模块设计难度高。OS要具备存储保护、时序保护等安全机制,EcuM、BswM、WdgM等模块的开发需要按照较高功能安全等级的要求进行设计,需要大量的effort投入。
-
支持多核的RTE设计难度高。
四、多核软件架构的演化
多核软件架构的进化依赖于模块化设计思想的实现程度。模块化设计的基本原则是"高内聚,低耦合",该原则适用于SWC组件和BSW模块的设计过程。
从静态视角看待多核软件架构,着重关心的是SWC和BSW的静态存储配置,也就是RAM和ROM的分配;同时考虑到功能安全的需求,需要设置不同的安全分区,同时启用硬件MPU进行存储访问保护。
从动态视角看待多核软件架构,着重关心的是Runnable、Task、Task Cluster等运行实体的动态调度,以及如何分配软件组件以合理使用核间通信资源(IOC),以降低系统负载;同时考虑到功能安全的需求,需要配置不同的OS-Applicaiotn,以统一管理包括Alarm、Counter、Task等支撑系统调度的实体。
五、集中式解决方案
多合一域控需要整合原本分布式的部分整车网络节点。以新能源汽车动力域为例,现有的VCU、INV、OBC、BMS等网络节点,是通过CAN总线互联的,它们分别具备独立的控制器软件(ASW+RTE+BSW),它们之间的信息交互是基于DBC或ARXML的CAN Matrix进行统一定义的。设计新能源动力域控的目的,是将离散的VCU、INV、OBC、BMS等整合到一个具备多核芯片架构的多合一控制器中去。如此一来,分属不同供应商提供的控制器节点,将由单一的供应商进行整体交付,原来通过NM模块进行管理的网络收发策略,需要引入新的软件组件来进行统一的内部信息协调和管理。除此以外,需要引入一个超级系统管理组件(ASW Supervisor Component),用来协调和管理整个新能源多合一控制器的上下电及网络唤醒、休眠、以及多合一域控系统状态的切换等等。