- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7_1_C6000软件优化__概念和汇编优化.ppt
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次需要多少周期? (不考虑延迟间隙) 周期 *
您可能关注的文档
最近下载
- Siebel TAS销售管理方法论交流.ppt
- 一种耐高温热轧H型钢及其生产方法.pdf VIP
- 2025协同办公领域AI发展与应用实践报告.pptx VIP
- 2025年中电建电力运维管理有限公司招聘笔试参考题库含答案解析.pdf
- 2024中电建电力运维管理有限公司招聘361人笔试参考题库附带答案详解 .docx
- 一例高血压患者的护理个案.docx VIP
- 2025年高考语文课内文言文知识梳理(统编版)专题04《登泰山记》(解析版).docx VIP
- 2025年新高考语文专题复习:小说情节知识点讲解 课件139张.pptx VIP
- AI大模型产业落地场景和价值.pdf VIP
- 彩钢板屋面拆除、更换屋面板施工方案.docx VIP
文档评论(0)