1. Proposed Locus Architecture
A. Proposed Locus Architecture 详细介绍
这一节给出了 Locus 加速器的整体架构设计。它的核心目标是支持 跨阶段融合(cross-stage fusion) 和 数据并行(data parallelism),从而减少中间数据在 DRAM 中的往返,并让多个 reads 复用同一份图数据。下面从架构总览、全局缓冲区组织、控制与模式切换三个方面详细展开。
1. 架构总览
Figure 5 展示了 Locus 的整体架构。加速器主要由以下组件构成:
- 可重构 PE 阵列:用于执行线性链接、图链接和比对三个阶段的统一计算。
- 两级存储层次:
- 全局缓冲区(Global Buffer, GLB):容量较大,用于保存跨阶段中间数据和当前分区的图数据。
- 本地暂存器(Local Scratchpad):容量较小,用于保存 WFA 比对过程中的波前 DP 矩阵,访问延迟更低。
- Graph Path Finder (GPF) 引擎:负责在图链接阶段执行最短路径搜索。
- Traceback Engine:负责从比对分数矩阵回溯生成 CIGAR 字符串。
- Range Maximum Query (RMQ) 引擎:用于线性链接阶段快速筛选候选前驱 anchor,降低 PE 阵列的计算量。
这些组件共同支持 S2G mapping 的完整流水线:从 anchors 输入,经过线性链接、图链接、比对,最终输出 CIGAR 结果。架构的关键在于:中间结果不再写回 DRAM,而是保留在 GLB 中,供后续阶段直接使用;同时,当前分区的图拓扑数据也被缓存在 GLB 中,供多个 reads 共享。
2. 全局缓冲区组织(Global Buffer Organization)
GLB 是 Locus 实现融合执行的核心。它被划分为 四个逻辑 bank,分别服务于中间数据复用和图数据复用。
2.1 支持中间数据复用的三个 bank
这三个 bank 保存跨融合阶段交换的数据:
-
Anchor Bank:
- 存储 seeding 阶段产生的 seed anchors。
- 这些 anchors 被线性链接阶段消费。
-
Intermediate Result (IR) Bank:
- 保存链接分数(chaining scores)和回溯指针(traceback pointers)。
- 这些数据会传递给图链接和比对阶段。
- 最终比对结果(CIGAR)也写回这里。
-
Sequence Bank:
- 存储打包的 DNA 子序列(packed DNA subsequences)。
- 用于比对阶段的碱基级比较。
2.2 支持图数据复用的 bank
- Graph Topology Bank:
- 缓存当前活跃分区 bin 的顶点序列(vertex sequences)和邻接表(adjacency lists)。
- 这些图结构数据被多个 reads 共享,避免每个 read 都从 DRAM 重新加载。
- 该 bank 采用 双缓冲(double-buffered):当当前 bin 正在处理时,下一个 bin 的数据可以被预取到另一个 buffer 中,从而隐藏内存延迟。
2.3 容量分配:60% / 40%
GLB 的容量被静态划分为两部分,以匹配泛基因组图的结构特征:
- 约 60% 分配给 fusion working set:用于数据流并行(dataflow parallelism),即保存 anchors、中间结果、序列和 WFA scratchpad 等。
- 约 40% 分配给共享子图数据:用于数据并行(data parallelism),即缓存 Graph Topology Bank。
这个比例反映了论文中观察到的结构不变量:,即约 40% 的路径会跨越 bubble 区域。静态划分避免了运行时仲裁开销,同时匹配了图结构隐含的预期工作负载分布。
3. 控制与模式切换(Control and Mode Switching)
3.1 主控制器与三阶段 FSM
主控制器(main controller)负责协调 tile 的执行,并管理流水线阶段之间的切换。它采用一个 三阶段有限状态机(FSM):
- Load:加载当前 tile 所需的 anchors 和图数据。
- Execute:执行 LC → GC → AL 的计算。
- Writeback:写回最终结果(如 CIGAR)。
3.2 Tile Prefetch Engine (TPE)
TPE 是实现数据并行机制的关键组件,它通过三个功能来协调 tile 预取:
-
四条目 tile 队列:
- 缓冲来自 host 的待处理 tile 元数据。
- 队列深度为 4,允许一定程度的流水线重叠。
-
预取触发器(prefetch trigger):
- 发起 DMA 传输,将下一个 bin 的顶点序列和邻接表加载到非活跃的双缓冲 bank 中。
- 这样,当前 bin 还在处理时,下一个 bin 的数据已经在后台加载。
-
缓冲区交换控制(buffer swap control):
- 当一个 tile 完成时,切换双缓冲 bank,使预取好的数据变为活跃。
- 从而实现计算与数据加载的重叠。
Host 侧负责确定 bin:即在一个 tile 批处理过程中,包含最多 anchors 的那个分区。TPE 接收这个 bin ID 以及下一个顶点地址,并协调预取时机,将内存延迟隐藏在计算之后。
3.3 模式切换
Locus 的 PE 阵列需要在不同阶段切换工作模式:
- Chaining 模式:用于线性链接和图链接的分数计算。
- Alignment 模式:用于 WFA 比对(包括 affine gap 和 edit distance 两种子模式)。
切换模式时,需要重新配置 PE 的数据通路多路复用器(datapath multiplexers)和互连拓扑(interconnection topology)。论文给出了具体的切换协议:
- 排空 in-flight 操作:等待当前正在执行的操作完成,耗时 2 个周期。
- 广播模式配置到所有 PE:将新的模式配置广播给 PE 阵列,耗时 1 个周期。
- 重配置 GLB 仲裁:这部分与前面步骤重叠执行,不额外增加延迟。
因此,每次模式切换的总延迟为 3 个周期。由于每个 tile 内包含数千次操作,这个切换开销被充分摊销,对整体性能影响极小。
4. 设计意义总结
Locus 的架构设计直接回应了 S2G mapping 的两个核心挑战:
-
中间数据移动主导 DRAM 流量:
- 通过 GLB 的 Anchor Bank、IR Bank、Sequence Bank 保留跨阶段中间结果,消除 LC→GC→AL 之间的 DRAM 往返。
- 通过 Graph Topology Bank 缓存当前分区的图数据,让多个 reads 复用,减少 topology 加载。
-
结构不规则性阻碍并行:
- 通过 TPE 的预取和双缓冲机制,实现计算与数据加载的重叠,隐藏内存延迟。
- 通过静态划分 GLB 容量(60% fusion / 40% topology),匹配 的图结构特征,避免运行时仲裁。
- 通过可重构 PE 阵列和低开销模式切换(3 周期),在统一硬件上支持多种计算模式。
总之,A 节描述的 Locus 架构是一个以 片上数据复用 和 流水线融合 为核心的加速器设计,为后续的 PE 阵列细节、GPF 引擎、Traceback 引擎和数据流映射奠定了基础。