代码网站seo优化软件

网站seo优化软件  时间:2021-03-25  阅读:()
ApplicationReportZHCA583–November20131使用CLT工具优化C6000代码AllenYinCommunicationInfrastructure摘要在C6000DSP的开发过程中,优化是必不可少的一个环节,根据对象不同可以分为系统,算法,代码以及内存优化.
通常,开发者熟悉自己的代码,会从前三个方面修改以获得整体性能的提升,但是对于内存尤其是缓存(Cache)的优化,因为其涉及到芯片本身的架构,Cache的维护由DSP自动完成,用户通常不能干预,所以似乎无从着手;考虑到这些实际的问题,从TI的7.
0系列编译器开始支持使用缓存优化工具(CacheLayoutTools)对C6000代码进行优化,通过这一系列的工具,可以很轻松的完成L1PCache性能的提升,本文详细介绍了该工具的使用方法.
ZHCA5832使用CLT工具优化C6000代码Contents1.
引言.
32.
C6000DSP内核缓存机制33.
内存优化工具.
54.
实例教程.
54.
结论.
10参考文献10FiguresFigure1.
C6000存储器结构3Figure2.
函数的不正确排布.
4Figure3.
函数的正确排布5Figure4.
CCS初编译的选项.
6Figure5.
CCS重编译的选项.
10ZHCA583使用CLT工具优化C6000代码31.
引言目前,使用TIDSP的用户越来越多,在C6000系列DSP中,包含了C64x,C64x+,C66x等.
在C6000DSP的开发过程中,为了充分利用DSP的计算资源,需要对用户程序进行优化的工作,根据对象不同可以分为系统,算法,代码以及内存优化.
通常,开发者熟悉自己的系统和代码,可以比较方便的从前三个方面修改以获得整体性能的提升,但是对于内存尤其是缓存(Cache)的优化,因为其涉及到芯片本身的架构,Cache的维护由DSP自动完成,用户通常不能干预,所以似乎无从着手;考虑到这些实际的问题,从TI的7.
0系列编译器开始支持使用缓存优化工具(CacheLayoutTools)对C6000代码进行优化,通过这一系列的工具,可以很轻松的完成L1PCache性能的提升,本文详细介绍了该工具的使用方法.
2.
C6000DSP内核缓存机制C6000系统的存储器结构如下图所示.
Figure1.
C6000存储器结构存储器分成三级:第一级是L1,包括数据存储器(L1D)和代码存储器(L1P);第二级是代码和数据共用存储器(L2以及MSMCSRAM);第三级是外部存储器,主要是DDR存储器.
L1P、L1D和L2的Cache功能分别由相应的L1P控制器、L1D控制器和L2控制器完成.
C6000CPUL1PCacheL1DCacheL2Cache&MemoryExternalMemoryZHCA5834使用CLT工具优化C6000代码在C6000DSP中通常我们会把L1P全部配置成Cache,当CPU发出取指命令,首先会从L1P里查找,如果L1P找不到,则到下一级Cache或者Memory里查找,当找到需要的地址,则将其读入L1P里,CPU从中读取执行.
因为L1PCache的大小是有限的(本文以32KB为例),而用户内存空间一般大于32KB,必须采取一种映射的方式使得所有地址都能被L1P缓存;在C6000DSP中,L1PCache使用地址直接映射,所有DSP核可访问的地址对L1PCache大小(32K)取模就能得到该地址在L1PCache的偏移值.
如果用户代码在内存排布不合理,可能会在L1PCache中发生反复的内容替换,下图中的例子是一个极端情况.
Figure2.
函数的不正确排布TOP函数中FOR循环反复调用A函数,而A,B,C三个函数在内存地址的分布上,与32KB边界的偏移地址是一样的,因此,A,B,C将对应L1P里同一个CACHE位置;其运行流程如下当执行A时,CPU需要把A函数调入到Cache偏移值N的位置上;A调用B,此时调入B到Cache偏移值N的位置上,覆盖A的代码;B调用C,此时调入C到Cache偏移值N的位置上,覆盖B的代码;C返回,下一次循环调入A到Cache中覆盖C的代码.
DSP核对L1P,L2,DDR的访问速度差异很大,对L1P的访问通常在1个时钟周期内完成,而L2平均需要3-5个周期,DDR访问需要的时间更多,因此我们应该尽量避免上述这种反复重写Cache的情况,尽可能的减少函数在Cache中的置换.
如何解决该问题最好的解决方法则是将A,B,C在内存中连续排放,这样对Cache的操作次数将降到最低,能够有效的提高执行效率,如下图所示,只要A,B,C总的大小不超过32KB,它们在Cache中的偏移值就是连续的,不会发生覆盖的现象,即使其总和大于32KB,发生置换的也仅仅是超过32K的部分.
ZHCA583使用CLT工具优化C6000代码5Figure3.
函数的正确排布3.
内存优化工具通过上述机制可以看到,对于L1PCache的优化主要通过分析函数调用关系和其在内存的分布.
由于用户代码日益复杂,人工分析代码调用关系和地址排布需要花费大量的时间.
因此,从7.
0系列编译工具开始,TI提供了一套内存优化工具(CacheLayoutTools)来帮助用户轻松快捷地解决该问题.
该工具的原理是在用户进行程序编译时打开生成分析信息选项,编译器会自动加入分析记录代码到用户程序里,之后用户在TIDSPsimulator或者DSP芯片上运行该可执行文件,内置的分析代码会自动记录用户的函数调用关系及调用次数.
运行的案例越多,记录的信息会更详细,优化的效果也就越好.
在得到函数运行时信息以后,就可以使用编译器工具对其进行分析,生成函数排布的顺序,最后将此排布顺序输入到编译器里重新编译原代码,生成的可执行文件就已经优化过内存排布,具体的操作可以参照以下实例.
4.
实例教程该实例主要由三个C文件组成,main.
c:definesmain()main()callsrare()oncemain()callsmain.
c:local()20timesdefinesstaticlocal()main.
c:local()callslots()20timeslots.
c:defineslots();globallyvisiblelots()callslots.
c:local()20timesdefineslots.
c:local()rare.
c:definesrare();globallyvisible实例中使用DSP计数器TSCL来统计cycle数,子函数放在sub目录下.
使用实例的步骤如下,1.
编译代码ZHCA5836使用CLT工具优化C6000代码使用TI编译器对该实例进行编译,为了产生用于profile的信息,需要在编译时增加--gen_profile_info选项.
如果使用命令还形式,命令行下运行Compile.
bat文件,cl6x的具体参数可以参考spru186和spru187两篇文档,一般可以在编译器的安装目录下找到他们,如C:\ProgramFiles(x86)\TexasInstruments\C6000CodeGenerationTools7.
3.
9\doc.
cl6x-mv64+--include_path="C:\ProgramFiles(x86)\TexasInstruments\C6000CodeGenerationTools7.
3.
9/include"--include_path=".
\inc"--gen_profile_infomain.
c.
\sub\lots.
c.
\sub\rare.
c-z-llnk.
cmd-i"C:\ProgramFiles(x86)\TexasInstruments\C6000CodeGenerationTools7.
3.
9/lib"-l"rts64plus.
lib"-oCLTTutoirial.
out-mCLTTutoirial.
map同时在目录下生成OBJ和ASM文件,这个和我们的实验关系不大,可以不用关注.
out文件是一会需要下载到芯片里运行的可执行文件,而map文件用于帮助我们定位profile信息存放的内存地址.
如果用户使用CCS编译工具,则需要在Build的属性里指定Feedback选项,然后正常编译即可生成携带分析代码的可执行文件.
Figure4.
CCS初编译的选项ZHCA583使用CLT工具优化C6000代码72.
获取分析信息根据用户获取分析数据的不同,这里有两种方法,第一种方法适用于持续运行的程序,比如在基于SYS/BIOS的程序里,有些任务是以循环的方式存在的,这时用户需要自己从DSP内存里读取分析数据.
首先打开map文件,可以找到.
ppdata段的内存地址,这个地址就是profile信息存放处,在例子中.
ppdata00081fecc00000034UNINITIALIZED.
ppdata段位于0x0081fecc这个地址,长度是34个byte.
启动CCS,连接EVM板,下载out文件到DSP上,在main函数末尾加上调试断点,可以让程序到这里暂停(实际上,在用户代码中,可以把断点设置在需要的任何地方,profile的信息是实时更新的).
运行该程序,到达断点后,在View菜单里打开memorybrowser,将地址设定为0x0081fecc,可以读到.
ppdata的信息,参考以下步骤将其存到工程目录下.
1)选取SaveMemory2)存放路径ZHCA5838使用CLT工具优化C6000代码3)确定数据地址和长度,如下图4)修改dat文件ZHCA583使用CLT工具优化C6000代码9打开刚才存下的dat文件,注意到文件头的数据长度是以32比特字为单位的,我们需要以8比特字节为单位,如1651981fecc0d1修改为1651981fecc03415)转换文件格式对刚才的运行profile信息进行分析,得到优化后的cmd内存排布文件,该文件内容如下,用户可根据自己的程序进行修改Generate_pdatfile-leppdata.
datpprofout.
pdat如果是大端,则将-le选项改为-be选项.
第二种方法,针对于只需运行一次流程的程序,CCS可以自动生成pdat文件,需要注意的是,生成pdat文件的分析代码是在用户程序结束也就是exit()程序执行时进行,因此用户要保证自己的程序能完整运行到主函数出口结束,否则无法生成pdat文件,需要用第一种方法来获取数据.
3.
重新编译代码首先使用pdd6x从数据文件里提取prf文件作为重编译的输入文件pdd6xpprofout.
pdat-eCLTTutoirial.
out-o=pprofout.
prf在命令行形式下,可以以以下形式调用输入文件生成csv文件,cl6x--abi=coffabi-o2-mv64+--include_path="C:\ProgramFiles(x86)\TexasInstruments\C6000CodeGenerationTools7.
3.
9/include"--use_profile_info=pprofout.
prf--analyze=callgraphmain.
c.
\sub\lots.
c.
\sub\rare.
c在CCS环境下,只需要在CCS里指定需要的数据文件后产生csv文件,ZHCA58310使用CLT工具优化C6000代码Figure5.
CCS重编译的选项通过调用clt6x生成内存排布clt6xmain.
csvlots.
csvrare.
csv-opfo.
cmd将输出的pfo.
cmd加入到项目的cmd文件重新编译输出优化后的out文件,cache优化到此完成.
对比优化结果,对于TCP/IP的例子应用上,CLT带来了接近20%的提升,对于视频编码等应用,CLT也带来了5%左右的提升.
而且,用户代码量越大,则CLT可能带来的提升越明显.
4.
结论通过使用CLT工具,可以方便快捷的对用户代码的Cache分配进行优化,用户不需要了解DSPCache分配的详细信息,只需要在Simulator或者硬件板卡上运行定制的代码,就可以方便快捷地得到Cache的详细信息,并自动根据这些信息对程序在内存的分布进行配置已达到提升性能的效果.
参考文献1.
TMS320C66xDSPCorePacUserGuide(SPRUGW0)2.
KeyStoneArchitectureMulticoreSharedMemoryController(MSMC)UserGuide(SPRUGW7)3.
KeyStoneArchitectureDDR3MemoryControllerUserGuide(SPRUGV8)4.
CacheLayoutToolsExamplehttp://www.
deyisupport.
com/question_answer/dsp_arm/c6000_multicore/f/53/t/18908.
aspx重重要要声声明明德州仪器(TI)及其下属子公司有权根据JESD46最新标准,对所提供的产品和服务进行更正、修改、增强、改进或其它更改,并有权根据JESD48最新标准中止提供任何产品和服务.
客户在下订单前应获取最新的相关信息,并验证这些信息是否完整且是最新的.
所有产品的销售都遵循在订单确认时所提供的TI销售条款与条件.
TI保证其所销售的组件的性能符合产品销售时TI半导体产品销售条件与条款的适用规范.
仅在TI保证的范围内,且TI认为有必要时才会使用测试或其它质量控制技术.
除非适用法律做出了硬性规定,否则没有必要对每种组件的所有参数进行测试.
TI对应用帮助或客户产品设计不承担任何义务.
客户应对其使用TI组件的产品和应用自行负责.
为尽量减小与客户产品和应用相关的风险,客户应提供充分的设计与操作安全措施.
TI不对任何TI专利权、版权、屏蔽作品权或其它与使用了TI组件或服务的组合设备、机器或流程相关的TI知识产权中授予的直接或隐含权限作出任何保证或解释.
TI所发布的与第三方产品或服务有关的信息,不能构成从TI获得使用这些产品或服务的许可、授权、或认可.
使用此类信息可能需要获得第三方的专利权或其它知识产权方面的许可,或是TI的专利权或其它知识产权方面的许可.
对于TI的产品手册或数据表中TI信息的重要部分,仅在没有对内容进行任何篡改且带有相关授权、条件、限制和声明的情况下才允许进行复制.
TI对此类篡改过的文件不承担任何责任或义务.
复制第三方的信息可能需要服从额外的限制条件.
在转售TI组件或服务时,如果对该组件或服务参数的陈述与TI标明的参数相比存在差异或虚假成分,则会失去相关TI组件或服务的所有明示或暗示授权,且这是不正当的、欺诈性商业行为.
TI对任何此类虚假陈述均不承担任何责任或义务.
客户认可并同意,尽管任何应用相关信息或支持仍可能由TI提供,但他们将独力负责满足与其产品及在其应用中使用TI产品相关的所有法律、法规和安全相关要求.
客户声明并同意,他们具备制定与实施安全措施所需的全部专业技术和知识,可预见故障的危险后果、监测故障及其后果、降低有可能造成人身伤害的故障的发生机率并采取适当的补救措施.
客户将全额赔偿因在此类安全关键应用中使用任何TI组件而对TI及其代理造成的任何损失.
在某些场合中,为了推进安全相关应用有可能对TI组件进行特别的促销.
TI的目标是利用此类组件帮助客户设计和创立其特有的可满足适用的功能安全性标准和要求的终端产品解决方案.
尽管如此,此类组件仍然服从这些条款.
TI组件未获得用于FDAClassIII(或类似的生命攸关医疗设备)的授权许可,除非各方授权官员已经达成了专门管控此类使用的特别协议.
只有那些TI特别注明属于军用等级或"增强型塑料"的TI组件才是设计或专门用于军事/航空应用或环境的.
购买者认可并同意,对并非指定面向军事或航空航天用途的TI组件进行军事或航空航天方面的应用,其风险由客户单独承担,并且由客户独力负责满足与此类使用相关的所有法律和法规要求.
TI已明确指定符合ISO/TS16949要求的产品,这些产品主要用于汽车.
在任何情况下,因使用非指定产品而无法达到ISO/TS16949要求,TI不承担任何责任.
产产品品应应用用数字音频www.
ti.
com.
cn/audio通信与电信www.
ti.
com.
cn/telecom放大器和线性器件www.
ti.
com.
cn/amplifiers计算机及周边www.
ti.
com.
cn/computer数据转换器www.
ti.
com.
cn/dataconverters消费电子www.
ti.
com/consumer-appsDLP产品www.
dlp.
com能源www.
ti.
com/energyDSP-数字信号处理器www.
ti.
com.
cn/dsp工业应用www.
ti.
com.
cn/industrial时钟和计时器www.
ti.
com.
cn/clockandtimers医疗电子www.
ti.
com.
cn/medical接口www.
ti.
com.
cn/interface安防应用www.
ti.
com.
cn/security逻辑www.
ti.
com.
cn/logic汽车电子www.
ti.
com.
cn/automotive电源管理www.
ti.
com.
cn/power视频和影像www.
ti.
com.
cn/video微控制器(MCU)www.
ti.
com.
cn/microcontrollersRFID系统www.
ti.
com.
cn/rfidsysOMAP应用处理器www.
ti.
com/omap无线连通性www.
ti.
com.
cn/wirelessconnectivity德州仪器在线技术支持社区www.
deyisupport.
comIMPORTANTNOTICE邮寄地址:上海市浦东新区世纪大道1568号,中建大厦32楼邮政编码:200122Copyright2013德州仪器半导体技术(上海)有限公司

