实验5—WinDLX模拟器熟悉及其结构冲突—计师2班白涵冰_第1页
实验5—WinDLX模拟器熟悉及其结构冲突—计师2班白涵冰_第2页
实验5—WinDLX模拟器熟悉及其结构冲突—计师2班白涵冰_第3页
实验5—WinDLX模拟器熟悉及其结构冲突—计师2班白涵冰_第4页
实验5—WinDLX模拟器熟悉及其结构冲突—计师2班白涵冰_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、西北师范大学计算机科学与工程学院学生实验报告学号201371010201专业计算机科学与技术班级13计师2班姓名白涵冰课程名称计算机系统结构课程类型专业必选实验名称实验五 WinDLX模拟器熟悉及其结构冲突实验目的:1、熟练掌握WinDLX模拟器的操作和使用 2、熟悉DLX指令集结构及其特点3、理解流水线中的结构相关 4、了解结构相关对CPU性能的影响实验内容:1、用WinDLX模拟器执行求阶乘程序fact.s。这个程序说明浮点指令的使用。该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。2、用WinDLX模拟器执行求

2、最大公约数程序gcm.s。该程序从标准输入读入两个整数,求他们的最大公约数,然后将结果写到标准输出。该程序中调用了input.s中的输入子程序。 3、通过上述使用WinDLX,总结WinDLX的特点4、用WinDLX模拟器运行程序structure_d.s(禁止定向技术,在Clock Cycle Dragram子窗口中按F7键单步执行,看得比较清楚。可以不考虑程序的功能,只关心相邻指令间执行的相关)。5、通过模拟,找出存在结构相关的指令对以及导致结构相关的部件。6、记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的 百分比。7、论述结构相关对CPU性能的影响,讨论解决结构相

3、关的方法。一、配置WinDLX1.初始化模拟器2.改变流水线结构3.设置模拟器存储器大小二、装载测试程序1(求阶乘)代码:Fact.s1 ;* WINDLX Ex.3: Factorial*2 ;* (c) 1991 Günther Raidl*3 ;* Modified: 1992 Maziar Khosravipour *4 ;-5 ; Program begin at symbol main6 ; requires module INPUT7 ; read a number from stdin and calculate the factorial(type: double)

4、8 ; the result is written to stdout9 ;-1011 .data12 Prompt: .asciiz "An integer value >1 : "13 PrintfFormat:.asciiz "Factorial = %gnn"14 .align215 PrintfPar: .wordPrintfFormat16 PrintfValue: .space817 18 .text19 .globalmain20 main: ;* Read value from stdin into R121 addi r1,r0

5、,Prompt22 jal InputUnsigned23 ;* init values24 movi2fp f10,r1;R1 -> D0D0.Count register25 cvti2d f0,f1026 addi r2,r0,1 ;1 -> D2D2.result27 movi2fp f11,r228 cvti2d f2,f1139 movd f4,f2;1-> D4 D4.Constant 130Loop: ;* Break loop if D0 = 131 led f0,f4;D0<=1 ?32 bfpt Finish33 ;* Multiplication

6、 and next loop34 multd f2,f2,f035 subd f0,f0,f436 j Loop37 Finish: ;* write result to stdout38 sd PrintfValue,f239 addi r14,r0,PrintfPar40 trap 541 ;* end42 trap 0input.s1 ;* WINDLX Ex.1: Read a positive integer number *2 ;* (c) 1991 Günther Raidl *3 ;* Modified 1992 Maziar Khosravipour *4 ;-5

7、;Subprogram call by symbol "InputUnsigned"6 ;expect the address of a zero-terminated prompt string in R17 ;returns the read value in R18 ;changes the contents of registers R1,R13,R149 ;-1011 .data12 ;* Data for Read-Trap13 ReadBuffer: .space8014 ReadPar: .word0,ReadBuffer,8015 ;* Data for

