AXI SPEC学习笔记(4)

本系列内容来自ARM官方spec

1、事务类型和特性
Sub被分成两类:
Memory Sub:该类型的Sub要求能够正确处理所有事务类型。
外设Sub:该类型的Sub有一个定义的存取方法,一般该方法在组件data sheet内定义,描述了Sub能正确处理的事务类型。
定义的方法以外的任何存取必须按照协议完成,但是当这种存取建立后,不要求外设Sub能够继续正确的操作,只是要求继续按照协议下的行为完成剩下的事务,这种服从协议的行为一般是为了防止死锁。由于外设Sub仅需要在定义的存取方法下正确工作,因此它可以只含有接口信号的子集。

事务特性使用AxCACHE来定义,控制了跨系统的事务如何进行,系统级cache如何处理事务。

2、AXI3memory特性信号

AxCACHE[0]:bufferable,当该位拉高时,互连组件或者任何组件,可以延迟事务到达目的地若干个时钟周期。一般该特性只和写事务相关。
AxCACHE[1]:cacheable,当该位拉低时,禁止事务分配。拉高时,事务分配是允许的。RA和WA将给出额外的信息。终点的事务特性不需要和源点事务特性想匹配。对于写意味着几次不同的写操作可以合并在一起。对于读这意味着那个位置的内容可以被预读,或者一次读取的值可以用于多次读事务。
AxCACHE[2]:读分配(RA),当该位拉高时,建议对读事务进行分配,但不是强制的。若cacheable拉低,RA必须拉低。
AxCACHE[3]:写分配(WA),当该位拉高时,建议对写事务进行分配,但不是强制的。若cacheable拉低,WA必须拉低。

3、AXI4对memory特性信号的改变
(1)AxCACHE[1]:cacheable改为Modifiable,当该位拉高,表示事务特性可改变。拉低时,表示事务特性不可改变。改名是为了更好的描述功能,其实际作用不变。
一次不可改变的事务通过拉低AxCACHE[1]来声明。一次不可改变事务不可以被切分成多个事务或者和其他事务合并。且以下参数不可以改变:
在这里插入图片描述
在不可以修改事务中,AxCACHE只能将该事务从bufferable转成non-bufferable。其他关于AxCACHE的改变均是不允许的。
一次不可修改事务将AxLOCK拉高则声明了专用存取,被允许修改AxSIZE和AxLEN只要存取的总字节不变。

可修改事务通过拉高AxCACHE[1]声明,可修改事务可以在以下方面修改:
一次事务可以分解为多个事务;多个事务可以合并成一次事务;一次读事务可以获取比所需求的更多的数据;一次写事务可以存取更多的地址域,使用WSTRB信号确保只有合适的位置被更新;在每次生成的子事务中,AxADDR、AxSIZE、AxLEN、AxBURST均可以修改;AxLOCK不可以修改,AxPROT。
AxCACHE可以被修改,但任何修改都要保证事务对其他组件要可见。以下修改是不允许的,存取不同的4KB地址区间;对单个复制原子大小区域的单次访问被执行为多次访问。
在这里插入图片描述
在这里插入图片描述
4、memory类型
AXI4协议通过对AxCACHE进行编码来区分memory类型。
在这里插入图片描述
non-bufferable:写响应必须从终点获取;读数据必须从终点获取;事务必须是non-modifiable;读必须不能被预读,写不能被合并。
bufferable:写响应可以从中间节点获得;写事务必须对终点可见;读数据必须从终点获得。事务必须是non-modified;不能预读。写不能被合并。
对于读事务而言,bufferable和non-bufferable没有区别。
non-cacheable bufferable:写响应可以从终点获取。写事务必须对终点及时可见。读数据必须从终点或者写事务中传给终点的数据中获取。如果读数据从一个写事务中获得,它必须从最新的写版本中获得,数据不能被缓存以供之后的读取。事务是可修改的,写可以合并。
non-cacheable non-bufferable:写响应必须从终点获取;读数据必须从终点获取;事务是可修改的,写可以合并。
write-through No-Allocate:写响应可以从中间节点获取;写事务必须对终点可见;读数据可以从中间缓存副本中获取;事务是可修改的;读可以预取;写可以合并;读事务和写事务均需要查询cache。
write-through write-allocate:行为和write-through no-allocate一致,但分配暗示是不建议对读事务分配cache,建议对写事务分配cache。
write-through read and write-allocate:行为和write-through no-allocate一致,但分配暗示是建议对读事务和写事务分配cache。
write-back no-allocate:写响应可以从中间节点获取。写事务不需要对终点可见;读数据可以从中间cache副本中获取;读可以预取;写可以合并。
write-back read-allocate:行为和write-back no-allocate一致,但建议读事务分配,不建议对写事务分配。
write-back write-allocate、write-back read and write-allocate差不多。

5、

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值