计算机系统结构实验报告要点.doc_第1页
计算机系统结构实验报告要点.doc_第2页
计算机系统结构实验报告要点.doc_第3页
计算机系统结构实验报告要点.doc_第4页
计算机系统结构实验报告要点.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

精品文档实验一 流水线相关一. 实验目的1. 熟练掌握WinDLX 模拟器的操作和使用,熟悉DLX 指令集结构及其特点;2. 加深对计算机流水线基本概念的理解;3. 进一步了解DLX 基本流水线各段的功能以及基本操作;4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU 性能的影响;5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。二. 实验内容1. 用WinDLX 模拟器执行下列三个程序(任选一个):l 求阶乘程序fact.sl 求最大公倍数程序gcm.sl 求素数程序prim.s 分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU 中寄存器和存储器的内容。熟练掌握WinDLX 的操作和使用。 注意:fact.s 中调用了input.s 中的输入子程序。load 程序时,要两个程序一起装入(都select 后再点击load)。gcm.s 也是如此。2. 用WinDLX 运行程序structure_d.s,通过模拟:l 找出存在结构相关的指令对以及导致结构相关的部件;l 记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;l 论述结构相关对CPU 性能的影响,讨论解决结构相关的方法。3. 在不采用定向技术的情况下(去掉Configuration 菜单中Enable Forwarding 选项前的勾选符),用WinDLX 运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。4. 在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX 再次运行程序data_d.s。重复上述3 中的工作,并计算采用定向技术后性能提高的倍数。三实验过程和截图1.模拟执行fact.s和input.s流水线的状态如下:在执行求阶乘程序fact.s之后,输入值5,查看寄存器的值为120,结果正确。2. 执行程序structure_d.s之后的实验数据如下图:由实验数据显示:(1) 该程序没有结构相关;(2) 该程序总共暂停的时钟周期数为:108个时钟周期,暂停的时钟周期数占总的时钟周期数的百分比为3. 不采用定向技术,运行data_d.s程序,实验数据如下图:由实验数据显示:(1) 由数据相关引起的暂停的时钟周期数为:104(2) 程序执行的总的时钟周期数为:202(3) 暂停的时钟周期数占总的时钟周期数的百分比:4. 采用定向技术执行程序data_d.s,实验数据如下图:由实验数据显示:(1) 程序由于数据相关引起的暂停的时候周期数为:30;(2) 程序执行的总的时钟周期数为:128;(3) 暂停的时钟周期数占总的时钟周期数的百分比为:30/128=23.44%(4) CPU性能提高的倍数:202/128=1.58。4 实验体会本次实验是计算机系统结构该课程的第一次实验,刚刚开始的时候由于不会使用WINDLX软件,所以导致得到了一些错误的实验数据,但是后来在老师和同学的帮助下渐渐的熟悉了该软件对于实验的作用,也学会了如何运用该软件来观察程序在流水线的状态下的执行,我们可以看到实验的真实数据,流水线的时空图等等,这让我们对流水线的的认识更加深刻。实验二 循环展开及指令调度一实验目的1. 加深对循环级并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解;2. 熟悉用指令调度技术来解决流水线中的数据相关的方法;3. 了解循环展开、指令调度等技术对CPU 性能的改进。二实验内容1用指令调度技术解决流水线中的结构相关与数据相关(1) 用DLX 汇编语言编写代码文件*.s,程序中应包括数据相关与结构相关(假设:加法乘法除法部件各有2 个,延迟时间都是3 个时钟周期)(2) 通过Configuration 菜单中的 “Floating point stages” 选项,把加法乘法除法部件的个数设置为2 个,把延迟都设置为3 个时钟周期;(3) 用WinDLX 运行程序。记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总时钟周期数;(4) 采用指令调度技术对程序进行指令调度,消除相关;(5) 用WinDLX 运行调度后的程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数;(6) 根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU 性能的意义。2. 用循环展开、寄存器换名以及指令调度提高性能(1) 用DLX 汇编语言编写代码文件*.s,程序中包含一个循环次数为4 的整数倍的简单循环;(2) 用WinDLX 运行该程序。记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;(3) 将循环展开3 次,将4 个循环体组成的代码代替原来的循环体,并对程序做相应的修改。然后对新的循环体进行寄存器换名和指令调度;(4) 用WinDLX 运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;(5) 根据记录结果,比较循环展开、指令调度前后的性能。三实验过程和截图1.(1)用DLX汇编语言写的代码如下:Main: addf f1,f2,f3;addf f3,f2,f1;addf f5,f6,f5;addf f4,f6,f4;multf f8,f7,f6;multf f11,f10,f9;Finish:trap 0;(2) 用WinDLX运行程序,实验数据如下图:由实验数据显示:(1) 数据相关发生次数:2(2) 结构相关发生次数:1(3) 程序执行的总的时钟周期数:16(3)采用指令调度技术实验数据如下图:进行指令调度之后的指令代码:main: addf f1,f2,f3;addf f5,f6,f5;multf f8,f7,f6;addf f4,f6,f4;multf f11,f10,f9;addf f3,f2,f1; Finish: trap 0由实验数据显示:(1) 消除了数据相关,使数据相关的次数为0;(2) 消除了结构相关,使结构相关的次数为0;(3) 程序执行的总的时钟周期数为13;(4) CPU性能提升:16/13=1.23倍;2. 用循环展开、寄存器换名以及指令调度提高性能(1) 使用DLX汇编语言写的循环指令代码:main:addi r2,r0,#0addi r1,r0,#8 loop:addi r2,r2,#1addi r1,r1,#-1bnez r1,loopFinish: trap 0(2) 用WinDLX执行程序,实验数据如下图:由实验数据显示:(1) 数据相关发生的次数:8;(2) 结构相关发生的次数:0;(3) 程序执行的总的时钟周期数:46;(3)采用循环展开技术,将指令展开七次,代码如下:main:addi r2,r0,#0addi r1,r0,#8 ;loop:addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,#-1;bnez r1,loopFinish: trap 0用WinDLX执行该程序,实验数据如下:由实验数据显示:(1) 数据相关次数:0(2) 结构相关次数:0(3) 程序执行的总的时钟周期数:23(4) CPU性能提高了1倍四实验体会 该实验的目的是让我们加深对指令调度和循环展开技术的了解,在大多数指令中会涉及到循环指令,循环指令中存在着数据相关、结构相关和控制相关等等,这些相关的存在都影响着CPU的性能,要想得到更高的效率,所以我们需要减少这些相关的次数,甚至消除这些相关。循环展开和指令调度就是消除这些相关来提高CPU性能的技术,由实验可以看出,指令调度和循环展开对于相关的减少和性能的提高具有显著的作用。 实验三 记分牌算法和Tomasulo 算法一实验目的1. 掌握DLXview 模拟器的使用方法;2. 进一步理解指令动态调度的基本思想,了解指令动态调度的基本过程与方法;3. 理解记分牌算法和Tomasulo 算法的基本思想,了解它们的基本结构、运行过程;4. 比较分析基本流水线与记分牌算法和Tomasulo 算法的性能及优缺点。二实验内容1. 用DLX 汇编语言编写代码文件*.s(程序中应包括指令的数据相关、控制相关以及结构相关),以及相关的初始化寄存器文件*.i 和数据文件*.d;2. 观察程序中出现的数据相关、控制相关、结构相关,并指出三种相关的指令组合;3. 将自己编写的程序*.s、*.i、*.d 装载到DLXview 模拟器上,(1) 分别用基本流水线、记分牌算法和Tomasulo 算法模拟,针对每一种模拟做如下分析: 统计程序的执行周期数和流水线中的暂停时钟周期数; 改变功能部件数目重新模拟,观察并记录性能的改变; 改变功能部件延迟重新模拟,观察并记录性能的改变;论述功能部件数目、功能部件延迟对性能的影响。(2) 记录运行记分牌算法时的功能部件状态表和指令状态表;(3) 记录运行Tomasulo 算法时的指令状态表和保留站信息;3 实验过程和截图1. 用DLX汇编语言编写的代码如下:addr4, r0, r0addr5, r0, r0addir1, r0, 5LOOP:subir1, r1, 1multff4,f4,f4multff5,f5,f5multff6,f6,f6multff7,f7,f7addir4, r4, 2addir5, r5, 10bnezr1, LOOPnopaddr6, r4, r5nopnopnopnoptrap#02. 观察程序中出现的数据相关、控制相关、结构相关由实验数据显示:(1) 数据相关引起的暂停的时钟周期数:2(2) 结构相关引起的暂停的时钟周期数:60(3) 控制相关引起的暂停的时钟周期数:43. 将程序加载到DLXview模拟器上运行:(1) BasicPipeLine状态下执行程序截图如下:基本流水线下程序执行的时钟周期数是53;(2) ScoreBoard算法下执行该程序,截图如下:在ScoreBoard算法中程序执行的总的时钟周期数为168。(3) Tomasulo算法下执行该程序,截图如下:在Tomasulo算法下该程序的执行时间是140。四实验体会该实验的目的首先是让我们熟悉DLXview该模拟器,让我们能够熟练的在该平台上做实验,实验内容包括基本流水线、ScoreBoard算法和Tomasulo算法。在该实验中,我了解到程序的数据相关、结构相关和控制相关引起时钟周期暂停的原因和影响。ScoreBoard算法和Tomasulo算法是动态调度的算法,其中ScoreBoard算法的思想是将基本的流水线分为四个段:流出、取操作数、执行、写结果,在该算法中能够自动的消除RAW相关,但是不能消除WAR和WAW相关;Tomasulo算法的思想是顺序流出、乱序执行和乱序写结果,该算法能够通过寄存器换名消除WAR和WAW相关,通过推迟执行能够减少RAW相关。实验四 Cache 性能分析一实验目的1. 加深对Cache 的基本概念、基本组织结构以及基本工作原理的理解;2. 掌握Cache 容量、相联度、块大小对Cache 性能的影响;3. 掌握降低Cache 不命中率的各种方法以及这些方法对提高Cache 性能的好处;4. 理解LRU 与随机法的基本思想以及它们对Cache 性能的影响。二实验内容首先要掌握MyCache 模拟器的使用方法。1. Cache 容量对不命中率的影响1. 启动MyCache。2. 用鼠标点击“复位”按钮,把各参数设置为默认值。3. 选择一个地址流文件。方法:选择“访问地址”下的“地址流文件”选项,然后点击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。4. 选择不同的Cache 容量,包括:2KB,4KB,8KB,16KB,32KB,64KB,128KB,256KB,分别执行模拟器(点击“执行到底”按钮),然后在表1 中记录各种情况下的不命中率。5. 以容量为横坐标,画出不命中率随Cache 容量变化而变化的曲线。并指明地址流文件名。6. 根据该模拟结果,你能得出什么结论?2. 相联度对不命中率的影响1. 用鼠标点击“复位”按钮,把各参数设置为默认值。这时的Cache 容量为64KB。2. 选择一个地址流文件。方法:选择“访问地址”下的“地址流文件”选项,然后点击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。3. 选择不同的Cache 相联度,包括:直接映象,2 路,4 路,8 路,16 路,32 路,分别执行模拟器(点击“执行到底”按钮),然后在表 2 中记录各种情况下的不命中率。4. 把Cache 的容量设置为256KB,重复上一步的工作。5. 以相联度为横坐标,画出在64KB 和256KB 的情况下不命中率随Cache 相联度变化而变化的曲线。并指明地址流文件名。6. 根据该模拟结果,你能得出什么结论?3. Cache 块大小对不命中率的影响1. 用鼠标点击“复位”按钮,把各参数设置为默认值。2. 选择一个地址流文件。方法:选择“访问地址”下的“地址流文件”选项,然后点击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。3. 选择不同的Cache 块大小,包括:16B,32B,64B,128B,256B,对于Cache 的各种容量,包括:2KB,8KB,32KB,128KB,512KB,分别执行模拟器(点击“执行到底”按钮),然后在表 4 中记录各种情况下的不命中率。4. 分析Cache 块大小对不命中率的影响。4. 替换算法对不命中率的影响1. 用鼠标点击“复位”按钮,把各参数设置为默认值。2. 选择一个地址流文件。方法:选择“访问地址”下的“地址流文件”选项,然后点击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。3. 对于不同的替换算法、Cache 容量和相联度,分别执行模拟器(点击“执行到底”按钮),然后在表 5 中记录各种情况下的不命中率。4. 分析不同的替换算法对Cache 不命中率的影响。5. 混合Cache 和分离Cache 的比较1. 用鼠标点击“复位”按钮,把各参数设置为默认值。2. 选择一个地址流文件。方法:选择“访问地址”下的“地址流文件”选项,然后点击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。3. 分别在分离Cache 和混合Cache 的情况下,选择不同的Cache 容量,包括: 4KB,8KB,16KB,32KB,64KB,128KB,256KB,分别执行模拟器(点击“执行到底”按钮),然后在表 6 中记录各种情况下的不命中率。4. 对模拟结果进行分析。三实验过程和截图1.Cache 容量对不命中率的影响地址流文件名:cc1.dinCache容量大小对实验的影响Cache容量2KB4KB8KB16KB32KB64KB128KB256KB不命中率14.22%10.46%7.59%4.78%2.84%1.97%1.26%0.98%下面折线图显示的是Cache容量大小对不命中率的影响(地址流文件名:cc1.din): 由折线图可以看出:Cache的容量越大,不命中率越小。2. 相联度对不命中率的影响地址流文件名:cc1.din64KB时:相联度对实验的影响相联度12481632不命中率1.97%1.15%0.99%0.93%0.92%0.91%256KB时:相联度对实验的影响相联度12481632不命中率0.98%0.78%0.74%0.73%0.71%0.71%下面折线图显示的分别是Cache容量为64KB和256KB下相联度对不命中率的影响(地址流文件名:cc1.din): 由折线图可以看出:当Cache容量为64KB时,相联度越大,不命中率越小;并且在1路到2路下降趋势明显,2路之后下降的趋势不算太明显。 由折线图可以看出:当Cache容量为256KB时,相联度越大,不命中率越小;并且在1路到2路下降趋势明显,2路之后下降的趋势不算太明显。此外,对于64KB的Cache和256KB的Cache来说,256KB的Cache的不命中率较小。3. Cache 块大小对不命中率的影响地址流文件名:cc1.dinCache块大小对实验的影响块大小(B)Cache的容量(KB)28321285121618.61%10.12%3.81%1.95%1.42%3214.22%7.59%2.84%1.26%0.87%6412.62%6.47%2.36%0.92%0.60%12812.98%6.35%2.13%0.76%0.47%25616.04%7.29%2.15%0.71%0.40%下面折线图显示的是不同的块大小对不命中率的影响: 由该折线图可以看出:不命中率随着块大小的增加先下降,后上升,这里值得提出的是,不命中率先下降的原因是块大小越大,容量失效减小;其后不命中率上升的原因是冲突失效增大了。4. 替换算法对不命中率的影响地址流文件名:cc1.din替换算法对实验的影响Cache的容量相联度2路4路8路LRU随机算法LRU随机算法LRU随机算法16KB3.62%4.49%2.96%4.44%2.74%5.39%64KB1.15%1.40%0.99%1.61%0.93%1.54%256KB0.78%0.83%0.74%0.76%0.73%0.72%1MB0.71%0.71%0.70%0.70%0.70%0.70%由该表格可以看出:

温馨提示

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

评论

0/150

提交评论