VLSI数字信号处理系统——第三章流水线与并行处理

VLSI数字信号处理系统——第三章流水线与并行处理

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

一.引言

本章的内容可以大致分为两部分:
1)主要介绍如何在DSP 程序中应用流水与并行技术,同时还给出了流水的严格定义。并行处理的严格定义将在“展开”一章做进一步的探讨。注意,若一个非递归结构,可以使用流水线,则一定可以实现并行处理。
2)流水和并行处理主要有高速度和低功耗优点。流水线技术用于斩断有效关键路径(也就是缩短关键路径),从而提高系统运行的频率,吞吐率也得到相应的提高;并行处理技术通过构造多份“相同”的硬件电路,以同时处理多个输入样本点(提高并行程度),来提高吞吐率。流水线的缺点增加了锁存器的数目并且增加了系统的迟滞,即流水系统第一个输出数据时间与原来时序系统第一个输出数据时间相比会有滞后。

下图是一个插入流水线(pipelining)寄存器实现流水线的原理图,数据通路是一条前向非递归路径。在割线处插入流水线寄存器,使得此一级流水线结构中的关键路径比原来的无流水线结构减小了,这样迭代周期可以缩小,吞吐率也能提高。
在这里插入图片描述
下图是一个并行处理的结构,二阶的并行处理系统可以将输入序列分为奇偶两列,分别由两套相同的硬件电路来算,增加了吞吐率。
在这里插入图片描述
在这里插入图片描述

二.流水线

流水线的定义
1)一个架构的速度(或时钟周期)由任意两个寄存器间、一个输入与一个寄存器间、一个寄存器与输出间或输入与输出间路径中最长的路径限定。
2)这个最长的路径或“关键路径”可以通过在架构中恰当插入流水线寄存器来缩短。
3)流水线寄存器只能按照穿过任一图的前馈割集的方式插入。

核心思想:流水线寄存器要插入到能斩断所有关键路径的边上才能缩短关键路径长度。

割集和前馈割集
割集:割集是一个图边的集合,如果从图中移去这些边,图就成为不相连的了。

前馈割集:如果数据在割集的所有边上都沿前进方向移动,这个割集就称为前馈割集。

流水线寄存器只能在前馈割集上插入,而且必须在单向割集上插入。
在这里插入图片描述
在这里插入图片描述
流水线寄存器插入方法
1)当DSP系统有多个输入端和多个输出端时,应该先把多个输入端折合成一个输入节点,多个输出端折合成一个输出节点,输入节点和输出节点计算不耗时间。比如图四a)的DSP框图,输入有四个分别为a(n)、b(n)、c(n)和d(n),输出有两个分别为y(n)和z(n);图四b)为其DFG,所有输入折合为节点I,所有输出折合为节点O。
在这里插入图片描述
2)假设加法节点计算时间 T A = 1 u . t . T_A=1u.t. TA=1u.t.,乘法节点计算时间为 T M = 2 u . t . T_M=2u.t. TM=2u.t.。目前的关键路径长度为 4 u . t . 4u.t. 4u.t.。一些可插入寄存器的单向割集如图五所示。a)和c)只是将一个计算时间为0u.t.的输入节点从关键路径是去掉而已,并不算斩断有效的关键路径。b)和d)斩断有效关键路径,使得关键路径的长度分别减少为 2 u . t . 2u.t. 2u.t. 3 u . t . 3u.t. 3u.t.
在这里插入图片描述
3细粒度流水线,就是假设那些决定架构关键路径的节点是可以拆分的,将其拆分之后再运用流水线寄存器将其斩断,从而进一步缩短关键路径。
如果乘法节点能拆分,比如拆成两个部分,分别为节点*1 和节点*2,且两个节点计算时间相等都为 1 u . t . 1u.t. 1u.t.,也就是原始乘法节点的一半,如图六a),那么可以再次插入一级流水线(红色割线所示),就可以斩断乘法节点,从而得到关键路径长度为 1 u . t . 1u.t. 1u.t.的“终极”细粒度流水架构如图六b)所示。
在这里插入图片描述

三.并行处理

如果可以划分为一组不相关的计算能够在一个流水线系统中按交替的方式计算,那么它也能够利用复制的硬件按并行处理的模式计算。

