最新DSP FPGA系统设计第10讲代码优化教学讲义ppt课件.ppt

最新DSP FPGA系统设计第10讲代码优化教学讲义ppt课件.ppt

ID:62068143

大小:1.05 MB

页数:77页

时间:2021-04-14

最新DSP FPGA系统设计第10讲代码优化教学讲义ppt课件.ppt_第1页
最新DSP FPGA系统设计第10讲代码优化教学讲义ppt课件.ppt_第2页
最新DSP FPGA系统设计第10讲代码优化教学讲义ppt课件.ppt_第3页
最新DSP FPGA系统设计第10讲代码优化教学讲义ppt课件.ppt_第4页
最新DSP FPGA系统设计第10讲代码优化教学讲义ppt课件.ppt_第5页
资源描述:

《最新DSP FPGA系统设计第10讲代码优化教学讲义ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、DSPFPGA系统设计第10讲代码优化分析代码性能影响性能的主要代码段通常是循环使用profiler分析代码性能①单击主菜单项Profiler/StartNewSession…,弹出profiler窗口,如图7.3所示。从该窗口中可以查看代码量、运行次数、平均运行时间等;②在窗口上单击右键,在弹出菜单中单击PropertyPage…弹出ProfilerControl属性对话框,在该对话框中可以设置时间单位和DSP芯片一个指令周期所需时间(即芯片主频);③File选项卡用于测试整个hello.out执行时间;④将某个函数拖入Functions选项卡即可测试其执行时间;⑤将一段代码的起

2、始行和末尾行拖入Ranges选项卡即可测试这段代码执行时间;⑥执行程序后,profiler窗口将显示各部分程序运行时间。开发者根据测试找到最耗时的代码段进一步改进,提高速度,可以大大提高系统整体效率。内联函数intrinsics是直接映射为内联的C6000指令的特殊函数intrinsics用前下划线(_)表示使用时同调用函数一样调用它饱和加法result=_sadd(a,b);字访问短型数据循环迭代必须是偶数消除存储器的依赖性由于只有不相关的指令才可以并行执行,为使指令并行操作,编译器必须确定指令间的关系,相关性,即一条指令必须发生在另一条指令之后。消除存储器的依赖性编译器判断相关

3、性方法:const-pm选项+-o3选项如果一个函数的某自变量总有相同值,编译器用这个值替代这个自变量,并传递该值取代该自变量。如果一个函数的返回值总不被使用,编译器取消该函数的返回代码。如果一个函数不被直接或间接调用,编译器删除该函数。-mt声明在代码中不存在存储器相关性优化循环循环核(Kernel)循环填充(Pipelined-loopprolog)循环排空(Pipelined-loopepilog)使循环不能进行软件流水的因素①包含除内联函数以外的函数调用的循环不能实现软件流水。②循环中有条件终止指令的不能实现软件流水。③循环次数不固定的不能实现软件流水。④如果在循环体中修改

4、循环计数,则这个循环不能转换成递减计数循环,不能进行软件流水。⑤代码尺寸太大,需要使用32个以上寄存器,那么这段代码不能进行软件流水,解决的方法是将循环拆成几个小循环。⑥如果寄存器的值生命周期过长(Live-Too-Long),则这段代码不能进行软件流水。⑦如果循环体内有复杂的条件代码,条件代码需要使用超过5个以上条件寄存器,则不能产生软件流水。使循环产生软件流水的方法(1)固定循环次数编译器转换循环计数按递减形式进行向编译器传递循环次数信息方法:①使用-o3和-pm选项,使优化器访问整个程序或大部分程序,了解循环次数信息。②使用_nassert内联函数,防止冗余循环产生或使编译器

5、产生最内层循环的软件流水,编译器产生两种形式的循环:①如果N小于10,执行不流水循环。②如果N大于等于10,执行软件流水循环。-ms选项可以使编译器根据实际循环次数仅产生一种循环形式。(2)嵌套循环展开编译器只能对最内层循环产生软件流水for循环一次迭代占用2周期只能产生两个和,循环不完全展开后,一次循环迭代并行化后只占用3周期可以产生四个和。(3)投机执行(-rnh选项)一条指令投机地执行是指在知道指令结果是否需要之前执行了该指令可消除软件流水循环的排空,从而减少代码尺寸使用DMA控制寄存器全局地址寄存器(A,B,C和D),作为分裂地址或地址重载值。全局索引寄存器(A和B),保存

6、一帧数据传输完毕后要更新的地址偏移量全局计数重载寄存器(A和B),用来重载DMA通道的传输计数器。每个DMA通道都分别拥有以下寄存器:主控寄存器,用于设置数据传输;副控寄存器,用于使能对CPU发起的中断,并且监视通道活动;传递计数寄存器,用于给所传输的数据单元计数;源地址寄存器,保存传输数据的源地址;目标地址寄存器,保存传输数据的目的地址。DMA工作过程初始化和启动传输计数同步控制产生地址分裂操作使用DMA在McBSP串口和DSP之间传输数据(1)main.c中的相关代码(2)DMA中断服务程序汇编优化编译器兼容性牺牲了代码优化度把一个C语言的程序手工翻译成汇编语言,大概只能快20

7、%,有的时候甚至更慢--我们往往没编译器聪明汇编语言本身有极大的优化余地,可能是90%甚至更多每个周期要访问3个变量,因此不是很好的实现-O2优化后,访问2个变量总的内存访问次数为2*n第一个循环要进行n次,在O2下每次对内存的访问为1,目的是算出最后一个要复制的字节在第二个循环中,在O2下,每次需访问2次内存总的内存访问次数为n+2*(n/4)或n+2*(n/8)在一台32位CPU,有8GB内存的机器上,O2,复制一个1G的字符串。3次实验的结果:strcpy1:9

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。