芯片的Systolic Array 脉动阵列设计加速矩阵乘运算

什么是脉动阵列

脉动阵列,是现在某些智能加速芯片的一种架构;由一组处理单元 Processor Elements组成;处理单元简称是PE,也经常简称为Cell;所有的Cell是用Mesh结构互连起来;每个Cell处理一系列的流经自己的数据;之后传递给邻居的Cell,大部分的Cell都是相同的操作。

SIMD和脉动阵列的区别

SIMD是和其相似的架构,但是SIMD如名字表达的那样,控制指令是唯一的,数据是不同的,并且数据从内存加载到PE;脉动阵列的区别是可能从片上的RAM加载到PE,并且每个PE有自己的控制单元,这样不仅仅是数据的并行了。

脉动阵列设计优势点

脉冲阵列用在专用的加速芯片上的优势是:1. 设计上比较规整,简单;2. 通信或者传递信息的并发性好;3. 平衡了计算和IO,因为一般都是计算等待IO。

脉动阵列分类

一维:适合单一的IO,因此用处不是很大;
二维:一般都是平面矩阵,放了很多的处理单元,但是只允许边界的单元进行IO;
三维:允许IO经过每个处理单元;

举例:使用二维脉动阵列计算矩阵乘

使用三个计算单元计算这个矩阵乘的设计

下面是三个脉动阵列:


下面是每个步骤的过程数据:
可以看出,五部步可以计算出三个维度的计算结果。
推而广之如果是平面矩阵的脉动阵列,其实可以计算两个二维矩阵的乘积:
脉动阵列的设计:
过程数据是:
对脉动阵列的设计可以有很多种方式。

脉动阵列的优势

  1. 对VLSI设计比较友好,适合模块化的设计;速度快,成本低;
  2. 使用本地化的互联结构;减少了全局广播等消耗;高维度的流水线;高维度的并行;
  3. 简单的IO子系统;

脉动阵列的劣势

  1. 全局同步受限于时延;
  2. 片上RAM的带宽要求比较大;
  3. 因为缺少互联的协议子系统,而缺少软件上的容错;




原文地址:https://www.cnblogs.com/kongchung/p/13227256.html