2023年计算机系统结构实验报告新编_第1页
2023年计算机系统结构实验报告新编_第2页
2023年计算机系统结构实验报告新编_第3页
2023年计算机系统结构实验报告新编_第4页
2023年计算机系统结构实验报告新编_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

《计算机系统结构》实验报告

专业班级__________________________________

姓名___________________________________

学号

实验一熟悉模拟器WinDLX的使用

一、实验目的

1.纯熟掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点。

2.加深对计算机流水线基本概念的理解。

3.了解DLX基本流水线各段的功能以及基本操作。

二、实验平台

WinDLX模拟器

三、实验内容和环节

1.WinDLX的安装

WinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,可以演示DLX流水线是

如何工作的。该模拟器可以装载DLX汇编语言程序(后缀为s”的文献),然后单步、设

断点或是连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以用图形表达出来,

以形象生动的方式描述DLX流水线的工作过程。模拟器还提供了对流水线操作的记录功能,

便于对流水线进行性能分析。

WinDLX包含windlx.exe和windlx.hip文献。同时,还需要一些扩展名为.s的

汇编代码文献。按以下环节在Windows下安装WinDLX:

(1)WinDLX创建目录,例如D:\WINDLX

(2)解压WinDLX软件包或拷贝所有的WinDLX文献(至少包含windlx.exe,wind1

x.hip)到这个WinDLX目录。

2.启动和配置WinDLX

双击WinDLX图标,将出现一个带有六个图标的主窗口,如图1一1。双击这些图标会弹

出子窗口。

图1-1WinDLX启动窗口

为了初始化模拟器,点击File菜单中的Reseta11菜单项,弹出一个"ResetD

LX”对话框。然后点击窗口中的“确认”按钮即可。WinDLX可以在多种配置下工作。

可以改变流水线的结构和时间规定、存储器大小和其他几个控制模拟的参数。点击Config

uration—•FloatingPointStages(点击Configuration打开菜单,然后点击Floa

tingPointStages菜单项),选择如图『2标准配置。假如需要,可以通过点击相应区

域来改变设立。然后,点击0K返回主窗口。点击Configuration—MemorySize,

可以设立模拟解决器的存储器大小。应设立为0x8000,然后,点击OK返回主窗口。

在Configuration菜单中的其他三个配置也可以设立,它们是:Symbolicaddre

sses(符号地址),absoluteCyc1eCount(周期)和EnableForwarding。

点击相应菜单项后,在它的旁边将显示一个小钩。

FloatingPointStageConfigura...口

Count:Delay:

AdditionUnits:12

MultiplicationUnits:1-5

DivisionUnits:1F

NumberofUnitsineachClass:1<=M<=&

Delay(ClockCycles):1<=N<=50

WARNING:Ifyouchangethevalues,theprocessor

willberesetautomatically!

QK|Cancel

图l-2配置FloatingPointStages菜单项

3.装载测试程序

在开始模拟之前,至少应装入一个程序到主存。我们选择fact.s作为例子,fact.s

计算一个整型值的阶乘,它的运营还需要一个辅助文献input.s,input,s中包含一个

子程序,它读标准输入(键盘)并将值存入DLX解决器的通用寄存器R1中。为此,选择File

/LoadCodeorData,窗口中会列出目录中所有汇编程序。按如下环节操作,可将这两

个文献装入主存。

•点击fact,s

•点击select按钮

•点击input.s

•点击select按钮

•点击1oad按钮

选择文献的顺序很关键,它决定了文献在存储器中出现的顺序。对话框中会显示信息“F

ile(s)loadedsuccessfully.ResetDLX?",点击确认按钮。这样,文献就已被

装入到主存储器中了。现在就可以开始模拟工作了。

4.模拟

在主窗口中,可以看见六个图标,它们分别为“Register",“Code”,“Pipelin

e","ClockCycleDiagram","Statistics"和"Breakpoints点击其中任何

一个将弹出一个新窗口(子窗口)。在模拟过程中将介绍每一个窗口的特性和用法。

(1)Pipeline窗口

一方面来看一下DLX解决器的内部结构。双击图标Pipeline,出现一个子窗口,窗口

中以图表形式显示了DLX的五段流水线,涉及取指段(1F)、译码段(ID)、执行段(EX)、

访存段(MEM)和写回段(WB)。此图显示DLX解决器的五个流水段和浮点操作(加/减,乘

和除)的单元,如图1-3。尽也许地扩大此窗口,以便处在不同流水段的指令都可以在图表

