基于dsp的软件流水优化研究

基于dsp的软件流水优化研究

ID:33861996

大小:515.84 KB

页数:14页

时间:2019-02-28

基于dsp的软件流水优化研究_第1页
基于dsp的软件流水优化研究_第2页
基于dsp的软件流水优化研究_第3页
基于dsp的软件流水优化研究_第4页
基于dsp的软件流水优化研究_第5页
资源描述:

《基于dsp的软件流水优化研究》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、http://www.paper.edu.cn基于DSP的软件流水优化研究李平良,戴志涛北京邮电大学计算机科学与技术学院,北京(100876)E-mail:lipl_cv@yahoo.com.cn摘要:本文通过研究软件流水相关技术,结合TIDSPC6000系列DSP的硬件特性,探讨了DSP软件流水的相关优化方法。通过性能比较,说明这些方法具有普遍的应用价值。关键词:DSP;软件流水;循环展开;线性汇编中图分类号:TP3031.引言数字信号处理器DSP(DigitalSignalProcessing)是一种运算密集型处理

2、器,采用哈佛结构设计,即数据总线和地址总线分开,使程序和数据分别存储在不同的空间,允许取指令和执行指令完全重叠。而且,DSP芯片内部嵌有硬件乘法器、累加器等功能单元,采用流水线结构,具有良好的并行特性。然而,在DSP算法中存在大量的循环操作,要提高系统的并行性,就必须发掘循环中各循环体之间的指令级并行性(InstructionLevelParallelism,简称ILP)。目前,在这方面己经提出的技术有循环展开和软件流水等。其中,循环展开是通过多次复制循环体和调整循环中止代码,从而优化ILP和增大指令调度的作用范围。这

3、种方法有两个缺点:(1)指令调度不能越过新的循环体,在产生的代码中就会有过多的注满与清空流水线的部分,效率不高;(2)展开次数不易确定,太少并行度不够,太多会导致代码长度过大。而软件流水则避免了这些问[1]题。本文将通过研究软件流水相关技术,从代码和编译器的角度提出DSP软件流水的一些优化方法,并对软件流水优化方法中的一种重要方法—编写线性汇编代码进行详细探讨,给出了线性汇编代码编写的方法和步骤。2.软件流水技术软件流水是一种重要的指令调度技术,它通过编排(schedule)循环指令,重叠地执行不[2]同的循环体来提高

4、ILP。该方法主要应用于具有多个功能部件的并行处理器,例如VLIW(VeryLongInstructionWord)、超标量等多发射体系结构处理器,以及可以同时执行整数和浮点指令、但不同时对这两种指令初始化的单发射体系结构。2.1软件流水描述图1描述了一个软件流水循环。图中A、B、C、D和E表示一个循环体中的各条指令,II(InitiationInterval)称为启动间距,表示相邻两个循环体的启动时刻差。在循环中,一个周[3]期最多可以并行执行5次操作。软件流水过程可以分为三个阶段,图中阴影部分称为循环核心期(Loo

5、pKernelPhase),核心期前面执行的过程称为流水循环起始期(PipelinedLoopPrologPhase),核后面执行的过程称为流水循环结尾期(PipelinedLoopEpilogPhase)。在起始期,每时钟周期启动一个新的循环体,流水渐渐满起来。在核心期中,所有的5个阶段并行执行,流水已满,达到了最大的并行度。在结尾期,每时钟周期结束一个循环体。从以上描述中,我们可以看出软件流水方法的原理:一个单重循环调度(平坦调度,flatschedule)被划分为(在时间上)长度相等的d段,称作级数(stagec

6、ount,SC)。每隔II时间启动一个新的循环体,经过(d-1)×II时间后,有d个相继的循环体同时在执行,且依次位于对应循环-1-http://www.paper.edu.cn体的第d段、第d-1段、…、第1段中。此后,软件流水进入循环核心期,即每隔II时间就有一个循环体流出,同时有一个新的循环体进入流水,使得每II时间段中执行的代码保持不变,循环体中的所有操作都在同时执行。所以,循环核心期也构成了一个稳态。图1(a)单循环源代码(b)单循环软件流水Fig1(a)sourcecodeofsinglecycle(b)s

7、oftwarepipeline2.2软件流水调度技术目前,针对软件流水己经提出了一系列的调度算法,主要包括模调度(ModuloScheduling)、核心识别(KernelRecognition)及增强流水线调度(EnhancedPipelineScheduling,[1]EPS)等三类。根据适用范围,这些算法可以分为直线型流水算法和复杂流水算法。直线流水算法仅适用于单循环结构,而复杂流水算法允许循环体中包含分支结构以及嵌套循环。按调度方式不同,又可分为限定性流水算法和通用型流水算法。限定型流水算法要求循环安放时,每次

8、重复相同的调度方案和启动间隔,而通用流水算法则没有这种限制。其中,模调度是其他大部分软件流水调度算法的基础,将在2.3节详细讨论。核心识别方法是循环展开与无环调度的延伸。它将循环看作是完全展开的,所有循环体中的操作均参与调度,如果在调度的过程中,系统两次到达某个完全相同的状态,则可以确定其后的调度将是前面模式的重复,那么这两点之间

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。