NPU架构版本351x

本节介绍__NPU_ARCH__版本号为351x的硬件架构和其功能说明。

硬件架构图

如下图所示,本架构中AI Core分为AIC和AIV两个独立的核,分别用于矩阵计算和向量计算。AIC核与AIV核配比为1:2。每个核都有自己的Scalar单元,能独立加载自己的代码段。

该架构的关键特点有:

计算单元

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

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

Vector计算单元

Cube计算单元

Scalar单元

存储单元

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

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

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

存储单元

对齐要求

AIV

Unified Buffer

32Byte对齐。

AIC

L1 Buffer

32Byte对齐。

L0A Buffer

512Byte对齐。

L0B Buffer

512Byte对齐。

L0C Buffer

64Byte对齐。

BiasTable Buffer

64Byte对齐。

Fixpipe Buffer

64Byte对齐。

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

存储单元的访问冲突

本NPU架构版本UB结构如下图所示,当多个操作尝试同时访问Unified Buffer同一个bank或者bank group时,可能会发生bank冲突,包括读写冲突、写写冲突、读读冲突,这种冲突会导致访问排队,降低性能。在NPU架构版本220x中,同一个bank group只有一组读口和写口,最多一拍完成一读或者一写,在本NPU架构版本中每个bank group有两组读口和写口,最多同时允许2读0写或者1读1写。相关读写约束如下:

图3 本架构版本UB bank示意图

Register寄存器

搬运单元

搬运时的对齐要求

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

MTE硬通道

支持Fixpipe硬件化加速

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

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

AIC AIV核间通信

该架构支持AIC: AIV为1:1和1:2的核间通信,核间通信通过SSBuf进行,这一点和NPU220架构有所不同,NPU220架构中核间通信通过GM来完成。

同步控制