计算机系统结构实验报告.docx
- 文档编号:11373268
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:13
- 大小:122.54KB
计算机系统结构实验报告.docx
《计算机系统结构实验报告.docx》由会员分享,可在线阅读,更多相关《计算机系统结构实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
计算机系统结构实验报告
计算机系统结构实验报告
《计算机系统结构》实验报告
专业班级
姓名
学号
实验一熟悉模拟器WinDLX的使用
一、实验目的
1.熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点。
2.加深对计算机流水线基本概念的理解。
3.了解DLX基本流水线各段的功能以及基本操作。
二、实验平台
WinDLX模拟器
三、实验内容和步骤
1.WinDLX的安装
WinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,能够演示DLX流水线是如何工作的。
该模拟器可以装载DLX汇编语言程序(后缀为“.s”的文件),然后单步、设断点或是连续执行该程序。
CPU的寄存器、流水线、I/O和存储器都可以用图形表示出来,以形象生动的方式描述DLX流水线的工作过程。
模拟器还提供了对流水线操作的统计功能,便于对流水线进行性能分析。
WinDLX包含windlx.exe和windlx.hlp文件。
同时,还需要一些扩展名为.s的汇编代码文件。
按以下步骤在Windows下安装WinDLX:
(1)WinDLX创建目录,例如D:
\WINDLX
(2)解压WinDLX软件包或拷贝所有的WinDLX文件(至少包含windlx.exe,windlx.hlp)到这个WinDLX目录。
2.启动和配置WinDLX
双击WinDLX图标,将出现一个带有六个图标的主窗口,如图1-1。
双击这些图标会弹出子窗口。
图1-1WinDLX启动窗口
为了初始化模拟器,点击File菜单中的Resetall菜单项,弹出一个“ResetDLX”对话框。
然后点击窗口中的“确认”按钮即可。
WinDLX可以在多种配置下工作。
可以改变流水线的结构和时间要求、存储器大小和其他几个控制模拟的参数。
点击Configuration→FloatingPointStages(点击Configuration打开菜单,然后点击FloatingPointStages菜单项),选择如图1-2标准配置。
如果需要,可以通过点击相应区域来改变设置。
然后,点击OK返回主窗口。
点击Configuration→MemorySize,可以设置模拟处理器的存储器大小。
应设置为0x8000,然后,点击OK返回主窗口。
在Configuration菜单中的其他三个配置也可以设置,它们是:
Symbolicaddresses(符号地址),absoluteCycleCount(周期)和EnableForwarding。
点击相应菜单项后,在它的旁边将显示一个小钩。
图1-2配置FloatingPointStages菜单项
3.装载测试程序
在开始模拟之前,至少应装入一个程序到主存。
我们选择fact.s作为例子,fact.s计算一个整型值的阶乘,它的运行还需要一个辅助文件input.s,input.s中包含一个子程序,它读标准输入(键盘)并将值存入DLX处理器的通用寄存器R1中。
为此,选择File/LoadCodeorData,窗口中会列出目录中所有汇编程序。
按如下步骤操作,可将这两个文件装入主存。
●点击fact.s
●点击select按钮
●点击input.s
●点击select按钮
●点击load按钮
选择文件的顺序很关键,它决定了文件在存储器中出现的顺序。
对话框中会显示信息“File(s)loadedsuccessfully.ResetDLX?
”,点击确认按钮。
这样,文件就已被装入到主存储器中了。
现在就可以开始模拟工作了。
4.模拟
在主窗口中,可以看见六个图标,它们分别为“Register”,“Code”,“Pipeline”,“ClockCycleDiagram”,“Statistics”和“Breakpoints”。
点击其中任何一个将弹出一个新窗口(子窗口)。
在模拟过程中将介绍每一个窗口的特性和用法。
(1)Pipeline窗口
首先来看一下DLX处理器的内部结构。
双击图标Pipeline,出现一个子窗口,窗口中以图表形式显示了DLX的五段流水线,包括取指段(IF)、译码段(ID)、执行段(EX)、访存段(MEM)和写回段(WB)。
此图显示DLX处理器的五个流水段和浮点操作(加/减,乘和除)的单元,如图1-3。
尽可能地扩大此窗口,以便处于不同流水段的指令都能够在图表中显示。
图1-3Pipeline窗口
不同指令在执行段的操作是不同的,而且不同操作在该段的延迟也是不同的。
为此,DLX流水线的执行段分为4个单元,它们分别是:
intEX单元(整数操作),faddEX单元(浮点加减),fmulEX(浮点乘法),fdivEX(浮点除法),每个单元设置的个数和其延迟时间已经在前面通过Configuration→FloatingPointStages进行了设置,其中intEX的延迟为1(IF段,ID段,MEM段和WB段的延迟均为1),faddEX、fmulEX和fdivEX的延迟分别为2、5和19。
可以修改其设置,然后再观察程序的执行结果,从而得到你所需要的结论。
(2)Code窗口
双击Code窗口图标,将看到代表存储器内容的三栏信息,从左到右依次为:
地址(符号或数字)、命令的十六进制机器代码和汇编命令,如图1-4。
图1-4Code窗口中内容
现在,点击主窗口中的Execution开始模拟。
在出现的下拉式菜单中,点击SingleCycle或按F7键。
这时,窗口中带有地址“$TEXT”的第一行变成黄色。
按下F7键,模拟就向前执行一步,第一行的颜色变成橘黄色,下一行变成黄色。
这些不同颜色指明命令处于流水线的哪一段。
如果Pipeline窗口已经关闭,请双击相应图标重新打开它。
如果窗口足够大,你能够看到命令“jalInputUnsigned”在IF段,“addir1,r0,0x1000”在第二段ID。
其他方框中带有一个“X”标志,表明没有处理有效信息。
(3)ClockCycleDiagram窗口
它显示流水线的时空图,使所有子窗口图标化,双击打开ClockCycleDiagram窗口。
图1-5流水线的时空图
在窗口中,将看到模拟正在第四时钟周期,第一条命令正在MEM段,第二条命令在intEX段,第四条命令在IF段。
而第三条命令指示为"aborted"。
其原因是:
第二条命令(jal)是无条件分支指令,但只有在第三个时钟周期,jal指令被译码后才知道,这时,下一条命令movi2fp已经取出,但需执行的下一条命令在另一个地址处,因而,movi2fp的执行应被取消,在流水线中留下气泡。
jal的分支地址命名为"InputUnsigned"。
为找到此符号地址的实际值,点击主窗口中的Memory→Symbols,出现的子窗口中显示相应的符号和对应的实际值。
在"Sort:
"区域选定"name",使它们按名称排序,而不是按数值排序。
数字后的"G"代表全局符号,"L"代表局部符号。
"input"中的"InputUnsigned"是一个全局符号,它的实际值为0x144,用作地址。
点击OK按纽关闭窗口。
再一次点击F7,第一条命令(addi)到达流水线的最后一段。
如果想了解某条命令执行后处理器内部会发生什么?
只要对准Clockcyclediagram窗口中相应命令所在行,然后双击它,弹出一个新窗口。
窗口中会详细显示每一个流水段处理器内部的执行动作。
观察完后,点击OK按钮关闭窗口。
双击第三行(movi2fp),你会看到它只执行了第一段(IF),这是因为出现跳转而被取消。
双击Code窗口中的某一行或者Pipeline窗口中的某一段,可以出现Information窗口。
(4)Breakpoint窗口
按F7键以单步方式运行程序,可以清楚的看到每条指令在流水线各个段的具体操作情况,除此之外,DLX模拟器还提供了其他几种运行程序的方式。
单击主窗口中Execute子菜单,可以看到DLX模拟器共提供了4种运行程序的方式。
这些运行方式为我们了解DLX流水线或调试程序提供了非常方便的环境。
●SingleCycle(或按F7键)就是单步执行方式;
●MultipleCycles(或按F8键)是多步执行方式,选择该方式,会在屏幕上出现一个窗口,询问周期个数,它表示流水线从当前位置继续向前执行的周期个数,输入你需要的值,然后按OK键,流水线就会向前执行相应的周期个数;
●Run(或按F5键)是运行方式,选择该方式,流水线就会从当前位置一直运行到程序结束;
●Runto(或按F4键)是断点方式,选择该方式,会在屏幕上出现一个窗口,要求指定某条指令的地址和流水线的某个段,表示让流水线运行到该条指令在流水线该段的时候暂停,输入你需要的指令,然后按OK键,流水线就会运行到指定的位置后停下来。
激活Breakpoints子窗口,里面什么都没有。
现在,请指向Code窗口中包含指令trap0x5的0x0000013c行,该指令是写屏幕的系统调用。
单击指令行,然后点击主窗口菜单Code,单击SetBreakpoint(确保指令行仍被标记),将弹出一个“SetBreakpoint”窗口。
通过此窗口,你可以选择指令运行到流水线的哪一阶段时,程序停止执行。
注意,在Address栏里标记的是trap0x5指令的地址,而且是相对寻址方式。
该子窗口缺省设置选择的指令在流水线的ID段时停止程序。
点击OK关闭窗口。
在Code窗口中,我们看到指令trap0x5行上出现了“BID”字样,它表示当本指令在译码段时,程序中止执行。
再次激活Breakpoints子窗口,就可以看到里面标记了断点设置的详细情况:
在什么地址,在什么段,是什么指令。
根据需要,你可以设置多个断点,Reakpoints子窗口将记录所有断点的设置情况。
删除断点时,首先在Code子窗口中选中需要删除断点的指令行,然后点击主窗口中的Code选项,再点击DeleteBreakpoint选项,即可删除断点。
点击Execution→Run或按F5键,程序就会连续向前运行,直到碰到我们设置的断点后停下来,,按OK按钮关闭。
现在你可以激活任何一个子窗口,观察你希望看到的结果,然后按F5键继续运行,屏幕上会出现DLX-Standard–I/O对话框,要求你输入一个整型值。
输入20后按回车键,程序会继续模拟运行,直至出现提示框“Trap#0occurred”表明最后一条指令trap0已经执行,Trap指令中编号“0”没有定义,只是用来终止程序。
点击主窗口中Execute菜单下“DisplayDLX-I/O...”选项,你会看到输出结果(20的阶乘)为2.4329e+18。
点击OK关闭窗口。
(5)Register窗口
双击Register子窗口,可以看到DLX的全部寄存器及其内容,观察左上角的PC寄存器,其值为0x00000100,也就是说程序会从内存0x00000100处开始执行。
在程序执行过程中,随时可以点击Register子窗口来观察各个寄存器内容的变化。
看一下R1到R5的值。
按F5使模拟继续运行到下一个断点处,有些值将发生改变,指令lw从主存中取数到寄存器中。
(6)Statistics窗口
双击子窗口Statistics,可以看到该窗口提供了各个方面的信息:
模拟中硬件配置情况、暂停及原因、条件分支、Load/Store指令、浮点指令和traps。
窗口中给出事件发生的次数和百分比。
利用这些数据,我们可以定量的比较各种改善流水线性能的技术对程序运行的影响情况。
在静态窗口中我们可以比较一下不同配置对模拟的影响。
现在我们看一看定向的作用。
在前面的模拟过程中,我们采用了定向。
如果不采用定向,执行时间将会怎样呢?
我们先看一下Statistics窗口中的各种统计数字:
总的周期数(215)和暂停数(17RAW,25Control,12Trap;54Total),然后关闭窗口。
点击Configuration中的EnableForwarding使定向无效(去掉小钩),打开断点Breakpoints图标并点击Breakpoints菜单,删除所有断点,然后按F5,键入20后,按Enter,模拟程序一直运行到结束。
重新查看静态窗口,你会看到控制暂停和Trap暂停仍然是同样的值,而RAW暂停从17变成了53,总的模拟周期数增加到236。
利用这些值,你能够计算定向技术带来的加速比:
236/215=1.098
DLXforwarded比DLXnotforwarded快9.8%。
以上通过计算一个整型值的阶乘fact.s例子介绍了WinDLX的重要特性,对流水线和DLX的操作类型有了一定的了解。
如需要更深入地了解WinDLX请参阅“帮助”。
实验二流水线中的相关
一、实验目的
1.进一步了解DLX基本流水线各段的功能以及基本操作;
2.加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;
3.了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。
二、实验平台
WinDLX模拟器
三、实验内容和步骤
1.用WinDLX运行程序structure_d.s
(1)找出存在结构相关的指令对以及导致结构相关的部件。
(2)记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
(3)论述结构相关对CPU性能的影响,讨论解决结构相关的方法。
(4)参考运行结果:
点击Statistics窗口,可以看到总的周期数为139,总的暂停数为42,其中数据相关暂停数为30,占总执行周期数的百分比为21.58%;控制相关暂停数为9,占总执行周期数的百分比为6.47%;中断暂停时钟周期数Trap stalls为3,占总执行周期数的百分比为2.16%。
2.用WinDLX运行程序data_d.s
1)在不采用定向技术的情况下(去掉Configuration菜单中EnableForwarding选项前的勾选符),用WinDLX运行程序data_d.s。
记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
(2)在采用定向技术的情况下(勾选EnableForwarding),用WinDLX再次运行程序data_d.s。
记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
(3)根据上面记录的数据,计算采用定向技术后性能提高的倍数。
(4)参考运行结果:
在不采用定向技术的情况下,运行程序。
打开静态窗口,可以看到,总的周期数为202,总的暂停数为116,其中数据相关暂停数为104,占总执行周期数的百分比为51.48%;控制相关暂停数为9,占总执行周期数的百分比为4.46%;中断暂停时钟周期数Trap stalls为3,占总执行周期数的百分比为1.48%。
在采用定向技术后,运行程序。
再次打开静态窗口,可以看到,总的周期数变为128,总的暂停数为42,其中数据相关暂停数为30,占总执行周期数的百分比为23.44%;控制相关暂停数仍然为9,占总执行周期数的百分比为7.32%;中断暂停时钟周期数Trap stalls仍然为3,占总执行周期数的百分比为2.34%。
由上述的值可以看到不采用定向技术时总的周期数为202,采用了定向技术后总的周期数变为128,由此可以计算定向技术带来的加速比202/128=1.578, DLXforwarded 比DLXnot forwarded 快了57.8%。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 结构 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)