首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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用以得到缓存行,那么:

Master2发出ReadUnique

Master2窥探到master1有如下的的事务:ReadUnique,CleanInvalid,MakeInvalid。如果master2有相同缓存行,那么必须无效掉(invalidate)该缓存行。如果master2没有该缓存行的拷贝,则无需操作

当ReadUnique完成后,master2得到更新后的缓存行

Master2执行store操作

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

master2发出MakeUnique

Master2窥探到master1有如下的的事务:ReadUnique,CleanInvalid,MakeInvalid。如果master2有相同缓存行,那么必须无效掉(invalidate)该缓存行。如果master2没有该缓存行的拷贝,则无需操作

当MakeUnique完成,master2继续完成整条缓存行的写操作

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

Master2发出CleanUnique

Master2窥探到master1有如下的的事务:ReadUnique,CleanInvalid,MakeInvalid。Master2必须响应master1的事务,并无效本地副本

当Cleanunique完成,master2并不能对该缓存行进行操作

Master2要发出一个新的ReadUnique,来获得新的缓存行数据

Master2继续完成store

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

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

• ReadOnce

• ReadClean

• ReadNotSharedDirty

• ReadShared

• ReadUnique

• CleanInvalid

• MakeInvalid

• CleanShared

不允许看见的事务包括:

• ReadNoSnoop

• CleanUnique

• MakeUnique

• WriteNoSnoop

• WriteUnique

• WriteLineUnique

• WriteBack

• WriteClean

• WriteEvict

• Evict

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

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

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

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

祝大家周末快乐!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230217A08F3I00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券