【AMBA】Read and write Shareable transaction types

整理目的为解释AMBA总线中与缓存相关的transaction 类型,设计snoop 接口,snoop address channel。

对传输类型进行分类,有5个不同的大类。

1.Non-snooping 类型:这类传输不允许监听其他的master。

2.Coherent 类型:这类传输是针对那些可以被其他主设备缓存的内存地址,需要监听。

3.Memory update 类型:这类传输更新主存,必须不能监听其他主设备。

4.Cache maintenance 类型:这类传输是针对那些可以被其他主设备缓存的内存地址,需要监听。这些传输也可能需要被传输到下级cache中。

5.Barrier 类型:这类传输确立了其他事务之间的顺序。

6.DVM 类型:这些事务在参与分布式虚拟内存方案的组件之间传递操作。

Coherent与Cache maintenance传输需要进行监听。

细分6个大类中的不同传输:

Read 传输

Write 传输

对比观测可以看出read传输没有直接的memory update的操作,write 传输没有cache maintenance的。

文档中按照transaction的属性来进行区分而不是按照传输类型:

TransactionsTypeGroupChannelDescription
ReadReadNoSnoopNon-snoopingAR用于与其他主设备不可共享的内存空间,不会产生snoop。
ReadOnceCoherentAR

用于与其他主设备共享的内存空间中。

当需要获取数据的即时副本时,就会使用这种事务。

数据不会被缓存在本地以供将来使用

ReadCleanCoherent   AR

用于那些与其他主设备共享的可共享内存区域。ReadClean 事务保证不会将更新主内存的责任转移给发起事务的主设备

通常,当一个主设备想要获取缓存行的干净副本时,会使用 ReadClean 事务,例如,拥有写穿缓存(write-through cache)的主设备

ReadNotSharedDirtyCoherentAR它用于那些与其他主设备共享的可共享内存区域。ReadNotSharedDirty 事务可以在任何组合的 IsShared 和 PassDirty 响应下完成,除了 IsShared 和 PassDirty 同时被断言的情况。通常,这种事务由执行加载操作的缓存主设备使用,并且可以接受任何状态的缓存行,除了 SharedDirty 状态
ReadSharedCoherentAR它用于那些与其他主设备共享的可共享内存区域。ReadShared 事务可以在 IsShared 和 PassDirty 响应的任何组合下完成。通常,ReadShared 事务由执行加载操作的缓存主设备使用,并且可以接受任何状态的缓存行
ReadUniqueCoherentAR可与其他主设备共享的内存区域中进行操作。该事务获取数据的副本,并确保缓存行可以保持在唯一状态(Unique state)。这允许主设备对缓存行执行存储操作。 通常,当发起事务的主设备执行部分缓存行存储并且没有缓存行的副本时,会使用 ReadUnique 事务。
CleanCleanUniqueCoherentAR

事务确保以下几点:

  • 缓存行可以保持在唯一状态(Unique state)。这允许主设备对缓存行执行存储操作,但事务不会为主设备获取数据的副本。
  • 在另一个缓存中以脏状态(Dirty state)持有的数据被写入主内存,并且移除所有其他缓存行的副本。

通常,当主设备已经拥有数据的副本,并在可共享内存中执行部分缓存行存储操作之前,会使用 CleanUnique 事务。

CleanSharedCache maintenanceAR

CleanShared 事务是一种广播缓存清理操作,它可用于可共享和不可共享内存区域

CleanShared 事务的用途是确保所有主内存位置的缓存副本都是干净的(即没有被修改的)。这意味着,当一个主设备发起 CleanShared 事务时,它会通知所有其他可能拥有该内存位置副本的缓存,将这些副本标记为非脏状态,从而确保整个系统中对该内存位置的所有缓存副本都是同步的,并且没有副本包含未写入主内存的修改。

CleanInvalidCache maintenance        AR

CleanInvalid 事务是一种广播缓存清理和使无效操作,它可用于可共享和不可共享内存区域

CleanInvalid 事务的用途是确保主内存被更新,并且没有主内存位置的缓存副本。当一个主设备发起 CleanInvalid 事务时,它会确保所有其他缓存中相应的缓存行被标记为无效并且如果缓存行是脏的(即包含未写回主内存的修改),那么这些修改会被写回主内存。这样可以保证主内存中的数据是最新的,并且系统中不存在该内存位置的有效缓存副本。

MakeMakeUniqueCoherentAR

MakeUnique 事务用于在可与其他主设备共享的内存区域中进行操作。MakeUnique 事务确保以下几点:

  • 缓存行可以保持在唯一状态。这允许主设备对缓存行执行存储操作,但事务不会为主设备获取数据的副本。
  • 所有其他缓存行的副本都被移除。

这意味着发起 MakeUnique 事务的主设备想要确保它对某个特定缓存行有独占的控制权,以便它可以自由地修改数据而不受其他缓存副本的干扰。同时,这也确保了主设备是唯一可以访问该缓存行的设备,其他设备中的相应缓存副本将被标记为无效或被清除。

