系统结构 第一二次试验报告.docx

上传人:b****5 文档编号:5856602 上传时间:2023-01-01 格式:DOCX 页数:20 大小:812.29KB
下载 相关 举报
系统结构 第一二次试验报告.docx_第1页
第1页 / 共20页
系统结构 第一二次试验报告.docx_第2页
第2页 / 共20页
系统结构 第一二次试验报告.docx_第3页
第3页 / 共20页
系统结构 第一二次试验报告.docx_第4页
第4页 / 共20页
系统结构 第一二次试验报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

系统结构 第一二次试验报告.docx

《系统结构 第一二次试验报告.docx》由会员分享,可在线阅读,更多相关《系统结构 第一二次试验报告.docx(20页珍藏版)》请在冰豆网上搜索。

系统结构 第一二次试验报告.docx

系统结构第一二次试验报告

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

一、实验目的

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

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

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

二、实验平台

WinDLX模拟器

三、实验任务

用WinDLX模拟器执行下列两个程序:

●求阶乘程序fact.s

●求最大公倍数程序gcm.s

分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。

熟练掌握WinDLX的操作和使用。

1.用WinDLX模拟器执行求阶乘程序fact.s

(1)用WinDLX模拟器执行求阶乘程序fact.s。

这个程序说明浮点指令的使用。

该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。

该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。

(2)输入数据“3”,采用单步执行方法,完成程序并通过使用WinDLX,总结WinDLX的特点。

(3)注意观察变量说明语句所建立的数据区,理解WinDLX指令系统。

(4)分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。

熟练掌握WinDLX的操作和使用。

2.用WinDLX模拟器求最大公约数程序gcm.s

(1)用WinDLX模拟器执行程序。

该程序从标准输入读入两个整数,求他们的greatest common measure,然后将结果写到标准输出。

该程序中调用了input.s中的输入子程序。

(2)给出两组数6、3和6、1,采用单步和连续混合执行的方法完成程序,注意中间过程和寄存器的变化情况,观察流水线工作情况。

然后单击主菜单上的execute/display dlx-i/o,观察结果。

(3)分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。

实验结果:

1、

(1)导入fact.s和input.s代码

(2)单步执行

 

流水线:

寄存器的值:

由图可知:

PC寄存器中存放下一条要执行的语句的地址,IMAR中存放当前执行的语句的地址。

(3)设置断点:

执行到断点:

 

(4)自动执行:

执行结果:

(5)程序代码:

Fact.s:

main:

;***ReadvaluefromstdinintoR1

addir1,r0,Prompt

jalInputUnsigned

;***initvalues

movi2fpf10,r1;R1->D0D0..Countregister

cvti2df0,f10

addir2,r0,1;1->D2D2..result

movi2fpf11,r2

cvti2df2,f11

movdf4,f2;1->D4D4..Constant1

;***BreakloopifD0=1

Loop:

ledf0,f4;D0<=1?

bfptFinish

;***Multiplicationandnextloop

multdf2,f2,f0

subdf0,f0,f4

jLoop

Finish:

;***writeresulttostdout

sdPrintfValue,f2

addir14,r0,PrintfPar

trap5

;***end

trap0

(6)分析结果:

点击Statistics窗口,可以看到总的周期数为81,总的暂停数为29,其中数据相关暂停数为10,占总执行周期数的百分比为12.34%;控制相关暂停数为7,占总执行周期数的百分比为8.64%;中断暂停时钟周期数Trap stalls为12,占总执行周期数的百分比为14.81%。

2、

(1)导入代码

(2)单步执行:

流水线:

执行结果:

6、3时:

6、1时:

 

(3)设置断点:

执行到断点:

(4)自动执行F5

结果与单步执行一致。

(5)程序代码:

Gcm.s:

main:

;***ReadtwopositiveintegernumbersintoR1andR2

addir1,r0,Prompt1

jalInputUnsigned;readuns.-integerintoR1

addr2,r1,r0;R2<-R1

addir1,r0,Prompt2

jalInputUnsigned;readuns.-integerintoR1

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

jLoop

Result:

;***Writetheresult(R1)

swPrintfValue,r1

addir14,r0,PrintfPar

trap5

;***end

trap0

(6)分析结果:

当输入数据为6和1时:

点击Statistics窗口,可以看到总的周期数为121,总的暂停数为51,其中数据相关暂停数为23,占总执行周期数的百分比为19.01%;控制相关暂停数为10,占总执行周期数的百分比为8.26%;中断暂停时钟周期数Trap stalls为18,占总执行周期数的百分比为14.88%。

当输入数据为6和1时:

