NPU架构版本220x

本节介绍__NPU_ARCH__版本号为220x的硬件架构和其功能说明,其中220代表IP核编号,x表示同一个IP核的配置版本号。对应的产品型号为:

硬件架构图

如下图所示,本架构中AI Core分为AIC和AIV两个独立的核,分别用于矩阵计算和向量计算。每个核都有自己的Scalar单元,能独立加载自己的代码段。AIV与AIC之间通过Global Memory进行数据传递。

计算单元

Cube计算单元和Vector计算单元分离部署

本架构中,Cube计算单元和Vector计算单元分别部署在AIC核和AIV核上,每个核都有自己的Scalar单元,能独立加载自己的代码段。

Vector计算单元

Cube计算单元

存储单元

获取存储单元的内存空间大小

开发者可以通过平台信息获取接口查询各存储单元的内存空间大小。

各存储单元的最小访问粒度(对齐要求)

存储单元

对齐要求

AIV

Unified Buffer

32Byte对齐。

AIC

L1 Buffer

32Byte对齐。

L0A Buffer

512Byte对齐。

L0B Buffer

512Byte对齐。

L0C Buffer

64Byte对齐。

BiasTable Buffer

64Byte对齐。

Fixpipe Buffer

64Byte对齐。

各存储单元推荐使用的数据排布格式

解决存储单元的访问冲突,提升读写性能

当多个操作尝试同时访问Unified Buffer同一个bank或者bank group时,可能会发生bank冲突,包括读写冲突、写写冲突、读读冲突,这种冲突会导致访问排队,降低性能。可以通过优化bank分配的方式来提升读写性能,具体信息请参考避免Unified Buffer的bank冲突章节。

搬运单元

搬运时的对齐要求

由于搬运后的数据用于参与数据计算,因此对搬运数据大小有要求,搬运到Unified Buffer的数据大小需要按照DataBlock对齐,其余存储单元的数据搬运必须按分形要求进行搬运。例如,数据从L1 Buffer搬运到L0A Buffer时,数据格式需要从NZ转换为ZZ格式,搬运数据的大小要按分形大小对齐,如果L1 Buffer的剩余大小不足1个分形,则硬件执行中会出现异常。

支持跨卡数据搬运(Hccs物理链路)

在跨卡通信算子开发场景,DataCopy类接口支持跨卡数据搬运,在 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 设备上,仅支持Hccs物理链路,不支持其他通路;开发者开发过程中,请关注涉及卡间通信的物理通路; 通过npu-smi info -t topo指令查询Hccs 物理通路。

支持Fixpipe硬件化加速

Fixpipe是NPU将典型操作进行硬化的加速模块,位于AIC内部,配合Cube计算单元完成随路计算,主要功能如下:

上图中,Channel merge支持S8、U8、S4和U4数据类型,而Channel split支持FP32数据类型。

同步控制