北邮实验四代码优化..docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北邮实验四代码优化.

北京邮电大学计算机学院《计算机系统结构》课程实验2015年4月实验四代码优化实验类别:综合实验实验目的:学习简单编译优化方法,观察采用编译优化方法所带来的性能的提高。实验学时:4实验组人数:1/1实验设备环境: DLX汇编语言环境实验原理:采用静态调度方法重排指令序列,减少相关,优化程序教学要点与学习难点:指令静态调度方法。实验内容和要求:对实验二或实验三的代码进行优化,给出性能改进的量化值,同时给出采取优化手段的理论依据。实验步骤:(1)使用静态调度方法手工优化实验2或实验3的代码(2)对优化程序,重复实验二中(1)、(2)、(3)、(4)工作。1.使用向量加法运算作为优化对象代码优化前:.dataVectorLength:.word16Vector1:.word1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16Vector2:.word1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16Printf1:.asciiz Vector =Printf2: .asciiz %f.align2PrintPrompt:.wordPrintf1PrintPar: .wordPrintf2Result:.space 4.textmain:addir14,r0,PrintPrompttrap5lwr20,VectorLengthaddir2,r0,0Loop:ldf10,Vector1(r2)ldf12,Vector2(r2)cvti2df0,f10cvti2df2,f12adddf4,f2,f0Finish:;**** Finish,write result into stdoutsdResult,f4addir14,r0,PrintPartrap5addir2,r2,4subir20,r20,1bnezr20,Loop;**** Endtrap0代码优化后:.data?VectorLength:?.word?16?Vector1:?????.word?1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16Vector2:?????.word?1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16??Printf1:?????.asciiz?Vector?=Printf2:????????.asciiz???%f??.align?2?PrintPrompt:?.word?Printf1?PrintPar:??.?word?Printf2?Result:??.space??4????.text?main:????addi??r14,r0,PrintPrompt??trap??5?addi??r2,r0,0?????????lw??r20,VectorLength?????Loop:???ld??f10,Vector1(r2)????ld??f12,Vector2(r2)???addi??r2,r2,4?????????cvti2d?f0,f10?;此处进行优化???cvti2d?f2,f12????subi??r20,r20,1????addd??f4,f2,f0???;此处进行优化,之前插入一条指令,避免f2的RAW冲突??????sd??Result,f4????addi??r14,r0,PrintPar?trap??5?;addi??r2,r2,4??;subi??r20,r20,1??bnez??r20,Loop????trap??0程序结果(两个一样)2.代码优化前后的statistics对比(左图为优化前右图为优化后)优化之后其中断数据显示为:??优化前为:由上述两图对比可以看出,?数据相关:其RAW相关由优化前的34.12%减少为20.57%,性能改善很多;?结构相关没有发生改变;?控制相关:由原来的3.94%变为4.75%,没有改善。?因此,可以看出,我所进行的代码优化对性能方面改善并不是很强烈,主要影响还是在数据相关方面上图左图为4个浮点部件执行结果,右图为原始默认1个浮点部件执行结果。由此可以看出,其部件个数对统计结果并无影响。?原因为该运算过程中不存在结构相关,因此并行度没有增加,程序影响不大,部件增加对于系统的性能并没有改善。左图为使用forwading技术的统计结果。?通过对比可以看出,使用forwarding技术之后执行周期少了316-267=49个时钟周期,在这些时钟周期中,forwarding技术主要在于消除了执行过程中的数据相关(由65个中断减少至16个)。因此,代码执行效率改善很多。?由统计结果中的Conditional?Branches可以看出,?优化前和优化后的Conditional?Branches

文档评论(0)

jiulama + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档