计算机体系结构实验报告——实验三

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,我们自己进行设定的。通过这些数据,我们可以看到数据相关以及结构相关的一些情况。本次实验使我对程序执行过程中,各个硬件的工

相关文档
最新文档