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数据类型。

同步控制