《《汇编语言优化》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《汇编语言优化》PPT课件.ppt(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第八讲 汇编语言优化BIT/TI1第八讲 汇编语言优化学习内容描述各种优化方法使用字访问优化点积代码使用软件流水手工优化汇编循环BIT/TI2第八讲 汇编语言优化题目一、优化方法简介二、并行指令三、填充延迟间隙四、展开循环五、字长优化(使用LDW)六、各优化方法小结七、软件流水八、软件流水步骤九、各种优化总结BIT/TI3第八讲 汇编语言优化一、优化方法简介使用并行指令用有用的指令(取代NOP)填充延迟间隙循环展开字长优化(使用LDW)软件流水BIT/TI4第八讲 汇编语言优化二、使用并行指令BIT/TI5第八讲 汇编语言优化使用并行指令哪些指令可以并行?BIT/TI6第八讲 汇编语言优化并行
2、指令哪些指令可以并行?两条取指令并行:放“|”在第二个ldh前 .d1改为.d2,A改为BBIT/TI7第八讲 汇编语言优化并行注意的问题 例如:ADD使用原来的A4值如果在循环中:循环之前清A4 不要忘记最后的累加BIT/TI8第八讲 汇编语言优化并行指令小结首先使代码正确执行,然后试图用并行指令。并行代码执行速度快,但必须小心确保代码按所期望执行。在循环代码中,使用软件流水可执行并行指令。BIT/TI9第八讲 汇编语言优化并行优化结果BIT/TI10第八讲 汇编语言优化三、填充延迟间隙BIT/TI11第八讲 汇编语言优化填充延迟间隙NOP:相当于未优化为了消除NOP,如何调整指令顺序?BI
3、T/TI12第八讲 汇编语言优化填充延迟间隙Sub和b指令移到ldh指令后:LD的nop由4降为2B的nop被消除BIT/TI13第八讲 汇编语言优化填充延迟间隙优化结果BIT/TI14第八讲 汇编语言优化四、展开循环BIT/TI15第八讲 汇编语言优化循环代码举例BIT/TI16第八讲 汇编语言优化例1去掉了第四次循环开销BIT/TI17第八讲 汇编语言优化例2循环次数减少一半BIT/TI18第八讲 汇编语言优化例3消除了所有循环开销BIT/TI19第八讲 汇编语言优化循环展开举例小结BIT/TI20第八讲 汇编语言优化五、字长优化(使用字访问半字数据)BIT/TI21第八讲 汇编语言优化使
4、用LDH的点积BIT/TI22第八讲 汇编语言优化使用LDW进行优化BIT/TI23第八讲 汇编语言优化使用LDW/MPYHBIT/TI24第八讲 汇编语言优化乘法指令小结操作数可以是有符号的,也可以是无符号的乘法指令需一个延迟间隙4种基本乘法指令:BIT/TI25第八讲 汇编语言优化六、各种优化方法小结BIT/TI26第八讲 汇编语言优化七、软件流水BIT/TI27第八讲 汇编语言优化软件流水产生高性能循环代码 执行并行指令 填充延迟间隙 功能单元使用最大化由开发工具产生 由编译器选项-o2或o3引入 汇编优化器(输入文件使用.sa扩展名 而不是.asm)产生BIT/TI28第八讲 汇编语言
5、优化为什么学习软件流水?知道开发工具是如何产生优化代码的 读懂开发工具的输出代码 检查开发工具效率手工优化汇编代码了解软件流水的工作情况BIT/TI29第八讲 汇编语言优化代码举例 这个循环执行5次需要多少周期?(不考虑延迟间隙)周期BIT/TI30第八讲 汇编语言优化非流水代码BIT/TI31第八讲 汇编语言优化流水代码BIT/TI32第八讲 汇编语言优化软件流水中的术语填充填充(建立循环)循环循环(单周期循环3次迭代)排空排空(完成最后操作)BIT/TI33第八讲 汇编语言优化流水代码BIT/TI34第八讲 汇编语言优化八、软件流水步骤BIT/TI35第八讲 汇编语言优化软件流水步骤1.用
6、C语言实现算法并验证2.写C6x线性汇编代码3.画相关图4.分配功能单元和寄存器5.建编排表6.将编排表转换为C6x汇编代码BIT/TI36第八讲 汇编语言优化第一步:用C语言实现算法并验证BIT/TI37第八讲 汇编语言优化第二步:写C62xx线性汇编代码线性汇编不需要指出和考虑:功能单元寄存器延迟间隙并行指令BIT/TI38第八讲 汇编语言优化简单估计BIT/TI39第八讲 汇编语言优化第三步:画相关图相关图中的名词术语BIT/TI40第八讲 汇编语言优化画相关图步骤:1、画节点(包括:指令、结果、通路)2、在通路旁标出父指令执行周期3、安排功能单元 安排必须的功能单元 节点分配到A、B两
7、侧 对所有节点分配功能单元平分.D、.S、.M最小化交叉通路平衡功能单元仲裁BIT/TI41第八讲 汇编语言优化画点积相关图1.画节点(1)BIT/TI42第八讲 汇编语言优化画点积相关图1.画节点(2)循环传递通路BIT/TI43第八讲 汇编语言优化画点积相关图1.画节点(3)BIT/TI44第八讲 汇编语言优化画点积相关图2.标出父指令执行周期BIT/TI45第八讲 汇编语言优化画点积相关图3.安排功能单元(1)BIT/TI46第八讲 汇编语言优化画点积相关图3.安排功能单元(2)BIT/TI47第八讲 汇编语言优化画点积相关图3.安排功能单元(3)BIT/TI48第八讲 汇编语言优化第四
8、步:分配功能单元 根据功能单元和交叉通路的使用,可在单周期循环内编排这些指令。BIT/TI49第八讲 汇编语言优化第四步:分配寄存器BIT/TI50第八讲 汇编语言优化第五步:建编排表(1)BIT/TI51第八讲 汇编语言优化循环填充长度抽出最长数据通路计算长度:5+2+1=8周期编排表列出0-7周期填充:第0-6周期循环:第7周期编排周期057BIT/TI52第八讲 汇编语言优化填写指令建议l从最长数据通路开始l尽可能早开始(第0周期)l一旦确定指令执行的周期,在这以后的周期内,连续发生各次迭代l倒推跳转和循环计数指令的发生周期BIT/TI53第八讲 汇编语言优化第五步:建编排表(2)BIT/TI54第八讲 汇编语言优化第六步:写C62xx汇编代码执行40次BIT/TI55第八讲 汇编语言优化九、各种优化总结BIT/TI56第八讲 汇编语言优化小结学习了五种优化方:使用并行指令 填充延迟间隙 展开循环 字长优化 软件流水手工实现软件流水过程使用并行指令填充延迟间隙BIT/TI57第八讲 汇编语言优化