ARM的cache和mem零散记录(属性)

本文围绕ARM Cache展开,介绍了ARM的内存类型、属性,如Device和Normal mem的Cacheability、Shareability等;阐述了写Cache及回写模式,包括写通、写回等;探讨了读改写与数据位宽问题;还分析了Cache的歧义和别名、替换策略,以及TLB和i/d-cache的寻址方式和区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5.由于core改写了数据,就导致cache的一致性问题,怎么解决?什么时候解决?

6.是不是先通知其他core数据或指令被修改了,然后过一段时间数据才能更新?就是先发现数据更新了,等一段这个更新才能传过来

9.Instruction cache speculative memory accesses

什么是预测存取?对cache有什么影响?和指令的分支预测有什么关系?

0.相关博客推荐

深度学习arm cache系列--一篇就够了_刷cache机制-CSDN博客

1.arm的mem type

类型和属性都有什么含义 什么情况下使用,也就是每个属性是为了解决什么问题?

属性中non-execute是什么含义

1.1 Memory attributes和type

ARMV8定义了mem的type和属性【相关内容都可以在ArmV8的架构参考手册中找到】:

ARM把mem分为了两大类,分别是Device和Normal mem。简单理解Device就是外设的映射空间;Normal就是常见的DDR。

无论是Device还是normal mem都有两类共同的属性:

直接理解mem的属性比较奇怪,应该是这段mem对应存储的数据在传输过程中的共享性和可缓存性

  • shareability(共享性和cache的一致性有关)
  • Cacheability(缓存性和写ddr有关)

对于Device mem还有其特殊的属性:

  • Gathering 或者non Gathering (G or nG)。这个特性表示对多个memory的访问是否可以合并,如果是nG,表示处理器必须严格按照代码中内存访问来进行,不能把两次访问合并成一次。例如:代码中有2次对同样的一个地址的读访问,那么处理器必须严格进行两次read transaction。
  • Re-ordering (R or nR)。这个特性用来表示是否允许处理器对内存访问指令进行重排。nR表示必须严格执行program order。
  • Early Write Acknowledgement (E or nE)。PE访问memory是有问有答的(更专业的术语叫做transaction),对于write而言,PE需要write ack操作以便确定完成一个write transaction。为了加快写的速度,系统的中间环节可能会设定一些write buffer。nE表示写操作的ack必须来自最终的目的地而不是中间的write buffer。

1.1.1 mem的Cacheability

cacheable属性是对某一个或某段内存地址空间数据的传输来讲的,non-cacheable就表示这段空间的数据在传输过程中是不能经过cache的,或者说它的数据是不会在任何cache上的。

device mem就属于这种类型的memory。那么这种类型的memory虽然不用考虑一致性问题,但是要考虑读写顺序问题。

cacheable的trans包括两种类型:

  • write-back
  • write-through

需要说明的是无论write-back还是write-through都有cache一致性问题。

1.1.2 mem的Shareability

首先需要明确的是 Shareability属性是指的某一内存地址是否可以被多个master访问。被多个master访问就存在一致性的问题。

在ARMv8中定义了三种Shareability domain

  • Non-shareable:该domain只包含一个master;该段内存只给一个特定的核使用
  • Inner Shareable:该domain包含了几个master;意味着Inner Shareable的内存只可以在此域共享
  • Outer Shareable:该domain包含了Inner domain和其它master;意味着此内存可以被Inner Shareable和Outer Shareable域共享

这里的inner和outer的划分,是可以配置定义的。outer shareable domain可以包含多个inner domain。 而一个outer domian内的inner domian的内存空间是不能为outer所共享,但是outer domian的内存空间可以被内部的所有inner domain共享。

由上面Note第一条可知,device为non-cacheable,所以device mem都是outer shareable domian 

在同一个shareability domain内,数据是要保持一致性的。

ArmV8的架构参考手册DDI0487J_a_a-profile_architecture_reference_manual.pdf给出了Inner和Outer Shareable Normal memory定义:

仔细对比上面两段话就可以发现inner和outer只是一个区域划分的问题,对于domian内部的observers来说要求是一样的。

1.1.3 device memory的特殊属性

简单提一下device mem的定义: 

上面的定义说Device memory是不能被推测性的读。是把被外设内存映射的区域赋为Device

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值