4. 多Cluster架构基础

在NUMA与多Cluster缓存一致性架构中,Cluster是介于单个CPU核心与整颗SoC之间的关键层级。它既是一组核心共享缓存与一致性域的边界,也是片上互连拓扑中的一个可复用节点。理解Cluster的定义、互连方式、片上网络以及粒度与拓扑选择,是设计可扩展缓存一致性协议的前提。

一、Cluster的定义与边界

Cluster通常指若干CPU核心加上它们共享的末级缓存(LLC或L2/L3切片)、一致性控制器(如CHI的RN-F集群、ACE的ACP端口)以及本地互连逻辑所组成的硬件单元。它的边界由三个要素决定:

  • 缓存层级边界:Cluster内核心共享同一级缓存,缓存一致性在Cluster内部由硬件监听或目录维护。
  • 一致性域边界:Cluster内部通常采用总线监听(snooping)或小规模目录;跨Cluster则必须依赖目录或全局一致性点。
  • 物理布局边界:Cluster在版图上相对紧凑,便于控制线延迟与时钟偏斜,是物理设计可收敛的最小一致性单元。
核心结论:Cluster不是简单的“核心分组”,而是缓存一致性域、物理布局域与互连拓扑节点三者的交集。定义Cluster时,必须同时回答“谁和谁共享缓存”“谁监听谁”“谁挂在哪个网络接口上”。

二、Cluster内与Cluster间互连

Cluster内部互连通常采用交叉开关(Crossbar)或共享总线,因为核心数量少(常见2~8核),延迟敏感且带宽需求集中。典型结构包括:

  • 共享总线:结构简单,监听天然广播,但扩展性差,适合2~4核。
  • 交叉开关:每对主从之间独立通路,支持并发访问,适合4~8核。
  • 本地环/网格:在较大Cluster中用于连接多个缓存切片与一致性控制器。

Cluster之间则通过片上网络(NoC)互连。与Cluster内互连不同,Cluster间互连强调:

  • 可扩展性:节点数从几个到几十个,总线无法承载。
  • 分层一致性:Cluster内监听、Cluster间目录,避免全局广播风暴。
  • 服务质量:不同流量(监听、数据、中断)需要优先级与虚拟通道。

下面这张图展示了一个典型的多Cluster架构:每个Cluster内部由核心、共享缓存和本地互连组成,Cluster之间通过NoC路由器与全局目录/一致性点连接。

多Cluster架构:Cluster内互连与Cluster间NoC Cluster 0 Core0 Core1 Core2 共享缓存 / 一致性控制器 本地互连(Crossbar) Cluster 1 Core3 Core4 Core5 共享缓存 / 一致性控制器 本地互连(Crossbar) Cluster 2 Core6 Core7 Core8 共享缓存 / 一致性控制器 本地互连(Crossbar) 片上网络 NoC(路由器 + 虚拟通道 + 链路) Router0 Router1 Router2 Router3 全局目录 / 一致性点(Home Node) 维护Cluster间共享状态与转发

三、片上网络(NoC)的关键作用

NoC不是简单的“连线”,而是多Cluster架构的一致性消息传输骨架。它需要承载三类关键流量:

  1. 监听/探测消息:目录向持有副本的Cluster发起Snoop或Snp,要求低延迟。
  2. 数据响应:缓存行数据从源Cluster传输到请求Cluster,要求高带宽。
  3. 一致性维护消息:如Invalidate、WriteBack、Evict,要求可靠且有序。

因此,NoC通常采用虚拟通道(Virtual Channel)区分流量类别,避免监听消息被大数据块阻塞。拓扑上常见的有:

拓扑 典型规模 优点 缺点 适用场景
Crossbar 4~8节点 延迟最低、无阻塞 面积和功耗随节点平方增长 小规模Cluster内
Ring 8~16节点 结构简单、面积小 跳数随节点增加,延迟不均 中等规模多Cluster
Mesh 16~64节点 可扩展、路径多样 路由复杂、面积较大 大规模SoC/Chiplet
Tree/Fat-Tree 32~128节点 带宽聚合好、层次清晰 根节点易成瓶颈 多级一致性域

四、Cluster粒度与拓扑结构的选择

Cluster粒度指一个Cluster内包含多少核心、多大共享缓存。粒度选择直接影响一致性开销与性能:

  • 粗粒度:Cluster内核心多(如8~16核),共享缓存大。优点是Cluster间监听少,目录规模小;缺点是Cluster内监听广播范围大,冲突概率高。
  • 细粒度:Cluster内核心少(如2~4核),共享缓存小。优点是监听域小、延迟低;缺点是Cluster数量多,NoC和全局目录压力大。
经验法则:Cluster内核心数应使监听广播的冲突概率与NoC的节点数达到平衡。常见设计是4~8核/Cluster,配合Mesh或Ring NoC,在面积、延迟和可扩展性之间取得折中。

五、案例:四Cluster Mesh架构的地址映射与一致性流程

假设一个SoC包含4个Cluster,每个Cluster 4核,通过2×2 Mesh NoC互连,全局目录位于Home Node。地址交错(interleave)按缓存行粒度分布到4个Home Node,每个Home Node负责一段地址范围。

Cluster0: Core0-3, LLC0, RN-F0
Cluster1: Core4-7, LLC1, RN-F1
Cluster2: Core8-11, LLC2, RN-F2
Cluster3: Core12-15, LLC3, RN-F3

NoC: 2x2 Mesh, 4 Router, 每Router连接1个Cluster
Home Node: HN0~HN3, 按地址位[15:14]选择
一致性协议: CHI, 支持SnpOnce/SnpClean/SnpUnique

当Core0读取地址A(Home Node为HN2)时,流程如下:

  1. Core0在Cluster0内发起读请求,LLC0未命中。
  2. RN-F0将请求经Router0注入NoC,路由到HN2。
  3. HN2查询目录,发现Cluster3持有副本,发送SnpOnce到RN-F3。
  4. RN-F3从LLC3取出数据,经NoC返回HN2,再转发给RN-F0。
  5. HN2更新目录状态,Cluster0获得共享副本。
常见误区:认为“Cluster内监听可以替代目录”。实际上,Cluster内监听只解决局部一致性,跨Cluster必须依赖目录或全局一致性点。若在NoC上直接广播监听,会导致网络拥塞和功耗急剧上升,且难以支持大规模节点。

六、复盘:设计多Cluster架构时的检查清单

  • Cluster边界是否同时满足缓存共享、一致性域和物理布局三个约束?
  • Cluster内互连是否支持并发访问,是否会出现监听风暴?
  • NoC是否为监听、数据、维护消息提供虚拟通道和优先级?
  • Cluster粒度是否与NoC拓扑、目录规模匹配?
  • 地址交错是否均匀分布到各Home Node,避免热点?
  • 跨Cluster一致性流程是否覆盖读共享、读独占、写失效、写回等全部状态迁移?

多Cluster架构的本质,是在一致性域、互连拓扑与物理实现之间做分层折中。Cluster定义清楚边界,Cluster内互连解决局部高效,NoC解决全局可扩展,而粒度与拓扑选择则决定整个系统的延迟、带宽与面积上限。