《软件优化概念和汇编优化.pptx》由会员分享,可在线阅读,更多相关《软件优化概念和汇编优化.pptx(46页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Two main goals of software optimisation Fasterexecutiontime.SmallcodesizeTradeoffbetweenthetwogoals第1页/共46页Basic knowledge Toimplementefficientsoftware,theprogrammermustbefamiliarwith:Processorarchitecture.Programminglanguage(C,assemblyorlinearassembly).Thecodegenerationtools(compiler,assemblerandli
2、nker).第2页/共46页Code Optimisation Procedure第3页/共46页软件优化要点1个时钟周期内让尽可能多的功能单元在执行指令。趋近8*主频(MHz)MIPS前提:满足各种资源限制(resource bound)途径:(1)资源合理分配、充分使用(2)算法映射结构DSP适合对大量数据做相同的运算第4页/共46页软件优化要点(续)相同的工作放在一起完成,形成循环,便于软件流水。充分利用指令局部性和数据局部性的特点Cache第5页/共46页优化的3个层次1.手工汇编优化2.线性汇编优化3.C语言级的优化2&3和编译器交流:Feedback of loop资源分配情况设置
3、-k编译器选项,保留asm文件compilerassembly目的:软件流水第6页/共46页C6000手工汇编语言优化并行指令填充延迟间隙展开循环存取带宽优化(使用LDW/LDDW)软件流水第7页/共46页使用并行指令n哪些指令可以并行?第8页/共46页并行指令n哪些指令可以并行?(1)两条取指令并行:放“|”在第二个ldh前 .d1改为.d2,A改为B第9页/共46页填充延迟间隙nNOP:相当于未优化n为了消除NOP,如何调整指令顺序?第10页/共46页填充延迟间隙Sub和b指令移到ldh指令后:nLD的nop由4降为2nB的nop被消除第11页/共46页填充延迟间隙优化结果第12页/共46
4、页循环代码展开举例第13页/共46页循环展开:减少B的开销,但增加代码尺寸n循环次数减少一半第14页/共46页字长优化使用字访问半字数据使用双字字访问字数据第15页/共46页使用LDH的点积第16页/共46页使用LDW进行优化第17页/共46页使用LDW/MPYH第18页/共46页软件流水产生高性能循环代码执行并行指令填充延迟间隙功能单元使用最大化由开发工具产生由编译器选项-o2或o3引入汇编优化器/C优化器产生第19页/共46页代码举例 这个循环执行5次需要多少周期?(不考虑延迟间隙)周期第20页/共46页非流水代码第21页/共46页流水代码第22页/共46页软件流水中的术语填充(建立循环)
5、循环(单周期循环3次迭代)排空(完成最后操作)第23页/共46页流水代码第24页/共46页软件流水步骤1.用C语言实现算法并验证2.写C6x线性汇编代码3.画相关图4.分配功能单元和寄存器5.建编排表6.将编排表转换为C6x汇编代码第25页/共46页第一步:用C语言实现算法并验证第26页/共46页第二步:写C62xx线性汇编代码线性汇编不需要指出和考虑:功能单元寄存器延迟间隙并行指令第27页/共46页简单估计第28页/共46页第三步:画相关图第29页/共46页画相关图步骤:1、画节点(包括:指令、结果、通路)2、在通路旁标出父指令执行周期3、安排功能单元安排必须的功能单元节点分配到A、B两侧对
6、所有节点分配功能单元平分.D、.S、.M最小化交叉通路平衡功能单元仲裁第30页/共46页画点积相关图1.画节点(1)第31页/共46页画点积相关图1.画节点(2)循环传递通路第32页/共46页画点积相关图1.画节点(3)第33页/共46页画点积相关图2.标出父指令执行周期第34页/共46页画点积相关图3.安排功能单元(1)第35页/共46页画点积相关图3.安排功能单元(2)第36页/共46页画点积相关图3.安排功能单元(3)第37页/共46页第四步:分配功能单元 根据功能单元和交叉通路的使用,可在单周期循环内编排这些指令。第38页/共46页第四步:分配寄存器第39页/共46页第五步:建编排表(1)第40页/共46页循环填充长度抽出最长数据通路计算长度:5+2+1=8周期编排表列出0-7周期填充:第0-6周期循环:第7周期编排周期057第41页/共46页填写指令建议l从最长数据通路开始l尽可能早开始(第0周期)l一旦确定指令执行的周期,在这以后的周期内,连续发生各次迭代l倒推跳转和循环计数指令的发生周期第42页/共46页第五步:建编排表(2)第43页/共46页第六步:写汇编代码执行40次第44页/共46页代码尺寸的优化需求:programcache的存在消除冗余循环.trip压平循环填充与循环排空-mh第45页/共46页感谢您的观看!第46页/共46页