2023年北邮计算机系统结构实验报告实验一到五WINDLX模拟器_第1页
2023年北邮计算机系统结构实验报告实验一到五WINDLX模拟器_第2页
2023年北邮计算机系统结构实验报告实验一到五WINDLX模拟器_第3页
2023年北邮计算机系统结构实验报告实验一到五WINDLX模拟器_第4页
2023年北邮计算机系统结构实验报告实验一到五WINDLX模拟器_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京邮电大学实验报告课程名称计算机系统结构计算机学院班王陈()目录TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc"实验一WINDLX模拟器安装及使用ﻩPAGEREF_Toc\h3HYPERLINK\l"_Toc"·实验准备ﻩPAGEREF_Toc\h错误!未定义书签。HYPERLINK·实验环境ﻩPAGEREF_Toc\h错误!未定义书签。HYPERLINK\l"_Toc"·实验环节 PAGEREF_Toc\h错误!未定义书签。HYPERLINK\l"_Toc"·实验内容及规定ﻩPAGEREF_Toc\h错误!未定义书签。HYPERLINK\l"_Toc"·实验过程ﻩPAGEREF_Toc\h错误!未定义书签。HYPERLINK\l"_Toc"·实验总结ﻩPAGEREF_Toc\h8HYPERLINK\l"_Toc"实验二指令流水线相关性分析 PAGEREF_Toc\h9HYPERLINK\l"_Toc"·实验目的 PAGEREF_Toc\h9·实验环境 PAGEREF_Toc\h9HYPERLINK\l"_Toc"·实验环节ﻩPAGEREF_Toc\h9HYPERLINK实验三DLX解决器程序设计 PAGEREF_Toc\h17HYPERLINK·实验目的ﻩPAGEREF_Toc\h17HYPERLINK·实验环境ﻩPAGEREF_Toc\h错误!未定义书签。HYPERLINK·实验环节ﻩPAGEREF_Toc\h错误!未定义书签。HYPERLINK·实验过程ﻩPAGEREF_Toc\h17HYPERLINK\l"_Toc"A.ﻩ向量加法代码及性能分析 PAGEREF_Toc\h17HYPERLINK\l"_Toc"B.双精度浮点加法求和代码及结果分析ﻩPAGEREF_Toc\h22·实验总结 h27HYPERLINK\l"_Toc"实验四代码优化ﻩPAGEREF_Toc\h28HYPERLINK\l"_Toc"·实验目的ﻩPAGEREF_Toc\h28HYPERLINK\l"_Toc"·实验环境 PAGEREF_Toc\h错误!未定义书签。HYPERLINK·实验原理 PAGEREF_Toc\h28HYPERLINK\l"_Toc"·实验环节 PAGEREF_Toc\h错误!未定义书签。HYPERLINK\l"_Toc"·实验过程 PAGEREF_Toc\h28HYPERLINK\l"_Toc"·实验总结+实习体会ﻩPAGEREF_Toc\h33HYPERLINK实验五循环展开 PAGEREF_Toc\h34HYPERLINK\l"_Toc"·实验目的ﻩPAGEREF_Toc\h34HYPERLINK\l"_Toc"·实验环境ﻩPAGEREF_Toc\h错误!未定义书签。HYPERLINK\l"_Toc"·实验原理ﻩPAGEREF_Toc\h34HYPERLINK·实验环节 PAGEREF_Toc\h错误!未定义书签。HYPERLINK\l"_Toc"·实验过程ﻩPAGEREF_Toc\h34HYPERLINK矩阵乘程序代码清单及注释说明 PAGEREF_Toc\h34HYPERLINK\l"_Toc"相关性分析结果ﻩPAGEREF_Toc\h39HYPERLINK增长浮点运算部件对性能的影响 PAGEREF_Toc\h39HYPERLINK\l"_Toc"增长forward部件对性能的影响ﻩPAGEREF_Toc\h39HYPERLINK转移指令在转移成功和转移不成功时候的流水线开销 PAGEREF_Toc\h39HYPERLINK\l"_Toc"·实验总结+实习体会+课程建议ﻩPAGEREF_Toc\h39实验一WINDLX模拟器安装及使用WinDLX模拟器的结构和功能说明1.点击运营之后,会看到一个如下图所示的窗口。它涉及Register,Code,Pipeline,ClockCycleDiagram,Statistics,Breakpoints。接下来具体介模拟器的结构及各个部件的功能。2.Register窗口介绍Rigister窗口中显示的是各个寄存器的名称及内容。如下图:可以看到寄存器中以十六进制标记,从上图可以看出各个寄存器中的内容。2.Code窗口介绍在没有进行任何执行的时候,初次打开code窗口,即为下图所示窗口现实的信息是各个存储器内同。第一列标记存储器的地址;第二列是机器代码,用16进制表达;第三列是汇编指令。当我们点击上方的,可以选择单步或多步执行(也可以使用快捷键F7或F8)。若选择单步执行,每按一次F7,指令执行一次,可以看到,一次执行的为IF->ID->intEX->MEM->WB,没执行一次尚有颜色的变化。颜色是用来标记指令处在哪个流水段的,如下图。当然,我们也可以使用多步执行,按快捷键F8,选择5步流水,即可。3.Pipeline窗口介绍通过阅读WinDLX模拟器说明书可以知道,Pipeline窗口显示的是DLX解决器的内部结构。窗口用下图标记DLX五段流水。当然,如同Code窗口介绍讲述的那样,不同的颜色显示了指令处在哪段流水线。使用快捷键F7单步执行,可以明显的看出,不同时候流水段执行的不同指令。如下图。图片反映的正式与Code中所处的时刻相同的指令流水。可以清楚看到不同流水段执行的是哪条指令。4.ClockCycleDiagram窗口实验准备中我们已经知道,该窗口显示的是流水线的时空图。时空图反映的是不同时隙内的运营情况。如下图。在我看来,时空图是最佳理解的。由于它反映的就是流水段的并行限度。在这个DLX模拟器中,并不存在一些数据或者控制上的冲突问题。所以可以依靠上图很清楚的看到指令所处的不同流水段,及指令执行情况。该时空图同样也是和前面的Code等相相应。也可以通过快捷键F7来进一步执行指令,可以看到流水线时空图的扩展情况。任意双击指令的一行,可以具体看到不同流水段的情况。如下图所示。5.Statistics窗口介绍该窗口是对运营程序中的数据进行分析。重要涉及模拟器中硬件配置情况,在该窗口中,我们可以比较不同配置对于该模拟器的不同影响。如下图所示。整体指令执行情况硬件配置情况暂停次数和比例及因素分析分支次数和比例Load/Store指令执行情况浮点指令执行次数和比例trap发生的次数和比例6.Breakpoints窗口介绍该窗口使用来观测代码运营情况。先打开Breakpoints窗口,点击窗口上方的来设立breakpoint,也就是设立指令运营到流水线的哪个阶段程勋停止执行。如上图,假如选择EX阶段,在Code窗口中相应的行会出现BEX,即指令执行到译码结束执行开始的时候,程序将中止。·实验总结通过本次实验,由于是第一次接触DLX模拟器,该实验可以帮助我对这个模拟器大体的功能及使用做个大体的了解。对于日后的实验打下好的基础。我觉得WinDLX模拟器小而精悍,它有不同颜色的标记,不同寄存器及存储器的反映。通过使用它,可以对5步流水的过程及不同阶段很清楚明白的看到。也可以看到不同指令分析走到了哪一步,到了哪一步流水段。实验二指令流水线相关性分析·实验目的通过使用WINDLX模拟器,对程序中的三种相关现象进行观测,并对使用专用通路,增长运算部件等技术对性能的影响进行考察,加深对流水线和RISC解决器的特点的理解。·实验环境WindowsXP操作系统WinDLX模拟器·实验环节1.观测程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。2.考察增长浮点运算部件对性能的影响。ﻫ3.考察增长forward部件对性能的影响。ﻫ4.观测转移指令在转移成功和转移不成功时候的流水线开销。观测程序中出现的数据/控制/结构相关;指出程序中出现上述现象的指令组合。数据相关如下图所示,在ClockCycleDiagram窗口所想是的时空图中和Pipeline窗口中的流图中,第一次出现了R-Stall。接下来可以点击上图中的橘色窗口,则屏幕显示lbur3,0×0(r2)要在WB周期写回r3中的数据;而下一条指令seqir5,r3,0×a要在intEX周期中读取r3中的数据。上述过程发生了WR冲突,即写读相关。为了避免此类冲突,seqr5,r4,0×a的intEX指令延迟了一个周期进行。由此,相关指令为:控制相关由上图可以看出,在第4时钟周期:第一条指令处在MEM段;第二条命令处在intEX段;第三条指令出于aborted状态;第四条命令处在IF段。因素分析:jalInputUnsigned是无条件分支指令,但当第三个周期开始的时候,也就是jal这条指令被译码后才知道。此时,movi2fp已经执行,且将要执行的下一条命令在此外一个地址处,所以这条指令不会执行,这个时候就会发生控制相关。由此,发生控制相关的指令为:结构相关一方面,我们先来看一下执行过控制相关的时空图和Pipeline,如下图。当我们点击Pipeline中IF所相应的框框可以看到具体的该指令执行情况,如下图:上图表白了addir2,r2,0×1的具体信息。该指令与它前一条指令addr1,r1,r3发生了结构相关。并且由于此处的冲突,需要暂停2个周期。在ID段暂停后,则开始进图intEX段。所以这条指令(addir2,r2,0×1)你不能进入ID流水段,译码部分占用,发生了结构相关。该部分的指令为:考察增长浮点运算部件对性能的影响。该实验取N=6一方面通过,点击FloatingPointStageConfiguration来设立浮点运算部件的配置。由于实验手册上面规定Delay=4,所以我们将Delay这一栏改成4,而Count可以任意,为了对比,我们第一次浮点运算部件取所有为2,第二次浮点运算部件取所有为3。如下图所示:运营50个cycles之后,可以看到他们数据的对比:由此可见,浮点运算部件的增减对效率无影响。比较各个数据,发现没有变化。无论怎么增长浮点运算部件,记录结果都同样。因素在于此程序中浮点计算指令没有重叠,所以并行度没有增长,性能没有提高。3.考察增长forward部件对性能的影响。为了对比有无forward部件的性能。需要在中勾选enableforwarding,以及不勾选enableconfiguration来看性能数据的对比。不使用forward部件:使用forward部件:从上面的数据我们可以看出增长forwardi部件后RAW由本来占总时钟周期的26%减少至18%,RAW个数由本来的13减少至9。增长forward部件使得控制相关比例增长了。即,使用forward部件后,总的时钟周期减少,数据相关减少,流水线的性能得到一定的改善。观测转移指令在转移成功和转移不成功时候的流水线开销。我们假设,浮点部件设立Count=3,Delay=4;N=6。执行完毕后,查看条件转移分支,如下图所示:由上图可知,转移指令一共8条,成功转移2条(占25%),不成功为6条。所以,静态指令调度算法只能解决数据相关,条件转移结果与本来相比没有变化。即,若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有减少;若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,执行效率会下降。·实验总结本次实验中,重要碰见一个问题,就是在当初文献加载时没有成功,后来通过查询资料和自己的尝试,发现,在选择文献的顺序很关键,它决定了文献在存储器中出现的顺序。本次实验,重要通过对于三中相关的观测,分析出现相关时的指令,分析浮点运算部件和forward部件对性能的影响,观测转移指令在转移成功和不成功时的流水线开销,这些实验一步一步,通过WinDLX形象生动的表达,使我在实践中更加进一步的结识了流水线。实验三DLX解决器程序设计·实验目的学习使用DLX汇编语言编程,进一步分析相关现象·实验过程向量加法代码及性能分析一方面给据题目规定,需要纯熟掌握DLX编程语言,然后根据规范格式编写向量的代码。向量声明VectorLength:

