实战之 arm64 刷 cache

本文详细介绍了在ARM64架构中刷指令cache和数据cache的方法,包括不同指令的作用、Linux中的接口以及何时需要刷cache,特别关注了A72芯片的cache结构和刷cache示例代码。

实战之 arm64 刷 cache

小问题

  1. arm64下如何使用指令将数据cache全部刷掉?
  2. 用户态是否可以刷cache

1. 前言

通常的我们说的刷cache可能包括了两类动作:

  1. clean: 将cache里面的新内容写入到ddr
  2. invalidate: 将cache里面的内容无效掉,即丢掉

虽然都说刷cache,实际可能是上面两类动作的一种或者组合
例如:如果刷指令cache,因为指令是只读的,直接invalidate即可。
如果刷数据cache,如果明确可以直接丢掉数据则可以直接使用invalidate;
通常的刷数据cache需要先clean再invalidate;
当然数据cache也可以只clean不invalidate

2. cache的结构

cpu0 - cpu1 - cpu2 - cpu3 -
level1 I D I D I D I D
level2 cluster0-U - - - cluster1-U - - -
ddr缓存(l3) all-share-U - - - - - - -
ddr - - - - - - - -
  • pou 到l2
  • poc 到l3

3. 刷cache有哪些指令

3.1 刷指令cache的指令

指令 解释 动作 是否支持用户态执行
IC IALLUIS Invalidate all to Point of Unification, Inner Shareable I
IC IALLU Invalidate all to Point of Unification I
IC IVAU, Xt Invalidate by virtual address to Point of Unification I

3.2 刷数据cache的指令

指令 解释 动作 是否支持用户态执行
DC IVAC, Xt Invalidate by virtual address to Point of Coherency I
DC ISW, Xt Invalidate by set/way I</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值