已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
班别:2012211302学号:2012211144姓名:袁凯琦班级:2012211302学号:2012211144姓名:袁凯琦实验三 DLX处理器程序设计2一 实验类别2二实验目的2三实验学时2四实验设备环境2五实验原理2六实验内容和要求2七实验步骤2八实验体会7实验四 代码优化7一实验类别7二实验目的7三实验学时7四实验设备环境7五实验原理7六教学要点与学习难点7七实验内容和要求7八实验步骤7九你解决的困难和解决方法+实习体会12实验五 循环展开(选作)12一实验类别12二实验目的12三实验学时12四实验设备环境12五实验原理12六教学要点与学习难点12七实验内容和要求12八实验步骤:13十你解决的困难和解决方法25十一你没有解决的困难(如有)以及你做过的努力261班别:2012211302学号:2012211144姓名:袁凯琦实验三 DLX处理器程序设计1 实验类别:综合型二实验目的:学习使用DLX汇编语言编程,进一步分析相关现象三实验学时:4四实验设备环境:DLX汇编语言环境五实验原理:掌握向量运算算法和编程方法。六实验内容和要求: 自编一段汇编代码,完成两双精度浮点一维向量的加法(或乘除法)运算,并输出结果。向量长度=16。观察程序中出现的数据/控制/结构相关七实验步骤:1.熟悉DLX汇编语言。 (1)汇编器处理汇编文件时,数据位于内存中data指针所指向的空间,指令位于text指针所指向的空间。 (2)Trap 0是通知WINDLX模拟器程序结束,Trap 5是输出格式化到标准输出2.编写两双精度浮点一维向量的加法运算程序。 代码清单如下:.dataV1: .double 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 ;向量V1,长度为20V2: .double 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10, 11.9, 12.8, 13.7, 14.6, 15.5, 16.4, 17.3, 18.2,19.1,20 ;向量V2,长度为20a: .asciiz result = c: .asciiz %f .align 2d: .word c ;保存c的变量结构:dizhi: .space 8 ;相加的结果必须保存在dizhi中,才能正确显示 .text .global mainmain:addi r1,r0,asw dizhi,r1 ;存储字,保存a的首地址addi r14,r0,dizhitrap 5 ;输出字符串result = addi r10,r0,0 ;r10 = 0addi r8,r0,20 ;r8 = 20,即向量的长度loop:ld f2,V1(r10) ld f4,V2(r10)addd f2,f2,f4 ;将V1,V2的相应项依次相加,保存在f4sd dizhi,f2 ;存储双精度浮点数f4addi r14,r0,dtrap 5 ;输出结果addi r10,r10,8 ;取V1,V2下一项subi r8,r8,1 ;循环次数减一bnez r8,loop ;假如r8!=0,则返回到looptrap 0 ;结束运行完毕之后出现:运行结果如下:3. 实验观察与分析(1) 观察程序中出现的数据/控制/结构相关 本次实验执行过程共出现RAW数据相关183次,控制相关19次,trap66次,共有stall 268次。具体如下:1) RAW相关2) T-stall3) 控制相关(2) 考察增加浮点运算部件对性能的影响。比较浮点运算部件分别为1和4时, 接下来查看Statistis进行比较,如下图 由以上两图可得,本实验增加浮点运算部件对流水线性能没有影响。(3) 增加FORWARD部件对性能的影响。 从上面的数据我们可以看出增加forwardi部件后:l 时钟周期由456减少至373个,RAW由原来占总时钟周期的40.13%减少至26.81%;l RAW个数由原来的183减少至100;l 增加forward部件使得控制相关比例增加了,但是数目并没有增加。 总而言之,使用forward部件后,总的时钟周期减少,数据相关减少,流水线的性能得到一定的改善。(4) 观察转移指令在转移成功和转移不成功时候的流水线开销。 由上图可得,转移指令一共20条,其中成功转移19条,占95%,不成功转移1条,占5%。 静态指令调度算法是在出现数据相关时,为了消除或者减少流水线空转,编译器确定并分离出程序中存在在相关的指令,然后进行指令调度,并对代码优化。但是静态指令调度只能解决数据相关,条件转移结果与原理来相比没有变化。若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低。若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,每执行一条条件转移指令,一条x段流水线就有x-2个流水线被浪费掉,执行效率降低,性能有一定的损失。八实验体会 加深了对汇编语言的理解与运用,尤其是trap5,输出格式化到标准输出的理解,在代码中,应注意:否则即使运算正确也不能把结果输出。 实验四 代码优化一实验类别:综合实验二实验目的:学习简单编译优化方法,观察采用编译优化方法所带来的性能的提 高。三实验学时:4四实验设备环境: DLX汇编语言环境五实验原理:采用静态调度方法重排指令序列,减少相关,优化程序六教学要点与学习难点:指令静态调度方法。七实验内容和要求: 对实验二或实验三的代码进行优化,给出性能改进的量化值,同时给出采取优化手段的理论依据。八实验步骤:1.优化实验3程序代码清单及注释说明.dataV1: .double 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20V2: .double 1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,10,11.9,12.8,13.7,14.6,15.5,16.4,17.3,18.2,19.1,20a: .asciiz result = c: .asciiz %f .align 2d: .word cdizhi: .space 8 .text .global mainmain:addi r1,r0,a addi r10,r0,0addi r8,r0,20;addi r1,r0,a 该指令与sw dizhi,r1存在RAW相关,故将其提前sw dizhi,r1addi r14,r0,dizhitrap 5;addi r10,r0,0 该指令与ld 2,V1(r10) 存在RAW相关,故将其提前;addi r8,r0,20 loop:ld f2,V1(r10) ld f4,V2(r10);addd f2,f2,f4 该指令与前面两条指令均存在RAW相关,将其延后执行addi r10,r10,8subi r8,r8,1addd f2,f2,f4;sd dizhi,f2 该指令与addd f2,f2,f4存在RAW相关,将其延后执行addi r14,r0,dsd dizhi,f2trap 5;addi r10,r10,8 ;subi r8,r8,1 bnez r8,looptrap 0执行完毕后,我们点击Statistics查看运行结果数据分析2. 程序相关性分析结果左图是优化前的,右图是优化后的由上述两图对比可以看出,数据相关:其RAW相关由优化前的40.13%减少为22.66%,性能改善很多;结构相关没有发生改变;控制相关:由原来的4.17%变为5.38%,没有改善。因此,可以看出,我所进行的代码优化对性能方面改善并不是很强烈,主要影响还是在数据相关方面.3. 增加浮点运算部件对性能的影响。比较浮点运算部件分别为1和4时, 接下来查看Statistis进行比较,如下图 由以上两图可得,本实验增加浮点运算部件对流水线性能没有影响。4.增加FORWARD部件对性能的影响。 从上面的数据我们可以看出增加forwardi部件后:l 时钟周期由353减少至313个,RAW由原来占总时钟周期的22.66%减少至12.78%;l RAW个数由原来的80减少至20;l 增加forward部件使得控制相关比例增加了,但是数目并没有增加。 总而言之,使用forward部件后,总的时钟周期减少,数据相关减少,流水线的性能得到一定的改善。(5) 观察转移指令在转移成功和转移不成功时候的流水线开销。 由上图可得,转移指令一共20条,其中成功转移19条,占95%,不成功转移1条,占5%。优化对于转移指令并无影响。 静态指令调度算法是在出现数据相关时,为了消除或者减少流水线空转,编译器确定并分离出程序中存在在相关的指令,然后进行指令调度,并对代码优化。但是静态指令调度只能解决数据相关,条件转移结果与原理来相比没有变化。若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低。若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,每执行一条条件转移指令,一条x段流水线就有x-2个流水线被浪费掉,执行效率降低,性能有一定的损失。九你解决的困难和解决方法+实习体会 代码优化的关键在于相关性的分析,它关系到能否进行优化以及怎么优化。采用静态调度方法重排指令序列要保证调整顺序之后不影响指令执行。若两条相邻的指令存在RAW相关时,在重排指令的时候,该两条指令之间插入至少两条其它指令才能保证消除stall。相邻的指令访问相同的寄存器并不代表就会存在冲突,比如指令以上三条指令均需要访问寄存器r0,但是由于都是读r0,所以不存在冲突。 代码优化的目的就是减少相关性的发生,提高流水线的效率。经过代码优化这一实验后,我更加深入理解了相关性的概念。此外,采用静态调度方法重排指令序列与forwarding技术相结合,可以提高流水线的效率。实验五 循环展开(选作)一实验类别:综合实验二实验目的:进一步学习DLX汇编语言编程方法,学习循环展开编译优化方法,观察采用循环展开编译优化方法所带来的性能的提高。三实验学时:2四实验设备环境:DLX汇编语言环境五实验原理: 对循环程序采用循环展开(loop unrolling)方法进行优化,减少相关。六教学要点与学习难点: 矩阵乘算法和循环展开优化编译方法七实验内容和要求: 使用DLX汇编语言编写二维矩阵相乘程序,观察相关性;再用循环展开方法手工该优化程序,分析比较性能的改进。八实验步骤:1.编写矩阵相乘程序(1)主要实现的C代码如下(2) 用windlx编写的汇编指令如下: .datas1: .float 1.02s2: .float 2.001MA: .space 64MB: .space 64MC: .space 64a: .asciiz result = nb: .asciiz nc: .asciiz %f .align 2d: .word cFdizhi: .space 8dizhi: .space 4 .text .global mainmain:;addi r1,r0,a;sw dizhi,r1 ;存储字,保存a的首地址;addi r14,r0,dizhi;trap 5 ;输出字符串result = addi r1,r0,MA ;将MA地址付给r0addi r3,r2,MBaddi r11,r1,#64 ;MA末地址lf f1,s1lf f2,s2init:sf 0(r1),f1 ;将f1付给MAsf 0(r3),f2 ;将f2付给MBaddi r1,r1,#4addi r3,r3,#4slt r2,r1,r11bnez r2,initaddi r21,r0,#16addi r22,r0,#4addi r23,r0,#4addi r29,r0,#0addi r7,r0,0 ;i=0loop1:addi r8,r0,0 ;j=0loop2:addi r9,r0,0 ;k=0movi2fp f0,r29 ;data = 0loop3:multu r11,r7,r21 ;r11 = i * 40multu r1,r9,r23 ;r1 = k * 4addu r11,r11,r1 ;计算出MAik的位置ld f2,MA(r11)multu r13,r9,r21 ;r13 = i * 16multu r1,r8,r23 ;r1 = j * 4addu r13,r13,r1 ;MBkjld f4,MB(r13)multf f6,f2,f4addf f0,f0,f6addi r9,r9,#1 ;k4?slt r2,r9,r22bnez r2,loop3;sd Fdizhi,f0 ;输出结果;addi r14,r0,d;trap 5multu r13,r7,r21 ;r13 = i * 16multu r1,r8,r23 ;r1 = j * 4 addu r13,r13,r1 ;MCijsf MC(r13),f0addi r8,r8,#1slt r2,r8,r22 ;j4?bnez r2,loop2;addi r1,r0,b;sw dizhi,r1;addi r14,r0,dizhi ;输出换行符;trap 5addi r7,r7,#1 ;i4?slt r2,r7,r22bnez r2,loop1trap 0运行完毕之后出现:运行结果如下:由于没有写输出语句,所以可以从Register中看到我们想要的结果(相乘的结果存在F0中)2. 观察程序中出现的数据/控制/结构相关 本次实验执行过程共出现RAW数据相关2284次,控制相关78次,trap66次,共有stall 2860次。具体如下:1)RAW相关指令集合:addi r1,r0,MA ;将MA地址付给r0addi r11,r1,#64;MA末地址指令集合:lf f1,s1sf 0(r1),f1 ;将f1付给MA指令集合:addi r1,r1,#4slt r2,r1,r11指令集合:slt r2,r1,r11bnez r2,init指令集合:multu r11,r7,r21 multu r1,r9,r23 ;addu r11,r11,r1 指令集合:multu r13,r9,r21 multu r1,r8,r23 addu r13,r13,r1 指令集合:addu r13,r13,r1ld f4,MB(r13)指令集合:multf f6,f2,f4addf f0,f0,f6指令集合:addi r9,r9,#1 ;k10?slt r2,r9,r22bnez r2,loop34) T-stall5) 控制相关指令集合:slt r2,r1,r11bnez r2,init(4) 考察增加浮点运算部件对性能的影响。比较浮点运算部件分别为1和4时, 接下来查看Statistis进行比较,如下图 由以上两图可得,本实验增加浮点运算部件对流水线性能没有影响。(5) 增加FORWARD部件对性能的影响。 从上面的数据我们可以看出增加forwardi部件后:l 时钟周期由3596减少至2401个,RAW由原来占总时钟周期的63.52%减少至32.82%;l RAW个数由原来的2284减少至788;l 增加forward部件使得控制相关比例增加了,但是数目并没有增加。 总而言之,使用forward部件后,总的时钟周期减少,数据相关大大减少,流水线的性能得到一明显的改善。(6) 观察转移指令在转移成功和转移不成功时候的流水线开销。 由上图可得,转移指令一共100条,其中成功转移78条,占78%,不成功转移22条,占22%。 静态指令调度算法是在出现数据相关时,为了消除或者减少流水线空转,编译器确定并分离出程序中存在在相关的指令,然后进行指令调度,并对代码优化。但是静态指令调度只能解决数据相关,条件转移结果与原理来相比没有变化。若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低。若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,每执行一条条件转移指令,一条x段流水线就有x-2个流水线被浪费掉,执行效率降低,性能有一定的损失。2.使用循环展开手工优化程序 .datas1: .float 1.02s2: .float 2.001MA: .space 64MB: .space 64MC: .space 64a: .asciiz result = nb: .asciiz nc: .asciiz %f .align 2d: .word cFdizhi: .space 8dizhi: .space 4 .text .global mainmain:addi r1,r0,MA ;将MA地址付给r0addi r3,r2,MBaddi r11,r1,#64;MA末地址lf f1,s1lf f2,s2init:sf 0(r1),f1 ;将f1付给MAsf 0(r3),f2 ;将f2付给MBaddi r1,r1,#4addi r3,r3,#4slt r2,r1,r11bnez r2,initaddi r21,r0,#16addi r22,r0,#4addi r23,r0,#4addi r29,r0,#0addi r1,r0,#0addi r11,r0,#0addi r7,r0,0 ;i=0loop1:addi r8,r0,0 ;j=0addi r1,r0,0loop2:addi r9,r0,0 ;k=0addu r14,r0,r11addu r15,r0,r1movi2fp f0,r29 ;data = 0loop3:;将乘法变成循环外面的加法;multu r11,r7,r21 ;r11 = i * 40;multu r1,r9,r23 ;r1 = k * 4;addu r11,r11,r1 ;计算出MAik的位置ld f2,MA(r14);将乘法变成循环外面的加法;multu r13,r9,r21 ;r13 = k * 40;multu r1,r8,r23 ;r1 = j * 4;addu r13,r13,r1 ;MBkjld f4,MB(r15)multf f6,f2,f4addf f0,f0,f6addi r9,r9,#1 ;k4?slt r2,r9,r22addu r14,r14,r23 ;r14在loop3里面每次增加4addu r15,r15,r21 ;r15在loop3里面每次增加16bnez r2,loop3addu r16,r11,r1 ;MCijsf MC(r16),f0addi r8,r8,#1slt r2,r8,r22 ;j4?addu r1,r1,r23bnez r2,loop2addi r7,r7,#1 ;i4?slt r2,r7,r22addu r11,r11,r21bnez r2,loop1trap 0运行结果如下:由于没有写输出语句,所以可以从Register中看到我们想要的结果(相乘的结果存在F0中)3.未优化代码和优化代码性能分析比较结果执行完毕后,我们点击Statistics查看运行结果数据分析(左图是改进前的运行情况,右图是改进后的运行情况)从上面的数据我们可以看出代码经过循环优化后:l 时钟周期由3455减少至1669个,RAW由原来占总时钟周期的65.82%减少至43.02%;l RAW个数由原来的2274减少至718;l 浮点运算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子产品进口采购到货验收合格证明函(5篇范文)
- 研发部门间会议时间同步通知(6篇范文)
- 小学主题班会课件:智慧与创新的小学
- 物联网技术及其发展趋势研究
- 关于技术专利申请成功喜讯的通报函3篇
- 2026中国医疗技术提升行业市场发展现状供需分析及投资评估规划发展趋势研究报告
- 2026中国语文数学教育培训行业现状研究发展思路
- 2026旅游业连锁经营行业市场现状供需分析及投资评估规划分析研究报告
- 2 济南的冬天 课件(共36张)2026-2027学年语文统编版七年级上册
- 2026中国新能源储能系统行业市场深度调研及竞争格局与投资前景研究报告
- JJF 2189-2025铂电阻温度计用精密测温仪校准规范
- 《团队合作》课件
- JC∕T 2558-2020 透水混凝土标准规范
- DL∕T 5161.9-2018 电气装置安装工程质量检验及评定规程 第9部分:蓄电池施工质量检验
- QCT1170-2022汽车玻璃用功能膜
- 府谷县起龙煤矿矿山地质环境保护与土地复垦方案
- 达罗他胺片-临床用药解读
- 施工工地环保知识培训课件
- 士林变频器说明书SL
- 药酒产品知识介绍
- JJF 1242-2010激光跟踪三维坐标测量系统校准规范
评论
0/150
提交评论