10

xucvai · 2021年05月27日

ARM系列 -- ACE(三)

沽虚誉于小人,不若听之于天。
遗货财于子孙,不若周人之急。
-- 曾国藩

这周继续ACE话题。

Read事务通过读地址通道(AR channel)发出,数据和响应从读数据通道(R channel)返回,并由主机端置位RACK标志结束,read事务包括以下几种:

• ReadNoSnoop

• ReadOnce

• ReadClean

• ReadNotSharedDirty

• ReadShared

• ReadUnique

Clean事务通过读地址通道(AR channel)发出,不需要返回数据,响应从读数据通道(R channel)返回,并由主机端置位RACK标志结束,clean事务包括以下几种:

• CleanUnique

• CleanShared

• CleanInvalid

Make事务通过读地址通道(AR channel)发出,不需要返回数据,响应从读数据通道(R channel)返回,并由主机端置位RACK标志结束,make事务包括以下几种:

• MakeUnique

• MakeInvalid,

Write事务通过写地址通道(AW channel)发出,数据通过写数据通道(W channel)传输,响应通过响应通道(B channel)返回,并由主机端置位WACK标志结束,write事务包括以下几种:

• WriteNoSnoop

• WriteUnique

• WriteLineUnique

• WriteBack

• WriteClean

• WriteEvict

Evict事务通过写地址通道(AW channel)发出,不需要传输数据,响应通过响应通道(B channel)返回,并由主机端置位WACK标志结束。

Read barrier通过读地址通道(AR channel)发出,不需要返回数据,响应从读数据通道(R channel)返回,并由主机端置位RACK标志结束。Write barrier通过读地址通道(AR channel)发出,不需要返回数据,响应从读数据通道(R channel)返回,并由主机端置位WACK标志结束。对于barrier事务,简单了解一下就可以了,毕竟到了ACE5已经取消了,不支持了。

DVM(distributed virtual memory)事务通过读地址通道(AR channel)发出,不需要返回数据,响应从读数据通道(R channel)返回,并由主机端置位RACK标志结束。

具体的每个事务对于缓存行状态的影响,请参考spec,这里就不列出了,因为实在太繁琐了,不具体做的话估计不会感兴趣。

比较有意思的是spec中对重叠写事务(overlapping write transaction)的描述。如果两个主机端同时发起对shareable存储空间的同一缓存行的store操作,必须在一个节点,比如互连,对这两个请求排序。排在第一的主机可以正常发起事务操作,而排在后面的主机要窥探(snoop)前面的事务类型。下面为了解释清楚,我们把排在前面的主机叫master1,排在后面的叫master2。分为下面几种情况:

如果master2发出一个ReadUnique用以得到缓存行,那么:

  1. Master2发出ReadUnique
  2. Master2窥探到master1有如下的的事务:ReadUnique,CleanInvalid,MakeInvalid。如果master2有相同缓存行,那么必须无效掉(invalidate)该缓存行。如果master2没有该缓存行的拷贝,则无需操作
  3. 当ReadUnique完成后,master2得到更新后的缓存行
  4. Master2执行store操作

如果master2发出MakeUnique用以完成整条缓存行的写操作,那么:

  1. master2发出MakeUnique
  2. Master2窥探到master1有如下的的事务:ReadUnique,CleanInvalid,MakeInvalid。如果master2有相同缓存行,那么必须无效掉(invalidate)该缓存行。如果master2没有该缓存行的拷贝,则无需操作
  3. 当MakeUnique完成,master2继续完成整条缓存行的写操作

如果master2发出CleanUnique,用以对已经拥有的缓存行本地副本完成部分缓存行的写,那么:

  1. Master2发出CleanUnique
  2. Master2窥探到master1有如下的的事务:ReadUnique,CleanInvalid,MakeInvalid。Master2必须响应master1的事务,并无效本地副本
  3. 当Cleanunique完成,master2并不能对该缓存行进行操作
  4. Master2要发出一个新的ReadUnique,来获得新的缓存行数据
  5. Master2继续完成store

当一个发起主机(initiating master)发起一个事务,互连部分要负责根据这些事务,分发相应的snoop事务给其他的主机端。ARM的spec里面给出的映射表如下图:

640.png

在cached主机的snoop地址通道(AC)上,可以看见的事务如下:

• ReadOnce

• ReadClean

• ReadNotSharedDirty

• ReadShared

• ReadUnique

• CleanInvalid

• MakeInvalid

• CleanShared

不允许看见的事务包括:

• ReadNoSnoop

• CleanUnique

• MakeUnique

• WriteNoSnoop

• WriteUnique

• WriteLineUnique

• WriteBack

• WriteClean

• WriteEvict

• Evict

当这些snooped主机接收到snoop事务,要相应调整本地缓存行副本的状态。协议中规定了具体的行为,见下表:

640 (1).png

允许的缓存行状态变化如下:

640 (2).png

对于一些snoop事务,cached主机需要在snoop数据通道(CD)上提供相应的数据传输。

640 (3).png

先这样吧,下周接着整\~\~\~

【未完,待续】

作者:老秦谈芯
来源:https://mp.weixin.qq.com/s/mebhbjg7Ymp8bOKXn2ru5w
qrcode_LaoQinTanXin_1.jpg

相关文章推荐

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
7927
内容数
82
Arm AMBA协议集,APB,AHB,AXI,CHI等相关公开课回放及文章
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息