并行处理实现方法
3阶FIR滤波器的并行处理,迭代公式如下:
在这里插入图片描述
直接实现形式如下图,关键路径为*++,长度是 T M + T A + T A T_M+T_A+T_A TM+TA+TA
在这里插入图片描述
为了将其改造为一个3 阶并行处理系统(可同时处理N份样本点的系统称为N 阶并行处理系统),可先对其迭代公式进行如下改造,将 n = 3 k 、 3 k + 1 n=3k、3k+1 n=3k3k+1 3 k + 2 3k+2 3k+2带入原迭代公式,得到如下3 个新迭代公式:
在这里插入图片描述
只要输入 x ( 3 k ) 、 x ( 3 k + 1 ) x(3k)、x(3k+1) x(3k)x(3k+1) x ( 3 k + 2 ) x(3k+2) x(3k+2)就可以计算出 y ( 3 k ) 、 y ( 3 k + 1 ) y(3k)、y(3k+1) y(3k)y(3k+1) y ( 3 k + 2 ) y(3k+2) y(3k+2),其他的输入 x ( ∗ ∗ ∗ ) x(***) x()都是之前就已经输入的数据,可由 x ( 3 k + 1 ) x(3k+1) x(3k+1) x ( 3 k + 2 ) x(3k+2) x(3k+2)延时而得。

块处理系统:并行处理系统也称为块处理系统,因为系统的输入是一块一块的,比如我们所讨论的3阶并行处理系统,每次输入都是3个数据为一块,即 x ( 3 k ) 、 x ( 3 k + 1 ) x(3k)、x(3k+1) x(3k)x(3k+1) x ( 3 k + 2 ) x(3k+2) x(3k+2),输出也是3个数据为一块,即 y ( 3 k ) 、 y ( 3 k + 1 ) y(3k)、y(3k+1) y(3k)y(3k+1) y ( 3 k + 2 ) y(3k+2) y(3k+2)。块中所包含的数据个数 L L L称为块尺寸,在我们系统中,块尺寸 L L L为3。

并行处理的采样周期与迭代周期:迭代周期就是时钟周期, 即 T i t e r = T c l k T_{iter}=T_{clk} Titer=Tclk , 根据系统的并行度与迭代周期, 可计算出采样周期为 T s a m p l e = T i t e r / L T_{sample}=T_{iter}/L Tsample=Titer/L L L L为并行处理系统的块尺寸。

L L L级减慢:并行处理系统中的一个延时,跟原始串行系统中的延时不太一样,称为块延时,也称 L L L级减慢,称为 L − s l o w L-slow Lslow。从代数式看,就是 x ( 3 k + 2 ) x(3k+2) x(3k+2)延迟一个单位,得到 x ( 3 ( k − 1 ) + 2 ) = x ( 3 k − 1 ) x(3(k-1)+2)=x(3k-1) x(3(k1)+2)=x(3k1)。综上所述,对于块尺寸为L 的并行处理系统,如果某端口输入为 x ( L k + m ) x(Lk+m) x(Lk+m) m = 0 , … , L − 1 , k m=0,…,L-1,k m=0,,L1k 为非负整数,延时一个单位得到 x ( L ( k − 1 ) + m ) = x ( L k + m − L ) x(L(k-1)+m)=x(Lk+m-L) x(L(k1)+m)=x(Lk+mL)

块尺寸为3的3阶FIR滤波器如下图所示:
在这里插入图片描述

四.流水线与并行处理的功耗减低

传播延迟:CMOS简化传播延迟公式如下所示。
在这里插入图片描述
其中 C c h a r g e C_{charge} Ccharge为等价的充放电电容, V 0 V_0 V0为门电路工作电压(电源电压), V t V_t Vt 为门电路阈值电压,参数 k k k为工艺参数。

动态功耗:CMOS简化动态功耗公式如下。
在这里插入图片描述
C t o t a l C_{total} Ctotal为电路总的等价电容, V 0 V_0 V0为门电路工作电压, f f f为电路时钟频率。

注意:: C c h a r g e C_{charge} Ccharge C t o t a l C_{total} Ctotal是不同的概念。前者与关键路径有关,是关键路径上的充放电电容,用于衡量信号延时;后者与整个系统有关,是整个电路系统中所有的充放电电容,用于衡量系统的整体动态功耗。

1.用流水线降低功耗

