跳到主要内容
昇腾AI芯片与算子开发

1.2 达芬奇架构:AI Core 与三大计算单元

深入昇腾达芬奇架构的核心——AI Core,拆解 AI Cube 矩阵单元、AI Vector 向量单元与 AI Scalar 标量单元的分工,理解昇腾 NPU 与 NVIDIA GPU 在计算组织方式上的根本差异

达芬奇架构 AI Core AI Cube AI Vector 昇腾

昇腾 AI 处理器采用的自研架构叫 达芬奇(Da Vinci)架构。达芬奇不仅是一位文艺复兴大师的名字,也暗合昇腾的设计哲学:像文艺复兴一样,让「计算艺术」在 NPU 上重新展开。理解昇腾,第一站就是理解达芬奇架构中最核心的单元——AI Core。

📑 目录


1. 达芬奇架构的总体布局

昇腾 AI 处理器的片上结构大致可以分成几层:

                   昇腾 AI 处理器(SoC)
   ┌────────────────────────────────────────────┐
   │  多个 AI Core(训练芯片集成更多)              │
   │       每个 AI Core 内部:                    │
   │       ┌───────────────────────────┐         │
   │       │ AI Cube(矩阵)            │         │
   │       │ AI Vector(向量)          │         │
   │       │ AI Scalar(标量/控制)     │         │
   │       │ Unified Buffer / L0 缓存   │         │
   │       └───────────────────────────┘         │
   │                                             │
   │  L2 Cache(片上二级缓存)                     │
   │  HBM(片外高带宽内存)                        │
   │  互联:HCCS / PCIe / RoCE 控制器             │
   └────────────────────────────────────────────┘

一句话概括:昇腾把算力组织成「多个 AI Core 并行 + 分级存储(HBM → L2 → AI Core 片上 Buffer)」的形态。这和 GPU「多个 SM 并行 + 分级存储(HBM → L2 → 共享内存/寄存器)」的形态是高度同构的——这也是为什么「GPU 的知识能平滑迁移到昇腾」的原因。

2. AI Core:昇腾的「算力心脏」

AI Core 是昇腾执行 AI 计算的基本单元,相当于 GPU 里的 Streaming Multiprocessor(SM)。

关键事实:

  • 每个 AI Core 内部又细分为 AI Cube(矩阵)、AI Vector(向量)、AI Scalar(标量) 三类计算单元。
  • 昇腾 910 系列训练芯片集成数十个 AI Core;昇腾 310 系列推理芯片集成少量 AI Core(以官方规格为准)。
  • 芯片的「算力」大体上 = 单 AI Core 算力 × AI Core 数量 × 频率,因此训练芯片通过堆叠 AI Core 获得高算力。

为什么 AI Core 内部要分三种计算单元?因为神经网络的计算负载天然是「混合」的:

  • 矩阵运算(GEMM/卷积)→ 交给 Cube
  • 逐元素/规约类运算(激活、归一化、池化的向量实现)→ 交给 Vector
  • 控制流、地址计算、少量标量计算 → 交给 Scalar

把三种负载分别用专用硬件处理,比「用同一种通用单元处理一切」更省面积、更省功耗、更快——这就是昇腾 NPU 与通用处理器最本质的区别之一。

3. AI Cube:矩阵计算单元

AI Cube 是昇腾里负责「重活」的单元,专门做矩阵乘法和卷积这类高密度计算。

要点:

  • 昇腾把矩阵计算组织成 Cube(立方体) 运算:一次指令就能完成一小块矩阵乘,类似 GPU 的 Tensor Core 做「HMMA(half-precision matrix multiply-accumulate)」。
  • 典型的输入输出精度组合包括 FP16×FP16→FP32 累积、INT8×INT8→INT32 累积 等;新一代芯片还逐步引入 BF16/FP8 支持(以具体芯片规格为准)。
  • Cube 的输入来自 AI Core 内部的 L0A / L0B 缓冲,结果输出到 L0C 缓冲,这样矩阵乘的计算路径不需要频繁访问片外 HBM。

从编程角度看,你在 Ascend C 里调用的 matmul / 矩阵类 API,最终就是落到 AI Cube 上执行的。可以类比 CUDA 里的 mma.sync / cuBLAS 的 Tensor Core 路径。

