1、实 验 报 告课程名称 计算机体系结构 实验项目 _ WinDLX 模拟器实验 _实验仪器 个人计算机 系 别 _ 计算机学院_ 专 业 _ 网络工程 班级/学号 网工 0903/2009011422 学生姓名 _张昭_ 实验日期 _成 绩 _指导教师 _ _侯凌燕_WinDLX 模拟器实验实习目的:通过使用 WINDLX 模拟器,对程序中的三种相关原理进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和 RISC 处理器的特点的理解。实习环境:WinDLX 模拟器可以装入 DLX 汇编语言程序,然后单步、设置断点或者连续执行该程序。CPU 的寄存器、流水线、I/
2、O 和存储器都可以使用图形的方式表示出来。模拟器还提供了对流水线操作的统计功能。该模拟器对理解流水线和 RISC 处理器的特点很有帮助。WinDLX 要求的硬件平台是 IBM PC 兼容机,WinDLX 是一个 Windows应用程序,运行于 Windows 3.0 以上的操作系统。WinDLX 软件包中带有说明文件,供安装程序时候使用。软件包中还有 WinDLX 教程和联机帮助,可以通过它们进一步了解模拟器的使用方法和 DLX 处理器的原理。大家在进行模拟实验以前应该仔细阅读这些文档。实习步骤: 1. 一用 WinDLX 模拟器执行下列三个程序(按照最后一位学号除 3的余数选择):l 求素数
3、程序 prim.s(余数为 2)分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察 CPU 中寄存器和存储器的内容。熟练掌握WinDLX 的操作和使用。Prim.s 程序的源代码:;* WINDLX Exp.2: Generate prime number table *;* (c) 1991 G 黱 ther Raidl *;* Modified 1992 Maziar Khosravipour *;-; Program begins at symbol main; generates a table with the first Count prime numbe
4、rs from Table;-.data;* size of table.global CountCount: .word 10.global TableTable: .space Count*4.text.global mainmain:;* Initializationaddi r1,r0,0 ;Index in Tableaddi r2,r0,2 ;Current value;* Determine, if R2 can be divided by a value in tableNextValue: addi r3,r0,0 ;Helpindex in TableLoop: seq r
5、4,r1,r3;End of Table?bnez r4,IsPrim ;R2 is a prime numberlw r5,Table(R3)divu r6,r2,r5multu r7,r6,r5subu r8,r2,r7beqz r8,IsNoPrimaddi r3,r3,4j LoopIsPrim: ;* Write value into Table and increment indexsw Table(r1),r2addi r1,r1,4;* Count reached?lw r9,Countsrli r10,r1,2sge r11,r10,r9bnez r11,FinishIsNo
6、Prim: ;* Check next valueaddi r2,r2,1 ;increment R2j NextValueFinish: ;* endtrap 0步进:连续:设置断点:(1) 观察程序中出现的数据/控制/结构相关。指出程序中出现上述 现象的指令组合。(2) 考察增加浮点运算部件对性能的影响。(3) 考察增加 forward 部件对性能的影响。(4) 观察转移指令在转移成功和转移不成功时候的流水线开销。2. 在不采用定向技术的情况下(去掉 Configuration 菜单中 Enable Forwarding 选项前的勾选符),用 WinDLX 运行程序 data_d.s。记录
7、数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。改变前:改变后:不采用重新定向技术,我们得到的结果采用定向技术,我们得到的结果:数据相关引起的暂停时钟周期总数、程序执行的总时钟周期数、计算暂停时钟周期数占总执行周期数的百分比:总的周期数(2605) ,暂停数(2021)百分比:2021/2605=77.58%(采用定向技术)总的周期数(3194) ,暂停数(2334)百分比:2334/3194=73.07%(不采用定向技术)数据相关:Addi r1,r0,0x0Addi r2,r0,0x2Addi r3,r0,0x0Seq r4,r1,r3Bn
8、ez r4,lsprimLw r5,table(r3)Divu r6,r2,r5Multu r7,r6,r5Subu r8, r2,r7Beqz r8,lsnoprimAddi r3, r3,0x4I loopSw table(r1),r2Addi r1, r1,0x4Lw r9,$data(r0)Srli r10,r1,2Sge r11,r10,r9Bnez r11, finishAddi r2,r2,0x1I nextvalueTrap 0x0nop结构相关:Instructions/cyclesSw table(r1),r2Addi r1,r1,0x4Lw r9,$data(r0)Srl
9、i r10,r1,2Sge r11,r10,r9Bnez r11,finishAddi r2,r2,0x1Trap 0x0nop1.分析并写出此时全部数据相关的指令、原因、流水线停顿截图、暂停时钟周期数(循环的只写一轮)所有截图如上(截图为整个循环)2.数据相关引起的暂停时钟周期数、程序执行的总时钟周期数、计算采用定向技术后性能提高的倍数。总的周期数(2605) ,暂停数(2021)百分比:2021/2605=77.58%(采用定向技术)总的周期数(3194) ,暂停数(2334)百分比:2334/3194=73.07%(不采用定向技术)性能提高倍数:3194/2605-1=22.61%3.在
10、程序逐步执行过程中,对于 Clock Cycle Diagarm 窗口中出现的一些箭头,可否给出一些解释?在 Clock cycle diagram 窗口中,有时候还可以看到在指令之间出现了红和绿的箭头。红色箭头表示需要一个暂停,箭头指向处显示了暂停的原因。R-Stall(R-暂停)表示引起暂停的原因是 RAW。绿色箭头表示定向技术的使用。4.对于产生相关的一些程序,可否有什么方法来避免这些相关?可以考虑采用资源重复的方法,比如,在流水线机器中设置相互独立的指令存储器和数据存储器,也可以将 CACHE 分割成指令CACHE 和数据 CACHE。实验总结:在本次试验中,我基本熟练掌握 windlx 的操作和使用,对程序在流水线中的执行情况基本了解,观察到了 cpu 中寄存器和存储器的内容变化,清晰掌握数据相关和结构相关的意义。基本上可以独立使用 windlx 软件进行操作。