VLSI数字信号处理系统——第七章脉动结构设计

VLSI数字信号处理系统——第七章脉动结构设计

作者:夏风喃喃
参考:
(1) VLSI数字信号处理系统:设计与实现 (美)Keshab K.Parhi/著
(2) socvista https://wenku.baidu.com/u/socvista?from=wenku

一. 引言

脉动阵列:多个相同的处理单元(简称PE)按一定互联规则组成的网络,称为脉动阵列。脉动阵列可以是一维线形、二维三角形、二维矩形、二维六边形、二维二叉树型、三维长方体形等等。

脉动阵列特点

  1. 每一个节点,也就是PE,也称为胞元,都是相同的。
  2. 每个PE只与其相邻的PE进行通信,也就是说PE之间的通信具有局部性,而且通信是规则的。如果通信不是局部的而且不规则,那么网络中各PE的连接关系将会很错乱,硬件上进行布局布线也会遇到困难。
  3. 每个PE都有其局部的存储器,也就是PE的某些边带有延时,延时在硬件上对应于寄存器。这说明脉动阵列数据储存具有局部性,同时这也是流水运行的必要条件。

由于脉动阵列的以上特点,造成PE之间的高度流水化、规则化,因此系统吞吐率非常大且易于VLSI的实现。工程上为了扩大脉动阵列的用途,会引入一些弛豫,比如允许使用邻近(靠近但不是相邻)互联,使用数据广播操作,以及在系统中使用不同的胞元,尤其是边界上的胞元往往和网络内部胞元不太一样。

二. 脉动阵列设计方法原理

规则迭代算法依赖图
不是任意的算法都可以用脉动阵列来实现,只有规则的迭代算法,画出该算法的依赖图(DG),才能用投影技术设计出脉动结构。如果依赖图的任一节点沿某个方向的边存在,则称依赖图是规则的,通俗的说,依赖图的所有节点具有相同形式的边。
在这里插入图片描述
设计方法步骤

  • 投影矢量 d T = [ d 1 d 2 ] d^T=[d_1\quad d_2] dT=[d1d2]:位移为d或者d的倍数的两个节点由同一个处理器执行。
  • 处理器空间矢量 P T = [ p 1 p 2 ] P^T=[p_1\quad p_2] PT=[p1p2]:任何标示为 I T = [ i j ] I^T=[i\quad j] IT=[ij]的节点将被处理器以 P T I P^TI PTI处理。
  • 调度矢量 S T = [ s 1 s 2 ] S^T=[s_1\quad s_2] ST=[s1s2]:任何标示为 I T = [ i j ] I^T=[i\quad j] IT=[ij]的节点在时间 S T I S^TI STI执行。
  • 硬件利用率 H U E = 1 / ∣ S T d ∣ HUE=1/\vert S^Td\vert HUE=1/STd:同样的处理器执行两次任务间隔 ∣ S T d ∣ \vert S^Td\vert STd时间单位。
    一个问题可选择不同的投影、处理器空间矢量和调度矢量设计出很多脉动结构。这些矢量必须满足下面推导的可行性限制调条件
  • 处理器空间矢量 P P P和投影矢量 d d d必须正交, P T d = 0 P^Td=0 PTd=0
  • 如果节点A和B映射到同一个处理器,则它们不能在同一时间执行, S T d ≠ 0 S^Td≠0 STd=0
  • 边映射:如果依赖图中包含边 e e e,则在脉动阵列中引入一条延时为 S T e S^Te STe的边 P T e P^Te PTe

三. FIR脉动阵列

3.1 设计B1(输入广播,结果移动,权重保持)

在这里插入图片描述
把DG图所在的i-j空间投影到一维脉动阵列空间。一维脉动阵列是一个2维空间,一个维度是PE空间,另一个维度是时间;同理二维脉动阵列是一个3 维空间,其中两个维度形成PE平面网络,另外一个维度是时间。对一维脉动阵列,时间轴不能和PE轴平行;对二维脉动阵列,时间轴不能和PE平面平行,即可行性限制条件。