.word

16

//声明向量长度Vector1:

.word

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

//声明两个向量

Vector1和Vector2Vector2:

.word

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

Result:

.space

4

//声明一个空间来存放打印的数据

Loop:

//循环体ld

f10,Vector1(r2)

ld

f12,Vector2(r2)

//读入两个提前声明的向量add

f4,f2,f0//加法运算

trap

5

//系统中断源代码运营结果分析当运营到如下图所示的时候,则表达运营结束。运营结果为接下来我们可以查看Statistics可以看到运营结果的数据显示,如下图所示。1)程序相关性分析结果

数据相关由上图的可以看出,该程序产生了11.31%的数据相关。所以当对当前指令的操作数寄存器进行操作(EX)的时候,前几条指令的运算结

果尚未写回(WB)结果寄存器,由此产生数据相关。

结构相关由于程序只简朴的做了一次加法,所以没有结构相关产生。

控制相关查看pipeline中可以看到,当执行到如下情况时,发生了控制相关。由Statistics中的可以看出,其控制相关发生了5.3%。分析可知,由于系统按照预测成功来执行指令,所以执行bnez后立即将其下一条指令trap

读进来。2)浮点运算部件带来的影响当我们通过设立浮点部件的个数,并将程序运营完毕,查看Statistics中的数据作对比。如下图所示。将浮点加法器由1个增长为4个后(左图为4个),可以由上图看出,程序执行的性能未得到提高。分析因素我们知道,由于该程序为产生浮点加法器的结构相关,所以增长浮点加法器的数量对程序执行的性能提高没有帮助。3)forward部件的影响

