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

1.引言-中国科技论文在线.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.引言-中国科技论文在线.doc

FILENAME 基于TMS320C6000系列DSP代码优化方法研究.doc PAGE - PAGE 8 - 基于TMS320C6000系列DSP代码优化方法研究 邱春武1 ,余文1,杨大利2 1 北京邮电大学计算机科学与技术学院,北京(100876) 2 北京信息科技大学计算机学院,北京(100101) E-mail: lovelybeixinboy@163.com 摘 要:随着DSP任务系统复杂度的增大,为了充分利用TMS320C6000系列DSP丰富的内部资源,需要对程序进行优化。程序的优化一般分三个阶段进行,通过优化可以提高指令的并行度和执行效率。本文分别讨论了三个阶段对程序进行优化的各种方法。 关键词:TMS320C6000,DSP,代码优化,汇编, 优化 1.引言 数字信号处理是20 世纪60 年代发展起来的新兴学科,已广泛应用于通信、计算机、网络、自动控制等诸多领域。DSP (Digital Signal Processor)是专门用于实时数字信号处理的微处理器,由于采用了哈佛结构、多总线结构、流水线技术和专用指令等特殊设计而具备了强大的运算能力。 TMS320C6000是TI公司TMS320系列产品中的新一代高性能DSP 芯片, 共分为两大系列。其中定点系列为TMS320C62xx 和TMS320C64xx;浮点系列为TMS320C67xx REF _Ref185841964 \r \h [1]。TMS320C 6000 系列CPU 中的8个功能单元可以并行操作,并且其中两个功能单元为硬件乘法运算单元,大大地提高了乘法速度。除了多功能单元外,流水技术是提高DSP 程序执行效率的另一主要手段。由于TMS320C6000 的特殊结构,功能单元同时执行的各种操作可由VLIW长指令分配模块来同步执行,使8条并行指令同时通过流水线的每个节拍,极大地提高了机器的吞吐量。 TMS320C6000丰富的内部资源和良好的运算性能使程序的高效成为可能,但实际开发中并不是每个程序都能达到这一点。因此,要提高C 代码的效率,不但要在编程中充分考虑DSP 的结构特点, 更要在软件编程结束之后,对源代码进行优化。本文就是讨论TMS320C6000开发中C语言与汇编语言混合编程时三个阶段的代码优化方法。 2.代码优化 在DSP软件开发中推荐的开发流程如图1所示。程序员可以按照这三个阶段来进行软件开发,相应的代码优化也分三个阶段进行 REF _Ref185842171 \r \h [2]。 第一个阶段:对第一个阶段,没有C6000知识的用户就可以开发自己的C代码,然后使用C6000代码剖析工具,确定C代码中可能存在的低效率段,为进一步改进代码性能,进入第二阶段。 第二个阶段:使用一定的方法,改进C代码,使用C6000剖析工具检查其性能,如果代码仍不能达到所期望的效率,则进入第三个阶段。 第三个阶段:从C代码中抽出对运行时间影响最大的代码段,用线性汇编改写这段代码。用户能使用汇编优化器优化该代码。 2.1 第一个阶段代码优化 第一阶段的优化是基于通用微处理器的PC机环境中的优化,主要是针对C程序的通用特性来考虑的。这方面的优化工作主要包括数据类型选择、数值操作优化、快速算法、变量定义和使用优化、函数调用优化以及计算表格化等 REF _Ref185842290 \r \h [3]。值得一提的是在第一个阶段的优化过程中,可以通过选定CCS(Code Composer Studio)提供的C编译器的选项来实现优化,这部分不是本文讨论的内容。 图1 DSP开发流程图 2.1.1 数据类型  数据类型的选择在分析和编写代码时很重要,充分考虑数据类型大小才能从C6000体系结构中取得最优的性能。C6x 编译器对每种数据类型都定义了数据大小。 char :8 bit ; short : 16 bit ; int :32 bit ; long :40 bit ;float :32 bit ;double :64 bit 基于每一种数据类型的大小,在书写C 代码时,应注意以下原则。(1) 要避免假设代码的int 和long 数据类型具有相同的大小,因为C6x 编译器对long 数据使用40 bit 操作数;(2) 定点乘法,尽量采用short 型作为输入,因为C6x 上是一个16×16 的乘法器;(3) 用于循环的计数器,数据类型采用int 或者unsigned int 以避免汇编器产生不必要的符号扩展指令;(4) 当在浮点DSP 装置中使用浮点指令时,例如C67x应使用-mv6700 编译器开关,使得代码产生器符合浮点的硬件装置代码。 2.1.2 数值操作优化 C程序中主要有以下数值操作优化:(1) 用比特的移位操作来代替2

文档评论(0)

zcbsj + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档