4. AI Vector:向量计算单元

AI Vector 负责对一组数据进行「按元素」或「规约」类运算。

典型负载:

  • 逐元素运算:激活函数(ReLU/Sigmoid/GELU)、逐元素加减乘除、归一化的向量部分
  • 规约运算:求和、求最大值/最小值(softmax 的 max/sum 部分)
  • 位运算、类型转换(如 FP32→FP16 的精度转换)

设计上,AI Vector 的位宽很宽,一条指令可以同时处理很多元素,类似 GPU 上利用向量指令(如 vadd)或 CUDA 里 32 线程一个 warp 的 SIMT 协同。你在 Ascend C 中调用的 vector 类 API(如 Add、Exp、SoftMax)最终都落到 AI Vector。

5. AI Scalar:标量与控制单元

AI Scalar 承担「指挥官」角色:

  • 执行循环控制、分支跳转、条件判断等控制流逻辑
  • 计算地址、生成 Tiling 参数
  • 处理少量标量计算(如标量除法、标量指数)

它有点像 CPU,但职责更专一:为 Cube 和 Vector 这两大计算单元「编排节奏」。在 Ascend C 编程中,很多看起来像 CPU 代码的标量操作(for 循环的索引计算等)其实就是在 AI Scalar 上执行的。

6. 三大单元的协作:一次矩阵乘的旅程

把上面三个单元串起来,看一次典型矩阵乘(GEMM)在单个 AI Core 内的执行流程:

1. AI Scalar 计算本次要处理的数据块(Tiling:从大矩阵里切出一小块)
2. 数据从 HBM → L2 → 搬运到 L0A / L0B
3. AI Cube 执行小块矩阵乘:L0A × L0B → L0C(FP32 累积)
4. 若需要激活/归一化:
   结果从 L0C → 经过向量路径 → AI Vector 执行激活/归一化
5. 结果写回 Unified Buffer,再由 AI Scalar 调度写回 HBM
6. 循环下一块,直到整个大矩阵算完

可以看到,一条完整的数据流(HBM → 片上 → 计算 → 写回)由 Scalar 调度、Cube/Vector 分工计算。这就是达芬奇架构「多核并行 + 异构分工」的精髓。

7. 达芬奇架构 vs NVIDIA GPU

把昇腾与 NVIDIA GPU 并排对比,能更快建立直觉:

对比项NVIDIA GPU(如 H100)昇腾 AI 处理器
基本计算单元SM(Streaming Multiprocessor)AI Core
矩阵加速Tensor Core(MMA)AI Cube(Cube 运算)
向量/通用计算CUDA CoreAI Vector
控制单元SM 内的调度器/通用核心AI Scalar
片上缓存共享内存(SMEM)+ L1/L2Unified Buffer + L0A/B/C + L2
片外内存HBM(GDDR 用于消费卡)HBM(推理芯片用 LPDDR 等)
线程模型Thread/Block/Grid(SIMT)无 Thread 概念,强调 Tiling + 数据搬运(见第3章)
编程语言CUDA / TritonAscend C / aclnn

最重要的差异:GPU 是「海量线程 + SIMT 灵活调度」的模型,而昇腾是「计算单元专用化 + 显式数据搬运(Tiling + DataCopy)」的模型。这个差异直接决定了 CUDA 开发者迁移到 Ascend C 时需要调整思维——这也是本系列第 3 章的重点。

总结

  • 昇腾采用达芬奇架构,基本计算单元是 AI Core,内部由 AI Cube(矩阵)/ AI Vector(向量)/ AI Scalar(标量控制) 三大单元协同工作。
  • 训练芯片通过「更多 AI Core + 更大 HBM」获取算力;推理芯片通过「精简 + 能效优化」换取部署密度。
  • 达芬奇架构与 GPU 高度同构(SM ↔ AI Core、Tensor Core ↔ AI Cube、SMEM ↔ UB),掌握映射关系后 GPU 知识可以平滑迁移。
  • 昇腾最独特的思维是「专用单元 + 显式数据搬运」,学习 Ascend C 时务必把这点放在心上。

延伸阅读