中显示。

图1-3Pipe1ine窗口

不同指令在执行段的操作是不同的,并且不同操作在该段的延迟也是不同的。为此,DLX

流水线的执行段分为4个单元,它们分别是:intEX单元(整数操作),faddEX单元(浮点加

减),fmulEX(浮点乘法),fdivEX(浮点除法),每个单元设立的个数和其延迟时间已经在

前面通过ConfigurationfFloatingPointStages进行了设立,其中intEX

的延迟为1(IF段,ID段,MEM段和WB段的延迟均为1),£2<1(^、而111£乂和£田

vEX的延迟分别为2、5和19。可以修改其设立,然后再观测程序的执行结果,从而得到

你所需要的结论。

(2)Code窗口

双击Code窗口图标,将看到代表存储器内容的三栏信息,从左到右依次为:地址

(符号或数字)、命令的十六进制机器代码和汇编命令,如图1-4。

1HCode-口

$TEXT0x20011000addir1,rO,Ox1OOO

main+0x40x0c00003cjalInputUnsigned

main+0x80x00205035movi2fpf10j1

main+Oxc0x0540000dcvti2dfOFIO

main+0x100x20020001addir2j0z0x1

main+0x140x00405835movi2fpf11/2

main+0x180x05601OOdcvti2dJ2J11

main+0x1c0x00402033movdf4J2

factLoop0x0404001cledfOJ4

0x000001240x1800000cbfptfactFinish

0x000001280x04401006multdf2J2J0

0x0000012c0x04040005subdf。加J4

0x00000130OxObffffecjfactLoop

0x000001340xbc02102csdPrintfValue(rO)J2

0x000001380x200e1028addifl4/0,0x1028

0x0000013c0x44000005trap0x5

0x000001400x44000000tr叩0x0j

nvpnnnmddFlvacrPlHA4^IAI/问J

图1-4Code窗口中内容

现在,点击主窗口中的Execution开始模拟。在出现的下拉式菜单中,点击Sin

gleCycle或按F7键。

这时,窗口中带有地址“$TEXT"的第一行变成黄色。按下F7键,模拟就向前执行一

步,第一行的颜色变成橘黄色,下一行变成黄色。这些不同颜色指明命令处在流水线的哪一

段。假如Pipeline窗口已经关闭,请双击相应图标重新打开它。假如窗口足够大,你可以

看到命令"jalInputUnsigned”在IF段,“addir1,rO,0x1000”在第二段

ID。其他方框中带有一个“X”标志,表白没有解决有效信息。

(3)ClockCycleDiagram窗口

它显示流水线的时空图,使所有子窗口图标化,双击打开C1ockCycleDiagram窗

口。

图1-5流水线的时空图

在窗口中,将看到模拟正在第四时钟周期,第一条命令正在MEM段,第二条命令在in

tEX段,第四条命令在IF段。而第三条命令指示为"aborted"。其因素是:第二条命令(jal)

是无条件分支指令,但只有在第三个时钟周期,ja1指令被译码后才知道,这时,下一条

命令movi2fp已经取出,但需执行的下一条命令在另一个地址处,因而,movi2fp的执行应

被取消,在流水线中留下气泡。

jal的分支地址命名为''InputUnsigned''。为找到此符号地址的实际值,点击主窗口中

的Memory—Symbo1s,出现的子窗口中显示相应的符号和相应的实际值。在"Sort:"

区域选定"name",使它们按名称排序,而不是按数值排序。数字后的〃G”代表全局符号,"

L”代表局部符号。"input"中的"InputUnsigned"是一个全局符号,它的实际值为

0x144,用作地址。点击0K按纽关闭窗口。

再一次点击F7,第一条命令(addi)到达流水线的最后一段。假如想了解某条命令

执行后解决器内部会发生什么?只要对准Clockcyclediagram窗口中相应命令所在行,然

后双击它,弹出一个新窗口。窗口中会具体显示每一个流水段解决器内部的执行动作。观测

完后,点击0K按钮关闭窗口。双击第三行(m。vi2fp),你会看到它只执行了第一段(IF),

这是由于出现跳转而被取消。

双击Code窗口中的某一行或者Pipeline窗口中的某一段,可以出现Inform

ation窗口。

(4)Breakpoint窗口

按F7键以单步方式运营程序,可以清楚的看到每条指令在流水线各个段的具体操作情

况,除此之外,DLX模拟器还提供了其他儿种运营程序的方式。

单击主窗口中Execute子菜单,可以看到DLX模拟器共提供了4种运营程序的方式。

这些运营方式为我们了解DLX流水线或调试程序提供了非常方便的环境。

•SingleCyc1e(或按F7键)就是单步执行方式;

•Mu1tip1eCycles(或按F8键)是多步执行方式,选择该方式,会在屏幕上出

现一个窗口,询问周期个数,它表达流水线从当前位置继续向前执行的周期个数,

输入你需要的值,然后按0K键,流水线就会向前执行相应的周期个数;

•Run(或按F5键)是运营方式,选择该方式,流水线就会从当前位置一直运营到程

序结束;

•Runto(或按F4键)是断点方式,选择该方式,会在屏幕上出现一个窗口,规定指

定某条指令的地址和流水线的某个段,表达让流水线运营到该条指令在流水线该

段的时候暂停,输入你需要的指令,然后按0K键,流水线就会运营到指定的位置

后停下来。

激活Breakpoints子窗口,里面什么都没有。现在,请指向C。de窗口中包含指

令trap0x5的0x0000013c行,该指令是写屏幕的系统调用。单击指令行,然后点击

主窗口菜单Code,单击SetBreakpoint(保证指令行仍被标记),将弹出一个“SetB

reakpoint”窗口。通过此窗口,你可以选择指令运营到流水线的哪一阶段时,程序停止执行。

注意,在Address栏里标记的是trap0x5指令的地址,并且是相对寻址方式。该子

窗口缺省设立选择的指令在流水线的ID段时停止程序。点击0K关闭窗口。在Code窗口

中,我们看到指令trap0x5行上出现了“BID”字样,它表达当本指令在译码段时,程序中止

执行。

再次激活Breakpoints子窗口,就可以看到里面标记了断点设立的具体情况:在什么

地址,在什么段,是什么指令。根据需要,你可以设立多个断点,Reakpoints子窗口将记

录所有断点的设立情况。删除断点时,一方面在Code子窗口中选中需要删除断点的指令行,

然后点击主窗口中的Code选项,再点击DeleteBreakpoint选项,即可删除断点。

点击Executi。n-Run或按F5键,程序就会连续向前运营,直到碰到我们设立的断点

后停下来,,按0K按钮关闭。现在你可以激活任何一个子窗口,观测你希望看到的结果,然后

按F5键继续运营,屏幕上会出现DLX-Standard-I/O对话框,规定你输入一个整型值。

输入20后按回车键,程序会继续模拟运营,直至出现提醒框“Trap#0occurred”表白

最后一条指令trapO已经执行,Trap指令中编号“0”没有定义,只是用来终止程序。

点击主窗口中Execute菜单下“Disp1ayDLX-I/0..."选项,你会看到输出结果(2

0的阶乘)为2.4329e+18。点击0K关闭窗口。