点击Statistics窗口,可以看到总的周期数为157,总的暂停数为63,其中数据相关暂停数为31,占总执行周期数的百分比为19.74%;控制相关暂停数为14,占总执行周期数的百分比为8.92%;中断暂停时钟周期数Trap stalls为18,占总执行周期数的百分比为11.46%。

实验二流水线中的相关

一、实验目的

1.进一步了解DLX基本流水线各段的功能以及基本操作;

2.加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;

3.了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。

二、实验平台

WinDLX模拟器

三、实验内容和步骤

1.用WinDLX运行程序structure_d.s

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

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

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

2.用WinDLX运行程序data_d.s

(1)在不采用定向技术的情况下(去掉Configuration菜单中EnableForwarding选项前的勾选符),用WinDLX运行程序data_d.s。

记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。

(2)在采用定向技术的情况下(勾选EnableForwarding),用WinDLX再次运行程序data_d.s。

记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。

(3)根据上面记录的数据,计算采用定向技术后性能提高的倍数。

实验过程:

1、第一部分:

(1)导入程序:

(2)单步执行:

(3)执行结果:

(4)源程序代码:

LHIR2,(A>>16)&0xFFFF

ADDUIR2,R2,A&0xFFFF

LHIR3,(B>>16)&0xFFFF

ADDUIR3,R3,B&0xFFFF

ADDUR4,R0,R3

loop:

LDF0,0(R2);R2->F0

LDF4,0(R3);R3->F4

ADDDF0,F0,F4;把栽入的R2和R3做浮点运算

ADDDF2,F0,F2;<-Astallisfound(anexampleofhowtoansweryourquestions)

ADDIR2,R2,#8

ADDIR3,R3,#8

SUBR5,R4,R2

BNEZR5,loop

TRAP#0;;Exit<-thisisacomment!

!

A:

.double1,2,3,4,5,6,7,8,9,10

B:

.double1,2,3,4,5,6,7,8,9,10

(5)结果分析:

点击Statistics窗口,可以看到总的周期数为139,总的暂停数为42,其中数据相关暂停数为30,占总执行周期数的百分比为21.58%;控制相关暂停数为9,占总执行周期数的百分比为6.47%;中断暂停时钟周期数Trap stalls为3,占总执行周期数的百分比为2.16%。

2、第二部分:

(1)导入data_d.s程序

(2)程序代码:

Data_d.s:

LHIR2,(A>>16)&0xFFFF;将A的值右移16位,将A与十六进制FFFF相与

ADDUIR2,R2,A&0xFFFF;先右移然后与运算

LHIR3,(B>>16)&0xFFFF

ADDUIR3,R3,B&0xFFFF;栽入R2+A->R2,栽入R3+B->R3

loop:

LWR1,0(R2)

ADDR1,R1,R3

SW0(R2),R1

LWR5,0(R1)

ADDIR5,R5,#10

ADDIR2,R2,#4

SUBR4,R3,R2

BNEZR4,loop;循环,先将R2->R1,R1+R3->R1,存储R1

TRAP#0;也就是先将之前读入的R2与R3相加->R1

A:

.word0,4,8,12,16,20,24,28,32,36

B:

.word9,8,7,6,5,4,3,2,1,0;定义好的常量

(3)在不采用定向技术的情况下(去掉Configuration菜单中EnableForwarding选项前的勾选符),用WinDLX运行程序data_d.s。

执行结果:

 

结果分析:

在不采用定向技术的情况下,运行程序。

打开静态窗口,可以看到,总的周期数为202,总的暂停数为116,其中数据相关暂停数为104,占总执行周期数的百分比为51.48%;控制相关暂停数为9,占总执行周期数的百分比为4.46%;中断暂停时钟周期数Trap stalls为3,占总执行周期数的百分比为1.48%。

 

(4)在采用定向技术的情况下(勾选EnableForwarding),用WinDLX再次运行程序data_d.s。

 

采用定向技术:

执行结果:

结果分析:

运行程序。

再次打开静态窗口,可以看到,总的周期数变为128,总的暂停数为42,其中数据相关暂停数为30,占总执行周期数的百分比为23.44%;控制相关暂停数仍然为9,占总执行周期数的百分比为7.32%;中断暂停时钟周期数Trap stalls仍然为3,占总执行周期数的百分比为2.34%。

(5)两次结果分析:

由上述的值可以看到不采用定向技术时总的周期数为202,采用了定向技术后总的周期数变为128,由此可以计算定向技术带来的加速比202/128=1.578, DLXforwarded 比DLXnot forwarded 快了57.8%。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1