8、Printf-Trap16 PrintfPar: .space417 SaveR2: .space418 SaveR3: .space419 SaveR4: .space420 SaveR5: .space42122 .text23 .globalInputUnsigned24 InputUnsigned:;* save register contents25 sw SaveR2,r226 sw SaveR3,r327 sw SaveR4,r428 sw SaveR5,r529 ;* Prompt30 sw PrintfPar,r131 addir14,r0,PrintfPar32 trap5

9、33 ;* call Trap-3 to read line34 addir14,r0,ReadPar35 trap336 ;* determine value37 addir2,r0,ReadBuffer38 addir1,r0,039 addir4,r0,10;Decimal system40 Loop: ;* reads digits to end of line41 lbu r3,0(r2)42 seqir5,r3,10;LF -> Exit43 bnezr5,Finish44 subir3,r3,48;´0´45 multur1,r1,r4;Shift de

10、cimal46 add r1,r1,r347 addir2,r2,1 ;increment pointer48 j Loop49 Finish: ;* restore old register contents50 lw r2,SaveR251 lw r3,SaveR352 lw r4,SaveR453 lw r5,SaveR554 jr r31; Return 三、模拟运行程序Pipeline子窗口Code子窗口开始执行程序,首先双击Register子窗口,可以看到DLX的全部寄存器及其内容,观察左上角的PC寄存器,其值为0x00000100,也就是说程序会从内存0x00000100处开始执

11、行再双击Pipeline子窗口,最大化该子窗口,可以看到DLX流水线的基本结构,在代表每个流水段的方框中,交叉线表示该方框目前没有执行指令,此时,所有方框均为交叉线,表明流水线没有执行程序在程序执行过程中激活Code子窗口,按下F7键,这时窗口中带有地址“$TEXT ”的第一条指令变成黄色切换到Register子窗口,可以看到PC值变为0x00000104切换到Register子窗口,可以看到PC值变为0x00000104。切换到Pipeline子窗口,可以看到,此时第一条指令在流水线的IF段,其他流水段空闲再按下 F7 键,可以看到,第一条指令进入到流水线的ID段,第二条指令进入流水线的IF

12、段 按F5输入要求阶乘的数,按F7通过运行显示结果为1202加载求最大公约数所需程序 gcm.sgcm.smain:;* Read two positive integer numbers into R1 and R2addir1,r0,Prompt1jalInputUnsigned;read uns.-integer into R1addr2,r1,r0;R2 <- R1addir1,r0,Prompt2jalInputUnsigned;read uns.-integer into R1Loop:;* Compare R1 and R2seqr3,r1,r2;R1 = R2 ?bnez

13、r3,Resultsgtr3,r1,r2;R1 > R2 ?bnezr3,r1Greaterr2Greater:;* subtract r1 from r2subr2,r2,r1jLoopr1Greater:;* subtract r2 from r1subr1,r1,r2jLoopResult: ;* Write the result (R1)swPrintfValue,r1addir14,r0,PrintfPartrap5;* end trap0最大公约数程序 gcm.s的结果:通过按F7和enter键分别输入第一个数2和第二个数6最后得出最大公约数231.装载程序structure

14、_d.s文件程序structure_d.s.dataA:.double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 B:.double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 .textLHIR2, (A>>16) & 0xFFFF ADDUIR2, R2, A & 0xFFFF LHIR3, (B>>16) & 0xFFFF ADDUIR3, R3, B & 0xFFFF ADDUR4, R0, R3 loop: LDF0, 0(R2) LDF4, 0(R3) ADDDF0, F0, F4 ADDDF2, F0, F2 ADDIR2, R2, #8 ADDIR3, R3, #8 SUBR5, R4, R2 BNEZR5, loop TRAP#02.双击打开clock cycle diagram窗口,按F7键单步执行首先,可以看到在指令执行第四个周期时,第二条指令和第一条指令之间产生了对于r2的数据相关实验总结: 通过本实验,基本掌握了WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点,对于体系结构这门课程的学习和后面的实验还是很有帮助的。通过本次系统结构实验,我对DLX的流水线运行分析,包括流水线单步执行、每个流水段功能、理解流水线停顿、流水线建

温馨提示

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

评论

0/150

提交评论