(5)Register窗口

双击Register子窗口,可以看到DLX的所有寄存器及其内容,观测左上角的PC寄存

器,其值为Ox00000100,也就是说程序会从内存0x00000100处开始执行。

在程序执行过程中,随时可以点击Register子窗口来观测各个寄存器内容的变化。

看一下R1到R5的值。按F5使模拟继续运营到下一个断点处,有些值将发生改变,指令lw

从主存中取数到寄存器中。

(6)Statistics窗口

双击子窗口Statisties,可以看到该窗口提供了各个方面的信息:模拟中硬件配置

情况、暂停及因素、条件分支、Load/Store指令、浮点指令和traps。窗口中给出事件发

生的次数和比例。运用这些数据,我们可以定量的比较各种改善流水线性能的技术对程序运

营的影响情况。

在静态窗口中我们可以比较一下不同配置对模拟的影响。

现在我们看一看定向的作用。在前面的模拟过程中,我们采用了定向。假如不采用定向,

执行时间将会如何呢?

我们先看一下Statisties窗口中的各种记录数字:总的周期数(215)和暂停数(17

RAW,25Contro1,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

FileWindowExecuteMemoryConfigurationStatistics

Total:

139Cycle(s)executed.

IDexecutedby86ln$Uucdon(s).

2Instruction(s)currentlyinPipeline.

Hardwareconfiguration:

Memorysize:32768Bytes

faddEX-Stages:1zrequiredCycles:2

fmulEX-Stages:1,requiredCycles:5

fdivEX-Stages:1zrequiredCycles:19

Forwardingenabled.

Stalls:

RAWstalls:3。(21.58%ofallCycles),thereof:

LDstalls:10(33.33%ofRAWstalls)

Branch/Jumpstalls:10(33.33^ofRAWstalls)

Floatingpointstalls:10(33.33%ofRAWstalls)

WAWstalls:0(0.00^ofallCycles)

Structuralstalls:0(0.00^ofallCycles)

Controlstalls:9(6.47%ofallCycles)

Trapstalls:3(2.16%ofallCycles)

Total:42S图心)130.22%ofallCycles)

