欢迎来到天天文库
浏览记录
ID:57055451
大小:1.46 MB
页数:47页
时间:2020-07-30
《C6000软件优化 概念和汇编优化课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章C6000软件优化第1节C6X软件优化的概念和汇编优化TwomaingoalsofsoftwareoptimisationFasterexecutiontime.SmallcodesizeTradeoffbetweenthetwogoalsBasicknowledgeToimplementefficientsoftware,theprogrammermustbefamiliarwith:Processorarchitecture.Programminglanguage(C,assemblyorline
2、arassembly).Thecodegenerationtools(compiler,assemblerandlinker).CodeOptimisationProcedureOptimiseAlgorithmProgramin'C'andcompilewithoutanyoptimisationCodeFunctioning?Makethenecessarycorrection(s)ProfileCodeResultSatisfactory?UseintrinsicsProfileCodeResultSa
3、tisfactory?Setn=0(-On)Compilecodewith-OnoptionCodeFunctioning?Makethenecessarycorrection(s)ProfileCodeResultSatisfactory?N<3?NNNYNNNNofurtheroptimisationisrequiredYNofurtheroptimisationisrequiredYPasstonextstepofoptimisaion(N=N+1)yNofurtheroptimisationisreq
4、uiredIdentifyCodeFunctionstobefurtheroptimisedfromProfilingResultConvertcodeneedingoptimisationtolinearassemblyCodeFunctioning?Makethenecessarycorrection(s)ResultSatisfactory?NofurtheroptimisationisrequiredWritecodeinhandassemblyYNYNYY1.编写C程序并不经过任何优化编译2.使用-
5、On优化选项3.需要优化的代码转换为线性汇编4.手工汇编并优化一、软件优化要点1个时钟周期内让尽可能多的功能单元在执行指令。趋近8*主频(MHz)MIPS前提:满足各种资源限制(resourcebound)途径:(1)资源合理分配、充分使用(2)算法映射结构DSP适合对大量数据做相同的运算相同的工作放在一起完成,形成循环,便于软件流水。充分利用指令局部性和数据局部性的特点Cache二、优化的3个层次1.手工汇编优化2.线性汇编优化3.C语言级的优化2&3和编译器交流:Feedbackofloop资源分
6、配情况设置-k编译器选项,保留asm文件compilerassembly目的:软件流水三、C6000手工汇编语言优化1、并行指令2、填充延迟间隙3、展开循环4、存取带宽优化(使用LDW/LDDW)5、软件流水1、使用并行指令哪些指令可以并行?1、使用并行指令哪些指令可以并行?(1)两条取指令并行:放“
7、
8、”在第二个ldh前.d1改为.d2,A改为B2、填充延迟间隙NOP:相当于未优化为了消除NOP,如何调整指令顺序?2、填充延迟间隙Sub和B指令移到ldh指令后:LD的nop由4降为2B的nop被消除2、填
9、充延迟间隙----优化结果3、循环代码展开----举例3、循环展开:减少B的开销,但增加代码尺寸循环次数减少一半4、字长优化(1)使用字访问半字数据(2)使用双字字访问字数据(1)使用LDH的点积(2)使用LDW进行优化(3)使用LDW/MPYH5、软件流水产生高性能循环代码执行并行指令填充延迟间隙功能单元使用最大化由开发工具产生由编译器选项-o2或o3引入汇编优化器/C优化器产生(1)代码举例这个循环执行5次需要多少周期?(不考虑延迟间隙)周期(2)非流水代码(3)流水代码(4)软件流水中的术语1、填充(建
10、立循环)2、循环(单周期循环3次迭代)3、排空(完成最后操作)循环开始循环结束流水代码(5)软件流水步骤.用C语言实现算法并验证.写C6x线性汇编代码.画相关图.分配功能单元和寄存器.建编排表.将编排表转换为C6x汇编代码第一步:用C语言实现算法并验证第二步:写C62xx线性汇编代码线性汇编不需要指出和考虑:功能单元寄存器延迟间隙并行指令简单估计功能单元每周期可使用数目需要数目.D22.M21.S2
此文档下载收益归作者所有