Cortex-R52学习:存储系统

文章目录

    • [1. 存储器系统整体架构](#1. 存储器系统整体架构)
      • [1.1 存储资源组成](#1.1 存储资源组成)
        • [1.1.1 内核私有存储(单Core独立选配)](#1.1.1 内核私有存储(单Core独立选配))
        • [1.1.2 内核私有AXI4主接口(每核独立)](#1.1.2 内核私有AXI4主接口(每核独立))
        • [1.1.3 全集群共享AXIS接口(128bit)](#1.1.3 全集群共享AXIS接口(128bit))
      • [1.2 核心工作规则](#1.2 核心工作规则)
    • [2. TCM紧耦合存储器](#2. TCM紧耦合存储器)
      • [2.1 容量配置:](#2.1 容量配置:)
      • [2.2 基址与使能控制](#2.2 基址与使能控制)
      • [2.3 内存属性:](#2.3 内存属性:)
    • [3. 一级L1缓存(I‑Cache/D‑Cache,可选配、相互独立)](#3. 一级L1缓存(I‑Cache/D‑Cache,可选配、相互独立))
      • [3.1 指令缓存I‑Cache](#3.1 指令缓存I‑Cache)
      • [3.2 数据缓存D‑Cache(关键特性)](#3.2 数据缓存D‑Cache(关键特性))
      • [3.3 Cache RAM物理组织](#3.3 Cache RAM物理组织)
      • [3.4 缓存配套功能](#3.4 缓存配套功能)
    • [4. L1缓存调试直接访问](#4. L1缓存调试直接访问)
    • [5. 四大AXI主/从接口(AXIM、LLPP、Flash、AXIS)](#5. 四大AXI主/从接口(AXIM、LLPP、Flash、AXIS))
      • [5.1 AXIM(内核私有·128bit标准AXI4·系统主接口)](#5.1 AXIM(内核私有·128bit标准AXI4·系统主接口))
      • [5.2 LLPP低时延外设端口(32bit AXI4·外设专用,永远非缓存)](#5.2 LLPP低时延外设端口(32bit AXI4·外设专用,永远非缓存))
      • [5.3 Flash接口(128bit只读AXI子集·外挂ROM,无写通道)](#5.3 Flash接口(128bit只读AXI子集·外挂ROM,无写通道))
      • [5.4 AXIS(Cluster共享从接口·16MB地址·外部访问TCM专用)](#5.4 AXIS(Cluster共享从接口·16MB地址·外部访问TCM专用))
    • [6. ECC错误检测与容错机制](#6. ECC错误检测与容错机制)
    • [7. 独占访问LDREX/STREX](#7. 独占访问LDREX/STREX)
    • [8. 总线超时](#8. 总线超时)
    • 整体设计总结

1. 存储器系统整体架构

1.1 存储资源组成

1.1.1 内核私有存储(单Core独立选配)
  1. 可选一级指令缓存I‑Cache、一级数据缓存D‑Cache;
  2. 可选紧耦合存储器TCM(分为ATCM/BTCM/CTCM,统一型存储器,既可存指令也可存数据)。
1.1.2 内核私有AXI4主接口(每核独立)
  1. LLPP:32bit位宽AXI4接口,低速外设专用;
  2. Flash接口:128bit只读AXI子集接口,外挂片上/片外Flash;
  3. AXIM:128bit标准AXI4主接口,外接主存与通用外设,系统主数据通路;
1.1.3 全集群共享AXIS接口(128bit)

跨核外部主控接口,唯一用途:外部总线访问所有内核的TCM存储。

1.2 核心工作规则

  1. TCM访问逻辑

TCM内置多路交叉开关,支持指令侧、数据侧、AXIS三方并发访问,多源同地址访问采用固定优先级+QoS仲裁;TCM是R52访问时延确定性最高的存储;

  1. Cache访问规则

    TCM、LLPP访问永远不会进入D‑Cache;仅AXIM/Flash访问可按需缓存;数据Cache固定写直达(Write‑Through),所有写操作同步落地外部总线;

  2. MPU内存保护

    所有指令/数据访问必须经过MPU内存映射查询,MPU输出访问权限与内存属性;地址禁止跨多TCM区域、多外设区域重叠命中,否则为非法访问;

  3. 独占同步机制

    内核内置本地独占监视器,依托LDREX/STREX独占指令实现同内核进程信号量与同步,共享内存独占需要配套外部全局监控逻辑。

2. TCM紧耦合存储器

TCM为实时系统核心高速确定性内存,单内核搭载ATCM/BTCM/CTCM三块独立TCM。

2.1 容量配置:

单块TCM可选0KB(未集成)/8KB~1MB(2的幂次规格),三块容量可独立配置;支持配置访问等待周期,不同TCM可存在访问时延差异。

2.2 基址与使能控制

  • 复位:配置引脚CFGTCMBOOTx有效时,ATCM默认开启、基址=0x00000000,其余TCM关闭、地址未知;
  • 软件配置:通过IMP_ATCM/BTCM/CTCMREGIONR寄存器配置基址(基址必须与TCM容量对齐),EL2(Hypervisor)、EL0/EL1可独立开关TCM;TCM禁用后,原TCM地址访问自动路由至AXIM/Flash/LLPP;EL1修改TCM配置可被EL2捕获(HCR.TIDCP=1)。

2.3 内存属性:

已使能TCM硬件固定为非缓存、非共享普通内存,不受MPU内存类型配置影响,但读写权限沿用MPU同地址权限;AXIS可读写TCM,但会抢占TCM带宽、劣化访问确定性。

3. 一级L1缓存(I‑Cache/D‑Cache,可选配、相互独立)

I/D Cache均为4路组相联、64Byte缓存行,可选4KB/8KB/16KB/32KB四种容量,仅AXIM、Flash的访问可进入缓存。

3.1 指令缓存I‑Cache

  • 预取:顺序指令自动预取下一缓存行;预取单元PFU依托分支预测提前预取非顺序地址,预取开关由CPUACTLR.L1IPFCTL管控。

3.2 数据缓存D‑Cache(关键特性)

  1. 强制写直达WT:即便MPU配置为回写WB,硬件强制走WT;标记为共享(Shareable)的内存区域一律禁用缓存;瞬态Transient内存提示被硬件忽略,统一按非瞬态处理;
  2. Miss‑under‑Miss:流水线连续缺失时,最多同时发起3个缓存行填充;AXIM挂载4个数据预取器(基于4KB区间访存规律预取),Flash接口无硬件预取;
  3. 一致性:R52无内核间硬件Cache一致性,单内核为独立内部共享域,多内核一致性由外部系统实现。

3.3 Cache RAM物理组织

  1. 地址拆分规则 :32位地址划分为Tag标签位、Index索引位、行内双字偏移addr[5:3]、字节偏移addr[2:0],随4/8/16/32KB容量变化索引位长度;
  2. ICache :Tag RAM分4物理Bank;Data RAM逻辑路→物理Bank换算:Bank=(逻辑Way XOR 双字偏移)&0x3,Tag附带有效位+可选6bit ECC,64bit数据搭配7bit ECC;
  3. DCache :Tag架构同ICache;Data RAM采用8个物理Bank(单Bank32bit),一个64bit双字跨相邻两个Bank,Bank位置由(Way+双字偏移)&3和地址bit2共同决定,32bit数据配6bit ECC。

3.4 缓存配套功能

  1. 缓存隔离SegregationIMP_CSCTLR.IFLW/DFLW分配I/D Cache几路资源分别给Flash/AXIM,仅复位后首次开启缓存前可配置;
  2. DCache整体无效(EDCCR状态机):寄存器EDCCR实现Flash/AXIM对应缓存条目全刷除,状态流转Idle→Wait→Active;无效期间对应外设访问强制非缓存,调试可借助该功能实现Flash/AXIM内存被RAM覆盖;
  3. 写流式Write Streaming :针对memset连续整行全写场景,连续填满整行无需读入原始数据时自动开启;写缺失直接下发总线、取消行填充,避免无效数据污染缓存;由CPUACTLR.WSTRNOL1ACTL配置触发阈值。

4. L1缓存调试直接访问

EL2特权态可通过CP15的MCR指令读写Cache Tag/Data,依靠Rd寄存器编码Way/Set/行内偏移;读出数据存入2个只读调试寄存器,用于排查缓存与物理内存数据不一致故障。

5. 四大AXI主/从接口(AXIM、LLPP、Flash、AXIS)

5.1 AXIM(内核私有·128bit标准AXI4·系统主接口)

  1. 仲裁:CPUACTLR.AXIMARBCTL配置指令/数据总线访问优先级;
  2. 总线能力:最多3笔挂起写、11笔挂起读(数据侧8+指令侧3),单路独占访问;AWID3bit、ARID4bit;
  3. AXI编码:ARID区分独占/设备读/指令普通/数据普通四类事务;CACHE信号严格映射MPU设备/普通(WT/WB)四种内存属性;
  4. 权限与安全:缓存读统一标记特权访问;EL0非缓存/设备访问标记非特权;所有传输固定Secure;Normal内存VMID=0,设备内存携带有效VMID;
  5. 超时:通过IMP_BUSTIMEOUTR配置超时周期、使能开关、超时事务终止,超时触发ERREVENTx[13]

5.2 LLPP低时延外设端口(32bit AXI4·外设专用,永远非缓存)

  1. 地址配置:空间4KB~4MB(2的幂),分EL2、EL0/EL1独立使能;指令取指访问LLPP地址直接触发同步外部异常;未使能时数据访问报同步中止;
  2. 传输约束:仅INCR1单拍传输、单次≤32bit,传输不跨4字节边界;Device区非对齐访问触发对齐故障,Normal内存非对齐可拆分成多笔AXI传输,WSTRB字节选通精准控制写字节;
  3. 总线参数:最大2挂起读、8挂起写、1路独占;读写AXI ID固定为1;CACHE硬件固定为Device-nGnRnE;不支持64bit双字独占(LDREXD/STREXD)
  4. 超时:故障上报ERREVENTx[15],超时配置寄存器同AXIM。

5.3 Flash接口(128bit只读AXI子集·外挂ROM,无写通道)

  1. 地址空间固定128MB,单内核独立开关,禁用访问触发同步异常;缺省不实现ARSIZE/ARCACHE等多组AXI信号;
  2. 事务:缓存填充为WRAP4(64B整行),非缓存采用INCR单拍;单内核最多4 outstanding读,Flash+AXIM全局合计最多8个缓存填充;ID仅1bit(0=数据侧、1=指令侧);
  3. 附加特性:LATEERRFx引脚接收Flash外设可纠错信号,内核收到后自动重传,不产生异常;超时上报ERREVENTx[14]

5.4 AXIS(Cluster共享从接口·16MB地址·外部访问TCM专用)

  1. 地址映射:16MB均分4块×4MB(每核对应一块),单4MB再拆分3×1MB(ATCM/BTCM/CTCM)+1MB空闲;空闲/越界访问返回DECERR;
  2. AXI限制:仅支持16B、64B两种突发,其余突发返回SLVERR;64B写突发必须全字节有效;不支持独占、CACHE、QoS、安全PROT等AXI字段;读写 outstanding深度各12;
  3. 访问权限:IMP_SLAVEPCTLR配置仅特权/全权限访问TCM,越权返回SLVERR;外部AXIS写与内核DMB写同地址存在写重排序,MRPATTRx标记重排序行为。

6. ECC错误检测与容错机制

R52全链路(TCM、Cache、四大总线)可选ECC/奇偶校验,用于功能安全故障检测:

  1. ECC块粒度

    • TCM:ATCM=64bit/ECC块、BTCM/CTCM=32bit/ECC块;
    • Cache:ICache Data=64bit、DCache Data=32bit,Tag以整Tag为ECC块;
    • 总线:AXIM64b、LLPP32b、Flash可选64/128b、AXIS64b;地址/控制信号32bit ECC,握手线可选奇偶校验。
  2. 故障处理

    • 单比特错:硬件自动纠错、修正数据回写到RAM;
    • 双比特错:不可纠正,TCM读指令→预取中止、读数据→同步数据中止、写→异步中止、AXIS读→SLVERR;Cache失效对应行、从AXIM/Flash重载有效数据;
  3. RMW读改写

ECC块大于单次访问粒度(如单字节写)时,硬件自动读原有数据→合并新数据→重算ECC→回写;

  1. 错误记录

I/D Cache、TCM、Flash各配置2个错误记录寄存器;寄存器满溢出后,可纠/不可纠错误分别通过ERREVENTx[16/17]上报;Flash特有Late可纠错仅重传、不触发异常;

  1. 全局开关:

复位默认开启全部ECC,软件通过IMP_MEMPROTCTLR.RAMPROTEN全局启停ECC。

7. 独占访问LDREX/STREX

  1. 本地独占监视器粒度512bit,仅用于同内核TCM/非共享内存 进程同步,AXIS跨核访问不占用本地监视器
  2. 共享内存独占:本地监视器预校验,校验失败则独占事务不再发往外部总线;Outer Shareable(设备/非缓存普通内存)独占需要外部全局独占监视器;
  3. 接口限制:Flash只读无独占、LLPP不支持64bit双字独占、AXIS完全不支持独占指令。

8. 总线超时

AXIM、LLPP、Flash三个接口各自拥有独立可编程超时检测逻辑,超时后可选择上报故障信号或直接屏蔽后续总线访问,故障分别绑定不同ERREVENTx引脚。

整体设计总结

Cortex‑R52存储面向汽车/工业高实时安全场景

  1. TCM提供极致确定性访问,满足硬实时;
  2. 可选L1缓存平衡性能与时序;
  3. 分四类专用AXI接口,区分主存/Flash/外设/外部TCM访问,接口协议精简降低SoC互联成本;
  4. 全链路ECC保障功能安全,满足ASIL等安全规范;
  5. 分层独占+MPU+分级使能,完善存储权限与多虚拟化EL0/EL1/EL2分级管控。
相关推荐
科技IT杂谈1 小时前
2026年智能体与定制工具平台观察:五个平台的路径与场景
学习
New农民工1 小时前
射频芯片学习-Lora包参配置
学习
开发笔记-阿牛2 小时前
CK6159A 语音主控 USB 恒温热敷控制器硬件设计(原理图 + PCB + 温控安全方案)
单片机·嵌入式硬件
Turbo正则2 小时前
群论学习入门 | 群论与李群的基本概念
人工智能·学习·算法·抽象代数
毛丫讲绘本3 小时前
0-3岁选绘本需要做到越早启蒙越要简单
人工智能·学习·微信·微信公众平台·微信开放平台
小c君tt3 小时前
linux学习笔记1
linux·笔记·学习
吃好睡好便好3 小时前
泰戈尔的诗歌6
学习·生活
双吉堡3 小时前
北京通州有哪些热门且专业的学画画画室?
学习
c++之路4 小时前
C++跨平台(九):跨平台字节序统一处理
开发语言·arm开发·c++