Linux arm cache 入门

  1. ARM 架构下 Cache 的基本概念
  • Cache 层级:L1 I-Cache、L1 D-Cache、L2(统一 Cache),部分 SoC 还有 L3

  • Cache 特性:写分配 / 非写分配,写回(write-back)/ 写直达(write-through)

  • 一致性问题:SMP 多核下的 Cache 一致性协议(MESI/MOESI 思路)

  • ARM 内存 域划分:Normal memory vs Device memory


  1. ARM Cache 维护指令族

ARMv8/v7 都提供了一组专门的 cache maintenance instructions,在内核驱动和系统软件里很常见。

指令分类

  • I-Cache(指令 Cache)相关

    • IC IVAU:Invalidate I-Cache by VA to PoU

    • IC IALLUIS:Invalidate all I-Cache inner shareable

    • IC IALLU:Invalidate all I-Cache (non-shareable)

  • D-Cache(数据 Cache)相关

    • DC CIVAC:Clean & Invalidate D-Cache line by VA to PoC

    • DC CVAC:Clean D-Cache line by VA to PoC

    • DC IVAC:Invalidate D-Cache line by VA to PoC

    • DC ZVA:Zero a cache line by VA

    • DC CVAU:Clean D-Cache line by VA to PoU

关键参数

  • PoU (Point of Unification)

    • 指指令流和数据流统一的位置,通常是 I-Cache 之前的层级。

    • 比如写代码到内存后,需要清到 PoU,确保 I-Cache 能看到。

  • PoC (Point of Coherency)

    • 体系保证所有 master 观察到一致性的点。

    • 通常是 L2 Cache 出口到内存的接口。

  • PoP (Point of Persistence)

    • 数据被写入"持久存储"的点(比如 NVM、持久内存系统)。

    • 在 ARMv8.2+ 中提出,和持久化内存相关。

使用场景举例

  • 代码自修改 / 动态加载代码:先写 D-Cache,再清到 PoU,最后无效 I-Cache。

  • DMA 缓冲区:CPU 和外设共享内存时,需要 Clean / Invalidate 到 PoC。


  1. Linux 内核中的 Cache 操作接口

内核提供的 API

在 Linux 内核(arch/arm64/include/asm/cacheflush.h)中常见的接口有:

高层 API

  • dma_map_single() / dma_unmap_single()

    • 用于驱动中确保 DMA 缓冲区 Cache 与内存一致
  • dma_sync_single_for_device() / dma_sync_single_for_cpu()

    • 针对 CPU/设备交替访问的场景

dma摸之前clean,cpu摸之前inv

相关推荐
Urbano6 分钟前
针织卫衣全流程生产工序科普:自动化替代、产能优化与设备选型实战方案
运维·自动化
BelongPanda28 分钟前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
AC赳赳老秦32 分钟前
招投标公开数据自动化采集实战:基于 OpenClaw 的定时抓取与业务关键词精准推送
运维·服务器·数据库·自动化·测试用例·deepseek·openclaw
小的博客36 分钟前
windows下安装Docker Desptop
运维·docker·容器
酷可达拉斯39 分钟前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_777998341 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器
yunwei371 小时前
eBPF 教程:检查 exec 后真正安装的可执行镜像
linux·开源
emfuture2 小时前
工业自动化现场四大典型故障复盘:从环境适配到边缘智能的工程实践
运维·网络·自动化
笑锝没心没肺2 小时前
yum update 报错:GPG key retrieval failed: [Errno 14] HTTPS Error 404 - Not Found
linux·运维·服务器
keke.shengfengpolang2 小时前
自动化专业毕业能干什么?制造业、控制、软件、数据怎么选,2026版大实话
运维·自动化