
前言RAM绝不仅是一个简单的‘易失性随机存取存储器 在芯片内部它被赋予了多种多样的形态各大厂商比如瑞萨对它的划分和叫法更是各有千秋。为了帮大家厘清这些概念本文特别以瑞萨车规级MCU为参考对象从底层架构出发拆解不同功能RAM在系统里的定位与作用干货满满建议收藏。目录1概述2为什么 MCU 需要多种 RAM3RAM 的基本原理4RH850/U2A 的整体 RAM 架构5四种 RAM 分别是什么5.1 RRAMRetention RAM5.2 LRAMLocal RAM5.3 GRAMGlobal RAM5.4 CRAMCluster RAM6四种 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需要在特定低功耗状态下保留的仓库强调数据保持3RAM 的基本原理介绍 U2A 的 RAM 之前需要先建立一个基础概念RAM 并不是只有一种实现方式。常见的 RAM 类型类型全称特点常见用途SRAMStatic RAM不需要周期性刷新速度快MCU 内部 RAM、CacheDRAMDynamic RAM需要周期性刷新密度高外部大容量内存SDRAMSynchronous DRAM同步时钟接口的 DRAM外部高速内存DDRDouble Data Rate SDRAM双边沿传输数据高性能处理器外部内存RH850/U2A 的内部工作 RAM 主要采用 SRAM 类存储结构。SRAM 通常使用多个晶体管组成一个存储单元通过电路状态保持 0 或 1。两者的核心区别SRAM只要供电正常存储状态就可以持续保持不需要周期性刷新。DRAM电容电荷会逐渐泄漏需要周期性刷新。因此 SRAM 通常具有更低的访问延迟但单位容量占用的芯片面积更大、成本更高。4RH850/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 分别是什么类型英文名称主要设计目的RRAMRetention RAM特定低功耗状态下的数据保持LRAMLocal RAMCPU 本地高速数据存储GRAMGlobal RAM从系统全局访问角度组织的数据存储CRAMCluster RAMCluster 级数据存储和共享5.1 RRAMRetention RAMRRAM 在这里指 Retention RAM即保持型 RAM。它的主要作用是在芯片进入特定低功耗模式时保留指定区域的数据避免 CPU 再次启动后丢失重要运行信息。为什么需要 RRAM假设汽车控制器需要进入低功耗状态。普通 RAM 在掉电后无法保留数据而部分低功耗场景又不希望每次唤醒都重新初始化全部运行状态。RRAM 并不等于 EEPROM 或 Flash。如果整个芯片完全断电不能默认 RRAM 中的数据仍然存在。5.2 LRAMLocal RAMLRAM 的英文是 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 GRAMGlobal RAMGRAM 通常用来表示 Global RAM即全局 RAM。它强调的是 RAM 在系统中的访问范围而不是简单地表示某一种特定的 SRAM 电路结构。为什么需要 GRAM在多核 MCU 中不同 CPU 可能需要访问同一份数据。例如一个汽车底盘控制器车辆速度、方向盘转角、制动状态等数据可能需要在多个 CPU 之间共享。如果每个 CPU 都保存一份独立的数据副本就会出现数据副本占用更多 RAM。多个 CPU 的数据可能不同步。数据更新时需要额外的数据复制。增加软件维护复杂度。全局 RAM 的设计思路就是让系统中的多个处理单元能够按照访问权限共享数据。瑞萨的整个U2A系列中只有EVA版本的有GRAM其他都没有核间数据共享主要应从 CRAMCluster RAM、系统总线访问路径以及核间同步机制 这几个方面理解。并且对于EVA版本的而言其独有的并不是普通应用运行所需的 GRAM而是 Global Emulation RAM全局仿真 RAMEVA 版本只是面向芯片评估、软件开发和硬件仿真调试需要额外的片上资源支持开发工具。5.4 CRAMCluster RAMCRAM 可以理解为 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 的最终对比总结比较项目RRAMLRAMGRAMCRAM关键词保持本地全局集群主要目的低功耗数据保持CPU 本地访问全局数据访问Cluster 数据存储典型应用唤醒恢复实时控制多核共享集群数据关注重点保持条件访问延迟访问权限总线与共享典型风险数据丢失访问冲突数据不一致并发竞争安全关注数据保持验证ECC、MPU权限及一致性ECC、访问保护8结语到这里对于四种RAM介绍就已经结束了那么相信大家对于前文提出的问题都已经有了答案。额。。。可能还有人说似乎明白了但还是说不上来这里就书面总结一下吧不同 RAM 的设计本质上是为了在容量、访问延迟、带宽、数据共享和安全隔离之间取得平衡。