计算机系统结构WinDlx实验报告Word文档格式.docx
《计算机系统结构WinDlx实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机系统结构WinDlx实验报告Word文档格式.docx(33页珍藏版)》请在冰点文库上搜索。
3.5实验程序.......................13
3.5.1源程序......................14
3.5.2没有采用定向技术分析...............14
3.5.3采用定向技术分析.................14
3.5.4结果截图.....................15
3.6实验报告要求.....................15
4、实验四.........................16
4.1实验目的.......................16
4.2实验平台 ......................16
4.3预备知识.......................16
4.3.1调页策略.....................16
4.3.2页面置换算法...................17
4.4实验内容和步骤....................18
4.5实验程序.......................19
4.5.1源程序......................19
4.5.2程序流程图....................22
4.5.3结果截图.....................23
4.6实验报告要求.....................23
5、实验总结........................23
6、参考资料.......................23
实验一WinDLX模拟器与DLX指令的使用
1.1实验目的
1.1.1.熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;
1.1.2.加深对计算机流水线基本概念的理解;
1.1.3.了解DLX基本流水线各段的功能以及基本操作;
1.2实验平台
WinDLX模拟器
1.3预备知识
1.3.1.WinDLX
WinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,能够演示DLX流水线是如何工作的。
该模拟器可以装载DLX汇编语言程序(后缀为“.s”的文件),然后单步、设断点或是连续执行该程序。
CPU的寄存器、流水线、I/O和存储器都可以用图形表示出来,以形象生动的方式描述DLX流水线的工作过程。
模拟器还提供了对流水线操作的统计功能,便于对流水线进行性能分析。
有关WinDLX的详细介绍,见附录(WinDLX教程)。
1.3.2.熟悉WinDLX指令集和WinDLX源代码的编写
1.4实验内容和步骤
用WinDLX模拟器执行求最大公倍数程序gcm.s
分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。
熟练掌握WinDLX的操作和使用。
注意:
gcm.s中调用了input.s中的输入子程序。
load程序时,要两个程序一起装入(都select后再点击load)。
如:
给出两组数6、3和6、1,分别在main+0x8(addr2,r1,r0)、gcm.loop(segr3,r1,r2)和result+0xc(trap0x0)设置断点,采用单步和连续混合执行的方法完成程序,注意中间过程和寄存器的变化情况,然后单击主菜单execute/displaydlx-i/o,观察结果。
321
1.5实验程序
实验源程序见文件gcm.s和input.s
结果截图如下:
1.6实验报告要求
实验报告中应包含:
实验目的、实验内容、实验步骤(要有程序清单并以注释的形式对定义的变量和使用的寄存器进行说明)、实验结果等内容。
gcm.s
;
***********WINDLXEx.1:
Greatestcommonmeasure*************
***********(c)1991G黱therRaidl*************
***********Modified1992MaziarKhosravipour*************
------------------------------------------------------------------------
Programbeginsatsymbolmain
requiresmoduleINPUT
Readtwopositiveintegernumbersfromstdin,calculatethegcm
andwritetheresulttostdout
.data
;
***Promptsforinput
Prompt1:
.asciiz"
FirstNumber:
"
Prompt2:
SecondNumber:
"
***Dataforprintf-Trap
PrintfFormat:
gcM=%d\n\n"
.align2
PrintfPar:
.wordPrintfFormat
PrintfValue:
.space4
.text
.globalmain
main:
***ReadtwopositiveintegernumbersintoR1andR2
addir1,r0,Prompt1
jalInputUnsigned;
readuns.-integerintoR1
addr2,r1,r0;
R2<
-R1
addir1,r0,Prompt2
Loop:
***CompareR1andR2
seqr3,r1,r2;
R1==R2?
bnezr3,Result
sgtr3,r1,r2;
R1>
R2?
bnezr3,r1Greater
r2Greater:
;
***subtractr1fromr2
subr2,r2,r1
jLoop
r1Greater:
***subtractr2fromr1
subr1,r1,r2
Result:
***Writetheresult(R1)
swPrintfValue,r1
addir14,r0,PrintfPar
trap5
***end
trap0
input.s
Readapositiveintegernumber*************
***********(c)1991G黱therRaidl*************
***********Modified1992MaziarKhosravipour*************
-----------------------------------------------------------------------------
Subprogramcallbysymbol"
InputUnsigned"
expecttheaddressofazero-terminatedpromptstringinR1
returnsthereadvalueinR1
changesthecontentsofregistersR1,R13,R14
***DataforRead-Trap
ReadBuffer:
.space80
ReadPar:
.word0,ReadBuffer,80
***DataforPrintf-Trap
SaveR2:
.space4
SaveR3:
SaveR4:
SaveR5:
.globalInputUnsigned
InputUnsigned:
***saveregistercontents
swSaveR2,r2
swSaveR3,r3
swSaveR4,r4
swSaveR5,r5
***Prompt
swPrintfPar,r1
***callTrap-3toreadline
addir14,r0,ReadPar
trap3
***determinevalue
addir2,r0,ReadBuffer
addir1,r0,0
addir4,r0,10;
Decimalsystem
***readsdigitstoendofline
lbur3,0(r2)
seqir5,r3,10;
LF->
Exit
bnezr5,Finish
subir3,r3,48;
?
multur1,r1,r4;
Shiftdecimal
addr1,r1,r3
addir2,r2,1;
incrementpointer
Finish:
***restoreoldregistercontents
lwr2,SaveR2
lwr3,SaveR3
lwr4,SaveR4
lwr5,SaveR5
jrr31;
Return
实验二流水线中的结构相关
2.1实验目的:
1.近一步熟悉DLX指令集结构及其特点;
2.通过本实验,加深对结构相关的理解,了解结构相关对CPU性能的影响。
2.2实验平台
2.3预备知识
2.3.1.进一步熟悉WinDLX指令集和WinDLX源代码的编写
2.3.2.复习和掌握教材中相应的内容
DLX基本流水线
流水线的结构相关与数据相关
●结构相关:
当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求,
●发生资源冲突时,将产生“结构相关”。
2.4实验内容和步骤
1.用WinDLX模拟器运行程序structure_d.s。
2.通过模拟,找出存在结构相关的指令对以及导致结构相关的部件。
存在结构相关的程序如下:
1.LDF0,0(R2)
ADDDF2,F0,F2;
<
-Astallisfound(anexampleofhowtoansweryourquestions)
2.ADDIR2,R2,#8
ADDIR3,R3,#8
3.ADDIR3,R3,#8
SUBR5,R4,R2
4.SUBR5,R4,R2
BNEZR5,
3.记录由结构相关引起的暂停时钟周期数9,计算暂停时钟周期数占总执行周期数的百分比。
9/139=6.475%
4.论述结构相关对CPU性能的影响,讨论解决结构相关的方法。
2.5实验程序
2.5.1、实验源程序见文件structure_d.s
LHIR2,(A>
>
16)&
0xFFFF/*A左移16位后,加载半字,结果送往R2指向的寄存器单元*/
ADDUIR2,R2,A&
0xFFFF/*无溢出判断,从R2中取数和立即数相加,结果送R2*/
LHIR3,(B>
0xFFFF
ADDUIR3,R3,B&
ADDUR4,R0,R3/*无判断溢出,从R0,R3中取数,结果送R4*/
loop:
/*循环语句*/
LDF0,0(R2)/*从R2中取数和0相加,结果作为访存地址,并取数,结果送F0,F1*/
LDF4,0(R3)
ADDDF0,F0,F4
ADDDF2,F0,F2
<
ADDIR2,R2,#8<
-Astallisfound
ADDIR3,R3,#8<
-Astallisfound
SUBR5,R4,R2<
-Astallisfound/*从R2,R4取数相减,结果送R5*/
BNEZR5,loop/*判断单元R5数据是否为0,不等则跳转loop,否则跳下一指令*/
TRAP#0
Exit<
-thisisacomment!
!
A:
.double1,2,3,4,5,6,7,8,9,10
B:
2.5.2、程序分析如下:
在执行指令ADDIR2,R2,#8,ADDIR3,R3,#8,SUBR5,R4,R2,BNEZR5,loop时,实际上是1ADDIR2,R2,#8ADDIR3,R3,#82.ADDIR3,R3,#8SUBR5,R4,R23.SUBR5,R4,R2BNEZR5,在这3个步骤中会发生同时访问同一寄存器的现象,必然会导致结构相关的问题。
为了避免结构相关,可以考虑采用资源重复的方法,即在流水线机器中设置相互独立的指令存储器和数据存储器,也可以考虑将CACHE分为指令CACHE和数据CACHE。
2.5.3、执行之后得到的结果截图如下
2.6实验报告要求
实验三流水线中的数据相关
3.1实验目的
3.1.1.加深对数据相关的理解,了解数据相关对CPU性能的影响;
3.1.2.了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。
3.2实验平台
3.3预备知识
3.3.1.进一步熟悉WinDLX指令集和WinDLX源代码的编写
3.3.2.复习和掌握教材中相应的内容
流水线的数据相关
数据相关:
当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中重叠执行时,就可能引起“数据相关”。
定向技术的主要思想:
在发生数据相关时,等待前面计算结果的指令并不一定真的马上就用到该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令需要它的地方,就可以避免暂停。
3.4实验内容和步骤
1.在不采用定向技术的情况下(去掉Configuration菜单中EnableForwarding选项前的勾选符),用WinDLX运行程序data_d.s。
记录数据相关引起的暂停时钟周期数104以及程序执行的总时钟周期数202,计算暂停时钟周期数占总执行周期数的百分比51.48%。
2.在采用定向技术的情况下(勾选EnableForwarding),用WinDLX再次运行程序data_d.s。
重复上述3中的工作,1283023.44%并计算采用定向技术后性能提高的倍数
220/128=1.72
3.5实验程序
3.5.1、实验源程序见文件data_d.s
16)&
0xFFFF/*A左移16位后,加载半字,结果送往R2指向的寄存器单元*/
ADDUIR2,R2,A&
0xFFFF/*无溢出判断,从R2中取数和立即数相加,结果送R2*/
loop:
/*循环语句*/
LWR1,0(R2)/*从R2中取数,立即数0符号扩展后两则相加,结果为访存地址,并从中取数,送往R1*/
ADDR1,R1,R3/*从R1,R3中取数进行相加,结果送往R1*/
SW0(R2),R1/*从从R2中取数和符号扩展后的立即数相加,结果作为访存单元,然后从寄存器R1中取数,送往存储单元*/
LWR5,0(R1)
ADDIR5,R5,#10/*从R5中读数和立即数10相加,结果送往R5*/
ADDIR2,R2,#4
SUBR4,R3,R2/*从R2,R3中取数进行相减,结果送往R4*/
BNEZR4,loop/*判断R4中的数据是否为0,不等0则跳转循环loop,否则继续下一条指令*/
TRAP#0
A:
.word0,4,8,12,16,20,24,28,32,36
B:
.word9,8,7,6,5,4,3,2,1,0
3.5.2、没有采用定向技术时运行该程序:
从数据中可知程序执行的总时钟周期数202,暂停时钟周期数104,暂停时钟周期数占总执行周期数的百分比51.48%。
3.5.3、采用定向技术时运行该程序:
从数据中可知,执行的总时钟周期数128,暂停时钟周期数30,暂停时钟周期数占总执行周期数的百分比23.44%。
由此可知,运用定向技术,减少了数据相关,缩短了程序的执行周期,性能提高了1.57倍。
3.5.4、结果截图如下:
3.6实验报告要求
实验四LRU页面置换算法模拟
4.1实验目的
4.1.1、了解内存分页管理策略
4.1.2、掌握调页策略
4.1.3、掌握一般常用的调度算法
4.1.4、选取调度算法中的典型算法,模拟实现
4.2实验平台
在Window系统的TC2.0环境下运行程序;
通过从一般常用的调页算法中选取典型算法LRU,了解页面管理的相关细节,并用程序设计实现LRU。
4.3预备知识
分页存储管理将一个进程的逻辑地址空间分成若干大小相等的片,称为页面或页。
4.3.1调页策略
何时调入页面
如果进程的许多页是存放在外存的一个连续区域中,则一次调入若干个相邻的页,会比一次调入一页的效率更高效一些。
但如果调入的一批页面中的大多数都未被访问,则又是低效的。
可采用一种以预测为基础的预调页策略,将那些预计在不久之后便会被访问的页面,预先调入内存。
如果预测较准确,那么,这种策略显然是很有吸引力的。
但目前预调页的成功率仅为50%。
且这种策略主要用于进程的首次调入时,由程序员指出应该先调入哪些页。
4.3.2请求调页策略
当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便即提出请求,由OS将其所需页面调入内存。
由请示调页策略所确定调入的页,是一定会被访问的,再加之请求调页策略比较易于实现,故在目前的虚拟存储器中,大多采用此策略。
但这种策略每次仅调入一页,故须花费较大的系统开销,增加了磁盘I/O的启用频率。
从何处调入页面
在请求分页系统中的外存分为两部分:
用于存放文件的文件区和用于存放对换页面的对换区。
通常,由于对换区是采用连续分配方式,而事件是采用离散分配方式,故对换区的磁盘I/O速度比文件区的高。
这样,每当发生缺页请求时,系统应从何处将缺页调入内存,可分成如下三种情况:
(1)
系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页速度。
为此,在进程运行前,便须将与该进程有关的文件,从文件区拷贝到对换区。
(2)
系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;
而当换出这些页面时,由于它们未被修改而不必再将它们换出时,以后需要时,再从对换区调入。
(3)
UNIX方式。
由于与进程有关的文件都放在文件区,故凡是未运行过的页面,都从文件区调入。
而对于曾经运行过但又被换出的页面,由于被放在对换区,因此在下次时,应从对换区调入。
由于UNIX系统允许页面共享,因此,某进程所请求的页面有可能已被其它进程调