- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高级语言与汇编语言间的数据传送
《高级语言与汇编语言间的数据传送》行不?
匿名 回答采纳率:31.2% 2009-08-24 18:50
DSP汇编语言优化设计摘 要:执行效率是衡量DSP程序的性能的重要指标,因而程序的优化就显得十分必要.在TS201的环境下,基于汇编语言,结合MTI(动目标显示)的程序对SIMD(单指令多数据)技术、利用或避免延时、加强指令级并行、软件流水、循环展开等优化方法进行了比较和分析.优化后的汇编程序的效率提高了48.5%.关键词:汇编优化;软件流水;循环展开;指令级并行ADSP-TS201(以下简称TS201)是ADI公司的新一代TigerSHARC处理器,其内核工作频率由TS101的300 MHz增加到600 MHz,片内存储器已增加到24Mbit.它具有极宽的总线宽度,集成了大容量的片内存储器,并且拥有两个单独的计算块,使DSP的每个周期能够执行多达4条指令,24个16位定点运算和6个浮点运算[1].在实际的工程实践中为了使复杂的算法能够满足实时性的要求,需要充分发挥DSP的高速处理能力,提高软件的执行效率,使处理器能够以较高的性能实现设计的要求.因此对DSP程序的优化就显得至关重要,一种方法是加强指令并行,提高对处理器资源的利用率;另一种方法是采用软件流水线操作,将程序中的循环部分展开,以获得最好的并行性能和尽量避免寄存器延时;第3种方法是对算法的构建模式进行优化,使之更适合处理器的结构,从而使处理器能更好地完成相应的算法.前两种方法对算法本身并没有优化,所以不需要对算法进行理解,可以直接根据相应的优化准则对其进行优化,而第3种方法则需要对算法有足够的了解,才能对算法进行有效地重组,达到优化的目的[1].本文在TS201的环境下,基于汇编语言,对DSP程序的优化方法进行了比较和分析,着重介绍了软件流水技术对汇编代码性能的改善.1 优化的重点对于多重循环,嵌套越深,循环优化对提高整个程序的指令级并行性的作用越大.以一个两层循环为例,外循环数为m,内循环数为n,如果在内循环中通过优化减少了1条指令,则整个程序能节省大约1*m*n条指令.可见,内循环每减少一定的指令,整个程序就会根据循环数减少成倍的指令.所以,把优化的重点放在执行次数很多的部分(如内循环)上,才可以期望获得事半功倍的效果.2 优化的主要措施及基本原理2.1 避免或充分利用指令流水线延时对于指令i和指令j,如果指令j要用到指令i产生的结果,则称指令j数据相关于指令i[2].在上一个指令周期运算完的结果如果在接下来的指令周期中立刻作为源操作数使用的话,这两条指令之间就存在数据相关,即后一条指令数据相关于前一条指令.这时,处理器会根据指令的不同在这两条指令之间插入一定的延时状态(即若干个等待周期),而在这段时间内,处理器基本上是处于空闲状态,仅仅在等待延时状态的结束,而不执行任何指令.这样,如果能避免延时或充分利用延时再进行一些运算,就能实现程序的进一步优化.2.2 SIMD(Single-Instruction, Multiple-Data,单指令多数据)技术同时使用X和Y两个计算块进行运算,即在两个计算块中进行相同的运算.为了使总线上的数据尽量按照总线宽度进行传输,所以每次读取四个字,以充分利用处理器的3条128 bit总线,则所需循环数减半,分支转移和跳转指令相应减少,可以达到优化程序的目的.2.3 使用软件流水以达到指令并行软件流水是一种重组循环以减少指令行间延迟的技术,是提高DSP程序执行效率的一种重要手段.一个循环体中的各个语句有很强的时间相关关系,但是连续2个循环体中的各个语句却是相互独立的.它们是以相同的语句处理不同的数据,所以可以相应成倍地减少循环数目[3].软件流水将一个循环体分成取数、运算和存储等操作阶段,属于不同循环体的操作可以并行执行.通过重叠不同循环体的执行,把不同循环体间的指令交织在一起,使不同循环体间的指令设法一起并行执行,而单个循环体中的指令仍然是串行执行的.这样,既保证了循环体中指令的相关关系,又提高了并行性[4].基本原理见图1.软件流水在前一个循环体未结束之前启动下一个新的循环体,相邻循环体的启动时间间隔称为启动间距II(Initiation Interval)[5],以每II个重复周期作为一个节拍.设有n个循环体,每个循环体由取数、运算和存储等3个操作阶段组成,则如图1所示,节拍1和2是程序的装入部分,将前2个循环体以II为间隔依次启动;节拍3至节拍n是程序的核心,其中的每个节拍都有分别属于3个不同循环体的3个操作在同时执行,软件流水线被充满,它反复执行n-2次后,所有的循环体都被启动;节拍n+1和n+2是程序的排空部
文档评论(0)