memory定义(核和总线协议行为) -- ARM 系列


前言

该文章主要描述ARM中对于memory 类型的定义,以及概述该类型在核上发出的操作类型和在总线协议(AXI/ACE/CHI)的行为体现。(个人理解有误的地方请在评论区指出)


一、memory的定义

在ARMv8的架构中对应memory类型,Memory type 主要分为2类,Device和Normal memory类型,对应不同类型又携带着Shareabiliy和Cacheabiliy不同的能力。
在这里插入图片描述

图1 ARMv8-a对memory的定义

Shareabiliy:指的是可共享数据的区域,对于ACE协议中,明确Shareabiliy为none shareable和shableable属性(Inner/outer Shareable,system),被划分为以下4个domain

  • Non-shareable:该domain只包含一个master
  • Inner Shareable:该domain包含了几个master
  • Outer Shareable:该domain包含了Inner domain和其它master
  • System:该domain包含了系统中的所有domain

备注

  1. 最新的ACE协议中不存在Inner Shareable和Outer Shareable的概念,统一为Shareable属性,个人理解能更好的和CHI协议进行转换,因为在CHI的协议中没有Shareable概念,与该属性对应的是SnpAttr属性,另外在CHI的架构中会引入HNF节点来更好的管理可共享性,所有其不需要该属性值。
  2. ARMv8架构中不存在System的属性,认为System和Outer Shareable的属性是同一个,即在ARMv8-a的图中,Device的shareable属性为Outer Shareable,其实该属性定义为system更加合理

Cachebiliy:对cache操作的一种属性,被划分成三种

  • Non-cacheable:不会对cache进行任何操作
  • Write-Through cacheable:对cache和cache下级memory都会操作,会操作到end point
  • Write-Back cacheable:对cache进行操作,不会操作到end point

备注:

  1. Cachebiliy主要是对memory属性来说的,来表征该地址是否会有cache的操作,对应Device的属性都是None-cacheable的属性

Device属性:在定义中会存在以下属性

  • Reordering, R and nR:是否需要保序
  • Gathering and non-Gathering attributes:对应操作是否可以合并
  • Early Write Acknowledgement, E and nE:写操作是否可以提前回响应

问题1:为什么会存在Shareabiliy和Cacheabiliy的属性?
Shareabily的属性主要用来体现在多master的系统中cache数据可见的访问范围,也是实现硬件cache一致性的主要属性,Cacheabiliy的属性主要是用来体现对多级cache数据的操作行为。
问题2:Shareabiliy和Cacheabiliy的属性对cache一致性的影响?
在硬件cache一致性中Shareabily必然存在,用于体现cache一致性范围,Cacheabiliy的属性,相比硬件或软件一致性而言,使用Write-Through cache或non -cacheable能提供更好的机制来控制一致性,保证最终数据让所有master可见。

二、核中memory的定义

在这里插入图片描述

图2 R52核对memory的定义

该图为R52中对应4G内的地址段的memory默认属性定义
Normal, Non-shareable, Write-Back, Write-Allocate Cacheable

  • Normal memory的属性,并且不可共享的Non-shareable属性,硬件不保证数据的一致性,对cache数据的操作是将数据更新到cache,并不更新到内存,在cache内miss时,数据先要从内存把数据读到cache,再更新cache

Normal, Non-shareable, Write-Through Cacheable

  • Normal memory的属性,并且不可共享的Non-shareable属性,硬件不保证数据的一致性,对cache数据的操作是将数据更新到cache和内存

Normal, Shareable, Non-cacheable

  • Normal memory的属性,一种场景,shareable的属性,硬件要保证数据的一致性,读写数据时,可能会从其他master的cache内读数据,另一种场景shareable的属性是system domain,没有一致性,只有ddr,像ACE协议中描述的场景。(sharable属性划分,shareable:inner/outer shareable,system, none_shareable属性:none_shareable)

Device-nGnRE

  • 这种地址不需要保序,操作不能合并,支持EWA,可以提前返回写响应。

Device-nGnRnE

  • 这种地址不需要保序,操作不能合并,不能支持EWA,即从endpoint节点返回写响应。

三、总线协议memory的定义

ACE协议中对memoey的操作主要体现在axcache和axdomain的信号上面
在这里插入图片描述

图3 ACE协议对memory的定义

ACE协议中memoy的定义

  • 对于Device的属性,其是在system domain下,即系统中的所有的master都可配置
  • 对于none-cacheable的memory属性,同样对于系统中的所有master都是可见的,所有会在system domain,可以理解为在soc中的ddr,对于所有的核访问数据都是一致的(软件要保证多core操作一致性)
  • 对于cacheable(Write-Through和Write-Back)的memory属性,Non-shareable时,对应cache操作的作用域被限制在私有的cache内,及其他的master对该地址段不可见,硬件上不能保证多core的数据一致性inner shareable 对应cache操作的作用域被限制在inner domain域内的cache,该doamin内的所有master均可见并且硬件保证数据一致性 outer shareable对应cache操作的作用域被限制在outer domain域内的cache,该doamin内的所有master均可见并且硬件保证数据一致性
  • Deivce 中的order通过axid通道的值来保证保序性,EWA的属性通过axcache[0]bit来体现

在这里插入图片描述

图4 CHI协议对memory的定义

CHI协议中memoy的定义
在CHI协议中相关的属性有MemAttr、Order和SnpAttr,Order来表征是否保序,SnpAttr来表征shareable的属性。MemAttr的属性包括

  • Device:1为device,0为normal memory的属性
  • Allocate:包括cache在miss时是否需要data被allocate进cache
  • Cacheable:请求是否需要执行cache lookup,即查找cache内容
  • EWA:和bufferable一个属性,写响应是否需要提前返回

ACE和CHI对应memoey的转换关系

CHIACE
DeviceAxcache[1]
Allocateawcache[3] for writes,arcache[2] for read
CacheableAxcache[1] and Axcache[3] or Axcache[2]
EWAAxcache[0]
OrderAxid value
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值