如图4,蓝色坐标轴P是PE轴,红色坐标轴S是时间轴,图中的水平蓝线和竖直红线清楚的显示了节点(黄色)是如何投影到PE轴和时间轴的,这种投影的物理意义是:所有在同一条竖直红线上的节点在同一个周期被调度执行;所有在同一条水平蓝线上的节点在同一个处理单元被执行

脉动硬件电路构造
(1)可以看出图4所需的线形脉动网络包含3个PE,在硬件上可以先画出三个PE单元,如下图
在这里插入图片描述
(2)接下来,需要把DG中节点的边映射为各个PE之间的互联关系。对于 [ 1 , 0 ] T [1,0]^T [1,0]T方向的权值w边(水平向右),权值边连接相邻的两个水平节点,将该边投影到S上,跨越一个周期,将改变投影到P上,位于同一PE,这就表示,权值边在硬件上是同一个PE上延时一个周期的连线,如下图示
在这里插入图片描述
[ 0 , 1 ] T [0,1]^T [0,1]T方向的输入x边,投影到S没有跨度,投影到P是从低序号PE到高序号PE的边,反映到硬件上就是
在这里插入图片描述
最后,在看 [ 1 , − 1 ] T [1,-1]^T [1,1]T方向的输出y边,投影到S,跨越一个周期,投影到P,从高序号PE到相邻的低序号PE,反映到硬件上就是
在这里插入图片描述
(3)得出脉动结构图,结合DG中节点的具体内容,即可画出最终电路。图1节点的内容是一个乘法加法的级联单元,最终电路图如下示
在这里插入图片描述

3.2 设计B2(输入广播,权重移动,结果保持)

在这里插入图片描述
脉动硬件电路构造
(1)首先要用矢量来表示脉动空间的两个坐标轴P和S,这里令 S = [ 1 0 ] T S=[1\quad 0]^T S=[10]T P = [ 1 1 ] T P=[1\quad 1]^T P=[11]T,显然P和S不平行(叉积为0)。任一节点 [ i j ] T [i\quad j]^T [ij]T在P轴和S轴的投影,就是点积,即 [ i j ] T [i\quad j]^T [ij]T S ⋅ [ i j ] T S·[i\quad j]^T S[ij]T周期被调度到 P ⋅ [ i j ] T P·[i\quad j]^T P[ij]T处理器执行。

可以发现同一周期最多只有3 个节点被映射到P 轴的处理器执行,也就是说只需3个处理器便可以保证构造出功能正确的脉动阵列,画出三个PE单元,如下图
在这里插入图片描述
(2)在DG中存在三条边,分别是 [ 1 , 0 ] T [1,0]^T [1,0]T的权值w边、 [ 0 , 1 ] T [0,1]^T [0,1]T的输入x边以及 [ 1 , − 1 ] T [1,-1]^T [1,1]T的输出y边,如图5 的绿线所示。将 [ 1 , 0 ] T [1,0]^T [1,0]T的权值w边分别投影到S轴和P轴,有 S ⋅ [ 1 0 ] T = [ 1 0 ] T ⋅ [ 1 0 ] T = 1 S·[1\quad 0]^T=[1\quad 0]^T·[1\quad 0]^T=1 S[10]T=[10]T[10]T=1 P ⋅ [ 1 0 ] T = [ 1 1 ] T ⋅ [ 1 0 ] T = 1 P·[1\quad 0]^T=[1\quad 1]^T·[1\quad 0]^T=1 P[10]T=[11]T[10]T=1,也就是说权值脉动阵列中是有低序号PE 流向高序号PE且跨越一个周期。
在这里插入图片描述
接下来是 [ 0 , 1 ] T [0,1]^T [0,1]T的输入x边,分别投影到S轴和P轴,有 S ⋅ [ 0 1 ] T = [ 1 0 ] T ⋅ [ 0 1 ] T = 0 S·[0\quad 1]^T=[1\quad 0]^T·[0\quad 1]^T=0 S[01]T=[10]T[01]T=0 P ⋅ [ 0 1 ] T = [ 1 1 ] T ⋅ [ 0 1 ] T = 1 P·[0\quad 1]^T=[1\quad 1]^T·[0\quad 1]^T=1 P[01]T=[11]T[01]T=1,意味着输入x也是从低序号PE流向高序号PE,但没有时间上的延迟,也就是数据广播结构。
在这里插入图片描述
最后是 [ 1 , − 1 ] T [1,-1]^T [1,1]T的输出y边, 分别向S轴和P轴,有 S ⋅ [ 1 − 1 ] T = [ 1 0 ] T ⋅ [ 1 − 1 ] T = 1 S·[1\quad -1]^T=[1\quad 0]^T·[1\quad -1]^T=1 S[11]T=[10]T[11]T=1 P ⋅ [ 1 − 1 ] T = [ 1 1 ] T ⋅ [ 1 − 1 ] T = 0 P·[1\quad -1]^T=[1\quad 1]^T·[1\quad -1]^T=0 P[11]T=[11]T[11]T=0,结果y在同一个PE上循环且延时一个周期,即
在这里插入图片描述
(3)最终电路如下图是,其中还需要添加一些控制电路,用于产生选路器的选择信号。
在这里插入图片描述

