Ascend C算子开发 之昇腾硬件架构详解

张开发
2026/4/6 16:12:54 15 分钟阅读

分享文章

Ascend C算子开发 之昇腾硬件架构详解
一、昇腾AI处理器整体架构概览昇腾AI处理器采用的是Host + Device异构计算模型。简单说,Host指CPU端服务器,负责运行管理、任务调度等控制类工作;Device指昇腾AI处理器(NPU),专门承担计算密集型的任务。二者通过PCIe接口连接,协同完成计算任务。昇腾AI处理器的核心组件分为以下四层:AI Core:执行标量、向量和矩阵计算的计算密集型算子,是昇腾AI处理器的算力心脏。AI CPU:承担非矩阵类、逻辑比较复杂的分支密集型计算,作为AI Core的补充。L2 Cache:位于Global Memory和AI Core之间的中间级缓存,多核共享,用于缓存频繁访问的数据,读写带宽远高于Global Memory。Global Memory(HBM):设备主存,存储大规模数据,容量大但访问延迟高,是所有AI Core共享的外部存储。这里有个关键点:Ascend C开发的算子,正是运行在AI Core上的。这意味着,写的每一行Ascend C代码,最终都会被编译成在AI Core上执行的指令。二、AI Core微架构深度解析AI Core是整个昇腾AI处理器中最复杂的部分。官方文档将其硬件抽象架构总结为三大组件:计算单元、存储单元、搬运单元,三者协同完成数据处理。此外,昇腾AI处理器根据Cube和Vector的部署方式,分为耦合架构和分离架构。简单说,耦合架构两者同核部署,分离架构则拆成独立的AIC和AIV核,各有其优势和适用场景。架构分类分离架构示意图AIC (AI Cube) —— 矩阵计算核心组件作用Cube矩阵计算单元。AI Core上的Cube计算单元,负责执行矩阵运算。以float16数据类型为例,Cube每次执行可完成两个float16类型的16x16矩阵的乘法操作。MTE1片上数据搬运单元。Memory Transfer Engine 1,AI Core的数据传递引擎,负责将数据从L1 Buffer搬运到L0A Buffer或L0B Buffer等。注意:不同硬件能力可能有差异。MTE2数据搬运单元。Memory Transfer Engine 2,AI Core的数据传递引擎,负责将数据从GM搬运到L1 Buffer、L0A Buffer、L0B Buffer、Unified Buffer等。注意:不同硬件能力可能有差异。FixPipe结果后处理与搬运单元。AI Core中负责将矩阵计算结果从L0C Buffer搬运到Global Memory或L1 Buffer的单元,搬运过程中随路完成量化、激活等操作。L1 BufferAI Core内部物理存储单元,空间相对较大,通常用于缓存矩阵计算的输入数据。 矩阵计算的输入一般需要从GM搬运到L1 Buffer,然后分别搬运到L0A Buffer和L0B Buffer。L1 Buffer与逻辑内存AscendC::TPosition::A1、AscendC::TPosition::B1相对应。L0A BufferAI Core内部物理存储单元,通常用于存储矩阵计算的左矩阵,与逻辑内存AscendC::TPosition::A2相对应。L0B BufferAI Core内部物理存储单元,通常用于存储矩阵计算的右矩阵,与逻辑内存AscendC::TPosition::B2相对应。L0C BufferAI Core内部物理存储单元,通常用于存储矩阵计算的结果,与逻辑内存AscendC::TPosition::CO1相对应。FP BufferFixPipe专用缓存。AI Core内部物理存储单元,通常用于存储Fixpipe搬运过程中所需的量化参数等数据,与逻辑内存AscendC::TPosition::C2PIPE2GM相对应。

更多文章