armv8 cache维护

cache基本概念

cache管理的操作

  1. 无效(invalidata) 整个高速缓存或某个缓存行。高速缓存上的数据会被丢弃

  2. 清除(clean)整个高速缓存或者某个高速缓存行。相应的高速缓存行会被标记为脏,数据会写回到下一级高速缓存中或者主存器中。

  3. 清零(zero)操作,通常作用预取和加速,比如程序需要一大块内存,内存需要被清零,通常cache控制器会把零数据写入到对应的cache line上,如果程序主动使用清零指令,则会大大减少内部总线的带宽。

cache管理的对象

  1. ALL: 整块高速缓存

  2. VA: 某 个虚拟地址

  3. set/way: 特定的高速缓存行或者组和路

cache管理的范围

  1. PoC

  2. PoU

shareability

  • inner

cache的指令格式

 

 

cache的枚举(cache discovery)

当我们在做cache指令管理的时候,需要知道如下信息:

  1. 系统支持多少级cache?

  2. cache line是多少?

  3. 每一级的cache,它的set和way是多少?

  4. 对于zero操作,我们需要知道多少data可以被zeroed

armv8对应的cache寄存器

  1. cache level ID register(CLIDR, CLIDR_EL1): 列出有多少level的cache

  2. cache type register(CTR, CRT_EL0):cache line大小

  3. sets and ways:需要访问寄存器来获取

    1. 告诉cache size selection register(CSSELR, CSSELR_EL1),要查询哪个cache

    2. 从cache size id register(CCSIDR, CCSIDR_EL1)中读取相关的信息

  4. data cache zero id register(DCZID_EL0)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byd yes

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值