ACE初探

本文介绍了ACE协议的基本概念,包括术语解释、一致性模型以及通道定义等内容。ACE协议能够支持多种一致性协议组件之间的连接,如MESI、ESI等。文章还详细讨论了ACE协议中的高速缓存状态管理规则以及具体的操作实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ACE协议初探

ACE可以支持不同一致性协议组件的一致性连接,如MESI、ESI、MEI、MOSEI。
支持包含多级缓存的缓存组件和非缓存组件。

1. ACE术语

caching master
initiating master
snooped master

downstream cache
local cache
peer cache
snooped cache

main memory
snoop filter

2. ACE一致性模型

在这里插入图片描述
ACE协议允许相同内存位置的副本驻留在一个或多个master component的本地cache中。ACE一致性协议通过强制在任何给定位置发生store时,仅存在一个副本,来确保所有主机在该位置观察到正确的数据。在每次store到某个位置后,其他主机可以为自己的本地缓存获取新的数据副本,从而允许存在多个副本。

如果cl是唯一副本,则主组件可以更改cl的值,无需通知系统中其他主组件。如果cl可能存在于另一个cache中,则主组件必须使用适当的事务通知其他高速缓存。

为了确定组件访问cache时是否需要操作,ACE协议定义了五个高速缓存状态,每个高速缓存状态基于cl的特性:在这里插入图片描述 cache state model:

  • Invalid: cl不在cache中
  • UniqueClean: 该cl仅保存在该cache中,并且相对于主存没有修改,组件可以在不通知其他高速缓存的情况下执行对该cl的store。
  • UniqueDirty: 该cl仅保存在该cache中·该cl相对于主存已被修改,并且该cache必须确保这些改变随后被通知给主存;组件可以在不通知其他cache的情况下执行对该高速缓存线的后续store。
  • SharedClean: 该cl可能与其他cache共享。并不知道该cl相对于主存有没有修改,但是该组件不负责更新主存。在对该cl执行store之前,组件必须通知其他cache。
  • SharedDirty: 该cl可能与另外一个cache共享。该cl相对于主存已经修改,且该cache必须确保随后这些改变需要通知给主存。在执行对该cl的store之前,组件必须通知其他cache。

rules里面需要注意:

  • 相对于主存更新的cl必须在一个cache中处于Dirty态。
  • 相对于主存已经更新且位于多个cache中的cl,只能在一个cache中处于Dirty状态。

3. Channel

ACE协议定义:

  • 在现有AXI4通道上的信号
  • 在ACE特定通道上的信号
  • 确认信号

3.1 对现有AXI4通道信号的修改

在这里插入图片描述
write data和write resp不需要额外添加。
只有支持WriteEvict事务的组件才需要AWUNIQUE信号。

3.2 ACE协议额外定义的信道

新通道:监听地址通道 snoop address channel;监听数据通道 snoop data channel;监听响应通道 snoop response channel;

AC通道是对cache主设备的输入,该cache主设备为侦听事务提供地址和相关的控制信息。

CR通道是cache 主设备的输出,其提供对侦听事务的响应。每个侦听事务都有与其相联系的单个响应。监听响应指示CD通道中相关联的数据传输是否是期望的。

CD通道是可选择的输出通道,用于将监听数据从主机传输出去。通常,当被侦听的master具有可供返回的数据副本时,read或者clean侦听事务就会发生这种情况。

在这里插入图片描述

3.3 ACE额外的确认信号

在这里插入图片描述
信号表明master完成了读或者写事务。

4. 示例

4.1 从shareable位置执行load操作

master组件从可共享位置load数据,master组件在其本地cache中还没有该位置的副本。

  1. master组件在AR读地址通道上发出一个读事务。
  2. 互联在AC(侦听地址通道)上将可共享地址传递到其他拥有私有$的组件,即被侦听的master组件。
  3. 现在会发生以下情况之一:
	1. 如果任何被侦听的master组件持有所请求的cl,则通过下列方式指示:
		1. 在侦听响应通道CR上响应
		2. 在侦听数据通道上向互联提供数据
		然后,互联将具有相关联的响应和数据提供给发起的master组件,通过R(读数据)通道 。
		  
	3. 如果没有被侦听的master组件保存所请求的cl
		互联向主存发起事务。与标准事务一样,读数据在读数据通道上被提供给master。
  1. master组件使用RACK信号表示该读事务已完成。

注意:如果发起事务的master或被侦听的cache都不负责在稍后的时间点将dirty的cl写回主存,则互联必须将数据传递到发起事务master的同时写回主存。如果发生这种情况,那么互联必须生成事务地址并写入从被侦听master组件返回的脏数据。

4.2 从shareable位置执行store操作

当master store数据到可共享位置时,它移除了该cl所有其他的拷贝。这确保了master组件在执行store时具有cl的唯一副本。当相应的cacheing master组件随后读该cl时,该位置的cl的新值被传播到其他的cache。

4.2.1 部分cl的store操作

仅存储部分cl的master组件必须在执行store之前获得该cl的当前副本。

  1. 发起master组件通过在读地址通道上发出ReadUnique事务来获得cl的预存储形式,并请求移除其他副本。
  2. 互联将事务传递给其他cache,通过侦听地址通道AC。
  3. 当可访问的情况下,被侦听的master组件使用CR通道响应事务,指示它有所请求的cl。它还通过侦听数据通道将cl提供给互联。
  4. 互联使用读数据通道将cl和响应一起传递给发起主机。

如果在侦听期间没有找到cl的副本,则执行对主存的读取。互联在读数据通道上将cl和响应传递给发起的master组件

  1. master组件执行store并使用RACK信号来表示事务已经完成

在cl保持unique时,可以执行ld和st而不需要将事务广播至其他高速缓存。

4.2.2 整个cl的store操作

存储整个cl不需要提前获得cl副本。

  1. 发起master组件在都地址通道上发起MakeUnique事务获取cl的唯一副本,这将删除cl的所有其他副本。
  2. 互联将事务通过侦听地址通道传递事务到其他cache。
  3. 被侦听的master组件使用侦听响应通道响应事务,表明该cl是不是被成功移除了。
  4. 通过读数据通道向发起的master组件提供响应。只有响应字段有效,不发生数据传输
  5. master组件执行store并使用RACK信号指示事务已经完成。
4.2.3 cl已经被缓存的store操作
  1. 发起master组件通过在读地址通道上发出CleanUnique事务来请求cl的唯一副本。这将移除其他该cl的副本并将任何脏副本写入主存。该事务不会将cl返回到发起master组件
  2. 互联通过侦听地址信道将事务传递到其他cache中,被侦听的master通过侦听响应信道响应事务,传递cl被成功移除以及脏cl被互联写回主存的信息。
  3. 被侦听的master通过侦听数据通道将脏cl提供给互联,然后互联构造事务将脏cl写回主存。
  4. 使用读数据通道向发起的master组件提供响应。
4.2.4 重叠store操作

如果两个master组件尝试同时对同一cl进行可共享存储操作,则互联确定事务发生的顺序。
master 2 使用它的侦听端口观察master1的操作。

如果主端2存储partial cache line,且已经有数据的copy,当2 observes到1的store操作,2必须移除copy,然后进行下述操作之一:

  1. master 2必须重新组织一个数据请求操作,然后重新完成store
  2. master 2可以将partial cache line写入主存,但不保留数据的copy,在后续重新获取这个cache line时需要重新取数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值