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内部互连通常采用交叉开关(Crossbar)或共享总线,因为核心数量少(常见2~8核),延迟敏感且带宽需求集中。典型结构包括:
- 共享总线:结构简单,监听天然广播,但扩展性差,适合2~4核。
- 交叉开关:每对主从之间独立通路,支持并发访问,适合4~8核。
- 本地环/网格:在较大Cluster中用于连接多个缓存切片与一致性控制器。
Cluster之间则通过片上网络(NoC)互连。与Cluster内互连不同,Cluster间互连强调:
- 可扩展性:节点数从几个到几十个,总线无法承载。
- 分层一致性:Cluster内监听、Cluster间目录,避免全局广播风暴。
- 服务质量:不同流量(监听、数据、中断)需要优先级与虚拟通道。
下面这张图展示了一个典型的多Cluster架构:每个Cluster内部由核心、共享缓存和本地互连组成,Cluster之间通过NoC路由器与全局目录/一致性点连接。
三、片上网络(NoC)的关键作用
NoC不是简单的“连线”,而是多Cluster架构的一致性消息传输骨架。它需要承载三类关键流量:
- 监听/探测消息:目录向持有副本的Cluster发起Snoop或Snp,要求低延迟。
- 数据响应:缓存行数据从源Cluster传输到请求Cluster,要求高带宽。
- 一致性维护消息:如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 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)时,流程如下:
- Core0在Cluster0内发起读请求,LLC0未命中。
- RN-F0将请求经Router0注入NoC,路由到HN2。
- HN2查询目录,发现Cluster3持有副本,发送SnpOnce到RN-F3。
- RN-F3从LLC3取出数据,经NoC返回HN2,再转发给RN-F0。
- HN2更新目录状态,Cluster0获得共享副本。
六、复盘:设计多Cluster架构时的检查清单
- Cluster边界是否同时满足缓存共享、一致性域和物理布局三个约束?
- Cluster内互连是否支持并发访问,是否会出现监听风暴?
- NoC是否为监听、数据、维护消息提供虚拟通道和优先级?
- Cluster粒度是否与NoC拓扑、目录规模匹配?
- 地址交错是否均匀分布到各Home Node,避免热点?
- 跨Cluster一致性流程是否覆盖读共享、读独占、写失效、写回等全部状态迁移?
多Cluster架构的本质,是在一致性域、互连拓扑与物理实现之间做分层折中。Cluster定义清楚边界,Cluster内互连解决局部高效,NoC解决全局可扩展,而粒度与拓扑选择则决定整个系统的延迟、带宽与面积上限。