关于 arm 核 MPU中cacheable bufferable、shareable的理解

在 ARM Cortex-M7(以及 ARMv7-M/v8-M 架构)中,内存属性(Memory Attributes)如 CacheableBufferable 和 Shareable 用于定义内存区域的访问行为,影响 Cache 策略总线事务 和 多核一致性

1. Cacheable(可缓存)

定义

  • 如果内存区域标记为 Cacheable,处理器允许将该区域的数据缓存到 L1 Cache(I-Cache 或 D-Cache)。

  • 目的:减少访问延迟,提高性能。

行为

  • 读操作:如果数据在 Cache 中(Cache Hit),直接从 Cache 读取;否则(Cache Miss),从主存加载并填充 Cache。

  • 写操作:取决于 Write Policy(Write-Back 或 Write-Through)。

适用场景

  • 频繁访问的代码(如 ITCM 配置为 Cacheable)或数据(如数组、变量)。

  • 非 Cacheable 示例:外设寄存器(如 GPIO)、DMA 缓冲区(避免 Cache 一致性问题)。

2. Bufferable(可缓冲)

定义

  • 如果内存区域标记为 Bufferable,写操作可以缓存在总线写缓冲区(Write Buffer)中,无需等待从设备(Slave)立即完成。

  • 目的:提高写操作的吞吐量,减少处理器停顿。

行为

  • Bufferable Write
    处理器写入数据后,总线接口可能先返回成功,实际写入操作由总线异步完成(写缓冲区负责后续写入主存)。

  • Non-Bufferable Write
    处理器必须等待写入完全完成(适合严格顺序的外设访问)。

适用场景

  • Bufferable:普通内存(如 SRAM),允许写合并(Write Merging)优化。

  • Non-Bufferable:外设寄存器(如 UART 数据寄存器),需确保写入立即生效。

3. Shareable(可共享)

定义

  • 如果内存区域标记为 Shareable,表示该区域可能被 多个主设备(如多核 CPU、DMA)共享,需要维护一致性。

  • 目的:避免多主设备访问同一数据时出现一致性问题。

行为

  • Shareable 内存
    系统会通过 硬件一致性协议(如 Snoop Control Unit, SCU)或软件管理(如 Clean/Invalidate Cache)确保多核/外设看到的数据一致。

  • Non-Shareable 内存
    仅当前处理器核心可见,不保证其他主设备的数据一致性。

适用场景

  • Shareable

    • 多核共享数据(如 Cortex-M7 + Cortex-M4 双核芯片)。

    • DMA 缓冲区(需通过 Cache 维护操作保证一致性)。

  • Non-Shareable
    核心私有数据(如栈、局部变量)。

4. 典型组合与示例

常见配置

内存类型CacheableBufferableShareable说明
普通 RAMYesYesOptional高性能,需维护一致性(如 DMA)
外设寄存器NoNoYes严格顺序,禁止缓存
多核共享数据YesYesYes需硬件/软件一致性机制
TCM 内存NoNoNo紧耦合内存,直接访问

5. 对性能与一致性的影响

属性优点缺点
Cacheable减少访问延迟,提高性能需维护 Cache 一致性
Bufferable写操作异步完成,减少处理器停顿写入主存的时机不确定
Shareable支持多核/DMA 共享数据增加总线监听(Snooping)开销

6. 实际应用建议

  1. 外设寄存器

    • Non-Cacheable + Non-Bufferable,确保写入立即生效。

  2. DMA 缓冲区

    • 如果 CPU 和 DMA 共享数据:

      • Cacheable + Shareable,并手动调用 SCB_CleanDCache()(写入 DMA 前)和 SCB_InvalidateDCache()(从 DMA 读取后)。

    • 或直接设为 Non-Cacheable(牺牲性能换简化设计)。

  3. 多核通信数据

    • Cacheable + Shareable,依赖硬件一致性协议(如 Cortex-M7 的 SCU)。


总结

  • Cacheable:是否允许缓存,影响性能。

  • Bufferable:是否允许写缓冲,影响写入延迟。

  • Shareable:是否需多核一致性,影响数据同步。

在 Cortex-M7 中,这些属性需通过 MPU 或默认内存映射配置,合理设置可显著提升系统性能和可靠性。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值