目录
1 基本概念
1.1 传输类型
1. 事务(Transaction):
- 定义: 在协议层面,事务代表一次完整的操作,如内存的读或写请求。
- 作用: 事务是系统中数据操作的基本单位,确保请求节点(Requester Node,RN)与主节点(Home Node,HN)或从节点(Slave Node,SN)之间的通信。
- 使用场景: 例如,处理器需要从内存读取数据时,会发起一个读事务;写入数据时,则发起一个写事务。
2. 数据包(Packet):
- 定义: 在网络层面,数据包是节点之间传输的基本单位,一个事务可能被拆分为一个或多个数据包。
- 作用: 数据包包含源节点和目的节点的ID,确保其在互连网络(Interconnect,ICN)上能够被正确路由。
- 使用场景: 当一个事务需要跨越多个节点传输时,事务会被拆分成多个数据包,每个数据包独立传输并在目标节点重新组装。
3. 流控单元(Flit):
- 定义: 在链路层面,流控单元是最小的流量控制单位,一个数据包可以由一个或多个流控单元组成。
- 作用: 流控单元确保数据在物理链路上传输时的可靠性和顺序性,同一数据包的所有流控单元在互连网络上传输时必须遵循相同的路径。
- 使用场景: 在数据传输过程中,较大的数据包被拆分为多个流控单元,以适应物理链路的带宽限制,并确保数据的完整传输。
1.2 常见三种拓扑结构(根据PPA选择)
- Ring 结构:彼此环形连接。随着连接节点而增加面积
- Mesh 结构:带来更大的带宽,面积也同步增加
- Crossbar interconnect:提供比较好的性能。但连接所有组件的成本增加
1.3 节点(Nodes)
1.3.1 RN
请求节点(Request Node,RN):请求节点负责发起协议事务,如读取或写入操作。根据其一致性支持程度,RN可进一步细分为:
RN-F(Fully Coherent Request Node)
- 完全一致性的请求节点,包含硬件一致性缓存
- 支持生成协议定义的所有事务
- 并支持所有的Snoop事务
RN-D(IO Coherent with DVM Support)
-
支持DVM的IO一致性请求节点,不包含硬件一致性缓存
-
接收DVM事务
-
生成协议定义的部分事务
RN-I(IO Coherent without DVM Support)
-
IO一致性请求节点,不包含硬件一致性缓存
-
不接收DVM事务
-
生成协议定义的部分事务
-
不需要Snoop功能
1.3.2 HN
Home节点(Home Node,HN):Home节点位于互联内部,用于从请求节点接收协议事务,管理内存请求之间顺序的序列化点(Point of Serialization,PoS),并根据需要处理Snoop请求。HN可进一步分类为:
HN-F(Fully Coherent Home Node)
- 接收除DVM操作的所有请求类型
- 用于Point of Coherence(PoC)管理一致性
- 用作Point of Serialization(PoS),用于管理多个memory请求的顺序
- 可能包含 Snoop fliter
HN-I(Non-coherent Home Node)
- 处理 CHI 协议定义的有限的请求类型
- 不包括PoC并且不能处理Snoop请求
- 管理IO子系统的IO请求顺序
1.3.3 SN
从属节点(Subordinate Node,SN):从属节点从Home节点接收请求,完成所需的操作,并返回响应。SN可进一步分为:
SN-F(Fully Coherent Subordinate Node)
-
用于普通内存的从属节点
-
可以处理非Snoopable的读、写和原子操作请求,包括它们的独占变体,以及缓存维护操作(Cache Maintenance Operation,CMO)请求
SN-I(Non-coherent Subordinate Node)
-
用于外设或普通内存
-
可以处理非Snoopable的读、写和原子操作请求,包括它们的独占变体,以及CMO请求
特殊情况:由于HN-I 不能处理Snoop请求,所以如果收到Snoop请求,需要以一个协议兼容的方式返回消息类型,不能造成通路的死锁
1.3.4 MN
杂项节点(Miscellaneous Node,MN):MN从请求节点接收DVM(Distributed Virtual Memory)事务,完成所需操作,并返回响应。
1.3.5 DN
DVM节点(DVM Node,DN):在CHI Chip-to-Chip(C2C)架构中,定义了一种新的节点类型,即DVM节点(DN)。DN位于芯片内,负责处理往返于远程芯片的DVM操作,传播本地DVM事务到远程芯片,并根据远程DVM请求执行所需的本地失效操作。
1.4 Points(PoS,PoC,PoP)
三个概念用于管理和维护系统内存的一致性和持久性:
1. 序列化点(Point of Serialization,PoS): PoS是系统中确定不同代理请求顺序的点。在CHI架构中,PoS通常位于互连网络(ICN)内的Home节点(HN)。当多个请求节点(RN)对同一内存地址发出请求时,PoS确保这些请求以一致的顺序被处理,避免数据竞争和不一致性。
示例: 假设两个处理器核(RN)几乎同时向同一内存地址发出写请求。PoS负责确定哪个请求应先被处理,以确保系统中所有组件都能以相同的顺序观察到这些写操作。
2. 一致性点(Point of Coherence,PoC): PoC是系统中确保所有代理都能看到内存位置相同副本的点。在CHI架构中,PoC通常位于HN-F(Fully Coherent Home Node)。PoC确保所有对特定内存地址的访问都能获得一致的数据视图,维护缓存一致性。
示例: 当一个处理器核修改了某个内存地址的数据,PoC确保其他处理器核在访问该地址时,能够看到最新的修改结果,而不会读取到过时的数据。
3. 持久性点(Point of Persistence,PoP): PoP是内存系统中的一个点,确保在系统电源断开时,内存写入操作能够被保留,并在电源恢复后可靠地恢复这些写入。PoP通常位于存储控制器或非易失性存储器中,确保关键数据在意外断电情况下不会丢失。
示例: 在数据库应用中,事务日志需要在写入后立即持久化,以防止系统崩溃或断电导致的数据丢失。PoP确保这些日志写入在电源恢复后仍然可用,保证数据完整性。
1.5 系统地址映射(SAM)
SAM全称 System address map。系统中每个Requester(包括RN和HN)必须有一个System Address Map(SAM)来决定一个request的target ID。SAM的范围可能只是简单的为所有发送的requests提供一个固定的node ID。SAM具体的结构和格式是由具体实现决定的。
SAM必须可以对全地址空间进行解码,CHI协议建议所有没有对应物理组件的地址都应该分配个一个agent代理,该agent可以对这些无用地址的访问提供恰当的error响应。
| ![]() |
1.5 ID
1.5.1 NodeID
节点ID
- 定义: 用于唯一标识CHI系统中的每个节点,包括请求节点(Requester Node,RN)、主节点(Home Node,HN)和从节点(Slave Node,SN)。
- 作用: 在网络层面,节点ID用于路由数据包,使其准确到达目标节点。
- 示例: 在一个包含多个处理器和内存控制器的系统中,每个组件都会被分配一个唯一的节点ID,以确保通信的准确性。
1.5.2 TxnID
事务ID(Transaction ID)
- 定义: 用于标识和跟踪CHI协议中的每个独立事务。
- 作用: 确保系统能够正确地匹配请求和响应,维护事务的一致性和完整性。
- 示例1: 当处理器发出一个内存读取请求时,会分配一个唯一的事务ID。内存控制器在响应时,会引用相同的事务ID,以确保响应对应正确的请求。
- 示例2:TxnID 定义了一个12位的字段(CHI-E),表示 outstanding 能力最大为1024。在RN向外发送 outstanding 事务时,每一唯一的 TxnID 都代表着每一笔独立的 trans,只有在RN收到传输完成响应或者Retry请求后,才能重置 TxnID
1.5.3 SrcID
源ID(Source ID)
- 定义: 标识发起特定事务的源节点。
- 作用: 使目标节点能够识别事务的发起者,以便在需要时发送响应或进行进一步的通信。
- 示例: 当内存控制器接收到一个写请求时,源ID指示哪个处理器发起了该请求。
1.5.4 TgtID
目标ID(Destination ID)
- 定义: 标识事务的预期接收节点。
- 作用: 确保事务被正确路由到目标节点。
- 示例: 处理器发出读取请求时,目标ID可能指向特定的内存控制器或缓存。
1.5.5 StramID
流ID
- 定义: 用于标识属于同一数据流的多个事务。
- 作用: 在需要时,确保系统能够识别和管理相关联的事务序列。
- 示例: 在视频处理应用中,多个数据包可能属于同一视频流,流ID用于将这些数据包关联起来。