3.3 设计F(结果扇入,输入移动,权重保持)

在这里插入图片描述
选择 P = [ 0 1 ] T P=[0\quad 1]^T P=[01]T S = [ 1 1 ] T S=[1\quad 1]^T S=[11]T,列出三条边的映射结果
在这里插入图片描述
脉动结构为
在这里插入图片描述

3.4 设计R1(结果保持,输入和权重反向移动)

在这里插入图片描述
选择 P = [ 1 1 ] T P=[1\quad 1]^T P=[11]T S = [ 1 − 1 ] T S=[1\quad -1]^T S=[11]T,在R1 中需反转输入边,三条边用绿色标注在图7中。边的映射结果表如下
在这里插入图片描述
脉动结构为
在这里插入图片描述

3.5 设计R2和双R2(结果保持,输入和权重同方向但不同速度移动)

在这里插入图片描述
选择 P = [ 1 1 ] T P=[1\quad 1]^T P=[11]T S = [ 2 1 ] T S=[2\quad 1]^T S=[21]T,同一周期最多也只有2个节点投影到P轴,也就是说只需2个PE即可,但是,我们仍然在P轴上设置3个PE,稍后再讨论设置2个PE的情况。边的映射结果表如下
在这里插入图片描述
脉动结构为
在这里插入图片描述
在脉动设计中选择P轴和S轴是非常关键的,如果选择不当构造出来的脉动阵列比较复杂,而且硬件利用率也不高。例如R2结构,结果隔一个周期出一个,相吞吐率就下降了一半,PE节点利用率也不高,有些PE在某些周期不参与有意义的计算。

为了提高PE的利用率,在P轴上只设置2个PE。因为同一周期最多只会有2个节点投影到P轴。
在这里插入图片描述
边的映射结果表如下
在这里插入图片描述
脉动结构为
在这里插入图片描述
在这里插入图片描述
选择 P = [ 1 1 ] T P=[1\quad 1]^T P=[11]T S = [ 1 2 ] T S=[1\quad 2]^T S=[12]T,对于双R2,需要反转输出边,三条边的情况如图中绿色带箭头线所示。观察R2可知需要设置3个PE。边的映射结果表如下
在这里插入图片描述
脉动结构为
在这里插入图片描述

3.6 设计W1(权重保持,输入和结果反向移动)

在这里插入图片描述
选择 P = [ 0 1 ] T P=[0\quad 1]^T P=[01]T S = [ 2 1 ] T S=[2\quad 1]^T S=[21]T,显然W1可设置3 个PE,也可以设置2个PE,这里设置3个PE。边的映射结果表如下
在这里插入图片描述
脉动结构为
在这里插入图片描述

3.7 设计W2和双W2(权重保持,输入和结果同方向但不同速度移动)

在这里插入图片描述
选择 P = [ 0 1 ] T P=[0\quad 1]^T P=[01]T S = [ 1 2 ] T S=[1\quad 2]^T S=[12]T,W2 需设置3个PE,并且需反转输出边。边的映射结果表如下
在这里插入图片描述
脉动结构为
在这里插入图片描述
在这里插入图片描述
选择 P = [ 0 1 ] T P=[0\quad 1]^T P=[01]T S = [ 1 − 1 ] T S=[1\quad -1]^T S=[11]T,双W2需设置3个PE,并且需反转输入边。边的映射结果表如下
在这里插入图片描述
脉动结构为
在这里插入图片描述