由上图的对比可以看到,当不勾选enableforwarding时,运营时间由283增长到381。所以forwarding技术为该程序带来的加速比为381/282=1.35转移成功和不成功

查看statistics中的ConditionalBranches选项,两者的下述相同,如下图所示。可以发现,由于系统按照预测成功来执行指令,所以执行

bnez后立即将其下一条指令trap读进来判断出是转移不成功时,系统对trap指令进行的操作被所有作废,转而去执行跳转到的指令id。双精度浮点加法求和代码及结果分析按照题目规定,自行又编写了一套程序来实现双精度浮点加法求和结果分析当运营到如下图所示时,运营结束,可以看到运营结果如下图所示。产看Statistics可以看到具体数据情况和产生相关的比例等。1)程序中出现的数据/控制/结构相关

控制相关:

数据相关由Statistics中的知道,发生了55.48%的数据相关。产看代码可以发现,产生的相关都为RW读写相关。它们分别为:addi

r1,r0,0subi

r2,r1,20subi

r2,r1,20beqz

r2,finishmultu

r3,r1,r4ld

f0,a(r3)ld

f2,b(r3)addd

f4,f0,f2addd

f4,f0,f2sd

r(r3),f4

控制相关由Statistics中的可以看到,发生了4.43%的控制相关。系统按照预测成功来执行指令,执行一条指令后立即将其下一条指令trap读进来。2)增长浮点运算部件对性能的影响。下图分别为浮点运算部件为1和4的时候数据情况对比。由上图的对比可知,当浮点运算部件个数给边后记录结果均相同,也就是其数量对该函数没有任何性能方面的改善。分期其因素为,这重要是由于函数中没有连续的浮点加指令,乘、

