计算机体系结构实验报告——实验三
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机体系结构实验报告——实验三
1.实验目的:
通过实验,熟练掌握WINDLX的操作方法,特别注意在单步执行WinDLX程序中,流水线中指令的节拍数。
2.实验内容:
(1)用WinDLX模拟器执行求素数程序prim.s。这个程序计算若干个整数的素数。
(2)单步执行两轮程序,求出素数2和3。
(3)在执行程序过程中,注意体验单步执行除法和乘法指令的节拍数,并和主菜单configuration/floating point slages中的各指令执行拍数进行比较。
3.实验程序
求素数程序prim.s。
;***********WINDLX Exp.2:Generate prime number table*************
;-------------------------------------------------------------------
;Program begins at symbol main
;generates a table with the first'Count'prime numbers from'Table'
;-------------------------------------------------------------------
.data
;***size of table
.global Count
Count:.word10;10的地址值
.global Table
Table:.space Count*4;给Table保留Count*4个字节
.text
.global main
main:
;***Initialization
addi r1,r0,0;Index in Table;0+0地址值送R1
addi r2,r0,2;Current value;0+2地址值送R2
;***Determine,if R2can be divided by a value in table NextValue:addi r3,r0,0;Helpindex in Table;0+0地址值送R3 Loop:seq r4,r1,r3;End of Table?;IF r1==r3?Yes r4=1;else r4=0; bnez r4,IsPrim;R2is a prime number r4!=0,excute IsPrim
lw r5,Table(R3)
divu r6,r2,r5
multu r7,r6,r5
subu r8,r2,r7
beqz r8,IsNoPrim;if r8==0,excute IsNoPrim
addi r3,r3,4;r3+4->r3
j Loop
IsPrim:;***Write value into Table and increment index
sw Table(r1),r2
addi r1,r1,4
;***'Count'reached?
lw r9,Count
srli r10,r1,2
sge r11,r10,r9
bnez r11,Finish
IsNoPrim:;***Check next value
addi r2,r2,1;increment R2
j NextValue
Finish:;***end
trap0
4、实验流程图
5、实验步骤和结果
单步执行过程中寄存器的变化情况(1)获取素数2:
由于R1=R3=0,所以R2=2为素数,将2送入Table(0)中。
(2)获取素数3。执行步骤以及对应的寄存器的变化情况:
1>R2=2is PRim,R4=1;2>R1+4->R1;3>10->R9,R1/4->R10,R2+1->R2;4>R1!=R3,R4=0;
5>Table(R3)->R5;6>R2/R5->R6;7>R6*R5->R7;8>R2-R7->R8;
9>R3+4->R3;10>R2=3is PRim,R4=1;11>R2=3->Table(4),R1+4->R1;
(3)乘法指令的节拍数为:5(-9—-5);除法指令的节拍数为:19(-28—-10);主菜单configuration/floating point slages中的各指令执行拍数:乘法为5;除法为19。正好与上述的执行过程一致。
(4)数据相关和结构相关:数据相关:
Addi r1,r0,0x0
Addi r2,r0,0x2
Addi r3,r0,0x0
Seq r4,r1,r3
Bnez r4,lsprim
Lw r5,table(r3)
Divu r6,r2,r5
Multu r7,r6,r5
Subu r8,r2,r7
Beqz r8,lsnoprim
Addi r3,r3,0x4
J loop
Sw table(r1),r2
Addi r1,r1,0x4
Lw r9,$data(r0)
Srli r10,r1,2
Sge r11,r10,r9
Bnez r11,finish
Addi r2,r2,0x1
J nextvalue
Trap0x0
nop
结构相关:
Instructions/cycles
Sw table(r1),r2
Addi r1,r1,0x4
Lw r9,$data(r0)
Srli r10,r1,2
Sge r11,r10,r9
Bnez r11,finish
Addi r2,r2,0x1
Trap0x0
nop
6、实验总结
通过本次实验的学习,我充分理解了寄存器的变化情况一步一步反映着程序的进行情况。我基本熟练掌握windlx的操作和使用,对程序在流水线中的执行情况基本了解,观察到了cpu中寄存器和存储器的内容变化,清晰掌握数据相关和结构相关的意义。同时执行过程中的乘除法节拍也是通过Configuration,我们自己进行设定的。通过这些数据,我们可以看到数据相关以及结构相关的一些情况。本次实验使我对程序执行过程中,各个硬件的工