3.8 应用变换的关联脉动设计

设定不同的P和S轴,将会构造出不同形式的脉动阵列,但是这些阵列是“相通”的,且功能相同。所谓的“相通”是指可以通过各种电路变化从某一个阵列导出另一个阵列。

比如F可以通过B1应用割集重定时得到。
在这里插入图片描述
W1可由F二分之一减速然后在应用割集重定时得到。
在这里插入图片描述

四. 调度矢量的选择

前面所构造的脉动空间隐含了很大的人为因素,而且还默认驱动系统的时钟周期T足够长,以至于不用考虑节点关键路径的长短问题。在实际的系统设计中,如果T是预先规定的且不能更改,而节点的计算时间偏偏又大于T,此时就不能随意地设定S和P矢量。特别是S,S 选择不当将导致节点计算结果错误。

4.1 基于调度不等式选择 S T S^T ST

在这里插入图片描述
S = [ s 1 s 2 ] T S=[s_1\quad s_2]^T S=[s1s2]T,则 I x I_x Ix S ⋅ I x = s 1 × i + s 2 × j S·I_x=s_1×i+s_2×j SIx=s1×i+s2×j周期被调度, I y I_y Iy S ⋅ I y = s 1 × ( i + 1 ) + s 2 × ( j − 1 ) S·I_y=s_1×(i+1)+s_2×(j-1) SIy=s1×(i+1)+s2×(j1)周期被调度,那么使得 S ⋅ I y ≥ S ⋅ I x + 2 S·I_y≥S·I_x+2 SIySIx+2成立的 S S S就是所求解。化简不等式,有 s 1 − s 2 ≥ 2 s_1-s_2≥2 s1s22,取 S = [ 2 0 ] T S=[2\quad 0]^T S=[20]T,确定P与S不平行即可。

调度矢量选择步骤:

  • 找出所有基本边。可利用简化依赖图(RDG)得到基本边,RDG则利用相应问题的规则迭代算法(RIA)描述构造。
  • 根据公式 S ⋅ I y ≥ S ⋅ I x + T S·I_y≥S·I_x+T SIySIx+T建立调度不等式,且解之得到可用的 S T S^T ST

4.2 规则迭代算法(RIA)描述

RIA有两种标准形式,定义如下:

  • 如果所有方程的输入(RHS)下标相同,则该RIA为标准输入RIA形式;
  • 如果所有输出(LHS)下标,都相同,则该RIA为标准输出RIA形式。
    应用同样的FIR滤波器,RIA描述为:
    在这里插入图片描述
    其标准输出RIA描述为:
    在这里插入图片描述
    根据这些方程,可以得到RDG如下:
    在这里插入图片描述

4.3 应用简化依赖图(RDG)的调度矢量和脉动阵列设计

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

五. 矩阵乘法与二维脉动阵列设计

在这里插入图片描述
矩阵乘法是3维DG,可用投影法将其投影到2维脉动空间。在DG 中,每个节点的内容是一个乘法器和一个加法器,调度的约束在于[0,0,1]边,这条边表示将前一个节点的结果和当前节点所得的a*b相加。

S = [ s 1 s 2 s 3 ] T S=[s_1\quad s_2\quad s_3]^T S=[s1s2s3]T,则调度不等式为 S ⋅ I y ≥ S ⋅ I x + 1 S·I_y≥S·I_x+1 SIySIx+1,化简得 s 3 ≥ 1 s_3≥1 s31。(对所有边建立调度不等式是严格正确的,这里之所以只对 [ 0 , 0 , 1 ] T [0,0,1]^T [0,0,1]T边建立调度不等式,是因为其他边是一种广播性质的边,不会对导出正确的脉动结构造成影响)

