我们在文档《Cambricon-BANG-C-Developer-Guide-EN-v4.5.1》的build-in function 发现,存在三种计算:矩阵乘法、标量类型、向量。
查阅《Cambricon-BANG-C-C+±Programming-Guide-CN-v1.5.0.pdf》可知,硬件系统由标量指令、向量指令、张量指令、访存指令构成。
流水线中分为 IO流、Move流、computer流和scalar流。
- IO流、Move流 是访存指令
- 向量指令、张量指令 对应 computer流
- 标量指令 对应scalar流。
标量系统就是典型的 load-store 类型RISC (Reduced Instruction set computer)架构。在MLUv3 中标量主要用于实现 控制流和一些特殊功能。
向量指令实现向量计算,每条向量指令包含源操作地址,目的操作地址以及向量长度。长度可用变化。
张量指令用于实现卷积、积分、直方图和矩阵计算。
访存指令搬运数据,长度可变。
向量,张量和访存执行时间是可变的。应该合理安排向量/张量运行 与 访存指令的顺序,减少打断以及流之间的数据依赖。