只能在full cache line的时候使用。

MakeInvalidCache maintenanceAR

MakeInvalid 事务是一种广播缓存使无效操作,它可用于可共享和不可共享内存区域。

MakeInvalid 事务的用途是确保没有主内存位置的缓存副本。当一个主设备发起 MakeInvalid 事务时,它会通知所有其他可能拥有该内存位置副本的缓存,将这些副本标记为无效。这通常用于确保内存中的数据不被缓存,或者在主设备需要独占访问某个内存位置时,确保其他所有缓存中的副本都是无效的,从而维护数据的一致性。

WriteWriteNoSnoopNon-snoopingAW

WriteNoSnoop 事务用于在不可与其他主设备共享的内存区域中进行操作。WriteNoSnoop 事务可能由以下原因产生:

  • 程序行为,例如执行存储操作。
  • 更新位于内存不可共享区域的缓存行的主内存。
WriteUniqueCoherentAW

WriteUnique 事务通常确保以下几点:

  1. 数据传播:写入的数据不仅更新发起事务的主设备的缓存,还需要确保更新被传播到主内存或者在多级缓存体系中的下游缓存。

  2. 缓存一致性:在多主设备系统中,WriteUnique 事务帮助维护缓存一致性,确保所有主设备对特定内存位置的视图都是一致的。

  3. 单个写操作:即使可能有多个主设备可以访问共享内存区域,WriteUnique 事务也确保只有一个主设备负责将写操作的结果传播到主内存或下游缓存,防止数据不一致。

WriteLineUniqueCoherentAW与WriteUnique的区别是WriteLineUnique需要对full cache line进行update。
WriteBackMemory UpdateAW

WriteBack 事务是一种写操作,它可用于可共享和不可共享内存区域。WriteBack 事务是将脏缓存行(dirty cache line)写入主内存或下游缓存以更新数据的操作。

注意: WriteBack 事务和 WriteClean 事务的区别在于,在可共享内存区域中,事务完成后缓存行是否仍然保留在缓存中。在 WriteBack 事务之后,缓存行将不再被分配。而在 WriteClean 事务之后,缓存行仍然保留在缓存中。

这意味着 WriteBack 事务通常用于以下情况:

  • 当缓存行包含的数据需要被写回到主内存或下游缓存时。
  • 当缓存行不再需要保留在发起事务的主设备的缓存中时。

相反,WriteClean 事务用于更新主内存或下游缓存,但更新后缓存行仍然保留在缓存中,以便快速响应后续的读取请求。这种操作通常用于确保数据的一致性,同时保持对数据的快速访问能力。

WriteCleanMemory UpdateAW
WriteEvictMemory updateAW

WriteEvict 事务可用于在逐出(evicting)一个干净的缓存行时。这种事务用于将缓存行写入到更低级别的缓存层次结构中,例如 L3 缓存或系统级缓存。WriteEvict 事务不需要更新主内存。

WriteEvict 事务只能在以下情况下使用:

  • 当缓存行处于 UniqueClean 状态时。
  • 当缓存行没有从不同的共享域(shareability domain)推测性地获取(speculatively fetched)时。

注意: 如果一个缓存行可能已经被推测性地获取,即它位于其共享域之外,那么这个缓存行可能会过时,因为后续对该缓存行的存储操作不要求更新它。如果一个缓存行可能是一个陈旧的副本,那么就不能通过使用 WriteEvict 事务将其写回到其共享域中。

WriteEvict 事务可以被丢弃。

这意味着 WriteEvict 事务是一种优化操作,它允许系统在不违反缓存一致性原则的情况下,将不再需要的干净缓存行移动到缓存层次结构中的更低级别,或者完全从缓存中移除。这种操作有助于管理缓存空间,确保缓存中只保留最相关或最可能被重用的数据。

EvictEvictMemory updateAW

Evict 事务表示一个缓存行已被从某个主控设备的本地缓存中逐出。Evict 事务不涉及数据传输。Evict 事务只能用于可共享(Shareable)的内存区域。

注意

  • Evict 事务仅由支持嗅探过滤器(snoop filter)的主控设备使用。当使用时,允许但不期望主控设备在不发出 Evict 事务的情况下逐出缓存行。
BarrierBarrierBarrierAW保证系统中事务执行的顺序和观测。
DVMDVM CompleteDVMARDVM操作事务完成。        
DVM MessageDVMARDVM操作事务

对于仅支持ACE-Lite的主设备,这些主设备没有AC通道,即一般是给没有Cache的设备使用,但是有snoop通道可以监听其他的主设备,所以可以发送一些主动的Cache maintenance的传输,对于读传输来说Coherent的传输几乎不能发,只能发ReadOnce。

  • 指示发出的事务是否可以被其他主控的硬件一致性缓存保存。
  • 发出屏障事务(barrier transactions)。
  • 发出广播缓存维护操作(broadcast cache maintenance operations)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值