220x到351x架构变更
351x架构图如图1所示,总体来看,351x架构新增了以下特性:
- 新增多条数据通路。
- AI Core核数增加。
- UB容量提升。
- 新增SSBuffer核内存储单元,支持AIC核和AIV核通过Scalar访问。
- SIMD编程基础上,支持SIMT编程、SIMD与SIMT混合编程。
- AIV核采用Regbase架构,与220x的Membase架构相比,可以直接对芯片的Vector寄存器Register进行操作,实现更大的灵活性和更好的性能。
具体来说,351x架构的主要变更如下各表所示。除此之外,351x架构还扩展了支持的数据类型,具体可参考数据类型介绍。
- 搬运单元
- 计算单元
表2 计算单元变更 351x变更
产生的影响
影响的API接口
Cube计算单元不支持s4类型。
对于int4b_t数据类型的矩阵乘计算,开发者需要先将int4b_t的数据Cast转换为int8_t类型,再进行Cube计算。
Mmad
Cube计算单元不支持L0A上ZZ到ZN的分形变化。
L0A切分场景下,矩阵乘需要重新计算左矩阵的L0A地址。
LoadData/LoadDataWithTranspose
Vector Core Membase架构切换到Regbase架构。
基础API部分场景性能降低。
基础API高维切分模式
硬件不支持Subnormal功能,当前使用软仿实现的Subnormal功能。
开发者需要通过设置config模板参数来配置Subnormal计算模式,具体请参考5.2.1-矢量计算。
Ln/Sqrt/Rsqrt/Div/Reciprocal/Exp
不支持4:2稀疏矩阵的计算。
开发者需要利用Vector Core的能力,进行矩阵稠密转稀疏操作。
LoadDataWithSparse/MmadWithSparse
- 存储单元
表3 存储单元变更 351x变更
产生的影响
影响的API接口
删除L1 Buffer空间的边界值设定。
351x架构硬件删除了L1 Buffer的边界值设定相关寄存器,不再支持SetLoadDataBoundary接口,具体请参考兼容方案。
SetLoadDataBoundary
UB结构变化。220x架构的UB结构和351x架构的UB结构对比请参考bank结构对比。
220x架构上UB分为16个bank group,每个bank group包含3个bank,每个bank大小为4KB。351x架构上UB分为8个bank group,每个bank group包含2个bank,每个bank大小为16KB。若发生UB冲突,开发者可参考避免Unified Buffer的bank冲突解决UB冲突。
/
- 同步
- 其它
表5 其它变更 351x变更
产生的影响
影响的API接口
删除AIPP硬件级指令,采用软仿实现AIPP功能。
AIPP接口性能可能有所下降。
SetAippFunctions/LoadImageToLocal
由于351x架构版本中相关寄存器的删除,UB异常调试接口也被移除。
调测接口对功能无影响。
CheckLocalMemoryIA
