跳转至

NPU 挑战实验说明

过去这些年,AI 从识别图片发展到能写代码、做科研的大模型,背后是大量的矩阵乘法和相应的加速硬件。模型越大、上下文越长,对算力、带宽和能效的要求就越高。从手机里的 NPU,到数据中心的 TPU,再到 GPU 里的 Tensor Core,AI 硬件的竞争,本质上就是“怎样用更少的面积和功耗,把矩阵乘做得更快”的竞争。

本实验就是亲手做一遍 NPU:我们提供一套基于 4x4 脉动阵列(systolic array)的 NPU 参考实现(SystemVerilog 和 Chisel 两个版本)以及配套 C 驱动;你需要把它集成到自己的 RISC-V SoC 中,在 CPU 上运行矩阵乘,测量真实算力与利用率,并针对瓶颈做优化。

这个实验并不轻松,但会很有收获

它涉及从底层硬件到上层软件的多个领域,调试量不小。但做完之后,你会对“AI 芯片为什么长这样”“峰值算力和实际算力差在哪里”“一个矩阵乘从一行 C 函数调用到硬件进行乘加运算到底经过了多少层”有非常具体的理解。

本实验与 uCore 挑战实验 并列,是大实验的不同进阶方向。本实验在 CPU 已经能工作的基础上,集成一个 NPU,并分析计算与访存瓶颈,再进行软硬件协同优化。两者都需要较大的投入,建议根据自己的兴趣和时间谨慎选择,不建议同时做,也不要卷功能数量。

前置要求

在开始本实验前,你的 CPU 需要首先能够运行监控程序完整版本,包含中断、异常和页表支持,与 uCore 挑战实验的前置要求一致。如果你的 CPU 还没有时钟计数(rdcycle 或 mtime),需要先实现一种计时手段,否则无法做性能评测。

先跑通 CPU,再做 NPU

如果 CPU 还不能稳定运行监控程序完整版本,建议先完成大实验。NPU 实验中可能会遇到很多计算结果错误的问题,最终都会追溯到总线、地址译码或软件编译问题,而不是 NPU 本身。

实验内容

本实验的核心是“集成 + 评测 + 优化”,具体要求如下。

1. 集成 NPU

把 NPU 的顶层模块 npu_top 作为 Wishbone Slave 挂到总线上:

  • 地址窗口 0x2000_0000,掩码 0xFFFF_0000(64KB);
  • 在 Wishbone 总线上挂载 npu_top;
  • NPU 与 CPU 使用同一时钟,注意复位极性(npu_top 高有效)。

2. 跑通矩阵乘

使用 cod-npu 仓库根目录下的 software/npu.c / npu.h,在 CPU 上完成:

  • 4x4x4 的基础矩阵乘;
  • 8x8x8、16x16x16、32x32x32 的通用矩阵乘;
  • 运算结果与 npu_matmul_sw(CPU 标量参考实现)对拍。

注:形如 MxNxK 的矩阵乘表达方式,代表的是 MxK 矩阵乘以 KxN 矩阵,得到 MxN 矩阵。

3. 测量性能

至少选择 5 种不同规模的矩阵乘,在 CPU 侧测量端到端周期数,计算:

  • 实际算力(INT8 OPS);
  • 理论峰值算力(INT8 OPS);
  • 算力利用率(%)。

同时分析周期都花在了哪里:计算、L0A/L0B/L0C 访问、数据搬运、CPU 开销各占多少。画出各单元工作的 Gantt 图和数据流图。分析 NPU 做矩阵乘的 Roofline 模型。

4. 做优化

从 NPU 性能优化方向中选择多项,完成设计、实现和评测,并给出优化前后的对比。

不能硬编码矩阵乘

为了保证灵活性,不允许把完整的矩阵乘直接硬编码在硬件里。必须由 CPU 调度 NPU 的 LDTILE/TMUL 等指令,并且至少用 5 种不同规模的矩阵来展示灵活性。可以把常用矩阵形状的算子做成软件库,但不能只支持一种固定的矩阵大小。

5. 报告与答辩

报告至少应包含:软硬件设计、正确性验证、性能数据、瓶颈分析、优化前后对比,并在答辩中展现对整个 CPU + NPU + 软件系统的理解。具体要求见实验步骤和性能评测与优化。

答辩时,需要:

  • 在 ThinPAD 云平台上运行你的 CPU + NPU,串口打印矩阵乘法的实际性能,矩阵乘结果正确;
  • 展示至少 5 种规模的性能数据,并解释计算公式和单位;
  • 展示所做优化的前后对比,说明瓶颈和收益;
  • 能回答关于设计细节的问题。

关于 AI 政策

在 AI 时代,很多工作可以由 AI 代劳;但最重要的是,人应当理解整个设计,知道如何分析性能瓶颈、如何针对瓶颈设计软硬件。除了追求峰值性能与实测性能,更重要的是展示你对 CPU + NPU + 软件整体系统的理解:如何从初始版本出发,一步一步分析性能,当前瓶颈是计算还是访存,主要瓶颈位于哪个部件的哪个步骤,有哪些优化思路,如何评估可行性与收益,以及最后如何落地。这些才是你应当从这门课程中带走的知识,而不是只知道向 AI 许愿。

最后再次提醒:人生很精彩,适度娱乐,拒绝内卷。祝各位造机愉快!

作者:Jiajie Chen