- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C汇编语言优化优秀讲义
BIT/TI 第八讲 汇编语言优化 第八讲 汇编语言优化 学习内容 描述各种优化方法 使用字访问优化点积代码 使用软件流水手工优化汇编循环 题目 一、优化方法简介 二、并行指令 三、填充延迟间隙 四、展开循环 五、字长优化(使用LDW) 六、各优化方法小结 七、软件流水 八、软件流水步骤 九、各种优化总结 一、优化方法简介 使用并行指令 用有用的指令(取代NOP)填充延迟间隙 循环展开 字长优化(使用LDW) 软件流水 二、使用并行指令 使用并行指令 哪些指令可以并行? 并行指令 哪些指令可以并行? 两条取指令并行: 放“||”在第二个ldh前 .d1改为.d2,A改为B 并行注意的问题 例如: ADD使用原来的A4值 如果在循环中: 循环之前清A4 不要忘记最后的累加 并行指令小结 首先使代码正确执行,然后试图用并行指令。 并行代码执行速度快,但必须小心确保代码按所期望执行。 在循环代码中,使用软件流水可执行并行指令。 并行优化结果 三、填充延迟间隙 填充延迟间隙 NOP:相当于未优化 为了消除NOP,如何调整指令顺序? 填充延迟间隙 Sub和b指令移到ldh指令后: LD的nop由4降为2 B的nop被消除 填充延迟间隙优化结果 四、展开循环 循环代码举例 例1 去掉了第四次循环开销 例2 循环次数减少一半 例3 消除了所有循环开销 循环展开举例小结 五、字长优化(使用字访问半字数据) 使用LDH的点积 使用LDW进行优化 使用LDW/MPYH 乘法指令小结 操作数可以是有符号的,也可以是无符号的 乘法指令需一个延迟间隙 4种基本乘法指令: 六、各种优化方法小结 七、软件流水 软件流水 产生高性能循环代码 执行并行指令 填充延迟间隙 功能单元使用最大化 由开发工具产生 由编译器选项-o2或o3引入 汇编优化器(输入文件使用.sa扩展名 而不是.asm)产生 为什么学习软件流水? 知道开发工具是如何产生优化代码的 读懂开发工具的输出代码 检查开发工具效率 手工优化汇编代码 了解软件流水的工作情况 代码举例 这个循环执行5次需要多少周期? (不考虑延迟间隙) 周期 非流水代码 流水代码 软件流水中的术语 填充 (建立循环) 循环 (单周期循环 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) 第六步:写C62xx汇编代码 九、各种优化总结 小结 学习了五种优化方: 使用并行指令 填充延迟间隙 展开循环 字长优化 软件流水 手工实现软件流水过程 平分.D、.S、.M 最小化交叉通路 平衡功能单元 仲裁 循环传递通路 编排 周期 0 5 7 * * * * * *
您可能关注的文档
最近下载
- 河南省建设工程安全生产标准化图集.docx VIP
- 别克英朗GT说明书.docx VIP
- 洪水计算(推理公式法).xls VIP
- 初中音乐 西南师大课标版 七年级上册 走进歌乐山 《走进歌乐山》 课件.ppt VIP
- (高清版)DBJ∕T 13-278-2025 《福建省电动汽车充电基础设施建设技术标准》.pdf VIP
- 带式输送机头尾部基础荷载计算书.xls VIP
- 建筑《工程质量》首件验收制度.docx VIP
- (高清版)DB21∕T 4071-2024 沥青路面再生集料应用技术规程.pdf VIP
- 中国冰沙机行业市场现状分析及竞争格局与投资发展研究报告2024-2029版.docx
- Word操作培训ppt课件.pptx VIP
文档评论(0)