欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    CCS软件优化学习.pptx

    • 资源ID:71938195       资源大小:3MB        全文页数:84页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    CCS软件优化学习.pptx

    主要内容优化方法软件流水多周期循环流水线设计理解软件优化结果的反馈信息第1页/共84页优化方法优化和优化过程概述(复习)利用代码生成工具对C代码进行优化(复习)汇编代码的优化第2页/共84页概述程序优化:对软件代码进行处理以获得以下两个主要目标:更快的运行时间更大的代码大小Note:一般在更快的执行速度和更小的代码大小之间需要进行一个折中(trade off)第3页/共84页概述1个时钟周期内让尽可能多的功能单元在执行指令。趋近8*主频(MHz)MIPS前提:满足各种资源限制(resource bound)途径:(1)资源合理分配、充分使用(2)算法映射结构 DSP适合对大量数据做相同的运算第4页/共84页概述为实现高效代码,编程者必须熟练掌握以下几个方面的知识:处理器结构 编程语言:C、汇编、线性汇编 代码生成工具:编译器、汇编器、连接器第5页/共84页代码优化的三个层次1、C语言级的优化2、线性汇编优化3、手工汇编优化第6页/共84页C语言级的优化编译器选项C优化编译器使用ANSI C代码语言,可达到手工汇编代码效率的80%。如选择-o2,-o3等整个优化过程包括不同阶段、不同层次的优化。必须掌握每个阶段、层次的优化知识。第7页/共84页C语言级优化 C语言程序优化通过下述方法改进C语言程序,可以提供编译出代码的性能:1、使用intrinsics内联函数替代复杂的C语言程序。2、对短字长的数据使用宽长度的存储器访问数据打包处理(Packed Data Processing)3、改进C语言循环程序,使之更有利于用软件流水技术优化。第8页/共84页线性汇编语言简介线性汇编语句的基本结构线性汇编中的伪指令线性汇编资源安排C代码转换为线性汇编第9页/共84页线性汇编语句的基本结构基本格式与汇编语言相同,必须是ASCII码文件,扩展名必须是”.sa”,用作汇编优化器的输入文件Label:|register mnemonic unit specifier operand list;commend第10页/共84页线性汇编中的伪指令1、调用一个函数.call ret_reg=func_name(arg1,arg2)(仅在过程procedure)内有效2、定义一个可被汇编优化器优化,而且可被C/C+当做函数调用的线性汇编代码段的伪指令。label .cproc vari1,vari2,起始 .endproc 结束3、定义一个可被汇编优化器优化的线性汇编代码段的伪指令。label .proc vari1,vari2,起始 .endproc 结束第11页/共84页线性汇编中的伪指令4、表明存储器地址相关与不相关的伪指令 .mdepsymbol1,symbol2 1,2相关 .no_mdep 其后定义的函数段内存储器地址不相关5、定义变量,或者说描述存入寄存器的数值变量的伪指令:.reg variable1,variable2,6、过程的返回值 .return argument7、指出循环迭代次数的伪指令 label .trip minimum value第12页/共84页线性汇编资源安排读取指令(LDH)必须使用.D单元乘法指令(MPY)必须使用.M单元加法指令(ADD)必须使用.L单元减法指令(SUB)必须使用.S单元跳转指令(B)必须使用.S单元第13页/共84页线性汇编线性汇编文件使用“.sa”扩展名线性汇编过程可以:传递参数返回结果使用符号变量不考虑流水线问题第14页/共84页写线性汇编代码举例点积写线性汇编代码举例FIR滤波器简写为第15页/共84页C代码转换为线性汇编short DP(short*m,short*n,short count)short i;short product;short sum=0;for(i=0;i 1;for(i=0;icount;i+)pro_l=_mpy(data_ai,data_xi);pro_h=_mpyh(data_ai,data_xi);sum_l+=pro_l;sum_h+=pro_h;sum=sum_l+sum_h;return(sum);第24页/共84页 .def _DP _DP .cproc cptr0,cptr1,vptr .reg addr_a,addr_x .reg product0,product1,sum0,sum1 .reg m,n MV cptr0,addr_a MV cptr1,addr_x ZERO sum0 ZERO sum1 SHR vptr,1,vptr loop:LDW *addr_a+,m LDW *addr_x+,n MPY m,n,product0 MPYH m,n,product1 ADD sum0,product0,sum0 ADD sum1,product1,sum1 SUB vptr,1,vptr vptr B loop ADD sum0,sum1,sum0 .return sum0 .endproc 第25页/共84页保护寄存器Dotp:.cproc p_m,p_n,count .reg p_m,m,p_n,n,prod,sum,count .reserve a3 zero sumloop:ldh *p_m+,m ldh *p_n+,n mpy m,n,prod add prod,sum,sum count sub count,1,count count b loop .return sum .endproc.reserve指出需要保护的寄存器当.cproc/.endproc内的代码明显使用了要保护的寄存器,优化器也可能使用该寄存器,如:第26页/共84页指出运算迭代次数Dotp:.cproc p_m,p_n,count .reg p_m,m,p_n,n,prod,sum,count zero sumloop:.trip 40 ldh *p_m+,m ldh *p_n+,n mpy m,n,prod add prod,sum,sum count sub count,1,count count b loop .return sum .endproc指出运算迭代次数第27页/共84页汇编优化第28页/共84页汇编优化可以通过以下方法对代码进行优化(1)写并行代码(2)有用的代码填充延迟间隙(3)循环展开(4)字长优化第29页/共84页第一步:写并行代码第30页/共84页第一步:写并行代码第31页/共84页第一步:写并行代码第32页/共84页第二步:有用的代码填充延迟间隙第33页/共84页第三步:循环展开每循环一次,SUB and B指令至少会由两个附加的周期第34页/共84页第四步:字长优化使用字访问半字数据使用双字字访问字数据不同的乘法指令可供选择操作数可以是有符号,也可以是无符号的 乘法指令需一个延迟间隙第35页/共84页使用LDH的点积第36页/共84页使用LDW的点积第37页/共84页使用LDW/MPYH第38页/共84页第四步:字长优化按照word进行数据访问,MPY 和MPYH代码可写为:Note:每个循环中能够实现两个16*16bit的乘法,所以整个循环的运行时间会减半。第39页/共84页优化结果小结第40页/共84页优化小结可知,代码优化可以采用以下四种方法:写并行代码 有用的代码填充延迟间隙 字长优化 循环展开 提高性能?减小代码大小?第41页/共84页学习目标为什么要使用软件流水,SP?理解软件流水的基本概念软件流水的实现步骤编写字访问的、流水的点积程序流水填充和排空对软件流水的设计影响第42页/共84页为什么要使用软件流水,SP?SP可以实现高度优化的循环代码:写并行代码 延迟间隙填充有效的指令代码 最大化功能单元的使用率SP实现途径:由开发工具产生编译选项-o2-o3 如果是.sa文件,要用到汇编优化器第43页/共84页软件流水概念假设所有的指令均在一个周期内完成 左边的代码执行1次,需 要多少个时钟周期?(不考虑延迟间隙)3 cycles第44页/共84页软件流水概念左边的循环执行5次,要多少个时钟周期?5*3=15 cycles看一下功能单元的使用情况第45页/共84页无软件流水第46页/共84页软件流水只需7个时钟周期,是非软件流水时钟周期的一半第47页/共84页软件流水建立循环完成最后操作单周期循环,3次迭代第48页/共84页软件流水代码第49页/共84页软件流水的步骤1 C代码实现算法并且验证2 写C6x的线性汇编代码3 创建相关图4 分配寄存器5 创建编排表6 将编排表转换成C6X代码第50页/共84页软件流水举例(第一步)第51页/共84页写C6X的线性汇编代码(第二步)书写线性汇编语言程序的基本法则:自上而下,按照程序要完成的功能的逻辑顺序书写线性汇编语句第52页/共84页写C6X的线性汇编代码(第二步)1 不需要NOP填充(延迟间隙)2 不需要编排并行(并行语句)3 不需要指定:功能单元、寄存器第53页/共84页简单估计第54页/共84页相关图的几个术语第55页/共84页画相关图的基本步骤(a)根据算法画出节点和路径(b)标出每一条指令执行完毕需要的周期数(c)对每个节点指定”required”功能单元(d)将节点划分为A、B两侧,再给所有功能单元进行A、B两侧的分配第56页/共84页画相关图(a)每条指令均被表示成一个节点节点由一个圆圈表示圈外:标明指令 圈内:结果将要写入的寄存器节点由一个圆圈表示节点之间由路径相连,表示数据流向Note:条件路径由虚线表示第57页/共84页画相关图(a)第58页/共84页画相关图(a)第59页/共84页画相关图(a)第60页/共84页画相关图(b)下一步中,在相关图中加入每条指令执行完毕需要的周期数 具体位置:写在相应数据路径的旁边。第61页/共84页画相关图(b)第62页/共84页画相关图(c)下一步,给每个节点分配功能单元建议先给需要特殊功能单元的指令进行分配:load/Store Branch因为,.M单元是能够执行乘法的唯一功能单元,所以不需要对其进行特殊考虑。Note:此时还没有考虑A侧和B侧第63页/共84页画相关图(c)第64页/共84页画相关图(d)这一步需要对数据路径进行A侧、B侧的划分使用尽量多的功能单元,同时尽量少的使用交叉通道以优化相应的代码在相关图上由一根直线来体现划分结果这样,每条指令对应的功能单元可以带上药采用哪一组寄存器的信息第65页/共84页画相关图(d)第66页/共84页第四步 分配功能单元功能单元分配必须满足下列规则:ADD 和 SUB还可以使用.S,.L,.D单元第67页/共84页第四步 分配功能单元第68页/共84页第四步 分配功能单元第69页/共84页第五步 创建编排表分析软件流水技术的基本方法模迭代编排表从最长数据通路开始尽可能早开始一旦确定指令执行的周期,在这以后的周期内,连续发生各次迭代倒推跳转和循环计数指令的发生周期第70页/共84页第五步 创建编排表如何知道循环结束于第8个时钟周期第71页/共84页填充长度数出最长一条路径的长度(周期数)即可 5+2+1=8 cycles.第72页/共84页第五步 创建编排表第73页/共84页第五步 创建编排表第74页/共84页第五步 创建编排表第75页/共84页第六步 将编排表转换成C6x代码第76页/共84页第六步 将编排表转换成C6x代码第77页/共84页第六步 将编排表转换成C6x代码第78页/共84页第六步 将编排表转换成C6x代码第79页/共84页第六步 将编排表转换成C6x代码第80页/共84页第六步 将编排表转换成C6x代码第81页/共84页第六步 将编排表转换成C6x代码第82页/共84页第六步 将编排表转换成C6x代码Note:单周期循环执行40次第83页/共84页感谢您的观看。第84页/共84页

    注意事项

    本文(CCS软件优化学习.pptx)为本站会员(一***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开