AMBA-CHI协议详解(一)- Introduction
AMBA-CHI协议详解(二)- Channel fields / Read transactions
AMBA-CHI协议详解(三)- Write transactions
AMBA-CHI协议详解(四)- Other transactions
AMBA-CHI协议详解(五)- Transaction identifier fields
AMBA-CHI协议详解(六)- Transaction identifier field flows
AMBA-CHI协议详解(七)- Ordering
AMBA-CHI协议详解(八)- Address, Control, and Data
AMBA-CHI协议详解(九)- Data transfer
AMBA-CHI协议详解(十)- Retry
AMBA-CHI协议详解(十一)- Network Layer
AMBA-CHI协议详解(十二)- Cache line states
AMBA-CHI协议详解(十三)- Read transactions and Cache line states
AMBA-CHI协议详解(十四)- Dataless transactions
AMBA-CHI协议详解(十五)- Write transactions
AMBA-CHI协议详解(十六)- Combined Write/Atomic transactions
AMBA-CHI协议详解(十七)- Snoop request types
AMBA-CHI协议详解(十八)- Response types
AMBA-CHI协议详解(十九)- Cache state transitions at a Requester
AMBA-CHI协议详解(二十)- Cache state transitions at a Snoopee
AMBA-CHI协议详解(二十一)- Hazard conditions
AMBA-CHI协议详解(二十二)- Read transaction flows
AMBA-CHI协议详解(二十三)- Dataless transaction flows
AMBA-CHI协议详解(二十四)- Write transaction flows/Atomic transaction flows
AMBA-CHI协议详解(二十五)- Stash transaction flows/Hazard handling examples
文章目录
Core 未命中读路径最典型的Flow:
1.1.体系结构概述
CHI体系结构是一种可扩展、一致性的集线器接口和片上互联,可由多个组件使用。CHI体系结构允许根据性能、功耗和面积系统要求灵活地进行组件连接拓扑。
1.1.1组件
基于CHI的系统的组件可以包括:
- Standalone processors:独立运行的处理器。
- Processor clusters:处理器集群。
- Graphic processors:图形处理器。
- Memory controllers:内存控制器。
- I/O bridges:I/O桥。
- PCIe subsystems:PCIe子系统。
- Interconnects:互联。
1.1.2.主要功能点
该体系结构的主要特点是:
-
可扩展的体系结构,实现从小型到大型系统的模块化设计。
-
独立的分层方法,包括协议层、网络层和链路层,具有不同的功能。
-
基于 Packet的通信。
-
由基于互连的Home节点处理的所有事务,该Home节点协调所需的Snoop、cache和memory访问。
-
CHI一致性协议支持:
-64字节Cache line的一致性颗粒度。
-可用于Snoop扩展的 Snoop filter和directory
-MESI和MOESI cache模型都具有从任何cache状态转发数据的功能。
-附加的partial和empty cache line的状态。 -
CHI transaction包含:
-丰富的transaction类型,允许实现性能、面积和功耗的系统cache。
-支持互联内的atomic操作和同步。
-支持高效执行独占访问。
-高效传输数据的事务,以便及时将数据移动到更接近预期使用点的位置。
-通过分布式虚拟内存(DVM)操作进行虚拟内存管理。 -
请求retry以管理协议资源。
-
支持端到端的QoS(Quality of Service)
-
支持内存标记扩展MTE(Memory Tagging Extension)
-
支持Realm领域扩展RME(Realm Management Extension)
-
可配置的数据宽度,以满足系统的要求。
-
基于transaction-by-transaction basis的ARM TrustZone支持。
-
保序模型,优化一致性写事务流。
-
跨组件和互连的Error报告和传播,以确保系统的可靠性和完整性。
-
使用数据Posion和每字节Error指示处理子缓cache line数据错误。
-
组件接口上的功率控制信号:
-使能flit级门控
-时钟门和电源门控制的组件激活和停用顺序。
-电源和时钟控制的协议活动指示。
1.1.3.体系结构层
功能分为以下几层:
-Protocol(协议层)
-Network(网络层)
-Link(链路层)
层 | 通信粒度 | 主要功能 |
---|---|---|
Protocol | Transaction | 协议层是CHI体系结构中的最顶层。协议层的功能是: 1:在协议节点生成和处理请求和响应。 2:在包括cache的协议节点上定义允许的cache状态转换。 3:定义每种请求类型的事务流 4:管理协议级别的流控制 |
Network | Packet | 网络层的功能是: 1:将协议消息打包 2:确定通过互连将数据包路由到所需目的地并添加到数据包所需的源和目标节点ID |
Link | Flit | 链接层的功能是: 1: 提供网络设备之间的流量控制。 2:管理Link通道,以提供跨网络的无死锁切换。 |
1.2.拓扑
CHI体系结构主要是与拓扑无关的。但是,本规范中包含了某些拓扑相关优化,以提高实现效率。下图显示了所选拓扑的三个实例,以显示可用的互连带宽和可扩展性选项的范围。
Crossbar:
这种拓扑结构构建简单,自然地提供了一个具有低延迟的有序网络。它适用于导线数量仍然相对较小的情况。这种拓扑结构适用于具有少量节点的互连。
Ring:
这种拓扑结构提供了互连布线效率和延迟之间的折衷。延迟随着环上节点的数量线性增加。这种拓扑结构适用于中等大小的互连。
Mesh:
这种拓扑结构以更多导线为代价提供了更大的带宽。它是非常模块化的,可以通过添加更多的开关行和列来轻松地扩展到更大的系统。这种拓扑结构适用于更大规模的互连。
1.3.术语
Transaction:
一个事务执行一个操作。通常,事务要么从内存中读取,要么写入内存。
Message:
Message是一个协议层术语,定义了两个组件之间的交换粒度。例如:
• Request
• Data response
• Snoop request
单个数据响应消息可能由多个数据包组成。
Packet:
Packet是通过端点之间的互连进行传输的颗粒。一条Message可能由一个或多个Packet组成。例如,单个数据响应消息可以由1到4个Packet组成。每个数据包都包含路由信息,如目的地ID和源ID,使其能够在互连上独立路由。
Flit:
FLow control unIT (Flit) 是最小的流量控制单元。一个Packet可以由一个或多个Flit组成。给定Packet的所有Flit都遵循通过互连的相同路径。
Phit:
PHysical layer transfer unIT (Phit)被定义为两个相邻网络设备之间的一次传输。一个flit可以由一个或多个phit组成。
PoS:
Point of Serialization (PoS) 是互连中的一个点,用于确定来自不同agent的请求之间的顺序。
PoC:
Point of Coherence (PoC) 是保证所有可以访问内存的agent都能看到内存位置的相同副本的点。在典型的CHI-based的系统中,它是互连中的HN-F。
PoP:
Point of Persistence (PoP) 是内存系统中的一个点,如果它存在的话,位于或超过一致性点,当系统电源被移除时,对内存的写入被维持,当电源被恢复到内存中受影响的位置时,写入被可靠地恢复。
PoPA:
Point of Physical Aliasing (PoPA) 是对一个物理地址空间(PAS)中的一个位置的更新对所有其他物理地址空间可见的点。
Downstream cache:
Downstream cache是从请求节点的角度定义的。请求的Downstream cache是请求使用CHI-Request事务访问的cache。请求节点可以发送带有数据的请求,以便将数据分配到下游cache中。
Requester:
通过发出请求消息来启动事务的组件。术语“Requester”可用于独立启动事务的组件。术语“Requester”也可用于独立发布下游请求消息的互连组件,或作为系统中发生的其他事务的副作用点。
Completer:
对从另一个组件接收的事务作出响应的任何组件。Completer可以是互连组件,如Home Node或Misc Node,也可以是位于互连外部的组件,如从属(Subordinate)组件。
Subordinate:
接收事务并完成事务的代理。通常,Subordinate是系统中最下游的代理。Subordinate也可以称为完成者或终结点(Completer or Endpoint)。
Endpoint:
Subordinate部件的另一个名称。顾名思义,Endpoint是事务的最终目的地。
Protocol Credit:
Completer提供的接受事务的信用证。
Link layer Credit:
一种信用证,即一个flit将在link的另一端被接受。链路层信用(L-Credit)是在链路层的单跳(single hop)的信用。
ICN:
互连(Interconnect,ICN)是用于协议节点之间通信的CHI传输机制。ICN可能包括以环形、网状、交叉( ring, mesh, crossbar)或某些其他拓扑连接的switches结构。ICN可以包括诸如Home Node和Misc Node之类的协议节点。ICN的拓扑结构是由实现定义的,针对需求设计相应的架构。
IPA:
Intermediate Physical Address (IPA),在两个阶段的地址转换中:
• 第一阶段产生一个中间物理地址。
• 第二阶段提供物理地址
RN:
Request Node ,生成协议事务,包括对互连的读取和写入。
HN:
Home Node (HN) ,是位于互连内的一个节点,它从Request 节点接收协议事务,完成所需的一致性操作,并返回响应
SN:
Subordinate Node,是从Home节点接收请求、完成所需动作并返回响应的节点。
MN:
Misc or Miscellaneous Node (MN),是位于互连内的一个节点,它从Request节点接收DVM消息,完成所需的操作,并返回响应。
IO Coherent node:
除了不可snoop的请求之外,还生成可snoop请求子集的请求节点。IO一致性节点生成的Snoopable请求不会导致以一致性状态缓存接收到的数据。因此,IO一致节点不接收任何Snoop请求。
Snoopee:
接收snoop的请求节点。
Write-Invalidate protocol:
一种协议,在该协议中,请求节点向系统中共享的cache line写入数据时,必须使所有共享副本无效,然后才能继续写入。CHI协议是Write-Invalidate protocol。
In a timely manner :
协议无法定义某个事情必须发生的绝对时间。然而,在一个足够空闲(IDLE)的系统中,它将在不需要任何明确行动的情况下取得进展和完成。
Inapplicable:
一个字段值,表示在处理message时未使用该字段。
1.4 事务分类
此规范支持的协议事务及其主要分类:
分类 | 支持的事务 |
---|---|
Read | ReadNoSnp, ReadNoSnpSep
ReadOnce ReadOnceCleanInvalid ReadOnceMakeInvalid ReadClean ReadNotSharedDirty ReadShared ReadUnique ReadPreferUnqiue MakeReadUnique |
Dataless | CleanUnique
MakeUnique Evict StashOnceUnique, StashOnceSepUnique StashOnceShared, StashOnceSepShared CleanShared CleanSharedPersist, CleanSharedPersistSep CleanInvalid, CleanInvalidPoPA MakeInvalid |
Write | WriteNoSnpPtl, WriteNoSnpFull, WriteNoSnpZero, WriteNoSnpDef
WriteUniquePtl, WriteUniqueFull, WriteUniqueZero WriteUniquePtlStash, WriteUniqueFullStash WriteBackPtl, WriteBackFull WriteCleanFull WriteEvictFull, WriteEvictOrEvict |
Combined Write | WriteNoSnpPtlCleanInv, WriteNoSnpPtlCleanSh, WriteNoSnpPtlCleanShPerSep, WriteNoSnpPtlCleanInvPoPA
WriteNoSnpFullCleanInv, WriteNoSnpFullCleanSh, WriteNoSnpFullCleanShPerSep, WriteNoSnpFullCleanInvPoPA WriteUniquePtlCleanSh, WriteUniquePtlCleanShPerSep WriteUniqueFullCleanSh, WriteUniqueFullCleanShPerSep WriteBackFullCleanInv, WriteBackFullCleanSh, WriteBackFullCleanShPerSep, WriteBackFullCleanInvPoPA WriteCleanFullCleanSh, WriteCleanFullCleanShPerSep |
Atomic | AtomicStore
AtomicLoad AtomicSwap AtomicCompare |
Other | DVMOp
PrefetchTgt PCrdReturn |
Snoop | SnpOnceFwd
SnpOnce SnpStashUnique SnpStashShared SnpCleanFwd SnpClean SnpNotSharedDirtyFwd SnpNotSharedDirty SnpSharedFwd SnpShared SnpUniqueFwd SnpUnique SnpPreferUniqueFwd SnpPreferUnique SnpUniqueStash SnpCleanShared SnpCleanInvalid SnpMakeInvalid SnpMakeInvalidStash SnpQuery SnpDVMOp |
事务的某些表示所代表的具体事务:
1.5 一致性概述
硬件一致性使系统组件能够共享内存,而无需维护软件缓存以保持一致性。
如果两个组件对同一存储器位置的写入可被所有组件以相同的顺序观察到,则存储器区域是一致的。
1.5.1 一致性模型
下图展示了一个一致性模型,该系统包括三个Requester组件,每个组件都具有本地cache和一致性协议节点。该协议允许同一存储器位置的cache副本驻留在一个或多个请求方组件的local cache中。
一致性协议强制要求,每当(store)存储发生在地址位置时,数据值的副本不超过一个。一致性协议确保所有请求者在任何给定的地址位置都能观察到正确的数据值。在每个存储(store)到一个位置后,其他请求者可以为他们自己的本地缓存获取数据的新副本,以允许存在多个缓存副本。
cache line被定义为大小为64字节的以64字节对齐的存储器区域。所有一致性都以cache line为颗粒度。
只有在内存位置的副本不再保存在任何cache中之前,才需要更新主内存
该协议不要求主存储器始终处于最新状态
——Note-数字硬鉴————
虽然不是必需的,但在cache副本仍然存在的情况下更新主内存是可以接受的。
————————————
该协议使Requester组件能够确定cache line是否是特定内存位置的唯一副本,或者是否存在相同位置的其他副本。这样可以确保:
• 如果cache line是唯一的副本,Requester组件可以更改cache line的值,而无需通知系统中的任何其他Requester组件。
• 如果cache line也可能存在于另一个缓存中,则Requester组件必须使用适当的事务通知其他cache。
1.5.2 Cache 状态模型
为了确定组件访问cache line时是否需要执行操作,协议定义了cache状态。每个cache状态都基于以下cache line特征:
Valid, Invalid :
• Valid:该cache line存在于cache中。
• Invalid:该cache line不存在于cache line中。
Unique, Shared:
• Unique:该cache line仅存在于该cache中。
• Shared:该cache line可能存在于多个cache中(并不能保证)。
Clean, Dirty
• Clean:该cache不负责更新主存。
• Dirty:cache line已相对于主内存进行了修改,并且此cache必须确保最终更新主存。
Full, Partial, Empty
• Full:cache line的所有字节有效。
• Partial:cache line可能有一些字节有效。也有可能都没效,也有可能都有效。
• Empty:cache line没有有效的字节。
1.6 组件命名
组件按CHI协议节点类型进行分类:
RN:
请求节点,生成协议事务,包括对互联的读取和写入。
请求节点进一步分类:
RN-F: 完全一致性的请求节点:
• 包括硬件一致性cache。
• 允许生成协议定义的所有事务。
• 支持所有的Snoop事务。
RN-D: 支持DVM的IO一致性请求节点:
• 不包含硬件一致性Cache。
• 接收DVM事务。
• 生成由协议定义的事务的子集(部分事务)。
RN-I: IO一致性请求节点:
• 不包含硬件一致性Cache。
• 不接受DVM事务。
• 生成由协议定义的事务的子集(部分事务)。
• 不需要Snoop功能。
HN:
Home节点,位于互联内部,用于从 Requester节点接收协议事务。
Home节点进一步分类:
HN-F: 完全一致性Home节点。
• 接收除DVMOp之外的所有请求类型。
• 包括一致性节点(PoC,Point of Coherence),其通过Snoop所需的RNF,处理事务的Snoop响应以及向请求节点发送响应来管理一致性。
• 管理内存请求之间顺序的序列化点(PoS,Point of Serialization)。
• 包含directory或snoop filter(记录和的状态),来减少多余的Snoop。
HN-I: 非一致性Home节点
• 处理协议定义的请求类型的子集(处理部分事务)
• 不包括PoC,无法处理Snoopable的请求。收到Snoopable请求后,必须符合协议的message进行响应。
• PoS,管理以IO子系统为目标的IO请求之间的顺序。
MN: 杂项节点,从Requester节点接收DVM事务,完成所需操作,并返回响应。
SN:
Subordinate节点,从属节点接收来自Home节点的请求,完成所需的操作,并返回响应。
从属节点进一步分为:
SN-F:
用于Normal memory的从属节点,可以处理Non-snoopable的Read、Write、和Atomic请求,包括他们的独占variants,以及缓存维护操作(CMO,Cache Maintenance Operation)请求。
SN-I:
用于peripherals(外设) or Normal memory,它可以处理Non-snoopable的Read、Write、和Atomic请求,包括他们的独占variants,以及缓存维护操作(CMO,Cache Maintenance Operation)请求。
下图展示了互联连接的各种协议节点类型。
1.7 Read操作的数据源
在基于CHI的系统中,Read请求(下图的Requester发起的Read)可以从不同的源获得数据。下图显示了这些来源:
• 互联内的cache(例如总线上的L3 Cache)
• Subordinate节点(例如SNF,连接DDR,也就是Memory)
• Peer RN-F(核)
Home节点可以选择,RN-F或Subordinate节点仅向Home返回数据。Home继而将接收到的副本转发给请求者。
如果数据提供者能够将数据响应直接转发给请求者,而不是通过Home,则可以省略上面描述的一跳(读事务流中获取数据的跳跃)。
协议使用了几种技术来减少完成事务的跳数,跳数的减少可节省读取和写入延迟,并降低互联带宽利用率。
Direct Memory Transfer (DMT)
允许Subordinate节点直接发送数据给Requester。(不用细究Flow,这里只是为了示意DMT省略诸多细节)
DMT是有条件的,因为有些事务的响应必须要回到HNF(Home节点),后面深究。
为了方便理解:
RNF看作核,HNF看作Home节点,SNF看作Memory。
Direct Cache Transfer (DCT)
定义允许对等RN-F直接向请求方发送数据的功能。(核不经过Home节点直接转发数据给另一个核)
DCT读取事务流中的数据提供者必须通知Home它已经向请求者发送了数据,在某些情况下,它还必须向Home发送数据副本。
Direct Write-data Transfer (DWT)
定义允许请求节点直接向下级节点发送写入数据的功能。
持续更新。。。