同样是 RAM,为什么汽车 MCU 需要这么多种?深度解析 RRAM、LRAM、GRAM 和 CRAM
前言:RAM绝不仅是一个简单的‘易失性随机存取存储器, 在芯片内部,它被赋予了多种多样的形态,各大厂商(比如瑞萨)对它的划分和叫法更是各有千秋。为了帮大家厘清这些概念,本文特别以瑞萨车规级MCU为参考对象,从底层架构出发,拆解不同功能RAM在系统里的定位与作用,干货满满,建议收藏。
目录
1,概述
2,为什么 MCU 需要多种 RAM?
3,RAM 的基本原理
4,RH850/U2A 的整体 RAM 架构
5,四种 RAM 分别是什么
5.1 RRAM:Retention RAM
5.2 LRAM:Local RAM
5.3 GRAM:Global RAM
5.4 CRAM:Cluster RAM
6,四种 RAM 如何协同工作
7,四种 RAM 的最终对比总结
8,结语
1,概述
大家都知道一个芯片的存储是由RAM与FLASH组成的,并且两种空间的都有很多细分种类,讲到这里可以思考一个问题:为什么一颗高性能车规 MCU,不能只设计一块容量足够大的 SRAM,而要把 RAM 拆分成不同的存储区域?
比如就拿瑞萨的车规级MCU RH850U2A系列来举例,其中RAM又分为RRAM、LRAM、GRAM 和 CRAM。最高支持 4 组主 CPU(配合 Checker Core),具备多 Cluster 架构、硬件虚拟化以及 ASIL-D 功能安全能力
这边先埋下一个伏笔,先思考一下,也许读到文章尾部的时候答案只会浮出水面的
2,为什么 MCU 需要多种 RAM?
一颗传统的 RH850 MCU,只有一个 CPU 核心。
程序运行过程中需要使用:程序运行时的全局变量;函数调用时的局部变量;中断处理时的临时数据;ADC 采样数据;CAN 通信缓冲区;DMA 搬运的数据;系统任务的堆栈。这些数据都可以放在一块 SRAM 中。
随着 MCU 性能提升,情况就发生了变化。
以 RH850/U2A 为例:多个 CPU 核心同时执行任务;不同 CPU 需要共享数据;DMA 等硬件模块需要访问 RAM;某些数据要求极低的访问延迟;某些数据要求在多个 Cluster 之间共享;不同安全等级的软件需要进行访问隔离。
如果把所有 RAM 都设计成一个统一的大存储器,就可能出现以下问题:多个 CPU 同时访问,产生总线竞争。远端 RAM 访问延迟较高,影响实时任务。不同 CPU 共享数据时,可能出现访问冲突。无法方便地按照安全等级进行资源隔离。大容量 RAM 的 ECC、诊断和故障管理更加复杂。
MCU 的 RAM 理解成汽车工厂中的不同仓库:
RAM 类型 | 工厂中的角色 | 核心特点 |
|---|---|---|
LRAM | 每个生产工位旁边的小型仓库 | 离 CPU 近,访问快 |
CRAM | 集群级公共仓库 | 为 Cluster 提供数据存储 |
GRAM | 多个生产区域可以访问的全局仓库 | 强调全局可访问 |
RRAM | 需要在特定低功耗状态下保留的仓库 | 强调数据保持 |
3,RAM 的基本原理
介绍 U2A 的 RAM 之前,需要先建立一个基础概念:RAM 并不是只有一种实现方式。
常见的 RAM 类型:
类型 | 全称 | 特点 | 常见用途 |
|---|---|---|---|
SRAM | Static RAM | 不需要周期性刷新,速度快 | MCU 内部 RAM、Cache |
DRAM | Dynamic RAM | 需要周期性刷新,密度高 | 外部大容量内存 |
SDRAM | Synchronous DRAM | 同步时钟接口的 DRAM | 外部高速内存 |
DDR | Double Data Rate SDRAM | 双边沿传输数据 | 高性能处理器外部内存 |
RH850/U2A 的内部工作 RAM 主要采用 SRAM 类存储结构。
SRAM 通常使用多个晶体管组成一个存储单元,通过电路状态保持 0 或 1。
两者的核心区别:
SRAM:只要供电正常,存储状态就可以持续保持,不需要周期性刷新。
DRAM:电容电荷会逐渐泄漏,需要周期性刷新。
因此 SRAM 通常具有更低的访问延迟,但单位容量占用的芯片面积更大、成本更高。
4,RH850/U2A 的整体 RAM 架构
U2A 其内部采用多 Cluster 架构,U2A 的架构可以简化理解为:
Cluster 0:包含 PE0、PE1 及对应的 Checker Core。
Cluster 2:配置 CRAM 控制器和 CRAM。
Cluster 3:配置 CRAM 控制器和 CRAM。
系统内部通过 Inter-cluster Bus、System Bus 和 CRAM Bus 等连接不同资源。
至于为什么要设计 Cluster。
Cluster 可以理解为一个 CPU 计算集群。
假设 PE0 和 PE1 负责底盘控制:PE0 负责转向控制;PE1 负责制动控制;两个 CPU 需要独立运行各自的控制算法;同时需要交换部分车辆状态信息。
如果两个 CPU 的所有数据都放在同一个存储区域,访问时就可能产生竞争。
通过 Cluster、Local RAM 和共享 RAM 的组合,可以让不同 CPU 既有自己的高速工作区域,也能共享需要交换的数据。
这就是 U2A 存储架构设计的基本思想。
5,四种 RAM 分别是什么
| 类型 | 英文名称 | 主要设计目的 |
|---|---|---|
| RRAM | Retention RAM | 特定低功耗状态下的数据保持 |
| LRAM | Local RAM | CPU 本地高速数据存储 |
| GRAM | Global RAM | 从系统全局访问角度组织的数据存储 |
| CRAM | Cluster RAM | Cluster 级数据存储和共享 |
5.1 RRAM:Retention RAM
RRAM 在这里指 Retention RAM,即保持型 RAM。
它的主要作用是:在芯片进入特定低功耗模式时,保留指定区域的数据,避免 CPU 再次启动后丢失重要运行信息。
为什么需要 RRAM?
假设汽车控制器需要进入低功耗状态。普通 RAM 在掉电后无法保留数据,而部分低功耗场景又不希望每次唤醒都重新初始化全部运行状态。
RRAM 并不等于 EEPROM 或 Flash。如果整个芯片完全断电,不能默认 RRAM 中的数据仍然存在。
5.2 LRAM:Local RAM
LRAM 的英文是 Local RAM,即本地 RAM。它的设计目标是让 CPU 能够快速访问自己的本地数据。
为什么需要 LRAM?
假设 PE0 正在执行一个 1 ms 的底盘控制任务。
它需要频繁读取:传感器采样值;电机控制参数;PID 控制变量;中间计算结果;函数局部变量;中断处理数据。
如果这些数据每次都需要经过复杂的共享总线访问,那么可能产生额外的访问延迟和总线竞争。
LRAM 可以作为 CPU 的本地工作存储区域。
LRAM 的典型特点
与对应 CPU/处理单元具有紧密的本地连接关系。
适合存放实时任务数据。
可以减少对共享存储器和公共互连的依赖。
适合对访问延迟比较敏感的数据
LRAM 适合存放什么?
数据类型 | 推荐程度 |
|---|---|
CPU 实时任务堆栈 | 高 |
高频访问的局部变量 | 高 |
中断处理数据 | 高 |
控制算法中间变量 | 高 |
多核共享数据 | 需要额外考虑访问权限和映射 |
大容量 DMA 缓冲区 | 视访问路径和 DMA 支持情况 |
LRAM 并不意味着所有其他 CPU 都绝对无法访问。是否可以跨核访问,取决于具体存储区域的总线映射、MPU 和访问控制配置,不能只凭 Local 这个名称判断。很明显,上面贴出的瑞萨U2A的架构图中,每一个核的LRAM是相互独立的。
5.3 GRAM:Global RAM
GRAM 通常用来表示 Global RAM,即全局 RAM。
它强调的是 RAM 在系统中的访问范围,而不是简单地表示某一种特定的 SRAM 电路结构。
为什么需要 GRAM?
在多核 MCU 中,不同 CPU 可能需要访问同一份数据。
例如一个汽车底盘控制器:车辆速度、方向盘转角、制动状态等数据,可能需要在多个 CPU 之间共享。
如果每个 CPU 都保存一份独立的数据副本,就会出现:数据副本占用更多 RAM。多个 CPU 的数据可能不同步。数据更新时需要额外的数据复制。增加软件维护复杂度。
全局 RAM 的设计思路,就是让系统中的多个处理单元能够按照访问权限共享数据。
瑞萨的整个U2A系列中只有EVA版本的有GRAM,其他都没有,核间数据共享主要应从 CRAM(Cluster RAM)、系统总线访问路径,以及核间同步机制 这几个方面理解。并且对于EVA版本的而言,其独有的并不是普通应用运行所需的 GRAM,而是 Global Emulation RAM(全局仿真 RAM),EVA 版本只是面向芯片评估、软件开发和硬件仿真调试,需要额外的片上资源支持开发工具。
5.4 CRAM:Cluster RAM
CRAM 可以理解为 Cluster RAM,即集群 RAM。它是 RH850/U2A 多 Cluster 架构中非常值得关注的存储器。
为什么需要 CRAM?
假设 U2A 中多个 CPU 需要执行不同的控制任务。这些 CPU 除了需要各自的本地数据,还可能需要访问一部分集群级或系统级数据。
例如:多核之间的控制状态;共享控制参数;数据交换缓冲区;算法中间结果;多核任务协作数据。
如果所有数据都放在各自的 LRAM 中,那么共享数据就需要通过额外的复制和同步操作实现。
CRAM 则提供了另一种组织方式。
CRAM 的典型特点:
由对应的 CRAM Controller 管理。
面向 Cluster 或系统互连提供存储资源。
可以作为多个处理单元访问的数据区域。
适合存放共享数据和较大容量的运行数据。
需要关注访问权限、ECC 和多核并发问题
6,四种 RAM 如何协同工作
一个具体的多核数据分配例子:
假设 PE0 负责转向控制,PE1 负责制动控制。
数据 | 建议考虑的存储区域 | 原因 |
|---|---|---|
PE0 控制算法临时变量 | PE0 LRAM | 本地高频访问 |
PE1 控制算法临时变量 | PE1 LRAM | 本地高频访问 |
转向和制动共享状态 | CRAM 或适当的共享区域 | 多核数据交换 |
车辆运行模式 | 共享 RAM 或 RRAM | 视访问需求及保持要求 |
需要低功耗保持的运行状态 | RRAM | 特定模式下保持 |
全局诊断数据 | 根据访问范围选择 RAM | 需要考虑多个处理单元的访问 |
7,四种 RAM 的最终对比总结
比较项目 | RRAM | LRAM | GRAM | CRAM |
|---|---|---|---|---|
关键词 | 保持 | 本地 | 全局 | 集群 |
主要目的 | 低功耗数据保持 | CPU 本地访问 | 全局数据访问 | Cluster 数据存储 |
典型应用 | 唤醒恢复 | 实时控制 | 多核共享 | 集群数据 |
关注重点 | 保持条件 | 访问延迟 | 访问权限 | 总线与共享 |
典型风险 | 数据丢失 | 访问冲突 | 数据不一致 | 并发竞争 |
安全关注 | 数据保持验证 | ECC、MPU | 权限及一致性 | ECC、访问保护 |
8,结语
到这里,对于四种RAM介绍就已经结束了,那么相信大家对于前文提出的问题都已经有了答案。额。。。可能还有人说,似乎明白了但还是说不上来,这里就书面总结一下吧:
不同 RAM 的设计,本质上是为了在容量、访问延迟、带宽、数据共享和安全隔离之间取得平衡。