ConditionalBranches):

Total:10(11.63^ofallInstructions),thereof:

taken:9(90.00%ofallcond.Branches)

nottaken:1(10.00^ofallcond.Branches)

Load-/Store-Instruetions:

Total:20(23.26%ofallInstructions),thereof:

Loads:20(100.00/^ofLoad-/Store-lnstructions)

Stores:0(0.00^ofLoad-/Store-lnstructions)

Floatingpointstageinstructions:

Total:20(23.26%ofallInstructions^thereof:

Additions:20(100.00^ofFloatingpointstageinst)

Multiplications:0(0.00^ofFloatingpointstageinst.)

Divisions:0(0.00^ofFloatingpointstageinst)

Traps:

Traps:1(1.16^ofallInstructions)

(1)找出存在结构相关的指令对以及导致结构相关的部件。

(2)记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的

比例。

(3)论述结构相关对CPU性能的影响,讨论解决结构相关的方法。

(4)参考运营结果:

点击Statistics窗口,可以看到总的周期数为139,总的暂停数为42,其中数据相关

暂停数为30,占总执行周期数的比例为21.58%控制相关暂停数为9,占总执行周期数

的比例为6.47%;中断暂停时钟周期数Trapstal1s为3,占总执行周期数的比例为2.1

6%o

2.用WinDLX运营程序data_d.s

1)在不采用定向技术的情况下(去掉Configuration菜单中Enab1eForwardin

g选项前的勾选符),用WinDLX运营程序datad.so记录数据相关引起的暂停时钟周期

数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的比例。

FileWindowExecuteMemoryConfigurationStatis

Total:

202Cycle(s)executed.

IDexecutedby85Instruction(s).

2lnstruction(sjcurrentlyinPipeline.

Hardwareconfiguration:

Memorysize:32768Bytes

faddEX-Stages:1zrequiredCycles:2

fmulEX-Stages:1,requiredCycles:5

fdivEX-Stages:LrequiredCycles:19

Forwardingdisabled.

Stalls:

RAWstalls:104(51.48%ofallCycles)

WAWstalls:0(0.00^ofallCycles)

Structuralstalls:0(0.00%ofallCycles)

Controlstalls:9(4.46%ofallCycles)

Trapstalls:3(1.48%ofallCycles)

Total:116Stall(s)(57.42^ofallCycles)

ConditionalBranches):

Total:10(11.76%ofallInstructions^thereof:

taken:9(90.00%ofallcond.Branches)

nottaken:1(10.00^ofallcond.Branches)

Load-/Store-Instructions:

Total:30(35.29%ofallInstructions),thereof:

Loads:20(66.67%ofLoad-/Store-lnstruclions)

Stores:10(33.33^ofLoadVStore-instructions)

Floatingpointstageinstructions:

Total:0(0.00^ofallInstructions),thereof:

Additions:0(0.00^ofFloatingpointstageinst)

Multiplications:0(0.00^ofFloatingpointstageinst.)

Divisions:0(0.00^ofFloatingpointstageinst.)

Traps:

Traps:1(1.18^ofallInstructions)

(2)在采用定向技术的情况下(勾选Enab1eForwarding),用WinDLX再次运营

程序datad.s。记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算

暂停时钟周期数占总执行周期数的比例。

.FileWindowExecuteMemoryConfigurationStatistics

Total:

128Cycle(5)executed.

IDexecutedby85Instruction(s).

2Instruction(s)currentlyinPipeline.

Hardwareconfiguration:

Memorysize:32768Bytes

faddEX-Stages:1zrequiredCycles:2

fmulEX-Stages:1zrequiredCycles:5

fdivEX-Stages:LrequiredCycles:19

Forwardingenabled.

Stalls:

RAWstalls:30(23.44%ofallCycles),thereof:

LDstalls:20(66.67%ofRAWstalls)

Branch/Jumpstalls:10(33.33%ofRAWstalls)

Floatingpointstalls:0(0.00%ofRAWstalls]

WAWstalls:0

温馨提示

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

评论

0/150

提交评论