多核架构的基本概念

目录

1.为什么使用多核

2.多核分类

[2.1 同构和异构](#2.1 同构和异构)

[2.2 SMP和AMP](#2.2 SMP和AMP)

[3 小结](#3 小结)


1.为什么使用多核

这个问题个人认为可以从两个方面来看:

  • 性能问题

随着汽车ECU对集成化的要求越来越高,把多个ECU功能集中到一个多核MCU的需求也越来越明显。

以汽车制动相关的One-Box为例,在设计上集成ESC功能,机械上和制动相关的eBooster共用一套液压系统,相比传统的真空助力器,两者协调工作,能够精准高效地支持驾驶员或智能驾驶系统的制动请求。

以往单核MCU在主频、存储等资源上捉襟见肘,例如在电机控制上高频中断(50us-100us)是常见应用,如果只是单核处理,系统负载上到90%非常正常;因此如果能有一个核单独运行处理这些,另一个核做常规应用和底层软件,就能更好地提升系统性能。

  • ECU不同工作负载对芯片的不同需求

这个最常见就是智驾域和座舱域,需要兼顾高性能和高实时性,高性能主要负责大数据运算,高实时性主要用于控制。

以座舱域为例,目前多基于SoC+MCU的组合,如下图:

左侧MCU作为车内通讯接口,负责CAN数据的解析和转发、电源管理、诊断故障处理、功能安全管理等,常见芯片如RH850-F1KM、TC377;

右侧SoC主要负责高性能计算,例如IVI各种娱乐应用、视频、摄像头数据处理,芯片例如高通6155、8155、8195等等;

同样的,随着电子电气架构的不断演进变革,计算硬件单元更加集中,ECU 芯片的数量也会大幅减少,软件不再基于特定的 ECU 来开发,因此需要使用支持不同工作负载的计算芯片(System on Chip)和标准化的编程接口。

2.多核分类

所谓多核(Multicore),其实就是在同一Die上面有多个CPU,这些CPU通过芯片内部总线互联起来,因此多核可以以不同视角来进行分类。

2.1 同构和异构

从硬件视角来看,多核架构可以分为同构多核和异构多核。

同构多核(Homogenous):具备相同微架构的core集成到一颗芯片;

异构多核(Heterogeneous):不同微架构的Core集成到一颗芯片;

从目前常用的车规MCU趋势来看,在一颗芯片上可能会同时看到同构和异构多核,我们以英飞凌TC37x为例,它包含内核有TriCore、Cortex-M3(HSM)、MCS(GTM)、XC800(SCR)等,如下图所示(蓝色箭头表示异构,绿色方框表示同构):

在上图中我们可以看到,除了同构和异构,在TriCore里还有一个Checker Core,这就是我们看过但是基本不怎么在意的锁步多核(LockStep Multicore)。

为啥会有锁步多核这个东西呢?这还得从功能安全角度来看,在这个视角里,有一类故障会让软件感到非常痛苦,那就是瞬态故障(Transient Fault):非永久存在但会偶发的故障。一般这个故障由辐射引起,极端情况下辐射会造车内核寄存器、存储器上的值发生变化,虽然这时候软件或者硬件都无故障,但仍旧出现了偏离预定行为的现象。这类错误无法预见,Debug也可能无法复现,基于此,锁步多核出现了,这一对锁步核的两个core会执行同一份代码,一般情况在输入时CheckCore会延迟几个时钟周期执行,在输出时主Core会相应延迟相同周期,由硬件比较输出是否一致,不一致则出现lockstep错误。

锁步核的出现,能够在极大减少软件开销的情况下时系统达到高功能安全等级(例如ASIL D)。

2.2 SMP和AMP

那么从软件角度来看,多核系统又可以分为SMP和AMP。

SMP(Symmetric Multi-Processing,对称处理):所有核运行同一套程序;

AMP(Asymmetric Multi-Processing,非对称处理):不同核运行不同程序;

需要注意的是,SMP只能在同构多核的硬件架构下实现,因为内核指令集、寄存器等均相同,在软件实现就不太需要考虑平台兼容的问题,但需要通过Core ID来调度当前任务执行,如TC3xx的iLLD代码:

AMP表示不同核运行不同程序,不管在同构还是异构多核硬件下都可以实现,但是由于指令集、操作系统的不同,对于公共资源的访问会存在竞争,为了避免资源冲突,AMP设计上还需要提供访问共享硬件组件的标准化接口。

举个例子,TriCore执行正常的应用任务,但HSM运行的是加解密服务任务,二者交互通过IPC、Mailbox,如果共享资源(RAM)没有做好权限划分就很容易出现问题。

3 小结

需要注意的是,AMP&SMP、同构&异构是在不同视角下对于多核架构的定义,同构多核的硬件架构既可以支持SMP,还可以支持AMP的软件设计,但是异构多核的硬件架构只能支持AMP软件设计,如下图:

相关推荐
苏灵凯5 小时前
智能环境监测终端全栈设计:从单片机到微信小程序,手把手搞定!
单片机·嵌入式硬件·mcu·物联网·微信小程序·小程序·蓝牙模块
永霖光电_UVLED5 小时前
新能源汽车动力电池回收新规正式施行
汽车
智能化咨询5 小时前
(144页PPT)DG1431汽车企业数智化战略规划(附下载方式)
汽车
vx_biyesheji00016 小时前
计算机毕业设计:Python汽车市场智能决策系统 Flask框架 可视化 机器学习 AI 大模型 大数据(建议收藏)✅
大数据·人工智能·python·算法·django·汽车·课程设计
源码之家6 小时前
计算机毕业设计:Python汽车销量智能可视化与预测系统 Flask框架 可视化 机器学习 AI 大模型 大数据(建议收藏)✅
大数据·人工智能·python·机器学习·信息可视化·汽车·课程设计
taxunjishu8 小时前
汽车智能制造产线Profinet 转 Modbus TCP工业物联网设备互联案例
汽车·制造
源码之家8 小时前
计算机毕业设计:Python地铁数据可视化分析系统 Flask框架 数据分析 可视化 高德地图 数据挖掘 机器学习 爬虫(建议收藏)✅
大数据·python·信息可视化·数据挖掘·flask·汽车·课程设计
rhythm-ring1 天前
新能源汽车充电全解析:从 BMS 到 SOC
汽车
KOYUELEC光与电子努力加油1 天前
JAE日本航空电子推出满足汽车市场小型防水最新需求的MX80系列连接器
服务器·科技·单片机·汽车
学嵌入式的小杨同学1 天前
STM32 进阶封神之路(三十四):TFT LCD 深度全解 —— 显示原理、ILI9341 控制器、8080 并行接口与底层驱动体系
vscode·stm32·单片机·嵌入式硬件·mcu·智能硬件·嵌入式实时数据库