CANN/cannbot-skills:Ascend910_95硬件速查手册
2026/7/11 10:43:33 网站建设 项目流程

Ascend910_95 硬件速查手册(面向 Triton Agent)

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

触发条件

当 Triton Agent 遇到以下场景时,需要参考本文档:

  • 目标设备为 Ascend910_95 / 950PR / 950DT 系列(架构代号dav-c310
  • 需要确定内存分配策略(UB/L1/L0C 容量、对齐约束)
  • 需要选择正确的 Pipeline 或数据通路(尤其是 L0C->UB 直通、UB->L1 通路)
  • 需要判断 Reg-based vs Mem-based 架构行为差异(SIMT VF 模式、同步机制、归约降级)
  • 需要使用紧耦合缓冲区(TightlyCoupledBuffer)
  • 需要确认对齐要求以避免硬件异常

核心知识:规格速查表

AI Core 架构

每个 AI Core = 1 Cube (AIC) + 2 Vector (AIV) + Scalar VectorCoreCount = 2 * CubeCoreCount = 2 * AiCoreCount

Ascend910_95 系列规格表

型号AI CoreCube CoreVector CoreUBDCacheL1L0AL0BL0CArch
Ascend910_950z448248KB32~120KB512KB64KB64KB256KBdav-c310
Ascend910_9579282856248KB32~120KB512KB64KB64KB256KBdav-c310
Ascend910_957b282856248KB32~120KB512KB64KB64KB256KBdav-c310
Ascend910_957d282856248KB32~120KB512KB64KB64KB256KBdav-c310
Ascend910_9581323264248KB32~120KB512KB64KB64KB256KBdav-c310
Ascend910_9589323264248KB32~120KB512KB64KB64KB256KBdav-c310
Ascend910_958a323264248KB32~120KB512KB64KB64KB256KBdav-c310
Ascend910_958b323264248KB32~120KB512KB64KB64KB256KBdav-c310
Ascend910_9599363672248KB32~120KB512KB64KB64KB256KBdav-c310

UB 248KB = 256KB - 8KB(预留 8KB 给编译器),源码值UbSize=2031616 bits

内存层次速查

层次IR 标识符枚举值大小 (910_95)大小 (910B)对齐所属单元
GMgm1HBM/L2HBM/L2-共享
L1cbuf2512KB512KB32BCube
L0Aca364KB64KB-Cube A 端
L0Bcb464KB64KB-Cube B 端
L0Ccc5256KB128KB512BCube C 端
UBub6248KB192KB32BVector
DCache--32~120KB-SIMT Vector

IR 声明示例:

memref<?x?x?x?xf32, #hivm.address_space<cbuf>> memref<?x?x?x?xf32, #hivm.address_space<cc>> memref<256x256xf16, #hivm.address_space<gm>> memref<128x128xf32, #hivm.address_space<ub>>

专用硬件缓冲区

缓冲区大小对齐访问方式
BT Buffer (BiasTable)1KB64Bcopy_cbuf_to_bt从 L1 拷贝
FP Buffer (FixPipe)7KB128Bhivm.fixpipe隐式使用

对齐要求(所有架构一致)

存储空间对齐源码值 (bits)
UB32B256
L132B256
L0C512B4096

910_95 特别注意

与 910B 的关键差异速查

特性910B (dav-c220)910_95 (dav-c310)
架构类型Mem-based(A2/A3)Reg-based(A5)
SIMT VF 模式不支持支持
UB192KB248KB(预留 8KB)
L0C128KB256KB
DCache32~120KB
L0C -> UB 直通不支持支持(FixPipe)
UB -> L1 通路不支持支持(PIPE_MTE3)
紧耦合缓冲区不支持支持
Fixpipe Dual Dst不支持支持(ROW_SPLIT / COLUMN_SPLIT)
Fixpipe NZ2DN不支持支持
同步方式FFTS(基于内存)SetFlag/WaitFlag(基于寄存器)
归约标量降级i64/argmax/argmin 会降级基本归约不降级
vcmp(NE) 规范化vnot(vcmp(EQ))不做规范化

数据通路 ASCII 图(910_95 特有)

+-----------------------------------------------------------------------------+ | Global Memory (GM / HBM) | +---------------------------------------+-------------------------------------+ | +-------------------+-------------------+ | | +-----v-----+ +-----v-----+ | MTE2 | | MTE2 | | GM -> L1 | | GM -> UB | | (双向) | | (单向) | +-----+-----+ +-----+-----+ | | v v +-----------------------+ +----------------------+ | L1 | | UB | | (cbuf, 512KB) | | (ub, 248KB,预留8KB) | | Cube输入缓存 | | Vector工作区 | +-----------+-----------+ +--------+-------------+ | | +-----------+-----------+ | | | | | +-----v-----+ +---v---+ +-----v-----+ | | MTE1 | | MTE1 | | MTE1 | | | L1 -> L0A | |L1->L0B| |L1 -> BT Buf| | +-----+-----+ +---+---+ +-----+-----+ | | | | | v v v | +-----------+ +-----------+ +-----------+ | | L0A | | L0B | | BT Buffer | | | (ca,64KB) | | (cb,64KB) | | (1KB) | | | 矩阵A输入 | | 矩阵B输入 | | Bias数据 | | +-----+-----+ +-----+-----+ +-----+-----+ | | | | | +-------------+-------------+ | | | v | +------------------+ | | Cube | | | (MatMul) | | +--------+---------+ | | | v | +------------------+ | | L0C | | | (cc, 256KB) | | | 矩阵乘法结果 | | +--------+---------+ | | | +-----------+-----------+-----------+ | | | | | | +-----v-----+ +---v---+ +-----v-----+ | | | FIX | | FIX | | FIX | | | | L0C -> GM | |L0C->L1| | L0C -> UB |<----+ | | | | | | (950特有) | | +-----+-----+ +---+---+ +-----+-----+ | | | | | v v v | +-----------+ +-----------+ +----------------------+ | | GM | | L1 | | UB (紧耦合缓冲区) |<---------+ +-----------+ +-----------+ +----------+-----------+ | | | +-----v-----+ | | MTE3 | | | UB -> GM | | +-----+-----+ | | | v | +-----------+ | | GM | | +-----------+ |

910_95 vs 910B 关键通路差异

910_95: GM -> L1 -> L0A/L0B -> L0C -> UB -> V -> UB -> GM ^^^^^^^^^^^^ L0C直通UB(省去GM中转) 910B: GM -> L1 -> L0A/L0B -> L0C -> GM -> UB -> V -> UB -> GM ^^^^^^^^ 必须经过GM中转

Reg-based vs Mem-based 架构差异

910_95 是Reg-based (A5)架构,910B 是Mem-based (A2/A3)架构。

判断函数:

bool isRegBasedArch(TargetDevice targetDevice) { return isAscend310B(targetDevice) || isAscend950(targetDevice); } bool isMemBasedArch(TargetDevice targetDevice) { return isAscend910B(targetDevice) || isAscend910_93(targetDevice); }

核心区别

维度Mem-based (910B)Reg-based (910_95)
SIMT VF 模式不支持,编译器跳过 InferVFMode支持,运行 InferVFMode 推断 SIMD/SIMT/MIX
数据访问模型全部基于 UB 缓冲区(SIMD)SIMT 基于寄存器,SIMD 基于 UB
SIMT 编译路径SIMT VF 拆分后走 Triton GPU 编译路径
DCache有(32~120KB)
同步方式FFTS(基于内存)SetFlag/WaitFlag(基于寄存器)
跨核同步SetCrossCoreInstrOpIntraBlockSet / IntraBlockRegInstrOp
Pipe Barrier对所有 Pipe 生成 barrier跳过 PIPE_V 的 barrier
归约降级i64 归约和整数 argmax/argmin 标量降级基本归约不降级(除 argmax/argmin 对齐问题)
vcmp(NE)规范化为 vnot(vcmp(EQ))不做规范化
内存规划SIMT/MIX 下不需要动态调整 UBSIMT/MIX 下需动态调整 UB(考虑 DCache)
入口配置configureEntryForMembaseArchconfigureEntryForRegbaseArch

Pipeline 枚举速查

枚举IR 标识符数值硬件单元数据流典型操作
PIPE_SPIPE_S0Scalar标量计算循环控制、条件判断
PIPE_VPIPE_V1VectorUB -> UBvadd,vmul,vcast,vreduce
PIPE_MPIPE_M2CubeL0A/L0B -> L0CmmadL1中的矩阵乘法
PIPE_MTE1PIPE_MTE13MTE1 DMAL1 -> L0A/L0B/BTmmadL1中的数据加载,l12ub
PIPE_MTE2PIPE_MTE24MTE2 DMAGM <-> L1/UBload,nd2nz
PIPE_MTE3PIPE_MTE35MTE3 DMAUB -> GM/L1store,nz2nd, UB->L1
PIPE_FIXPIPE_FIX10FixPipeL0C -> GM/L1/UBfixpipe

完整枚举还包括:PIPE_ALL(6), PIPE_MTE4(7), PIPE_MTE5(8), PIPE_V2(9), VIRTUAL_PIPE_MTE2_L1A(11), VIRTUAL_PIPE_MTE2_L1B(12), PIPE_NUM(13), PIPE_UNASSIGNED(99)

源-目标到 Pipeline 映射

目标PipelineIR 操作
GML1PIPE_MTE2hivm.nd2nz
GMUBPIPE_MTE2hivm.load
L1GMPIPE_MTE2copy_cbuf_to_gm
L1L0APIPE_MTE1内部指令
L1L0BPIPE_MTE1内部指令
L1UBPIPE_MTE1hivm.l12ub
L0A/L0BL0CPIPE_MCube 计算
L0CGMPIPE_FIXhivm.fixpipe
L0CL1PIPE_FIXhivm.fixpipe
L0CUBPIPE_FIXhivm.fixpipe(仅 950)
UBUBPIPE_Vhivm.copy
UBGMPIPE_MTE3hivm.store
UBL1PIPE_MTE3hivm.copy(仅 950)

紧耦合缓冲区(910_95 特有)

IR 表示:

#hivm.tightly_coupled_buffer<id : optional<i32>>

两种模式:

模式数据流向说明
MoveToUbL0C -> UBCube 结果直通 Vector 工作区
MoveToL1UB -> L1Vector 处理结果回传 Cube 输入缓存

Pipeline 选择逻辑:

if (isAscend950(target)) { if (enableLayoutOptimization) { InsertCVDataMovement // A5 新布局优化路径 } else { InsertCVTightCoupledBuffer // 传统紧耦合缓冲区路径 } } else { InsertLoadStoreForMixCV // 非 950: 必须经过 GM 中转 }

VFMode 枚举(仅 Reg-based 架构使用)

枚举IR 标识符数值说明
SIMD#hivm.vf_mode<SIMD>0传统 Vector 执行,基于 UB
SIMT#hivm.vf_mode<SIMT>1类 GPU 线程级并行,基于寄存器
MIX#hivm.vf_mode<MIX>2混合模式,通过--enable-simd-simt-mix-compile启用

核心类型枚举速查

操作级 TCoreType

枚举IR 标识符说明
CUBE#hivm.tcore_type<CUBE>在 Cube 核心执行
VECTOR#hivm.tcore_type<VECTOR>在 Vector 核心执行
CUBE_OR_VECTOR#hivm.tcore_type<CUBE_OR_VECTOR>可在任一核心执行
CUBE_AND_VECTOR#hivm.tcore_type<CUBE_AND_VECTOR>需 Cube+Vector 同时执行

函数级 TFuncCoreType

枚举IR 标识符说明
AIC#hivm.func_core_type<AIC>运行在 AI Cube 核心
AIV#hivm.func_core_type<AIV>运行在 AI Vector 核心
MIX#hivm.func_core_type<MIX>混合使用 Cube+Vector

相关文档链接

  • 01-npu-hardware-overview.md -- NPU 硬件架构总览(完整型号规格、架构分类详解)
  • 02-memory-hierarchy.md -- 内存层次详解(完整数据通路、随路操作、910B ASCII 图)
  • 03-pipeline-execution-model.md -- Pipeline 执行模型(同步机制、Trait 定义、Event ID)
  • 04-data-layout.md -- 数据布局详解(ND/NZ/zN/nZ/Fractal、布局转换操作)
  • NPUTargetSpec.td -- 型号规格 TableGen 源文件
  • HIVMAttrs.td -- IR 属性枚举源文件

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询