IC基础(六):3x3脉动阵列计算矩阵相乘

本文是在看了一个博客之后才知道怎么做的,就是这个博客FPGA脉动阵列的设计,可惜的是这个博客是转载的,原博客已经找不到了。但是其介绍的还是很详细的,在次基础上我完成了自己的的3*3脉动阵列的设计。本文后面会给出一个PPT文档,也是介绍脉动阵列的,FPGA脉动这列的设计这篇博客似乎也是这个PPT启发的。

一、引言

引言的大部分内容来自《VLSI数字性信号处理系统:设计与实现》一书。
脉动结构(也称脉动阵列)表示一种有节奏的计算并通过系统传输数据的处理单元(Processing elements,PE)网络。强调一下,这里说的是网络,不是单个计算单元!!!!!!!!!!!!!!!这些单元规则的泵入蹦出数据以维持规则的数据流。脉动系统的特征是模块化和规则化,这对于大规模集成电路设计是很重要的性质。脉动阵列可作为和主计算机结合的系处理器,从主计算机接数据样本送到处理单元,并将最终结果返回结算机。这个过程可以用下图说明。这个操作类似心脏血液的流动,因此命名为“脉动”。
典型情况下,脉动阵列的所有处理单元是相同的且全流水的,也就是处理部件的所有通信边沿都包含延时单元,且整个系统通常只包含局部互联。这句话怎么理解呢?我的理解是每个处理单元内部都需要有延时单元?为啥需要延时单元呢?因为处理单元会将输入的数据先拿来做运算,然后在下一个时钟把数据传递到下一个处理单元。因此必须需要延迟单元。那什么又是局部互联呢?局部互联是指每个处理单元只与自己相邻的处理单元有数据交流。但是有时候也会为了算法的需求,处理单元可以跨过相邻的处理单元进行互联。

在这里插入图片描述
二、脉动阵列的优势

脉动阵列可以是一维的网络,也可以是二维的,当然还可以有更高维度的。
脉动阵列这个概念其实从1978年就就已经有了,自从谷歌的TPU采用了脉动阵列单元来加速卷积计算后,这个概念又火了起来了。但是本文说的脉动阵列并不是谷歌所说的那种脉动阵列,本文介绍脉动阵列是用来做矩阵乘法的。
由于脉动阵列的输入数据是流过每一个处理单元的,所以就可以减少数据的访存,提高数据的吞吐量。另外一个就是脉动阵列规则,在专用集成电路布线简单,可以提高系统的工作频率。
为啥可以减少访存呢?举个例子,假设矩阵相乘:

在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述
要计算C[0][0]=23,需要访问A[0][0],A[0][1],A[0][2],B[0][0],B[1][0],B[2][0]。
C[0][0] = A[0][0]*B[0][0]+A[0][1]*B[1][0]+A[0][2]*B[2][0]
同理:
C[0][1] = A[0][0]*B[0][1]+A[0][1]*B[1][1]+A[0][2]*B[2][1]

计算C[0][0]和C[0][1]需要访问相同的元素:A[0][0],A[0][1],A[0][2]。如果不用脉动阵列,光是在计算C[0][0]和C[0][1]这两个元素上就需要访问A[0][0],A[0][1],A[0][2]两次,因此口带就限制了系统的速度。但是用脉动阵

  • 21
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 29
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值