运算机系统结构实验教学大纲和实验内容Word格式文档下载.docx
- 文档编号:22119298
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:20
- 大小:29.02KB
运算机系统结构实验教学大纲和实验内容Word格式文档下载.docx
《运算机系统结构实验教学大纲和实验内容Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《运算机系统结构实验教学大纲和实验内容Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
3.点击主窗口中的Execution开始运行。
4.程序(最大公因子)和(计算假设干个整数的素数)的运行进程同上。
五.实验报告:
通过上述利用WinDLX,总结WinDLX的特点。
六.程序:
;
***********WINDLX:
Factorial*************
***********(c)1991*************
***********Modified:
1992MaziarKhosravipour*************
--------------------------------------------------------------------------
Programbeginatsymbolmain
requiresmoduleINPUT
readanumberfromstdinandcalculatethefactorial(type:
double)
theresultiswrittentostdout
--------------------------------------------------------------------------
.data
Prompt:
.asciiz"
Anintegervalue>
1:
"
PrintfFormat:
Factorial=%g\n\n"
.align2
PrintfPar:
.wordPrintfFormat
PrintfValue:
.space8
.text
.globalmain
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
Readapositiveintegernumber*************
***********(c)1991G黱therRaidl*************
***********Modified1992MaziarKhosravipour*************
-----------------------------------------------------------------------------
Subprogramcallbysymbol"
InputUnsigned"
expecttheaddressofazero-terminatedpromptstringinR1
returnsthereadvalueinR1
changesthecontentsofregistersR1,R13,R14
***DataforRead-Trap
ReadBuffer:
.space80
ReadPar:
.word0,ReadBuffer,80
***DataforPrintf-Trap
.space4
SaveR2:
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
***restoreoldregistercontents
lwr2,SaveR2
lwr3,SaveR3
lwr4,SaveR4
lwr5,SaveR5
jrr31;
Retur
Greatestcommonmeasure*************
------------------------------------------------------------------------
Programbeginsatsymbolmain
Readtwopositiveintegernumbersfromstdin,calculatethegcm
andwritetheresulttostdout
***Promptsforinput
Prompt1:
FirstNumber:
"
Prompt2:
SecondNumber:
***Dataforprintf-Trap
gcM=%d\n\n"
***ReadtwopositiveintegernumbersintoR1andR2
addir1,r0,Prompt1
jalInputUnsigned;
readintoR1
addr2,r1,r0;
R2<
-R1
addir1,r0,Prompt2
***CompareR1andR2
seqr3,r1,r2;
R1==R2?
bnezr3,Result
sgtr3,r1,r2;
R1>
R2?
bnezr3,r1Greater
r2Greater:
***subtractr1fromr2
subr2,r2,r1
r1Greater:
***subtractr2fromr1
subr1,r1,r2
Result:
***Writetheresult(R1)
swPrintfValue,r1
Generateprimenumbertable*************
-------------------------------------------------------------------
generatesatablewiththefirst'
Count'
primenumbersfrom'
Table'
***sizeoftable
.globalCount
Count:
.word10
.globalTable
Table:
.spaceCount*4
***Initialization
addir1,r0,0;
IndexinTable
addir2,r0,2;
Currentvalue
***Determine,ifR2canbedividedbyavalueintable
NextValue:
addir3,r0,0;
HelpindexinTable
seqr4,r1,r3;
EndofTable?
bnezr4,IsPrim;
R2isaprimenumber
lwr5,Table(R3)
divur6,r2,r5
multur7,r6,r5
subur8,r2,r7
beqzr8,IsNoPrim
addir3,r3,4
IsPrim:
***WritevalueintoTableandincrementindex
swTable(r1),r2
addir1,r1,4
***'
reached?
lwr9,Count
srlir10,r1,2
sger11,r10,r9
bnezr11,Finish
IsNoPrim:
***Checknextvalue
incrementR2
jNextValue
实验二结构相关
通过本实验,加深对结构相关的明白得,了解结构相关对CPU性能的阻碍。
1.用WinDLX模拟器运行程序。
2.通过模拟,找出存在结构相关的指令对和致使结构相关的部件。
3.由结构相关引发的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
4.论述结构相关对CPU性能的阻碍,讨论解决结构相关的方式。
三.实验原理:
结构相关是指因为程序的执行方向可能被改变而引发的相关。
可能改变程序执行方向的指令通常有无条件转移、一样条件转移、复合条件转移、子程序挪用、中断等。
1.无条件转移
无条件转移指令一样能够在指令分析器中就执行完成,因此一样对指令执行部件的工作可不能造成阻碍。
2.条件转移
条件转移指令有两种:
一样条件转移指令和复合条件转移指令。
关于一样条件转移指令,相关最严峻的情形发生在条件码是上一条指令产生的。
转移不成功对先行操纵器的阻碍不大,而转移成功时,不仅指令执行进程变成了完全串行,而且要作废已经取到先行指令缓冲栈中的大量指令,从而白白增加了处置机与主存之间的通信量。
关于复合条件转移指令,若是转移不成功,那么就象一条一般的运算型指令一样。
若是转移成功,不仅要全数或部份作废先行指令缓冲栈中已经预取的指令,还可能要作废先行操作栈中的指令和先行读数栈中的操作数,作废当前在指令分析器中分析的指令。
四.WinDLX的窗口配置:
1.Statistics窗口:
将待运行程序装入主存后按F5使程序完成执行,显现消息"
Trap#0occurred"
说明最后一条指令trap0已经执行,Trap指令中编号“0”没有概念,只是用来终止程序。
双击图标Statistics。
Statistics窗口提供方方面面的信息:
模拟中硬件配置情形、暂停及缘故、条件分支、Load/Store指令、浮点指令和traps。
窗口中给出事件发生的次数和百分比。
2.WinDLX能够在多种配置下工作。
你能够改变流水线的结构和时刻要求、存储器大小和其他几个操纵模拟的参数。
点击Configuration/FloatingPointStages(点击Configuration打开菜单,然后点击FloatingPointStages菜单项),选择如下标准配置:
Count
Delay
AdditionUnits:
1
2
MultiplicationUnits:
5
DivisionUnits:
19
点击Configuration/MemorySize,能够设置模拟处置器的存储器大小。
应设置为0x8000,然后,点击OK返回主窗口。
在Configuration菜单中的其他三个配置也能够设置,它们是:
Symbolicaddresses,AbsoluteCycleCount和EnableForwarding。
点击相应菜单项后,在它的隔壁将显示一个小钩。
五.实验要求:
六.实验报告:
一、程序运行说明。
二、存在结构相关的指令对和致使结构相关的部件说明。
3、查看Statistics窗口中的各类统计数字,记录由结构相关引发的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
七.程序:
LHIR2,(A>
>
16)&
0xFFFF
ADDUIR2,R2,A&
LHIR3,(B>
ADDUIR3,R3,B&
ADDUR4,R0,R3
loop:
LDF0,0(R2)
LDF4,0(R3)
ADDDF0,F0,F4
ADDDF2,F0,F2;
<
-Astallisfound(anexampleofhowtoanswer
yourquestions)
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:
实验三数据有关
一.实验目的
通过本实验,加深对数据有关的明白得,把握如何利用定向技术来减少数据有关带来的暂停。
二.实验内容
1.在不采纳定向技术的情形下(通过Configuration菜单中的EnableForwarding选项设置),用WinDLX模拟器运行程序。
4.记录数据有关引发的暂停时钟周期数和程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
5.采纳定向技术的情形下,用WinDLX模拟器再次运行程序。
四.实验原理:
1.三种数据有关:
“先读后写”、“先写后读”和“写-写”相关。
2.在流水线中成立专用数据途径来幸免数据有关的大体原理是数据重定向。
五.WinDLX的窗口配置:
2.Code窗口:
双击图标Code,你将看到代表存储器内容的三栏信息,从左到右依次为:
地址(符号或数字)、命令的十六进制机械代码和汇编命令。
点击主窗口中的Execution开始模拟。
在显现的下拉式菜单中,点击SingleCycle或按F7键,模拟就向前执行一步。
3.Breakpoint窗口:
当通过Code窗口观看代码时(若是未打开,双击图标Code),你会看到接下来的几条指令几近一样,它们都是sw-操作:
将寄放器中的数写入存储器中。
重复按F7将很枯燥,因此,咱们利用断点加速此进程。
此刻,请指向Code窗口中包括命令trap0x5的0x0000015c行,此命令是写屏幕的系统挪用。
单击命令行,然后点击主窗口菜单Code,单击SetBreakpoint(确保命令行仍被标记!
),将弹出一个新的"
SetBreakpoint"
窗口。
通过此窗口,你能够选择命令运行到流水线的哪一时期时,程序停止执行。
缺省为ID段。
点击OK关闭窗口。
在Code窗口中,trap0x5行上显现了"
BID"
,它表示当本指令在译码段时,程序中止执行。
若是想查看已概念的断点,你只要单击图标Reakpoints,将弹出一个小窗口,其中显示了所有断点。
从头使窗口图标化。
此刻你只要点击Execution/Run或按F5,模拟就继续运行。
会显现一个对话框提示你"
ID-Stage:
reachedatBreakpoint#1"
,按“确认”按钮关闭。
点击Clockcyclediagram窗口中的trap0x5行,你将看到模拟正处于时钟周期14。
trap0x5行如下所示:
缘故是:
不管何时碰到一条trap指令时,DLX处置器中的流水线将被清空。
在Information窗口(双击trap行弹出)中,在IF段显示消息"
3stall(s)becauseofTrap-Pipeline-Clearing!
。
(不要忘了按OK关闭窗口)。
指令trap0x5已经写到屏幕上,你能够通过点击主窗口菜单条上的Execute/DisplayDLX-I/O来查看。
1.程序装入主存运行跋文录下Statistics窗口中的各类统计数字:
总的周期数和暂停数(RAW,Control,Trap,Total),然后关闭窗口。
2.点击Configuration中的EnableForwarding使定向无效(去掉小钩),打开断点Breakpoints图标并点击Breakpoints菜单,删除所有断点,然后按F5,键入20后,按Enter,程序一直运行到终止。
3.再次打开Statistics窗口,记下新的统计数字。
计算暂停时钟周期数占总执行周期数的百分比。
计算采纳定向技术后性能提高的倍数。
16)&
0xFFFF
ADDUIR2,R2,A&
LWR1,0(R2)
ADDR1,R1,R3
SW0(R2),R1
LWR5,0(R1)
ADDIR5,R5,#10
ADDIR2,R2,#4
SUBR4,R3,R2
BNEZR4,loop
TRAP#0
.word0,4,8,12,16,20,24,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运算 系统 结构 实验教学 大纲 实验 内容