除指令。3)增长forward部件对性能的影响。

下图左侧为没有勾选enableforwarding时的运营数据结果,右侧为使用了forwarding技术。由上图的对比可以看出,增长forwarding技术后,流水线的加速比为:474/352=1.347流水线性能有明显改善。

4)转移指令在转移成功和转移不成功时候的流水线开销。

由ConditionalBranches的数据可以看出,该转移指令“not

taken”的情况占绝大多数(95.24%)。在一共的21中,发生了仅为1次,所以预测顺序取对流水线的性能是有利的。转移不成功时:顺序预取的下条指令可以直接在流水线中执行,保证流水线不断流;转移成功时:顺序预取的下条指令作废,需要转到转移地址处重新取指,流水线发生了断流现象。·实验总结在实验中,我重要碰到的问题是WinDLX所加载的.s文献不要出现中文格式,不然会导致加载失败(开始好几次为了方便我直接起名为“双精度浮点向量加.s”却怎么样也导入不成功);在编写双精度浮点数运算时有些对于指令掌握不纯熟,并且双精度double型运算指令,其所有的运算指令名称上面都要加上“d”才ok。而假如是单精度的,则需要添加字母“f”;另一方面,对于浮点数的相关设立,涉及状态寄存器和浮点寄存器都需要在实验之前查资料了解透彻,不然在实验中就会有语法错误。通过本次实验我对实验二所进行的数据相关、控制相关、结构相关的性能分析做了更进一步的了解,以及对于功能部件对流水线的影响,forwarding技术对流水线的影响,尚有就是静态指令调度等。通过自行编写向量矢量算法,在代码中初始化两个向量,按照分量顺序进行运算。当然,假如想要改变源向量,直接解决代码中的相关数据即可。总之,该实验重要着重对浮点运算以及对于流水线的相关影响及性能分析,使我受益匪浅。实验四代码优化·实验目的学习简朴编译优化方法,观测采用编译优化方法所带来的性能的提高。·实验原理采用静态调度方法重排指令序列,减少相关,优化程序·实验过程选择上一个实验的向量加法运算作为优化对象。优化后的代码如下图所示。当如下图所示的时候证明已经执行完毕。执行完毕后,我们点击Statistics查看运营结果数据分析。程序相关性分析结果

