集群架构(Cluster Architecture)¶
概述¶
每个集群(Cluster)包含 1 个 Cube 核心 和 2 个伙伴 Vector 核心,它们共享基于硬件标志位(Flag)的同步机制。该架构支持同一集群内协同调度的 InCore 内核之间的高效数据通信。
集群拓扑¶
┌─────────────────────── Cluster ───────────────────────┐
│ │
│ ┌──────────┐ flags (8 per dir) ┌──────────┐ │
│ │ Vector 0 │◄════════════════════════►│ │ │
│ └──────────┘ SET/WAIT V→C, C→V │ Cube │ │
│ │ │ │
│ ┌──────────┐ flags (8 per dir) │ │ │
│ │ Vector 1 │◄════════════════════════►│ │ │
│ └──────────┘ SET/WAIT V→C, C→V └──────────┘ │
│ │
└───────────────────────────────────────────────────────┘
硬件标志位(Hardware Flags)¶
跨核同步使用具有 SET/WAIT 语义的硬件标志位:
| 属性 | 值 |
|---|---|
| 每方向每对等核心的标志位数 | 8 |
| 每对等核心的方向数 | 2(Vector→Cube、Cube→Vector) |
| 每个 Vector-Cube 对的标志位数 | 16 |
| 每个集群的标志位总数 | 32(2 对等核心 × 16) |
Vector 核心可以 SET 一个标志位供 Cube 核心 WAIT,反之亦然。
环形缓冲区数据通道(Ring Buffer Data Channel)¶
数据通过带流控的多槽环形缓冲区(Multi-Slot Ring Buffer)在生产者和消费者内核之间流动。每个槽(Slot)容纳一个固定大小的 Tile。环形缓冲区的位置取决于平台:
| 平台 | 位置 | 说明 |
|---|---|---|
| A2/A3 | 全局内存(GM) | 片外 DDR/HBM,集群内所有核心可访问 |
| A5 | 消费者片上 SRAM | UB(Vector 消费者)或 L1(Cube 消费者) |
A2/A3 平台: A5 平台:
Producer GM Consumer Producer Consumer
┌──────┐ ┌─────────────┐ ┌──────┐ ┌──────┐ ┌──────────────┐
│ │──▶│ slot[0..N-1]│──▶│ │ │ │───────────────▶│ UB / L1 │
│ Cube │ │ (off-chip) │ │ Vec │ │ Cube │ DMA to local │ slot[0..N-1] │
│ /Vec │ └─────────────┘ │ /Cube│ │ /Vec │ │ (on-chip) │
└──────┘ └──────┘ └──────┘ └──────────────┘
A5 平台将缓冲区放置在消费者本地 SRAM 中,消除了到 GM 的往返开销,实现更低延迟的数据交接。在 A5 上,消费者可以直接操作本地缓冲区中的 Tile 数据,无需从 GM 显式加载。
通信能力¶
TPUSH/TPOP 机制支持:
- Tile 级数据流 — Cube 和伙伴 Vector 核心之间(生产者 → 环形缓冲区 → 消费者)
- 跨核同步 — 通过硬件 SET/WAIT 标志位
- 流水线执行 — 多槽环形缓冲区(单向 8 槽,双向每方向 4 槽)
- 平台自适应缓冲区放置 — A2/A3 使用 GM,A5 使用消费者 SRAM
参见 TPUSH/TPOP 指令 了解指令规范,缓冲区管理 了解平台相关的缓冲区放置细节。