网站大量收购独家精品文档,联系QQ:2885784924

【SoCVista】3.流水与并行.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章、打怪抢宝之流水与并行 喜欢玩魔兽的朋友都知道,游戏的前期,不论是基地、士兵或是英雄都是很弱的,此时英雄主要带领小兵到处去打怪练级,同时抢些小小的宝物。这一章的任务就是打怪抢宝,而流水与并行就是两个小小的宝物。称其为“小小的宝物”是恰当的,因为从第四章到第七章,将会隆重推出四件上古之神器:1)重定时、2)展开、3)折叠和4)脉动。这四个神器相对于流水与并行这两个小小宝物那可谓神通广大。实际上,流水就是重定时的特例,而并行又是展开的特例。 题外话:前期不把级练好,那后期更甭想用得起上古神器了,所以这一章大家务必细心体会。 下面采用结合实例讲解的方式,大家看了之后应该学会如何将流水与并行的技术应用到其他的DSP程序中去。本章分两个小节: 主要介绍如何在DSP程序中应用流水与并行技术,同时还给出了流水的严格定义(并行没有进行严格的定义^_^b,大家先体会其过程,在展开一章将对并行做进一步的探讨)。 使用一种技术,就应该知道这种技术所能带来的好处和坏处。流水和并行的坏处大家可以发帖子讨论,而好处呢?主要有高速度和低功耗,前者显而易见,不再多说,而后者低功耗将被详细讨论。 讲解:第一节、流水与并行 一、初步的认识 如下图一a)的数据通路,迭代方程非常简单,就是3个数组对应元素相加,即 数据通路是一条前向(非递归)路径。从图一a’)可以更清晰地看到前向非递归的特点。对图一中的数据通路,假设加法节点计算时间为TA,那么关键路径长度就是TA+TA=2*TA。按图一a’)的割线处(割线所隔的两条同向边)插入“流水线寄存器”,也就是延时,就得到二级流水线结构如图一b)所示。图一b)二级流水线结构的关键路径长度变为TA,比原来的缩短了,这样迭代周期可以缩小,吞吐率也能提高。 对图一a’)进行并行扩展也非常简单,注意观察迭代式子或者图一a),节点不存在迭代间的优先关系,也就是说任一次迭代都可以单独进行而与其他次迭代没依赖关系。比如想构造一个2阶并行处理系统,那么可以将输入序列x(n)、a(n)和b(n)分为奇偶两列分别由两套相同的硬件电路来算。具体做法是,将n=2k和n=2k+1带入原迭代式,得两个新的迭代式,如下 这两个式子完全可以单独计算,根据式子构造的并行硬件如图一c)所示。 练习:对于这个示例要构造更高阶的并行系统,如何操作? 二、流水线 观察前面的例子,可以看出流水线采用沿着数据通路引入流水线寄存器的方法来缩短有效的关键路径,从而缩短迭代周期(采样周期也会相应缩短),提高系统吞吐率。这里先直接给出流水线的三句口诀(也是流水线的严格定义,见课本): 一个架构的速度(或时钟周期)由任意两个寄存器间、或一个输入与一个寄存器间、或一个寄存器与输出间、或输入与输出间路径中最长的路径限定。 这个最长的路径或“关键路径”可以通过在架构中恰当插入流水线寄存器来缩短。 流水线寄存器只能按照穿过任一图的前馈割集的方式插入。 为了说明第三点,需要引入两个定义: 割集:割集是一个图边的集合,如果从图中移去这些边,图就成为不相连的了。 前馈割集:如果数据在割集的所有边上都沿前进方向移动,这个割集就称为前馈割集。 对于1,等价的说法就是零延时最长路径决定了架构的速度,也就是关键路径。对于2,在初步认识的示例中,的确是通过在架构中插入流水线寄存器从而缩短了关键路径长度,由原来的2*TA变为TA,缩短一半。但是要注意,如果想通过插入流水线寄存器的方法来缩短关键路径,那插入的位置就要恰当,必须保证流水线寄存器出现在关键路径的某些边上。众所周知,关键路径上的边必须是零延时的,如果在关键路径的某些边上插入流水线寄存器,那么这条关键路径将被这些流水线寄存器斩断成若干段,架构中新的关键路径肯定小于等于旧的关键路径。之所以有“等于”,是那么一种情况,如果流水线寄存器不是插入到关键路径的某条边上,那原始关键路径没有被斩断,架构的关键路径长度不变。还有另一种情况,在一个架构中,存在多条等长的关键路径,流水线寄存器只斩断其中一些,还有一些没斩断,那么架构的关键路径长度还是不变。反过来说,流水线寄存器要插入到能斩断所有关键路径的边上才能缩短关键路径长度。 总之,插入流水线就是想斩断原始的所有关键路径,以得到更短的关键路径。那么插入流水线寄存器,是不是指随便在某些边上加入延时就行了呢?不是的,要想保证架构的功能不变,必须按照规定的法则进行流水线寄存器的插入。看第3个口诀:流水线寄存器只能按照穿过任一图的前馈割集的方式插入。 ---------------------------------------我们先把割集和前馈割集弄清楚------------------------------------- 割集是一个连通图的边的集合,如果从图中移去割集中所包含的边,该连通图就会成为“两个”不

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档