以下标绿色的为ACE新加信号。
ACE通道使用举例:
1)从Shareable locations,执行load操作
情景:master本地无此cacheline,但其他masetr的cache中有此cacheline(shareable)
A。Master 在AR通道发起一个 read transaction
B。 interconnect确定(知道)其他的master caches谁有这个AR地址的数据。通过snoop address channel 发送AR通道中的地址给它们( snooped master)。
C。Case1:有master在snoop response channel响应它持有此数据,然后把 snoop到的数据通过snoop data channel 返回给interconnect。interconnect将数据通过AXI 的read data channel返回给Master
Case2:所有master都回应它不持有这个地址的数据,interconnect发起一个read transaction 从main memory读取数据。再将数据通过AXI 的read data channel返回给Master。
D。Master 接收到数据,并反馈RACK。此次操作执行完成。
注:如果在一定时间内,snooped master和Master 都不负责将dirty数据写回main memory。interconnect必须在C步骤的case1返回数据给Master的同时,将数据写回main memory。
2)从Shareable locations,执行store操作,master本地无此cacheline
Master对Shareable locations(此cacheline)执行store操作,其他存在此cacheline的master需要将Shareable locations移除,使得Master对此cacheline是 unique copy。随后其他Master读取此cacheline时,再返回给它们。
情景1:仅对cacheline(一个cacheline可能有64byte)的一部分执行store
A。 initiating master(即想要执行部分store的master)通过向AR通道发送 ReadUnique transaction。目的是移除其他master中的cacheline副本同时获得最新的cacheline数据。
B。interconnect将ReadUnique transaction通过 snoop address channel转发给其他Master
C。其他Master 使用snoop response channel告知interconnect自己拥有此地址的cacheline.同时用 snoop data channel告诉interconnect 当前cacheline的值。
D。interconnect通过 read data channel发送cacheline的值和reponse给 initiating master。
注:如果在C步骤,snoop不到cacheline的数据,则interconnect发起读main memory的操作。
E。initiating master将收到的cacheline的值和store部分的值拼接写入cache。 然后回复interconnect RACK信号部分执行store已完成。当前cacheline的状态为Unique dirty 。
情景2:对整个cacheline执行store
这种情况下, initiating master(即想要执行整个cacheline store的Master)不需要获得cacheline的数据,只要求自己的cacheline是Unique
A。initiating master通过向AR通道发送 MakeUnique transaction。目的是移除其他master中的cacheline副本。
B。 interconnect通过 snoop address channel把此MakeUnique transaction转发给其他Master。
C。其他Master 使用snoop response channel告知interconnect cacheline副本已移除。
D。interconnect通过 read data channel(仅 response fields有效)发送 cacheline副本已移除的信息给initiating master
E。initiating master对整个cacheline执行store,然后回复interconnect RACK信号执行store已完成。
3)从Shareable locations,执行store操作,master本地存在此cacheline
A。initiating master通过向AR通道发送 CleanUnique transaction。目的是移除其他master中的cacheline副本。如果其他master中的cacheline是dirty的,需要写回Main memory。
B。 interconnect通过 snoop address channel把此CleanUnique transaction转发给其他Master。其他Master 使用snoop response channel告知interconnect :
Case1:此cacheline已被移除
Case2:此cacheline是dirty的,需要写回Main memory。其他Master 使用snoop data channel提供 dirty cacheline,interconnect组包写回main memory。
C。interconnect通过 read data channel(仅 response fields有效)发送 cacheline副本已移除的信息给initiating master
D。initiating master对cacheline执行store,然后回复interconnect RACK信号执行store已完成。
文章来源:https://www.toymoban.com/news/detail-476797.html
文章来源地址https://www.toymoban.com/news/detail-476797.html
到了这里,关于AMBA ACE cache一致性协议(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!