基于DSP的软件流水优化研究.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于DSP的软件流水优化研究.pdf

基于DSP 的软件流水优化研究 李平良,戴志涛 北京邮电大学计算机科学与技术学院,北京 (100876) E-mail:lipl_cv@ 摘 要:本文通过研究软件流水相关技术,结合TI DSP C6000 系列DSP 的硬件特性,探讨 了DSP 软件流水的相关优化方法。通过性能比较,说明这些方法具有普遍的应用价值。 关键词:DSP;软件流水;循环展开;线性汇编 中图分类号:TP 303 1. 引言 数字信号处理器DSP(Digital Signal Processing)是一种运算密集型处理器,采用哈佛结构 设计,即数据总线和地址总线分开,使程序和数据分别存储在不同的空间,允许取指令和执 行指令完全重叠。而且,DSP芯片内部嵌有硬件乘法器、累加器等功能单元,采用流水线结 构,具有良好的并行特性。 然而,在DSP算法中存在大量的循环操作,要提高系统的并行性,就必须发掘循环中各 循环体之间的指令级并行性(Instruction Level Parallelism,简称ILP) 。目前,在这方面己经提 出的技术有循环展开和软件流水等。其中,循环展开是通过多次复制循环体和调整循环中止 代码,从而优化ILP和增大指令调度的作用范围。这种方法有两个缺点:(1)指令调度不能越 过新的循环体,在产生的代码中就会有过多的注满与清空流水线的部分,效率不高;(2)展 开次数不易确定,太少并行度不够,太多会导致代码长度过大。而软件流水则避免了这些问 题[1] 。本文将通过研究软件流水相关技术,从代码和编译器的角度提出DSP软件流水的一些 优化方法,并对软件流水优化方法中的一种重要方法—编写线性汇编代码进行详细探讨,给 出了线性汇编代码编写的方法和步骤。 2. 软件流水技术 软件流水是一种重要的指令调度技术,它通过编排(schedule)循环指令,重叠地执行不 同的循环体来提高 ILP[2] 。该方法主要应用于具有多个功能部件的并行处理器,例如 VLIW(Very Long Instruction Word) 、超标量等多发射体系结构处理器,以及可以同时执行整 数和浮点指令、但不同时对这两种指令初始化的单发射体系结构。 2.1 软件流水描述 图1描述了一个软件流水循环。图中A 、B 、C 、D和E表示一个循环体中的各条指令, II(Initiation Interval)称为启动间距,表示相邻两个循环体的启动时刻差。在循环中,一个周 期最多可以并行执行5次操作。软件流水过程可以分为三个阶段[3] ,图中阴影部分称为循环 核心期(Loop Kernel Phase) ,核心期前面执行的过程称为流水循环起始期(Pipelined Loop Prolog Phase) ,核后面执行的过程称为流水循环结尾期(Pipelined Loop Epilog Phase) 。在起始 期,每时钟周期启动一个新的循环体,流水渐渐满起来。在核心期中,所有的5个阶段并行 执行,流水已满,达到了最大的并行度。在结尾期,每时钟周期结束一个循环体。 从以上描述中,我们可以看出软件流水方法的原理:一个单重循环调度(平坦调度,flat schedule)被划分为(在时间上)长度相等的d段,称作级数(stage count,SC)。每隔II时间启动一 个新的循环体,经过(d-1)×II时间后,有d个相继的循环体同时在执行,且依次位于对应循环 -1- 体的第d段、第d-1段、…、第1段中。此后,软件流水进入循环核心期,即每隔II时间就有一 个循环体流出,同时有一个新的循环体进入流水,使得每II时间段中执行的代码保持不变, 循环体中的所有操作都在同时执行。所以,循环核心期也构成了一个稳态。 图1 (a)单循环源代码 (b)单循环软件流水 Fig1 (a)source code of single cycle (b)softwar

文档评论(0)

wuyouwulu + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档