TMSC的代码优化技术.pptVIP

  1. 1、本文档共78页,可阅读全部内容。
  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文档。上传文档
查看更多
TMSC的代码优化技术

TMS320C6000的代码优化技术 计算机体系结构 赵 峰 2005.12.06 主要内容 前言 C语言级优化 写C代码 (write C code) 编译C代码 (compile C code) 分析代码性能 (profile C code) 优化C代码 (optimize C code) 写线性汇编 前 言 Spru198g.pdf “TMS320C6000Programmer’s Guide ” VLIW机器的峰值性能很难达到; VLIW机器的软件优化工作非常重要 嵌入式编程中的软件优化 算法级优化 算法本身的不同实现方法或实现技巧 平台级优化 跟目标处理器架构和特性相关的编程技巧 汇编语言格式 并行取指包 汇编代码的格式 线性汇编代码的格式 汇编与线性汇编的差异 线性汇编不用考虑并行性 不用分配功能单元 不用分配寄存器 编译器构成 指令延迟间隙 流水线 PG: Program address generate PS: Program address send PW: Program access ready wait PR: Program fetch packet receive DP: Instruction dispatch DC: Instruction decode 主要内容 前言 C语言级优化 写C代码 (write C code) 编译C代码 (compile C code) 分析代码性能 (profile C code) 优化C代码 (optimize C code) 写线性汇编 软件开发及优化流程 包含3个阶段:第一阶段 第二阶段 优化C代码 第三阶段 写线性汇编代码 C语言编程及优化 优化的过程就是与编译器交互信息的过程 主要优化手段: 构造合理的处理流程 ( DMA ) Cache优化 编译器选项 内联函数 数据打包处理 软件流水 循环展开 主要内容 前言 C语言级优化 写C代码 (write C code) 编译C代码 (compile C code) 分析代码性能 (profile C code) 优化C代码 (optimize C code) 写线性汇编 编写C语言程序 C6000中的数据类型: 编程要点 int与long长度不同 对于定点乘法,应尽量使用short 循环控制变量尽量使用int/unsigned int 编译器只优化内层循环 内层循环中尽量不使用 if-else语句 主要内容 前言 C语言级优化 写C代码 (write C code) 编译C代码 (compile C code) 分析代码性能 (profile C code) 优化C代码 (optimize C code) 写线性汇编 降低性能的编译器选项 提高性能的编译器选项 减小代码尺寸的编译器选项 控制代码的编译器选项 控制信息反馈的编译器选项 存储器相关性分析 确定相关性,才可以调度指令并行执行; 编译器对于访问存储器的指令的相关性很难确定,需要程序员介入: 1.使用关键字(keywords):restrict 2.联合使用-pm和-o3 编译选项 3.使用-mt选项 矢量和的存储器相关性分析 存储器混叠 存储器混叠现象 当两个指针能够指向同一个存储空间,就会产生存储器混叠 在存储操作结束之前,不可以启动从In1的读操作 取消存储器混叠的3种方法 使用restrict取消存储器混叠 主要内容 前言 C语言级优化 写C代码 (write C code) 编译C代码 (compile C code) 分析代码性能 (profile C code) 优化C代码 (optimize C code) 写线性汇编 分析代码性能的方法 Clock()函数; CCS的clock菜单 CCS的Profile功能; 实验1. 测试中值滤波的性能 1. 尝试clock()函数; int pre = clock(); ……..function int post =clock(); 2. 尝试clock菜单; 3. Profiler 4. 改变编译器选项: -o3/pm2/mt/no ms/-k 5.再用profiler进行测试 主要内容 前言 C语言级优化 写C代码 (write C code) 编译C代码 (compile C code) 分析代码性能 (profile C code) 优化C代码 (optimize C code) 写线性汇编 优化C代码 Intrinsics(内联函数) 数据打包处理 对短字长的数据使用宽长度的存储器访问

文档评论(0)

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

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

1亿VIP精品文档

相关文档