如下图所示,单独把旧电路中关键路径(红色线段)拿出来分析,加入M级“理想的”流水
线之后得到新电路(蓝色线段)。不论是旧电路还是新电路,都采用相同的时钟频率来运行,提高时钟频率只是流水的其中一个用途,这里我们不需要提高系统时钟频率,而是需要降低系统功耗。
在这里插入图片描述
流水线技术斩断了原始系统的有效关键路径,也相当于分解了原始系统的有效关键路径充电电容。约定以下符号:
C o − c h a r g e C_{o-charge} Cocharge:为旧电路关键路径上的等价充放电电容,上图的整段红线所代表的电容;
C n − c h a r g e C_{n-charge} Cncharge:为新电路关键路径上的等价充放电电容,上图一小段蓝线所代表的;
V 0 V_0 V0:为旧电路工作电压;
b V 0 bV_0 bV0:为新电路工作电压,b 是大于0 小于1 的数(其实从这就可以看出我们要通过降低工作电压的方法来降低功耗);
P o P_o Po:为旧电路功耗;
P n P_n Pn:为新电路功耗;
C t o t a l C_{total} Ctotal:新旧电路的等价电容,可以近似认为流水线不改变电路总电容(实际上加入流水线会使 C t o t a l C_{total} Ctotal增大一点点)。

由于“理想”M级流水线的插入,使得 C n − c h a r g e C_{n-charge} Cncharge= C o − c h a r g e / M C_{o-charge}/M Cocharge/M。传输延时公式中的充放电电容变小,而我们又不需要改变传输延时 T p d T_{pd} Tpd,那么肯定能带来工作电压的减小,新旧电路传播延时相等,且各自的关系如下式:
在这里插入图片描述
在这里插入图片描述
合并两式,得到计算工作电压减小因子b的公式,如下式所示:
在这里插入图片描述
新的电路功耗为:
在这里插入图片描述

2.用并行处理降低功耗

原始电路的关键路径如红线段所示,运行频率为 T s e q T_{seq} Tseq,系统电压为 V 0 V_0 V0;使用N阶并行处理来构造新电路,如蓝色线段所示,由于我们不需要提高系统吞吐率,所以在N阶并行处理电路中应该以原始时钟频率的N 分之一,也就是以 N ∗ T s e q N*T_{seq} NTseq为周期来运行(系统速率变慢,但吞吐率不变)。
在这里插入图片描述
并行处理没有斩断有效关键路径,故而关键路径的充放电电容不变,均为 C c h a r g e C_{charge} Ccharge,但是系统的总电容为原来的N倍,即 N ∗ C t o t a l N*C_{total} NCtotal。新旧电路吞吐率相等,关系如下式:
在这里插入图片描述
合并两式,得到计算工作电压减小因子b的公式,如下式所示:
在这里插入图片描述
新的电路功耗为: P n = N C t o t a l ( b V 0 ) 2 ( f / N ) = C t o t a l ( b V 0 ) 2 f = b 2 P 0 P_n=NC_{total}(bV_0)^2(f/N)=C_{total}(bV_0)^2f=b^2P_0 Pn=NCtotal(bV0)2(f/N)=Ctotal(bV0)2f=b2P0

可以看到, L L L级流水线和 L L L阶并行处理的采用在不改变原始时序电路性能的情况下有相同的功耗降低能力。

3.流水线与并行处理的结合

下图(a)为原始时序电路,其关键路径用时为 T T T,图(b)为流水线与并行处理结合的电路,其关键路径被减小为一半且使用了三阶并行处理,其关键路径用时为 3 T 3T 3T。(a)和(b)拥有相同的吞吐率与时钟频率。
在这里插入图片描述
根据流水线与并行处理的传播延时公式,列出如下等式:
在这里插入图片描述
化简后,得到计算工作电压减小因子b的公式,如下式所示:
在这里插入图片描述
新的电路功耗为: P n = b 2 P 0 P_n=b^2P_0 Pn=b2P0

五.结论

本章介绍了非递归DSP系统中的流水线和并行处理方法,两种方法都可以提高非递归DSP系统采样频率。

流水线中,流水线寄存器放置在SFG的前馈单向割集处,使关键路径计算时间降低,结果使时钟频率提高,采样频率提高。

并行处理中,复制原始串行系统硬件,得到一个MIMO并行系统,使时钟频率不变,采样频率提高。

流水线和并行处理技术进行低功耗设计,就是牺牲电路面积(流水和并行占用了更多的电路资源),换取了较低的工作电压,从而降低系统的功耗。

本章推荐:关于大量运用流水并行技术进行低功耗设计的项目可以参考opencore上由Xuke发起的h.264解码器设计项目(nova)。Xuke 现在IBM 担任Staff R&D Engineer。

  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
