北邮大三下 计算机系统结构实验报告 实验一到五 WINDLX模拟器
计算机系统结构实验报告
计算机系统结构实验报告一、实验目的:1、熟练掌握WinDLX模拟器的操作和使用2、熟悉DLX指令集结构及其特点二、实验内容:1、用WinDLX模拟器执行求阶乘程序fact.s。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s 中的输入子程序,这个子程序用于读入正整数。
2、用WinDLX模拟器执行求最大公约数程序gcm.s。
该程序从标准输入读入两个整数,求他们的最大公约数,然后将结果写到标准输出。
该程序中调用了input.s 中的输入子程序。
3、通过上述使用WinDLX,总结WinDLX的特点。
三、实验结果:fact.s程序代码:.dataPrompt: .asciiz "An integer value >1 : "PrintfFormat: .asciiz "Factorial = %g\n\n".align 2PrintfPar: .word PrintfFormatPrintfValue: .space 8.text.global mainmain:;*** Read value from stdin into R1addi r1,r0,Promptjal InputUnsigned;*** init valuesmovi2fp f10,r1 ;R1 -> D0 D0..Count registercvti2d f0,f10addi r2,r0,1 ;1 -> D2 D2..resultmovi2fp f11,r2cvti2d f2,f11movd f4,f2 ;1-> D4 D4..Constant 1;*** Break loop if D0 = 1Loop: led f0,f4 ;D0<=1 ?bfpt Finish;*** Multiplication and next loopmultd f2,f2,f0subd f0,f0,f4j LoopFinish: ;*** write result to stdoutsd PrintfValue,f2addi r14,r0,PrintfPartrap 5;*** endtrap运行结果:gcm.s程序代码:.data;*** Prompts for inputPrompt1: .asciiz "First Number:"Prompt2: .asciiz "Second Number: ";*** Data for printf-TrapPrintfFormat: .asciiz "gcM=%d\n\n".align 2PrintfPar: .word PrintfFormatPrintfValue: .space 4.text.global mainmain:;*** Read two positive integer numbers into R1 and R2addi r1,r0,Prompt1jal InputUnsigned ;read uns.-integer into R1add r2,r1,r0 ;R2 <- R1addi r1,r0,Prompt2jal InputUnsigned ;read uns.-integer into R1Loop: ;*** Compare R1 and R2seq r3,r1,r2 ;R1 == R2 ?bnez r3,Resultsgt r3,r1,r2 ;R1 > R2 ?bnez r3,r1Greaterr2Greater: ;*** subtract r1 from r2sub r2,r2,r1j Loopr1Greater: ;*** subtract r2 from r1sub r1,r1,r2j LoopResult: ;*** Write the result (R1)sw PrintfValue,r1addi r14,r0,PrintfPartrap 5;*** endtrap 0运行结果:四、实验总结在本次实验过程当中,winDLX里的程序是一种汇编语言,通过对寄存器和条件转移来实现程序的实现。
北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器
北京邮电大学实验报告课程名称计算机系统结构计算机学院03班王陈(11)目录实验一WINDLX模拟器安装及使用......................................... 错误!未定义书签。
·实验准备................................................................................ 错误!未定义书签。
·实验环境................................................................................ 错误!未定义书签。
·实验步骤................................................................................ 错误!未定义书签。
·实验内容及要求.................................................................... 错误!未定义书签。
·实验过程............................................................................. 错误!未定义书签。
·实验总结............................................................................. 错误!未定义书签。
实验二指令流水线相关性分析 ............................................... 错误!未定义书签。
·实验目的............................................................................. 错误!未定义书签。
计算机系统结构实验报告
计算机系统结构实验报告一.流水线中的相关实验目的:1. 熟练掌握WinDLX 莫拟器的操作和使用,熟悉DLX 旨令集结构及其特点;2. 加深对计算机流水线基本概念的理解;3. 进一步了解DLX 基本流水线各段的功能以及基本操作;4. 加深对数据相关、结构相关的理解,了解这两类相关对CPI 性能的影响;5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。
实验平台:Win DLX 模拟器实验内容和步骤:1. 用WinDLX 模拟器执行下列三个程序:求阶乘程序fact.s求最大公倍数程序gcm.s 求素数程序prim.s分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPI 中寄存器和存储器的内容。
熟练掌握Win DLX 勺操作和使用。
2. 用WinDLX! 行程序structure_d.s ,通过模拟找出存在资源相关的指令对以及导致资源相关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;论述资源相关对CPI 性能的影响,讨论解决资源相关的方法。
3. 在不采用定向技术的情况下(去掉Configuration 菜单中Enable Forwarding 选项前的勾选符) ,用WinDLX! 行程序data_d.s 。
记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
在采用定向技术的情况下(勾选Enable Forwarding ),用WinDLX 再次运行程序data_d.& 重复上述 3 中的工作,并计算采用定向技术后性能提高的倍数。
1. 求阶乘程序用WinDLX 模拟器执行求阶乘程序fact.s 。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s 中的输入子程序,这个子程序用于读入正整数。
实验结果:在载入fact.s 和input.s 之后,不设置任何断点运行。
计算机体系结构实验报告——实验五
实验五:数据相关1.实验目的:通过本实验,加深对数据相关的理解,掌握如何使用定向技术来减少数据相关带来的暂停。
2.实验内容:(1)在不采用定向技术的情况下(通过Configuration菜单中的Enable Forwarding选项设置),用WinDLX模拟器运行程序data_d.s。
(2)记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
(3)在采用定向技术的情况下,用WinDLX模拟器再次运行程序data_d.s。
(4)记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
(5)根据上面记录的数据,计算采用定向技术后性能提高的倍数。
3.实验程序:程序data_d.s。
LHI R2,(A>>16)&0xFFFFADDUI R2,R2,A&0xFFFFLHI R3,(B>>16)&0xFFFFADDUI R3,R3,B&0xFFFFloop:LW R1,0(R2)ADD R1,R1,R3SW0(R2),R1LW R5,0(R1)ADDI R5,R5,#10ADDI R2,R2,#4SUB R4,R3,R2BNEZ R4,loopTRAP#0A:.word0,4,8,12,16,20,24,28,32,36B:.word9,8,7,6,5,4,3,2,1,04.实验流程图R2=A>>16R2=R2+AR3=B>>16R3=R3+BR1=(R2)R1=R1+R3(R2)=R1R5=(R1)R5=R5+10R2=R2+4R4=R3-R2NR4=0?YTRAP#05.实验过程当指令在流水线中重叠执行时,流水线有可能改变指令读/写操作数的顺序,使得读/写操作顺序不同于它们非流水实现的顺序,这将导致数据相关。
5.1在不采用定向技术的情况下,产生数据相关的地方:1>addui r2,r2,0x134需要用到lhi r2,0x0的计算结果,lhi指令在wb段才将计算结果写入寄存器r2中,但是addui指令在其ID段就要从寄存器r2中读取计算结果,这就产生了数据相关。
北邮计算机系统结构实验报告实验一到五WINDLX模拟器
北京邮电大学实验报告课程名称计算机系统结构计算机学院 201班王陈(2016110711)目录实验一 WINDLX模拟器安装及使用 (2)·实验准备............................................................................. 错误!未定义书签。
·实验环境............................................................................. 错误!未定义书签。
·实验步骤............................................................................. 错误!未定义书签。
·实验内容及要求................................................................. 错误!未定义书签。
·实验过程............................................................................. 错误!未定义书签。
.实验总结 (6)实验二指令流水线相关性分析 (6).实验目的 (7).实验环境 (7).实验步骤 (7)·实验过程............................................................................. 错误!未定义书签。
.实验总结 (12)实验三DLX处理器程序设计 (13).实验目的 (13)·实验环境............................................................................. 错误!未定义书签。
系统结构实验五:WinDLX模拟器的熟悉
实验五:熟悉WinDLX的使用
一、实验目的:
1、熟练掌握WinDLX模拟器的操作和使用
2、熟悉DLX指令集结构及其特点
二、实验内容:
1、用WinDLX模拟器执行求阶乘程序fact.s。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
2、用WinDLX模拟器执行求最大公约数程序gcm.s。
该程序从标准输入读入两个整数,求他们的最大公约数,然后将结果写到标准输出。
该程序中调用了input.s中的输入子程序。
3、通过上述使用WinDLX,总结WinDLX的特点。
三、实验报告
认真记录实验数据或显示结果。
如实填写实验报告。
1。
计算机系统结构实验报告
计算机系统结构实验报告一、实验目的:1、理解指令调度的概念2、了解指令调度对系统性能的影响二、实验内容:1、用WinDLX模拟器运行调度前的程序sch-befores.s,记录程序执行过程中各种相关发生的次数以及程序执行的总时钟周期数。
2、用WinDLX模拟器运行调度后的程序sch-after.s,记录程序执行过程中各种相关发生的次数以及程序执行的总时钟周期数。
3、根据记录结果,比较调度前和调度后的性能,分析其原因。
4、通过Configuration 菜单中的“Floating point stages”选项,把除法单元数设置为3,把加法﹑乘法﹑除法的延迟设置为 3 个时钟周期,重做上述三步。
三、实验结果:sch-befores.s:.data.global ONEONE: .word 1.text.global mainmain:lf f1,ONE ;turn divf into a movecvti2f f7,f1 ;by storing in f7 1 innop ;floating-point formatdivf f1,f8,f7 ;move Y=(f8) into f1divf f2,f9,f7 ;move Z=(f9) into f2addf f3,f1,f2divf f10,f3,f7 ;move f3 into X=(f10)divf f4,f11,f7 ;move B=(f11) into f4divf f5,f12,f7 ;move C=(f12) into f5multf f6,f4,f5divf f13,f6,f7 ;move f6 into A=(f13) Finish:trap 0运行结果:sch-after.s:.data.global ONEONE: .word 1.text.global mainmain:lf f1,ONE ;turn divf into a movecvti2f f7,f1 ;by storing in f7 1 innop ;floating-point formatdivf f1,f8,f7 ;move Y=(f8) into f1divf f2,f9,f7 ;move Z=(f9) into f2divf f4,f11,f7 ;move B=(f11) into f4divf f5,f12,f7 ;move C=(f12) into f5addf f3,f1,f2multf f6,f4,f5divf f10,f3,f7 ;move f3 into X=(f10)divf f13,f6,f7 ;move f6 into A=(f13)Finish:trap 0运行结果:除法单元数设置为3,乘法单元数设置为3,加法单元数设置为 3.Before运行结果:After运行结果:四、实验总结:在本次实验过程当中,在程序进行调度是对程序的排序重新进行了排列,其中Stall周期减少。
北邮计算机系统结构实验报告实验一到五WINDLX模拟器
北京邮电大学实验报告课程名称计算机系统结构计算机学院 201班王陈(2016110711)目录实验一 WINDLX模拟器安装及使用 (2)·实验准备............................................................................. 错误!未定义书签。
·实验环境............................................................................. 错误!未定义书签。
·实验步骤............................................................................. 错误!未定义书签。
·实验内容及要求................................................................. 错误!未定义书签。
·实验过程............................................................................. 错误!未定义书签。
.实验总结 (6)实验二指令流水线相关性分析 (6).实验目的 (7).实验环境 (7).实验步骤 (7)·实验过程............................................................................. 错误!未定义书签。
.实验总结 (12)实验三DLX处理器程序设计 (13).实验目的 (13)·实验环境............................................................................. 错误!未定义书签。
系统结构实验报告一
《计算机系统结构课内实验》实验报告班级:计算机01姓名:陈世阳学号:10055008日期:2013.5.10一、实验目的及要求1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;2. 加深对计算机流水线基本概念的理解;3. 进一步了解DLX基本流水线各段的功能以及基本操作;4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。
二、实验环境WinDLX模拟器三、实验内容1.用WinDLX模拟器执行下列三个程序(任选一个):●求阶乘程序fact.s●求最大公倍数程序gcm.s●求素数程序prim.s分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。
熟练掌握WinDLX的操作和使用。
注意:fact.s中调用了input.s中的输入子程序。
load程序时,要两个程序一起装入(都select后再点击load)。
gcm.s也是如此。
2.用WinDLX运行程序structure_d.s,通过模拟:●找出存在结构相关的指令对以及导致结构相关的部件;●记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;●论述结构相关对CPU性能的影响,讨论解决结构相关的方法。
3.在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项前的勾选符),用WinDLX运行程序data_d.s。
记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
4.在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。
重复上述3中的工作,并计算采用定向技术后性能提高的倍数。
四、实验步骤及结果1.(1)用winDLX执行求最大公倍数程序gcm.s:File->load code or data->分别选中gcm.s和input.s->select.(2)首先直接运行整个程序(enable forwarding),execute->run(或按F5)例如,输入如下:(3)再来看此时statistics栏和register栏的情况。
计算机系统结构第一,二次实验报告范文
班别:学号:姓名:袁凯琦1.实验一WINDLX模拟器安装及使用1.1实验类别:综合实验1.2实验目的:建立实验环境,了解WINDLX模拟器的结构及使用1.3实验设备环境:WinDLX要求的硬件平台是IBM PC兼容机,WinDLX是一个Windows应用程序,运行于Windows 3.0以上的操作系统。
1.4实验原理:WinDLX软件包中带有说明文件,供安装程序时候使用。
1.5要点与难点:软件包中还有WinDLX教程和联机帮助,可以通过它们进一步了解模拟器的使用方法和DLX处理器的原理。
大家在进行模拟实验以前应该仔细阅读这些文档。
1.6实验内容和要求:阅读模拟器Help文档和相关资料,利用Fact.s及Input.s代码熟悉模拟器的配置、各项工具使用、寄存器设置及指令系统。
1.7实验步骤:(1)WINDLX模拟器安装WinDLX是一个基于Windows的模拟器, 能够演示DLX流水线是如何工作的。
WinDLX 包含windlx.exe和windlx.hlp文件。
同时,还需要一些扩展名为.s的汇编代码文件。
按以下步骤在Windows下安装WinDLX: WinDLX创建目录,例如E:\WINDLX解压WinDLX软件包或拷贝所有的WinDLX文件(至少包含 windlx.exe, windlx.hlp)到这个WinDLX 目录。
(2)熟悉模拟器的配置启动和配置WinDLX: 双击WinDLX图标,将出现一个带有六个图标的主窗口,双击这些图标会弹出子窗口.(3)利用Fact.s及Input.s代码熟悉各工具的使用1)导入求阶乘程序fact.sFile--> Load code or Data,然后出现以下界面,双击fact.s,input.s(由于fact.s调用了input.s),点击Load键即可导入按F7,单步运行程序,通过观察各个窗口的信息,理解fact.s的运行情况显示的是各个寄存器的名称及内容PC:程序计数器;IMAR:指令内存地址寄存器;IR:指令寄存器;A,B:ALU操作数寄存器;BTA:分支地址寄存器;ALU:ALU输出寄存器,ALUI(伪)寄存器;FPSR:用来保存有关浮点数操作结果的信息;DMAR:数据内存地址寄存器;SDR:存数据寄存器,SDRI (伪)寄存器;LDR:去素聚寄存器,LDRI(伪)寄存器;R0~R31:32位通用寄存器,R0永远为0;F0~F31:浮点寄存器。
北邮计算机系统结构WINDLX模拟器实验 报告
实验报告学院: 计算机学院课程名称: 计算机系统结构实验名称: WINDLX模拟器实验班级:姓名:学号:实验一 WINDLX模拟器安装及使用略实验二指令流水线相关性分析一.实验类别验证实验二.实验目的通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线与RISC处理器的特点的理解。
三.实验环境Windows XP操作系统WinDLX模拟器四.实验原理指令流水线中主要有结构相关、数据相关、控制相关。
相关影响流水线性能。
(1)数据相关定义:原有先后顺序的两条指令(I1,I2)在对共享变量(位置)进行读、写时,指令流水线中实际完成的读、写顺序与原有顺序不一致,导致流水线输出错误。
三类数据相关:写读(WR)相关读写(RW)相关写写(WW)相关解决方法技术:1、使某些流水线指令延迟、停顿一或多个周期。
2、双端口存储器:如果指令与数据放在同一个存储器。
3、设置两个存储器:一个数据存储,一个为指令存储器。
4、软件优化编译:通过指令重新排序,消除数据相关。
5、定向技术:又称旁路技术或专用通路技术,就是使后续指令提前得到前指令的运算结果(适合ALU类指令)(2)结构相关定义:如果某指令在流水线重叠执行过程中,硬件资源满足不了指令重叠执行的要求,会产生资源冲突或竞争,称为流水线结构相关解决方法技术:1、延迟技术:使某些指令延迟、停顿一或多个时钟周期2、双端口存储器:允许同时读两个数据或指令3、设置双存储器(哈弗结构):一个数据存储,一个指令存储。
4软件优化编译:通过指令重新排序消除结构相关。
(3)控制相关定义:控制相关就是指因程序执行转移类指令而引起的冲突相关。
包括无条件转移、条件转移、子程序调用、中断等,它们属于分支指令,执行中可能改变程序方向,造成流水线断流。
解决方法技术:1、静态分支技术静态转移预测技术(猜测法) ;延迟转移;提前形成条件码,生成转移目标地址;改进循环程序;2、动态分支预测技术转移历史表BHT;转移目标缓冲栈(BTB);转移目标指令缓冲栈BTIB;五.实验步骤(1) 观察程序中出现的数据/控制/结构相关。
计算机系统结构WinDlx实验报告
计算机组成与系统结构课程设计题目:流水线指令设计及页面置换算法在WinDLX软件中的应用学校:专业:学号:姓名:指导教师:***2011 年 6 月22 号目录1、实验一.....................21.1实验目的.......................21.2实验平台.......................21.3 预备知识.......................21.4实验内容和步骤....................21.5实验程序.......................41.6 实验报告要求.....................62、实验二.........................92.1 实验目的.......................92.2 实验平台.......................10 2.3 预备知识.......................10 2.4 实验内容和步骤....................10 2.5 实验程序.......................10 2.5.1 源程序.....................11 2.5.2 程序分析.....................11 2.5.3 结果截图.....................112.6 实验报告要求.....................123、实验三.........................13 3.1 实验目的.......................13 3.2 实验平台.......................13 3.3 预备知识.......................13 3.4 实验内容和步骤....................13 3.5 实验程序.......................13 3.5.1 源程序......................14 3.5.2 没有采用定向技术分析...............14 3.5.3 采用定向技术分析.................14 3.5.4 结果截图.....................153.6 实验报告要求.....................154、实验四.........................16 4.1 实验目的.......................16 4.2 实验平台......................16 4.3 预备知识.......................16 4.3.1 调页策略.....................16 4.3.2 页面置换算法...................17 4.4 实验内容和步骤....................18 4.5 实验程序.......................19 4.5.1 源程序......................19 4.5.2 程序流程图....................22 4.5.3 结果截图.....................234.6 实验报告要求.....................235、实验总结........................236、参考资料.......................23实验一 WinDLX模拟器与DLX指令的使用1.1实验目的1.1.1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;1.1.2. 加深对计算机流水线基本概念的理解;1.1.3. 了解DLX基本流水线各段的功能以及基本操作;1.2实验平台WinDLX模拟器1.3预备知识1.3.1. WinDLXWinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,能够演示DLX流水线是如何工作的。
北邮大三计算机体系结构实验一 WINDLX模拟器安装及使用
实验一WINDLX模拟器安装及使用实验内容:WINDLX模拟器结构和功能:1、Register窗口Register窗口显示寄存器中的内容。
2、code窗口窗口显示的信息是存储器内容,分别是:地址(符号或数字)、命令的十六进制机器代码和汇编命令。
点击Execution中的Single Cycle单步执行,每点击一次执行一步,依次执行IF,ID,intEX,MEM,WB,每执行一步通过颜色的变化来标识命令处于流水线的哪一段。
点击Execution中的Multiple Cycles可以选择执行多步。
3、Pipeline窗口Pipeline窗口显示DLX处理器的内部结构。
窗口中用图表形式显示了DLX的五段流水线,处于不同流水段的指令都能够在图表中显示。
点击Execution中的Single Cycle或Multiple Cycles执行可以看到哪个流水段执行的是哪一条指令。
4、Clock Cycle Diagram窗口Clock Cycle Diagram窗口显示流水线的时空图,该时空图中显示了每一个时隙内的运行情况。
双击流水线时空图的某一行会详细显示对应行流水段处理器内部的执行动作。
5、Statistics窗口Statistics窗口是对运行程序中数据的分析主要包括模拟中硬件配置情况、暂停及原因、条件分支、Load/Store指令、浮点指令和traps以及事件发生的次数和百分比。
在静态窗口中我们可以比较一下不同配置对模拟的影响。
6、Breakpoint 窗口Breakpoint窗口用来观察代码运行的情况。
Set Breakpoint窗口,可以选择命令运行到流水线的哪一阶段时,程序停止执行。
在Code 窗口中,相应行上会出现"BID" ,它表示当本指令在译码段时,程序中止执行。
计算机系统结构实验报告记录
计算机系统结构实验报告记录————————————————————————————————作者:————————————————————————————————日期:计算机系统结构实验报告一.流水线中的相关实验目的:1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;2. 加深对计算机流水线基本概念的理解;3. 进一步了解DLX基本流水线各段的功能以及基本操作;4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。
实验平台:WinDLX模拟器实验内容和步骤:1.用WinDLX模拟器执行下列三个程序:求阶乘程序fact.s求最大公倍数程序gcm.s求素数程序prim.s分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。
熟练掌握WinDLX的操作和使用。
2. 用WinDLX运行程序structure_d.s,通过模拟找出存在资源相关的指令对以及导致资源相关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;论述资源相关对CPU性能的影响,讨论解决资源相关的方法。
3. 在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项前的勾选符),用WinDLX运行程序data_d.s。
记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。
重复上述3中的工作,并计算采用定向技术后性能提高的倍数。
1. 求阶乘程序用WinDLX模拟器执行求阶乘程序fact.s。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京邮电大学实验报告课程名称计算机系统结构计算机学院 2011211311班薛玥(2011211432)目录实验一 WINDLX模拟器安装及使用 (3).实验准备 (3).实验环境 (4).实验步骤 (5).实验内容及要求 (5).实验过程 (5).实验总结 (11)实验二指令流水线相关性分析 (12).实验目的 (12).实验环境 (12).实验步骤 (12).实验过程 (12).实验总结 (19)实验三DLX处理器程序设计 (20).实验目的 (20).实验环境 (20).实验步骤 (20).实验过程 (20)A.向量加法代码及性能分析 (20)B.双精度浮点加法求和代码及结果分析 (26).实验总结 (31)实验四代码优化 (32).实验目的 (32).实验环境 (32).实验原理 (32).实验步骤 (32).实验过程 (32).实验总结+实习体会 (37)实验五循环展开 (38).实验目的 (38).实验环境 (38).实验原理 (38).实验步骤 (38).实验过程 (38)矩阵乘程序代码清单及注释说明 (38)相关性分析结果 (43)增加浮点运算部件对性能的影响 (43)增加forward部件对性能的影响 (43)转移指令在转移成功和转移不成功时候的流水线开销 (43).实验总结+实习体会+课程建议 (43)实验一 WINDLX模拟器安装及使用·实验准备1.了解DLX的基本结构和原理DLX是一种典型的Load/Store型指令集结构。
它具有一套简单的Load/Store 指令集;它注重指令流水效率;它简化指令的译码;它高效支持编译器。
2.了解DLX中的寄存器DLX中有32个通用寄存器(GPRs),分别将其命名为R0,R1...R31。
每个通用寄存器长度为32位。
另外,DLX中有32个浮点寄存器(FPRs),分别将其命名为F0,F1 (31)3.了解DLX数据类型DLX提供了多种长度的整型数据和浮点数据。
对整型数据而言,有8位,16位,32位多种长度;对浮点而言,有32位单精度浮点数和64位双精度浮点数。
浮点数据表示采用的是IEEE754标准。
DLX操作都是对32位整型数据及32或64位浮点数据进行的。
4.了解DLX的寻址方式和数据传送DLX提供了寄存器寻址,立即寻址,偏移寻址和寄存器间接寻址四种寻址方式。
寄存器寻址字段的大小为5位,用来标识32个通用寄存器或浮点寄存器。
5.了解DLX的指令格式因为DLX只有四种寻址方式,所以将其寻址方式编码在操作码中。
为了简化指令译码,并充分发挥流水线的效率,所有DLX指令的字长均是32位,其中用6位表示操作码。
DLX中各种类型指令的格式如下图所示:6.了解DLX中的操作DLX指令中的操作可以分为四种类型,即:Load和Store操作、ALU操作、分支和跳转操作、浮点操作。
(1)Load和Store操作可以对DLX的所有通用寄存器和浮点寄存器进行Load(载入)和Store(储存)操作,但是通用寄存器R0的Load操作没有任何效果。
(2) ALU操作在DLX中,所有的ALU指令都是寄存器-寄存器型指令,其运算包含了简单的算术和逻辑运算,DLX还允许所有这些指令对立即值进行操作,立即值以16位符号扩展形式出现。
在DLX指令集中,还有一些寄存器比较指令(=,≠,<,>,≤,≥),如果比较结果为真,这些指令就在目标寄存器中填入1(表示真),否则填入0(表示假)。
因为这些比较操作指令要对目标寄存器进行“设置”,所以也称它们为设置相等、设置不等、设置小于等指令。
(3) 分支和跳转操作在DLX中,对程序流程的控制是通过一些跳转和分支指令来实现的。
根据描述目标地址的方法和是否链接可以将跳转操作指令分为四种类型。
其中两种类型的跳转指令用带符号位的26位偏移量加上程序计数器的值来确定跳转的目标地址,另外两种类型的跳转指令则指定一个寄存器,由寄存器中的内容决定跳转的目标地址。
跳转有两种类型,一种是简单跳转,另一种是跳转并链接(用于过程调用),后者将返回一个地址,即将下一条顺序指令地址(返回地址)保存在寄存器R31中。
DLX中的所有分支指令均是条件分支指令,其源操作数寄存器中包含了一个数值或某个比较结果。
分支指令测试该源操作数寄存器中的值是0还是非0,决定分支是否成功。
(4) 浮点操作DLX的浮点操作有:加、减、乘、除。
后缀D代表双精度浮点操作,而后缀F代表单精度浮点操作(如:ADDD、ADDF、SUBD、SUBF、MULTD、MULTF、DIVD、DIVF)。
值得提出的是,DLX的浮点比较操作设置浮点状态寄存器中的位,如果比较结果为真,则将该位设置为1;如果比较结果为假,则将该位设置为0。
浮点分支指令BFPT和BFTF则测试该寄存器的值来决定分支是否成功。
·实验环境Windows XP操作系统WinDLX模拟器·实验步骤1.WINDLX模拟器安装2.熟悉模拟器的配置3.熟悉各工具的使用·实验内容及要求阅读模拟器Help文档和相关资料,利用Fact.s及Input.s代码熟悉模拟器的配置、各项工具使用、寄存器设置及指令系统。
软件包中还有WinDLX教程和联机帮助,可以通过它们进一步了解模拟器的使用方法和DLX处理器的原理。
·实验过程前期精读老师所给资料+上网查询相关资料,了解WinDLX模拟器。
1.首先,要认真阅读老师所给的有关WinDLX的实验指导书和使用指南,在实验开始之前一定要对软件有个细致的了解,点击,文档十分细致的讲述了这个模拟器各个窗口所包含的功能。
但是我在做实验的时候还上网查了一些资料,希望能够对自己在以后的试验中有所帮助。
文档介绍了该模拟器的指令格式及要求。
2.在详细了解了WinDLX模拟器之后,点击,则开始运行。
WinDLX模拟器的结构和功能说明1.点击运行之后,会看到一个如下图所示的窗口。
它包括Register, Code, Pipeline, Clock Cycle Diagram, Statistics, Breakpoints。
接下来详细介模拟器的结构及各个部件的功能。
2.Register窗口介绍Rigister窗口中显示的是各个寄存器的名称及内容。
如下图:可以看到寄存器中以十六进制标识,从上图可以看出各个寄存器中的内容。
2.Code窗口介绍在没有进行任何执行的时候,初次打开code窗口,即为下图所示窗口现实的信息是各个存储器内同。
第一列标识存储器的地址;第二列是机器代码,用16进制表示;第三列是汇编指令。
当我们点击上方的,可以选择单步或多步执行(也可以使用快捷键F7或F8)。
若选择单步执行,每按一次F7,指令执行一次,可以看到,一次执行的为IF->ID->intEX->MEM->WB,没执行一次还有颜色的变化。
颜色是用来标识指令处于哪个流水段的,如下图。
当然,我们也可以使用多步执行,按快捷键F8,选择5步流水,即可。
3.Pipeline窗口介绍通过阅读WinDLX模拟器说明书可以知道,Pipeline窗口显示的是DLX处理器的内部结构。
窗口用下图标识DLX五段流水。
当然,如同Code窗口介绍讲述的那样,不同的颜色显示了指令处于哪段流水线。
使用快捷键F7单步执行,可以明显的看出,不同时候流水段执行的不同指令。
如下图。
图片反映的正式与Code中所处的时刻相同的指令流水。
可以清晰看到不同流水段执行的是哪条指令。
4.Clock Cycle Diagram窗口实验准备中我们已经知道,该窗口显示的是流水线的时空图。
时空图反映的是不同时隙内的运行情况。
如下图。
在我看来,时空图是最好理解的。
因为它反映的就是流水段的并行程度。
在这个DLX模拟器中,并不存在一些数据或者控制上的冲突问题。
所以可以依靠上图很清晰的看到指令所处的不同流水段,及指令执行情况。
该时空图同样也是和前面的Code等相对应。
也可以通过快捷键F7来进一步执行指令,可以看到流水线时空图的扩展情况。
任意双击指令的一行,可以详细看到不同流水段的情况。
如下图所示。
5.Statistics窗口介绍该窗口是对运行程序中的数据进行分析。
主要包括模拟器中硬件配置情况,在该窗口中,我们可以比较不同配置对于该模拟器的不同影响。
如下图所示。
1)整体指令执行情况2)硬件配置情况3)暂停次数和百分比及原因分析4)分支次数和百分比5)Load/Store指令执行情况6)浮点指令执行次数和百分比7)trap发生的次数和百分比6.Breakpoints窗口介绍该窗口使用来观察代码运行情况。
先打开Breakpoints窗口,点击窗口上方的来设置breakpoint,也就是设置指令运行到流水线的哪个阶段程勋停止执行。
如上图,如果选择EX阶段,在Code窗口中相应的行会出现BEX,即指令执行到译码结束执行开始的时候,程序将中止。
·实验总结通过本次试验,由于是第一次接触DLX模拟器,该试验能够帮助我对这个模拟器大致的功能及使用做个大致的了解。
对于日后的实验打下好的基础。
我觉得WinDLX模拟器小而精悍,它有不同颜色的标记,不同寄存器及存储器的反映。
通过使用它,可以对5步流水的过程及不同阶段很清楚明白的看到。
也可以看到不同指令分析走到了哪一步,到了哪一步流水段。
实验二指令流水线相关性分析·实验目的通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC 处理器的特点的理解。
·实验环境Windows XP操作系统WinDLX模拟器·实验步骤1.观察程序中出现的数据/控制/结构相关。
指出程序中出现上述现象的指令组合。
2.考察增加浮点运算部件对性能的影响。
3.考察增加forward部件对性能的影响。
4.观察转移指令在转移成功和转移不成功时候的流水线开销。
·实验过程在开始模拟之前,至少应装入一个程序到主存,按照下述步骤,将fact.s 和input.s加载至WinDLX中。
加在完后点击Code后可以看到如下图所示。
证明加载成功,即可进行以下实验。
1.观察程序中出现的数据/控制/结构相关;指出程序中出现上述现象的指令组合。
1)数据相关如下图所示,在Clock Cycle Diagram窗口所想是的时空图中和Pipeline 窗口中的流图中,第一次出现了R-Stall。
接下来可以点击上图中的橘色窗口,则屏幕显示lbu r3,0×0(r2)要在WB周期写回r3中的数据;而下一条指令seqi r5,r3,0×a要在intEX周期中读取r3中的数据。
上述过程发生了WR冲突,即写读相关。