这是一个非常前沿且有价值的研究方向。结合 NoC(片上网络)生成框架 与 MLIR(编译器基础设施),本质上是在做**“应用驱动的互连架构定制(Application-Driven Interconnect Customization)”**。
[cite_start]参考刚才解读的《PICACHU》论文的思路,这篇论文是用 MLIR 来驱动 CGRA 的计算单元映射 [cite: 501, 582]。你要做的是把对象换掉:用 MLIR 来驱动 NoC 的通信路径生成或拓扑参数配置。
以下是为你构思的一篇顶会/顶刊级别论文的完整研究路径和架构建议:
1. 核心痛点与动机 (Motivation)
你需要先在这个领域找到一个“靶子”(痛点)。
- 现状: 现有的 NoC 生成通常是静态的、基于经验的(比如直接生成一个 4 x 4 Mesh),或者是基于过时的流量模型(Uniform Random, Tornado 等)。
- 问题: 现代 AI 模型(Transformer, MoE)的通信模式非常复杂且动态,通用的 NoC 往往存在带宽浪费或拥塞瓶颈。
- 你的机会: 利用 MLIR 强大的高层语义分析能力,从编译阶段这就精确提取出“谁要给谁发数据”、“发多少数据”,然后直接生成最匹配这个流量模式的 NoC 硬件(或配置)。
2. 系统架构设计 (Methodology)
你可以模仿 PICACHU 的架构,设计一个端到端的框架,大致可以分为三个阶段:
阶段一:编译器前端(MLIR Traffic Analysis)
这是你的核心创新点,如何用 MLIR “看懂”通信。
- [cite_start]输入: PyTorch/ONNX 模型 → MLIR (Linalg/Affine Dialects) [cite: 502]。
- 分析(Traffic Extraction Pass):
- 编写一个自定义的 MLIR Pass。
- 分析
linalg.generic或tensor操作中的数据依赖关系。 - 提取通信矩阵: 统计不同算子(将来会映射到不同 Core 上)之间的数据交换量。
- 时序分析: 不仅要知道发多少,还要利用 MLIR 的循环分析(Loop Analysis)预测大致在什么时间点发(Burstiness)。
阶段二:中间层映射(NoC Mapping & Configuration)
连接编译器和硬件生成器的桥梁。
- [cite_start]映射算法: 类似于 PICACHU 将 DFG 映射到 CGRA [cite: 581],你需要将提取出的通信图(Communication Graph)映射到物理的 NoC 拓扑上。
- 设计空间探索 (DSE):
- 编译器根据流量需求,自动决定 NoC 的参数:
- 拓扑结构: 是 Mesh, Torus 还是针对特定模型的定制拓扑?
- 链路位宽 (Link Width): 流量大的边分配更宽的链路。
- 虚拟通道 (Virtual Channels): 易拥塞的路径分配更多 VC。
- 路由算法: 静态生成无死锁的路由表。
- 编译器根据流量需求,自动决定 NoC 的参数:
阶段三:硬件生成后端(NoC Generation)
- 集成 NoC 生成器: 你不需要从头写 Verilog。
- 可以使用开源的 OpenSoC Fabric,或者基于 Chisel 的 Constellation。
- 更硬核的做法:使用 CIRCT (Circuit IR Compilers and Tools)。CIRCT 是 MLIR 的硬件方言,你可以定义一个
nocdialect,然后直接 Lowering 到 SystemVerilog。
- 输出: 生成可综合的 Verilog/RTL 代码,这个 NoC 是专门为你输入的那个 ML 模型“量身定做”的。
3. 具体实施路线图 (Roadmap)
如果你要写这篇文章,建议按以下步骤操作:
第一步:定义你的 noc Dialect (在 MLIR 中)
不要只用现有的 Dialect,定义一个自己的。
- 定义操作符:
noc.send,noc.recv,noc.router,noc.link。 - 作用:把高层的 Tensor 搬运 (
tensor.extract_slice等) Lowering 到你的noc.send指令,显式地表示数据搬运。
第二步:实现流量感知的布局布线 (Placement & Routing)
- 写一个 Pass,把计算任务分配给不同的 Core(模拟多核环境)。
- 根据任务分配,计算出 Core 之间的带宽需求矩阵。
- 创新点: 提出一种算法(例如基于模拟退火或强化学习),输入是带宽矩阵,输出是 NoC 的最佳配置参数。
第三步:实验验证 (Evaluation)
[cite_start]参考 PICACHU 的评估方式 [cite: 584, 591, 593]:
- 基准 (Baseline): 标准的 Mesh NoC,或者是均匀分配带宽的 NoC。
- 你的方案 (Ours): 经过 MLIR 分析后生成的定制 NoC。
- 指标:
- 延迟 (Latency): 端到端推理快了多少?
- 吞吐率 (Throughput): NoC 的饱和吞吐率提高了多少?
- PPA (Power, Performance, Area): 既然是定制的,是不是比通用 NoC 面积更小、功耗更低?(因为去掉了不必要的链路)。
- 工具: 使用 BookSim 2 (NoC 仿真器) 进行快速评估,或者用 Verilator 跑生成的 RTL。
4. 论文的 Storyline (叙事逻辑)
如果我来写这篇论文,标题可能会定为: “CompNoC: Compiler-Driven Interconnect Synthesis for Neural Accelerators via MLIR”
- Abstract: 现有的 AI 加速器设计中,NoC 往往与编译器优化脱节。我们提出了 CompNoC,利用 MLIR 捕获高层数据流语义,自动合成应用感知的片上网络。
- Intro: AI 模型变大 → 通信是瓶颈 → 现有 NoC 是静态的 → 编译器最懂流量 → 所以我们需要编译器驱动的 NoC 生成。
- Method:
- MLIR 流量提取 Pass。
- 流量感知的拓扑生成算法。
- 基于 CIRCT/Verilog 的自动代码生成。
- Evaluation: 在 LLaMA/ResNet 等模型上,相比标准 Mesh NoC,延迟降低 X%,功耗降低 Y%。
5. 关键技术栈推荐
- MLIR Framework: 必须熟悉 Linalg dialect 和编写自定义 Dialect/Pass。
- CIRCT: 如果你想把“结合 MLIR”这个点打得深一点,一定要看 CIRCT 项目,尝试用它来描述硬件结构。
- NoC Simulator: BookSim 2 是学术界标准,用来跑性能数据最快。
这个方向结合了 Compiler (软件) 和 Architecture (硬件),是典型的 Co-design,非常符合 ASPLOS, ISCA, MICRO 等顶级会议的口味。