不妨取 S T = [ − 1 − 1 1 ] S^T=[-1\quad -1\quad 1] ST=[111] P T = [ 1 0 0 0 1 0 ] P^T=\begin{bmatrix} 1&0&0\\ 0&1&0\\ \end{bmatrix} PT=[100100],需要进行a和b边的反转,才能保证映射是合法的,边映射如下表
在这里插入图片描述
首先把DG中各个节点的调度时间和所分配的PE序号标出来
在这里插入图片描述
图中,黄色数字是节点的坐标,蓝色数字是节点映射的PE序号,红色数字是节点被调度的时刻(相对时间)。从图中可知,可能出现的PE序号有(0,0)/(0,1)/(1,0)/(1,1),所以只需在处理器平面设置4个PE节点即可,如图
在这里插入图片描述
上图给出了每个PE 的序号,以及该PE工作的时刻,比如左下角为(0,0)号PE,在0周期和1周期工作,同理右上角为(1,1)号PE,在-2周期和-1周期工作。接下来将边映射到脉动阵列中,有
在这里插入图片描述
根据调度不等式,考虑如下可能的解:
解1——S.Y.Kung的二维脉动阵列
S T = [ 1 1 1 ] S^T=[1\quad 1\quad 1] ST=[111] P T = [ 1 0 0 0 1 0 ] P^T=\begin{bmatrix} 1&0&0\\ 0&1&0\\ \end{bmatrix} PT=[100100],调度图如下
在这里插入图片描述
边映射表
在这里插入图片描述
脉动结构
在这里插入图片描述
解2——Weiser-Davis的二维脉动阵列
S T = [ 1 1 1 ] S^T=[1\quad 1\quad 1] ST=[111] P T = [ 1 0 1 0 1 1 ] P^T=\begin{bmatrix} 1&0&1\\ 0&1&1\\ \end{bmatrix} PT=[100111],调度图如下
在这里插入图片描述
边映射表
在这里插入图片描述
脉动结构
在这里插入图片描述
解3——Schreiher-Rao的二维脉动阵列
S T = [ 1 1 1 ] S^T=[1\quad 1\quad 1] ST=[111] P T = [ 1 0 − 1 0 1 0 ] P^T=\begin{bmatrix} 1&0&-1\\ 0&1&0\\ \end{bmatrix} PT=[100110],调度图如下
在这里插入图片描述
边映射表
在这里插入图片描述
脉动结构
在这里插入图片描述
解4——Kung-Leiserson的二维脉动阵列
S T = [ 1 1 1 ] S^T=[1\quad 1\quad 1] ST=[111] P T = [ 1 0 − 1 0 1 − 1 ] P^T=\begin{bmatrix} 1&0&-1\\ 0&1&-1\\ \end{bmatrix} PT=[100111],调度图如下
在这里插入图片描述
边映射表
在这里插入图片描述
脉动结构
在这里插入图片描述
解5
S T = [ 1 2 1 ] S^T=[1\quad 2\quad 1] ST=[121] P T = [ 0 1 1 1 0 0 ] P^T=\begin{bmatrix} 0&1&1\\ 1&0&0\\ \end{bmatrix} PT=[011010],调度图如下
在这里插入图片描述
边映射表
在这里插入图片描述
脉动结构
在这里插入图片描述
解6
S T = [ 1 1 1 ] S^T=[1\quad 1\quad 1] ST=[111] P T = [ 1 − 1 − 1 0 1 − 1 ] P^T=\begin{bmatrix} 1&-1&-1\\ 0&1&-1\\ \end{bmatrix} PT=[101111],调度图如下
在这里插入图片描述
边映射表
在这里插入图片描述
脉动结构
在这里插入图片描述
解7
S T = [ 1 2 1 ] S^T=[1\quad 2\quad 1] ST=[121] P T = [ 1 1 1 1 − 1 0 ] P^T=\begin{bmatrix} 1&1&1\\ 1&-1&0\\ \end{bmatrix} PT=[111110],调度图如下
在这里插入图片描述
边映射表
在这里插入图片描述
脉动结构
在这里插入图片描述

六. 包含延迟的空间表示脉动阵列(略)

七. 结论

本章介绍了脉动结构设计方法,并以FIR滤波器和矩阵间乘法为例说明了该方法的原理。将DG按某种规则投影到脉动空间时,注意,脉动空间有一个维度是时间,其他维度构成脉动网络。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值