WinDLX模拟器模拟实验
1 实验目的
熟悉加深对流水线及RISC处理器的理解。
2 实验环境
WinDLX模拟器可以装入DLX汇编语言程序,然后单步、设置断点或者连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来。模拟器还提供了对流水线操作的统计功能。该模拟器对理解流水线和RISC处理器的特点很有帮助。
3 实验步骤
一.使用WinDLX模拟器,对Fact.s做如下分析:
(1) 考察增加浮点运算部件对性能的影响。
(2) 考察增加forward部件对性能的影响。
(3) 观察转移指令在转移成功和转移不成功时候的流水线开销。
4 实验内容和要求
1. 针对上面的实验内容,记录实验过程,给出分析结果。
2. 给出实验总结:根据实验,总结采用流水线技术会遇到的问题和为解决这些问题所采用的各种技术的作用。同时简单谈谈自己对流水线技术的认识。
5实验程序代码
5.1 Fact.s程序代码:
.data
Prompt: .asciiz "An integer value >1 : "
PrintfFormat: .asciiz "Factorial = %g\n\n"
.align 2
PrintfPar: .word PrintfFormat
PrintfValue: .space 8
.text
.global main
main:
;*** Read value from stdin into R1
addi r1,r0,Prompt
jal InputUnsigned
;*** init values
movi2fp f10,r1 ;R1 -> D0 D0..Count register
cvti2d f0,f10
addi r2,r0,1 ;1 -> D2 D2..result
movi2fp f11,r2
cvti2d f2,f11
movd f4,f2 ;1-> D4 D4..Constant 1
;*** Break loop if D0 = 1
Loop: led f0,f4 ;D0<=1 ?
bfpt Finish
;*** Multiplication and next loop
multd f2,f2,f0
subd f0,f0,f4
j Loop
Finish: ;*** write result to stdout
sd PrintfValue,f2
addi r14,r0,PrintfPar
trap 5
;*** end
trap 0
5.2 Input.s程序代码:
.data
;*** Data for Read-Trap
ReadBuffer: .space 80
ReadPar: .word 0,ReadBuffer,80
;*** Data for Printf-Trap
PrintfPar: .space 4
SaveR2: .space 4
SaveR3: .space 4
SaveR4: .space 4
SaveR5: .space 4
.text
.global InputUnsigned
InputUnsigned:
;*** save register contents
sw SaveR2,r2
sw SaveR3,r3
sw SaveR4,r4
sw SaveR5,r5
;*** Prompt
sw PrintfPar,r1
addi r14,r0,PrintfPar
trap 5
;*** call Trap-3 to read line
addi r14,r0,ReadPar
trap 3
;*** determine value
addi r2,r0,ReadBuffer
addi r1,r0,0
addi r4,r0,10 ;Decimal system
Loop: ;*** reads digits to end of line
lbu r3,0(r2)
seqi r5,r3,10 ;LF -> Exit
printf怎么加两个条件 bnez r5,Finish
subi r3,r3,48 ;??
multu r1,r1,r4 ;Shift decimal
add r1,r1,r3
addi r2,r2,1 ;increment pointer
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论