HostKvm5.95美元起,香港、韩国可选

HostKvm发布了夏季特别促销活动,针对香港国际/韩国机房VPS主机提供7折优惠码,其他机房全场8折,优惠后2GB内存套餐月付仅5.95美元起。这是一家成立于2013年的国外主机服务商,主要提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。下面分享几款香港VPS和韩国VPS的配置和价格信息。...

台湾CN2云服务器 2核2G 5M 5IP 台湾物理服务器 E5x2 64G 20M 5IP

提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...

域名注册需要哪些条件(新手注册域名考虑的问题)

今天下午遇到一个网友聊到他昨天新注册的一个域名,今天在去使用的时候发现域名居然不见。开始怀疑他昨天是否付款扣费,以及是否有实名认证过,毕竟我们在国内域名注册平台注册域名是需要实名认证的,大概3-5天内如果不验证那是不可以使用的。但是如果注册完毕的域名找不到那也是奇怪。同时我也有怀疑他是不是忘记记错账户。毕竟我们有很多朋友在某个商家注册很多账户,有时候自己都忘记是用哪个账户的。但是我们去找账户也不办...

网站seo优化软件为你推荐
今日油条油条是怎样由来firetrap我淘宝店还是卖二单就被删,怎么回事!www.4411b.com难道那www真的4411B坏了,还是4411b梗换com鑫域明了百度关键词价格查询百度关键词排名价格是多少www.522av.com现在怎样在手机上看AV777k7.comwww.777tk.com.怎么打不 开www.se222se.comhttp://www.qqvip222.com/baqizi.cc汉字的故事100字www.175qq.com这表情是什么?www.cn12365.org全国公民身份证号码查询服务中心(http://www.nciic.com.cn/)这个网站怎么查不了啊?
3322动态域名注册 到期域名查询 hostgator highfrequency arvixe uk2 服务器怎么绑定域名 xen 双十一秒杀 厦门电信 免费外链相册 免费网络 阿里云个人邮箱 国外代理服务器 睿云 云销售系统 asp空间 ftp是什么东西 iptables 赵荣 更多