第1章 绪论 1. 1 引言 1. 2 扩频通信的基本原理 1. 2. 1 理想通信系统的带宽和S/N的互换关系 1. 2. 2 潜在抗干扰理论 1. 3 扩频通信中的基本参数 1. 4 本书的结构 参考文献 第2章 伪噪声序列 2. 1 引言 2. 2 伪噪声序列的性质及其产生 2. 2. 1 伪噪声序列的性质 2. 2. 2 伪噪声序列的相关性 2. 2. 3 伪噪声序列的部分相关 2. 3 m序列 2. 3. 1 m序列的性质 2. 3. 2 m序列相关函数的波形及功率谱 2. 3. 3 产生指定延迟的m序列及m序列的保密性研究 2. 3. 4 m序列的构造 2. 4 Gold序列及其他伪噪声码序列 2. 4. 1 Gold序列 2. 4. 2 其他伪噪声序列 参考文献 第3章 锁相环原理 3. 1 引言 3. 2 锁相环基本理论 3. 2. 1 一些基本公式 3. 2. 2 环路等效噪声带宽 3. 2. 3 数字锁相环的基本理论 参考文献 第4章 数字下变频器 4. 1 引言 4. 2 扩频通信中ADC参数的选择 4. 2. 1 ADC量化效应 4. 2. 2 数的表示法及其在量化中的影响 4. 2. 3 量化bit数的性能分析 4. 2. 4 在DDC中ADC的选择原则 4. 3 DDC的有效实现结构 4. 3. 1 数字混频器原理 4. 3. 2 同相 I 和正交 Q 的DDC实现结构 4. 4 DDC的多速率采样处理 4. 4. 1 整数M倍抽取 4. 4. 2 CIC滤波器 4. 5 采用CORDIC算法实现DDC 4. 5. 1 CORDIC运算器原理 4. 5. 2 CORDIC的VLSI结构 参考文献 第5章 直接数字频率合成器 5. 1 引言 5. 2 DDFS原理及其性能分析 5. 2. 1 直接数字频率合成器的工作原理 5. 2. 2 DDFS的杂散来源及其分布特性 5. 2. 3 改善DDFS杂散输出频谱的几种方法 5. 2. 4 DDFS的VLSI结构 5. 3 基于Galois域的数字控制振荡器 NCO 5. 3. 1 数字控制振荡器的数学原理 5. 3. 2 Galois域NCO的VLSI结构 参考文献 第6章 数字抑制载波跟踪环 6. 1 引言 6. 2 几种经典的载波跟踪环 6. 2. 1 抑制载波跟踪环的结构形式 6. 2. 2 松尾环的QPSK解调 6. 2. 3 16QAM解调环 6. 2. 4 通用载波恢复环 6. 3 数字Costas环的设计 6. 3. 1 数字Costas环的功能部件及参数设计 6. 3. 2 数字Costas环的VLSI结构 参考文献 第7章 扩频码序列的捕获 7. 1 引言 7. 2 统计随机信号检测理论的简单回顾 7. 2. 1 Bayes和Neyman Pearon假设检验 7. 2. 2 在加性高斯白噪声下对无衰落信号的非相干接收 7. 2. 3 吸收式Mark. v链和锁定检测理论 7. 3 几种典型的PN码捕获算法 7. 3. 1 相干扩频通信的PN码捕获算法 7. 3. 2 非相干扩频通信的PN码并行捕获算法 7. 3. 3 减少剩余码相位偏移效应的PN码捕获算法 7. 4 数字非相干混合并行捕获的VLSI结构 7. 4. 1 非相干混合并行捕获算法 7. 4. 2 非相干混合并行捕获算法映射至VLSI结构 7. 5 PN码捕获系统的自适应门限算法 7. 5. 1 单个数据样本的门限计算 7. 5. 2 基于窗口计数器的自适应门限算法 7. 5. 3 利用瞬时标定功率的自适应门限算法 参考文献 第8章 数字延迟锁定跟踪环 8. 1 引言 8. 2 DLL基本原理 8. 2. 1 全时间非相干DLL跟踪 8. 2. 2 单△型抖动环 TDL 跟踪 8. 3 关于PN码跟踪环性能的采样和量化效应分析 8. 3. 1 非等量采样 8. 3. 2 码跟踪环 8. 3. 3 环路分析 8. 4 抗多径效应的PN码跟踪算法 8. 4. 1 算法系统描述 8. 4. 2 优化滤波器的加权 8. 5 数字非相干双△△DLL跟踪算法VLSI结构 8. 5. 1 非相干双△DLL跟踪算法描述 8. 5. 2 环路参数设计及部分单元部件的VLSI结构 8. 5. 3 数字式非相干双△DLL的VLSI结构 8. 6 窄相关DLL原理及性能 8. 6. 1 窄相关DLL原理 8. 6. 2 窄相关DLL的统计特性分析 8. 6. 3 多径误差分析
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值