优化之后其中断数据显示为:优化前为:由上述两图对比可以看出,数据相关:其RAW相关由优化前的34.12%减少为20.57%,性能改善很多;结构相关没有发生改变;控制相关:由本来的3.94%变为4.75%,没有改善。因此,可以看出,我所进行的代码优化对性能方面改善并不是很强烈,重要影响还是在数据相关方面。2)增长浮点运算部件对性能的影响。上图左图为4个浮点部件执行结果,右图为原始默认1个浮点部件执行结果。由此可以看出,其部件个数对记录结果并无影响。因素为该运算过程中不存在结构相关,因此并行度没有增长,程序影响不大,部件增长对于系统的性能并没有改善。3)增长forward部件对性能的影响。

左图为使用forwading技术的记录结果。通过对比可以看出,使用forwarding技术之后执行周期少了316-283=33个时钟周期,在这些时钟周期中,forwarding技术重要在于消除了执行过程中的数据相关(由65个中断减少至32个)。因此,代码执行效率改善很多。转移指令在转移成功和转移不成功时候的流水线开销。由记录结果中的ConditionalBranches(如下图)可以看出,优化前和优化后的ConditionalBranches都为上图显示,优化对于转移指令并无影响。在本代码运营过程中,成功几率为93.75%,在进行一共16次转移中,taken一共15次。分析因素可以知道,预测成功执行指令,当判断转移不成功是,系统对trap指令不再执行,进行跳转。·实验总结+实习体会本次实验重要是对上一个实验中的代码进行优化,使我在做实验的过程中掌握了进行代码优化的方法,以及相关性的分析。而相关性分析在我看来是重点,它关系到能否进行优化以及怎么优化。一方面需要分析程序中产生的相关性,代码优化的目的就是减少相关性的发生,提高流水线的效率。通过上述的实验报告和数据对比,可以看到,代码优化我做到了。实习体会:其实总的来说这几次实验难度不大,重要还是将课上老师所讲的融入实验当中。其中forwarding技术和预测技术都是课上老师具体讲过的,所以对于实验的理解起来更容易一些。理解之后,通过实验结果的记录数据可以客观的看到这些技术对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论