《系统结构第一二次试验报告材料.doc》由会员分享,可在线阅读,更多相关《系统结构第一二次试验报告材料.doc(18页珍藏版)》请在课桌文档上搜索。
1、word实验一 熟悉模拟器WinDLX的使用一、 实验目的1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点。2. 加深对计算机流水线基本概念的理解。3.了解DLX基本流水线各段的功能以及基本操作。二、 实验平台WinDLX模拟器三、 实验任务用WinDLX模拟器执行下列两个程序:l 求阶乘程序fact.sl 求最大公倍数程序gcm.s分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的容。熟练掌握WinDLX的操作和使用。1.用WinDLX模拟器执行求阶乘程序fact.s(1)用WinDLX模拟器执行求阶乘程序fact.
2、s。这个程序说明浮点指令的使用。该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。(2) 输入数据“3”,采用单步执行方法,完成程序并通过使用WinDLX,总结WinDLX的特点。(3)注意观察变量说明语句所建立的数据区,理解WinDLX指令系统。(4)分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的容。熟练掌握WinDLX的操作和使用。2.用WinDLX模拟器求最大公约数程序gcm.s(1)用WinDLX模拟器执行程序。该程序从标准输入读入两个整数,求他们的grea
3、testmonmeasure,然后将结果写到标准输出。该程序中调用了input.s中的输入子程序。(2)给出两组数6、3和6、1,采用单步和连续混合执行的方法完成程序,注意中间过程和寄存器的变化情况,观察流水线工作情况。然后单击主菜单上的execute/displaydlx-i/o,观察结果。(3 ) 分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的容。实验结果:1、(1)导入fact.s和input.s代码(2) 单步执行流水线:寄存器的值:由图可知:PC寄存器中存放下一条要执行的语句的地址,IMAR中存放当前执行的语句的地址。(3)设置断
4、点:执行到断点:(4)自动执行:执行结果:(5) 程序代码:Fact.s:main:;* Read value from stdin into R1addir1,r0,PromptjalInputUnsigned;* init valuesmovi2fp f10,r1;R1 - D0D0.Count registercvti2df0,f10addir2,r0,1 ;1 - D2D2.resultmovi2fpf11,r2cvti2df2,f11movdf4,f2;1- D4 D4.Constant 1;* Break loop if D0 = 1Loop:ledf0,f4;D0=1 ?bfpt
5、Finish;* Multiplication and next loopmultdf2,f2,f0subdf0,f0,f4jLoopFinish: ;* write result to stdoutsdPrintfValue,f2addir14,r0,PrintfPartrap5;* endtrap0(6) 分析结果:点击Statistics窗口,可以看到总的周期数为81,总的暂停数为29,其中数据相关暂停数为10,占总执行周期数的百分比为12.34%;控制相关暂停数为7,占总执行周期数的百分比为8.64%;中断暂停时钟周期数Trapstalls为12,占总执行周期数的百分比为14.81%。
6、2、 (1)导入代码(2) 单步执行:流水线:执行结果:6、3时:6、1时:(3) 设置断点:执行到断点:(4) 自动执行F5结果与单步执行一致。(5) 程序代码:Gcm.s:main:;* Read two positive integer numbers into R1 and R2addir1,r0,Prompt1jalInputUnsigned;read uns.-integer into R1addr2,r1,r0;R2 R2 ?bnezr3,r1Greaterr2Greater:;* subtract r1 from r2subr2,r2,r1jLoopr1Greater:;* s
7、ubtract r2 from r1subr1,r1,r2jLoopResult: ;* Write the result (R1)swPrintfValue,r1addir14,r0,PrintfPartrap5;* endtrap0(6) 分析结果:当输入数据为6和1时:点击Statistics窗口,可以看到总的周期数为121,总的暂停数为51,其中数据相关暂停数为23,占总执行周期数的百分比为19.01%;控制相关暂停数为10,占总执行周期数的百分比为8.26%;中断暂停时钟周期数Trapstalls为18,占总执行周期数的百分比为14.88%。当输入数据为6和1时:点击Statisti
8、cs窗口,可以看到总的周期数为157,总的暂停数为63,其中数据相关暂停数为31,占总执行周期数的百分比为19.74%;控制相关暂停数为14,占总执行周期数的百分比为8.92%;中断暂停时钟周期数Trapstalls为18,占总执行周期数的百分比为11.46%。实验二 流水线中的相关一、 实验目的1. 进一步了解DLX基本流水线各段的功能以及基本操作;2. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;3. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。二、 实验平台WinDLX模拟器三、 实验容和步骤1.用WinDLX运行程序structure_d
9、.s(1)找出存在结构相关的指令对以及导致结构相关的部件。(2)记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。(3)论述结构相关对CPU性能的影响,讨论解决结构相关的方法。2. 用WinDLX运行程序data_d.s(1)在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项前的勾选符),用WinDLX运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。(2)在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次
10、运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。(3)根据上面记录的数据,计算采用定向技术后性能提高的倍数。实验过程:1、第一部分:(1)导入程序:(2) 单步执行:(3) 执行结果:(4) 源程序代码: LHI R2, (A16)&0xFFFF ADDUI R2, R2, A&0xFFFF LHI R3, (B16)&0xFFFF ADDUI R3, R3, B&0xFFFF ADDU R4, R0, R3 loop: LD F0, 0(R2) ;R2-F0 LD F4, 0(R3) ;R3-F4 ADDD F0
11、, F0, F4 ;把栽入的R2和R3做浮点运算 ADDD F2, F0, F2 ; - A stall is found (an example of how to answer your questions) ADDI R2, R2, #8 ADDI R3, R3, #8 SUB R5, R4, R2 BNEZ R5, loop TRAP #0 ; Exit 16) & 0xFFFF ;将A的值右移16位, 将A与十六进制FFFF相与 ADDUI R2, R2, A & 0xFFFF ; 先右移然后与运算 LHI R3, (B16)&0xFFFF ADDUI R3, R3, B&0xFFF
12、F ;栽入R2+A-R2, 栽入R3+B-R3 loop: LW R1, 0 (R2) ADD R1, R1, R3 SW 0(R2), R1 LW R5, 0 (R1) ADDI R5, R5, #10 ADDI R2, R2, #4 SUB R4, R3, R2 BNEZ R4, loop ;循环,先将R2-R1, R1+R3-R1, 存储R1 TRAP #0 ;也就是先将之前读入的R2与R3相加-R1 A: .word 0, 4, 8, 12, 16, 20, 24, 28, 32, 36 B: .word 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 ;定义好的常量(3)在
13、不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项前的勾选符),用WinDLX运行程序data_d.s。执行结果:结果分析:在不采用定向技术的情况下,运行程序。打开静态窗口,可以看到,总的周期数为202,总的暂停数为116,其中数据相关暂停数为104,占总执行周期数的百分比为51.48%;控制相关暂停数为9,占总执行周期数的百分比为4.46%;中断暂停时钟周期数Trapstalls为3,占总执行周期数的百分比为1.48%。(4)在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。采用定向技术:执行结果:结果分析:运行程序。再次打开静态窗口,可以看到,总的周期数变为128,总的暂停数为42,其中数据相关暂停数为30,占总执行周期数的百分比为23.44%;控制相关暂停数仍然为9,占总执行周期数的百分比为7.32%;中断暂停时钟周期数Trapstalls仍然为3,占总执行周期数的百分比为2.34%。(5)两次结果分析:由上述的值可以看到不采用定向技术时总的周期数为202,采用了定向技术后总的周期数变为128,由此可以计算定向技术带来的加速比202/128=1.578,DLXforwarded比DLXnotforwarded快了57.8%。18 / 18
链接地址:https://www.desk33.com/p-8135.html