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

软件优化 概念和汇编优化.pptVIP

  1. 1、本文档共46页,可阅读全部内容。
  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文档。上传文档
查看更多
软件优化 概念和汇编优化

C6000 软件优化 Two main goals of software optimisation Faster execution time. Small code size Trade off between the two goals Basic knowledge To implement efficient software, the programmer must be familiar with: Processor architecture. Programming language (C, assembly or linear assembly). The code generation tools (compiler, assembler and linker). Code Optimisation Procedure 软件优化要点 1个时钟周期内让尽可能多的功能单元在执行指令。 趋近8*主频(MHz) MIPS 前提:满足各种资源限制(resource bound) 途径: (1)资源合理分配、充分使用 (2)算法?映射?结构 DSP适合对大量数据做相同的运算 软件优化要点(续) 相同的工作放在一起完成,形成循环,便于软件流水。 充分利用指令局部性和数据局部性的特点?Cache 优化的3个层次 1. 手工汇编优化 2. 线性汇编优化 3. C语言级的优化 23 和编译器交流:Feedback of loop 资源分配情况设置-k编译器选项, 保留asm文件 compiler?assembly 目的: 软件流水 C6000手工汇编语言优化 并行指令 填充延迟间隙 展开循环 存取带宽优化(使用LDW/LDDW) 软件流水 使用并行指令 并行指令 填充延迟间隙 填充延迟间隙 字长优化 使用字访问半字数据 使用双字字访问字数据 使用LDH的点积 使用LDW进行优化 使用LDW/MPYH 软件流水 产生高性能循环代码  执行并行指令  填充延迟间隙  功能单元使用最大化 由开发工具产生  由编译器选项-o2或o3引入  汇编优化器/C优化器产生 代码举例 非流水代码 流水代码 软件流水中的术语 填充 (建立循环) 循环 (单周期循环 3次迭代) 排空 (完成最后操作) 流水代码 软件流水步骤 . 用C语言实现算法并验证 . 写C6x线性汇编代码 . 画相关图 . 分配功能单元和寄存器 . 建编排表 . 将编排表转换为C6x汇编代码 第一步:用C语言实现算法并验证 第二步:写C62xx线性汇编代码 线性汇编不需要指出和考虑: 功能单元 寄存器 延迟间隙 并行指令 简单估计 第三步:画相关图 画相关图步骤: 、画节点(包括:指令、结果、通路) 、在通路旁标出父指令执行周期 、安排功能单元  安排必须的功能单元  节点分配到A、B两侧  对所有节点分配功能单元 画点积相关图 1. 画节点(1) 画点积相关图 1. 画节点(2) 画点积相关图 1. 画节点(3) 画点积相关图 2. 标出父指令执行周期 画点积相关图 3. 安排功能单元(1) 画点积相关图 3. 安排功能单元(2) 画点积相关图 3. 安排功能单元(3) 第四步:分配功能单元 第四步:分配寄存器 第五步:建编排表(1) 循环填充长度 抽出最长数据通路 计算长度: 5+2+1=8周期 编排表列出0-7周期 填充:第0-6周期 循环:第7周期 填写指令建议 从最长数据通路开始 尽可能早开始(第0周期) 一旦确定指令执行的周期,在这以后的周期内,连续发生各次迭代 倒推跳转和循环计数指令的发生周期 第五步:建编排表(2) 第六步:写汇编代码 代码尺寸的优化 需求:program cache的存在 消除冗余循环 .trip 压平循环填充与循环排空 -mh 平分.D、.S、.M 最小化交叉通路 平衡功能单元 仲裁 循环传递通路 根据功能单元和交叉通路的使用,可在单周期循环内编排这些指令。 编排 周期 0 5 7 * 远见品质 * 哪些指令可以并行? 哪些指令可以并行? (1)两条取指令并行:  放“||”在第二个ldh前  .d1改为.d2,A改为B NOP:相当于未优化 为了消除NOP,如何调整指令顺序? Sub和b指令移到ldh指令后: LD的nop由4降为2 B的nop被消除 填充延迟间隙优化结果 循环代码展开举例 循环展开: 减少B的开销, 但增加代码尺寸 循环次数减少一半 这个循环执行5次需要多少周期? (不考虑延迟间隙) 周期 *

文档评论(0)

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

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

1亿VIP精品文档

相关文档