北邮计算机系统结构实验报告-实验一到五-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里的程序是一种汇编语言,通过对寄存器和条件转移来实现程序的实现。

计算机系统结构 实验报告 (截图 分析 总结)

计算机系统结构 实验报告 (截图 分析 总结)

实验一流水线中的相关一、实验目的1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;2. 加深对计算机流水线基本概念的理解;3. 进一步了解DLX基本流水线各段的功能以及基本操作;4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停二、实验平台WinDLX 模拟器三、实验内容和步骤1.用WinDLX模拟器执行下列三个程序:(分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。

熟练掌握WinDLX的操作和使用。

)●求阶乘程序fact.s⏹步进的运行方式:步进的运行方式是指,每次控制只执行一条语句,快捷键为F7键:图1-1 单步运行测试⏹设置断点的运行方式:鼠标点击某行,按下“Insert键”,设置断点:图1-2 设置断点图1-3 断点设置成功,按F5运行至断点⏹连续的运行方式:通过按下F5键,可直接运行至断点处;按下F8键,并在对话框内键入跳跃的步数,可以直接跳转指定的步数:图1-4 设置跳转步数●求最大公倍数程序gcm.s,观察程序在流水线中的执行情况:●求素数程序prim.s,观察CPU 中寄存器和存储器的内容2. 用WinDLX运行程序structure_d.s通过模拟找出存在资源相关的指令对以及导致资源相关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;论述资源相关对CPU性能的影响,讨论解决资源相关的方法。

●存在资源相关的指令、导致资源相关的部件⏹两条指令同时访问寄存器f4,造成资源相关:⏹两条指令同时访问ALU,造成资源相关:●由资源相关引起的暂停时钟周期数、暂停时钟周期数占总执行周期数的百分比由资源相关引起的暂停时钟周期数:30;总执行周期数:139;暂停时钟周期数占总执行周期数的百分比:21.6%3. 在采用、以及不采用定向技术的情况下,分别用WinDLX 运行程序data_d.s(记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;并计算采用定向技术后性能提高的倍数)●采用定向技术:(左下图)⏹计算暂停时钟周期数占总执行周期数的百分比:30/128=23.4%图3-1 采用定向技术图3-2 不采用定向技术●不采用定向技术:(右上图)⏹计算暂停时钟周期数占总执行周期数的百分比:104/202=51.5%●采用定向技术后性能提高的倍数:202/128=1.58倍四、实验总结●资源相关对CPU性能的影响、讨论解决资源相关的方法资源相关使相关指令在流水线上停滞,降低了执行效率;为解决这一问题,应在编写代码时尽量避免总是使用同一寄存器;并通过指令调度,使相关的代码执行距离拉开。

北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器

北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器

北京邮电大学实验报告课程名称计算机系统结构计算机学院03班王陈(11)目录实验一WINDLX模拟器安装及使用......................................... 错误!未定义书签。

·实验准备................................................................................ 错误!未定义书签。

·实验环境................................................................................ 错误!未定义书签。

·实验步骤................................................................................ 错误!未定义书签。

·实验内容及要求.................................................................... 错误!未定义书签。

·实验过程............................................................................. 错误!未定义书签。

·实验总结............................................................................. 错误!未定义书签。

实验二指令流水线相关性分析 ............................................... 错误!未定义书签。

·实验目的............................................................................. 错误!未定义书签。

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

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

实验五:数据相关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模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC 处理器的特点的理解。

·实验原理:指令流水线中主要有结构相关、数据相关、控制相关。

相关影响流水线性能。

·实验步骤一.使用WinDLX模拟器,对Fact.s做如下分析:(1)观察程序中出现的数据/控制/结构相关。

指出程序中出现上述现象的指令组合。

(2)考察增加浮点运算部件对性能的影响。

(3)考察增加forward部件对性能的影响。

(4)观察转移指令在转移成功和转移不成功时候的流水线开销。

·实验过程一.使用WinDLX模拟器,对Fact.s做如下分析:浮点加、乘、除部件都设置为1,浮点数运算部件的延时都设置为4,如图1:图1 初始设置将fact.s和input.s加载至WinDLX中,如图2示。

图2 加载程序1.观察程序中出现的数据/控制/结构相关;指出程序中出现上述现象的指令组合。

1)数据相关点击F7,使程序单步执行,当出现R-Stall时停止,运行过程中出现下图3所示,输入整数6。

图3 输入整数6打开Clock Diagram,可以清楚的看到指令执行的流水线如图4所示。

图4 指令流水线双击第一次出现R-Stall的指令行,如图5所示。

图5 指令详细信息对以上出现的情况分析如下:程序发生了数据相关,R-Stall(R-暂停)表示引起暂停的原因是RAW。

lbu r3,0×0(r2)要在WB周期写回r3中的数据;而下一条指令seqi r5,r3,0×a要在intEX周期中读取r3中的数据。

上述过程发生了WR冲突,即写读相关。

为了避免此类冲突,seq r5,r4,0×a的intEX指令延迟了一个周期进行。

由此,相关指令为:2)控制相关由图6可以看出,在第4时钟周期:第一条指令处于MEM段,第二条命令处于intEX段,第三条指令出于aborted状态,第四条命令处于IF段。

实验一 熟悉WinDLX的使用

实验一 熟悉WinDLX的使用

实验一熟悉WinDLX的使用一、实验目的:通过本实验,熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点。

二、实验内容:1. 用WinDLX模拟器执行求阶乘程序fact.s。

这个程序说明浮点指令的使用。

该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。

该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。

2. 用WinDLX模拟器执行程序gcm.s。

该程序从标准输入读入两个整数,求他们的最大公约数(greatest common measure),然后将结果写到标准输出。

该程序中调用了input.s中的输入子程序。

3. 用WinDLX模拟器执行求素数程序prim.s。

这个程序计算若干个整数的素数。

4. 通过上述使用WinDLX,总结WinDLX的特点。

三、实验过程1)启动WinDLX2)默认配置3)装载测试程序选择File/Load Code or Data,点击fact.s点击select 按钮点击input.s点击select按钮点击load按钮注:装在文件顺序不能乱。

fact.s计算一个整型值的阶乘,它的运行还需要一个辅助文件input.s,input.s中包含一个子程序,它读标准输入(键盘)并将值存入DLX处理器的通用寄存器R1中。

4)模拟运行程序A、Pipeline子窗口(流水线窗口)DLX 执行指令的流水线是一个5 段流水线,包括取指段(IF)、译码段(ID)、执行段(EX)、访存段(MEM)和写回段(WB)。

在代表每个流水段的方框中,交叉线表示该方框目前没有执行指令。

DLX 流水线的执行段分为4 个单元,它们分别是:intEX 单元(整数操作),faddEX 单元(浮点加减),fmulEX(浮点乘法),fdivEX(浮点除法),intEX 的延迟为1(IF 段,ID 段,MEM 段和WB 段的延迟均为1),faddEX、fmulEX和fdivEX 的延迟分别为2、5 和19。

计算机系统结构实验报告

计算机系统结构实验报告

计算机系统结构实验报告一、实验目的: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周期减少。

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

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

计算机体系结构实验报告——实验一1.实验目的:通过本实验,熟悉WinDLX模拟器的操作和使用,了解DLX指令集结构及其特点。

2.实验内容:(1)用WinDLX模拟器执行求阶乘程序facts。

执行步骤详见“WinDLX教程”。

这个程序说明浮点指令的使用。

该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。

该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。

(2)输入数据“3”采用单步执行方法,完成程序并通过上述使用WinDLX,总结WinDLX 的特点。

(3)注意观察变量说明语句所建立的数据区,理解WinDLX指令系统。

3.实验程序:求阶乘程序fact.s--------------------------------------------------------------------------;Program begin at symbol main;requires module INPUT;read a number from stdin and calculate the factorial(type:double);the result is written to stdout;--------------------------------------------------------------------------.dataPrompt:.asciiz"An integer value>1:"在变量Prompt中存放一个字符串PrintfFormat:.asciiz"Factorial=%g\n\n"在变量pringformat中存放一个字符串.align2PrintfPar:.word PrintfFormat printfFormat的地址值PrintfValue:.space8给PrintValue保留8个字节.text正文.global main标号mainmain:程序在main开始;***Read value from stdin into R1说明:从标准输入程序读值到R1addi r1,r0,Prompt0+Prompt地址值送R1jal InputUnsigned转输入程序InputUnsigned;***init values输入的值在R1中movi2fp f10,r1;R1->D0D0..Count register R1送F10(整形变量变为浮点变量) cvti2d f0,f10F10送F0,F1(单精度变为双精度)addi r2,r0,1;1->D2D2..result0+1送R2movi2fp f11,r2R2送F11(整形变量变为浮点变量)cvti2d f2,f11F11送F2,F3(单精度变为双精度)movd f4,f2;1->D4D4..Constant1F2,F3送F4,F5;***Break loop if D0=1说明Loop:led f0,f4;D0<=1?标号:LOOP IF(F0<=F4)FPS=1ELSE FPS=0bfpt Finish IF FPS=1转Finish;***Multiplication and next loop下一个程序段说明multd f2,f2,f0f2*f0送f2subd f0,f0,f4F0-F4送f0j Loop转loopFinish:;***write result to stdout结束标号写结果到标准输出程序sd PrintfValue,f2结果值由f2送变量PrintfValueaddi r14,r0,PrintfPar PrintfPar地址值送R14trap5自陷调用5将结果值输出;***endtrap0自陷调用0程序结束该程序中调用了input.s中的输入子程序;-----------------------------------------------------------------------------;Subprogram call by symbol"InputUnsigned";expect the address of a zero-terminated prompt string in R1;returns the read value in R1;changes the contents of registers R1,R13,R14;-----------------------------------------------------------------------------.data;***Data for Read-TrapReadBuffer:.space80输入缓冲区80个字节ReadPar:.word0,ReadBuffer,80变量ReadPar一个字“0”;***Data for Printf-TrapPrintfPar:.space4变量PrintfPar保留4个字节SaveR2:.space4变量SaveR2保留4个字节SaveR3:.space4SaveR4:.space4SaveR5:.space4.text.global InputUnsigned标号InputUnisignedInputUnsigned:;***save register contentssw SaveR2,r2R2送M(SaveR2)sw SaveR3,r3sw SaveR4,r4sw SaveR5,r5;***Promptsw PrintfPar,r1R1送PrintfParaddi r14,r0,PrintfPar PrintfPar+0送R14trap5自陷调用5;***call Trap-3to read lineaddi r14,r0,ReadPar ReadPar+0送R14trap3自陷调用3;***determine valueaddi r2,r0,ReadBuffer ReadBuffer+0送R2addi r1,r0,00送R1addi r4,r0,10;Decimal system10送R4Loop:;***reads digits to end of line标号LOOPlbu r3,0(r2)M(R2)+0送R3(R2内容为ReadBuffer的地址) seqi r5,r3,10;LF->Exit IF(R3=立即数10)1送R5ELSE0送R5 bnez r5,Finish IF(R5不等于0)转Finishsubi r3,r3,48;??R3-48送R3(48为十六进制30,ASCII码变换) multu r1,r1,r4;Shift decimal R4*R1送R1add r1,r1,r3R3+R1送R1addi r2,r2,1;increment pointer R2+1送R2j Loop转LOOPFinish:;***restore old register contents标号Finishlw r2,SaveR2M(SaveR2)送R2lw r3,SaveR3lw r4,SaveR4lw r5,SaveR5jr r31;Retur R31送PC从子程序返回4、程序流程图5、实验步骤及结果双击Code图标,从左到右依次为代表存储器内容的三栏信息:地址(符号或数字)、命令的十六进制机器代码和汇编命令。

实验一熟悉WinDLX的使用

实验一熟悉WinDLX的使用

实验一熟悉WinDLX的使用1.实验目的:通过本实验,熟悉WinDLX模拟器的操作和使用,了解DLX指令集结构及其特点。

2.实验内容:(1)用WinDLX模拟器执行求阶乘程序facts。

执行步骤详见“WinDLX教程”。

这个程序说明浮点指令的使用。

该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。

该程序中调用了input. s中的输入子程序,这个子程序用于读入正整数。

(2)输入数据“3”采用单步执行方法,完成程序并通过上述使用WinDLX,总结WinDLX的特点。

(3)注意观察变量说明语句所建立的数据区,理解WinDLX指令系统。

3.实验程序:求阶乘程序facts;***********WINDLX Ex.2: Factorial*************Program begin at symbol mainrequires module INPUTread a number from stdin and calculate the factorial (type: double)the result is written to stdout.dataPrompt: .asciiz "An integer value >1:”PrintfFormat: .asciiz "Factorial=%g\n\n".align 2PrintfPar: .word PrintfFormatPrintfValue: .space 8.text.global mainmam:;***Read value from stdin into R1addi r1,r0,Promptj al InputUnsigned;***init valuesmovi2fp f10,r1 ;R1一>DO DO二Count registercvti2d f0,f10addi r2,r0,1;1一>D2 D2..resultmovi2fpfl 1,r2cvti2d伦,fl lmovd f4,fZ;1一>D4 D4二Constant 1;***Break loop if DO=1Loop: led f0,f4 ;DO<=1?bfpt Finish;***Multiplication arid next loopmultd伦,fZ,fOsubd f0,f0,f4j LoopFinish:;***write result to stdoutsd PrintfValue,f2addi r14,r0,PrintfPartrap 5;***endtrap 0该程序中调用了input. s中的输入子程序;***********WINDLX Ex. l : Read a positive integer number************* ;Subprogram call by symbol "InputUnsigned";expect the address of a zero-terminated prompt string in R1;returns the read value in R1;changes the contents of registers R1,R13,R14.data;***Data for Read-TrapReadBuffer: .space 80ReadPar: .word O,ReadBuffer,80;***Data for Printf-TrapPrintfPar: .space 4SaveR2: .space 4SaveR3:.space 4SaveR4: .space 4SaveRS:.space 4.text.global InputUnsignedInputUnsigned:;***save register contentssw SaveR2,r2sw SaveR3,r3sw SaveR4,r4sw SaveR5,r5; * * * PromptswPrintfPar,rladdi r14,r0,PrintfPartrap 5;***call Trap-3 to read lineaddi r14,r0,ReadPartrap 3;***determine valueaddi r2,r0,ReadBufferaddi r1,r0,0addi r4,r0,10 ;Decimal system Loop:;***reads digits to end of line lbu r3,0(r2)seqi r5,r3,10 ;LF一>ExitbnezrS,Finishsubi r3,r3,48;??multu rl,rl,r4 ;Shift decimaladd rl,rl,r3addi r2,r2,1 ;increment pointerj LoopFinish:;***restore old register contents 1w r2,SaveR21w r3,SaveR31w r4,SaveR41w rS,SaveRSjr r31;Retur4.实验过程截图:j al的分支地址命名为“InputUnsigned"。

北邮计算机系统结构实验报告实验一到五WINDLX模拟器

北邮计算机系统结构实验报告实验一到五WINDLX模拟器

北京邮电大学实验报告课程名称计算机系统结构计算机学院 201班王陈(2016110711)目录实验一 WINDLX模拟器安装及使用 (2)·实验准备............................................................................. 错误!未定义书签。

·实验环境............................................................................. 错误!未定义书签。

·实验步骤............................................................................. 错误!未定义书签。

·实验内容及要求................................................................. 错误!未定义书签。

·实验过程............................................................................. 错误!未定义书签。

.实验总结 (6)实验二指令流水线相关性分析 (6).实验目的 (7).实验环境 (7).实验步骤 (7)·实验过程............................................................................. 错误!未定义书签。

.实验总结 (12)实验三DLX处理器程序设计 (13).实验目的 (13)·实验环境............................................................................. 错误!未定义书签。

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

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

计算机体系结构实验报告——实验二1.实验目的:通过本实验,熟练掌握WinDLX模拟器的操作和使用,清楚WinDLX五段流水线在执行具体程序时的流水情况,熟悉DLX指令集结构及其特点。

2.实验内容:(1)用WinDLX模拟器执行程序gcm.s。

该程序从标准输入读入两个整数,求他们的greatest common measure,然后将结果写到标准输出。

该程序中调用了input.s中的输入子程序。

(2).给出两组数6、3和6、1,分别在main+0x8(add r2,r1,r0)、gcm.loop(seg r3,r1,r2)和result+0xc(trap0x0)设断点,采用单步和连续混合执行的方法完成程序,注意中间过程和寄存器的变化情况,然后单击主菜单execute/display dlx-i/0,观察结果。

3.实验程序求最大公约数程序:gcm.s;***********WINDLX Ex.1:Greatest common measure*************;------------------------------------------------------------------------;Program begins at symbol main;requires module INPUT;Read two positive integer numbers from stdin,calculate the gcm;and write the result to stdout;------------------------------------------------------------------------.data;***Prompts for inputPrompt1:.asciiz“First Number:”Prompt2:.asciiz“Second Number:“;***Data for printf-TrapPrintfFormat:.asciiz“gcM=%d\n\n”.align2PrintfPar:.word PrintfFormatPrintfValue:.space4.text.global mainmain:;***Read two positive integer numbers into R1and R2 addi r1,r0,Prompt1jal InputUnsigned;read uns.-integer into R1add r2,r1,r0;R2<-R1addi r1,r0,Prompt2jal InputUnsigned;read uns.-integer into R1Loop:;***Compare R1and R2seq r3,r1,r2;R1==R2?bnez r3,Resultsgt r3,r1,r2;R1>R2?bnez r3,r1Greaterr2Greater:;***subtract r1from r2sub r2,r2,r1j Loopr1Greater:;***subtract r2from r1sub r1,r1,r2j LoopResult:;***Write the result(R1)sw PrintfValue,r1addi r14,r0,PrintfPartrap5;***endtrap0该程序中调用了input.s中的输入子程序。

计算机体系结构实验报告

计算机体系结构实验报告

实验一流水线中的相关一.实验目的1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;2. 加深对计算机流水线基本概念的理解;3. 进一步了解DLX基本流水线各段的功能以及基本操作;4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。

二.实验平台WinDLX模拟器三.预备知识1. WinDLXWinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,能够演示DLX流水线是如何工作的。

该模拟器可以装载DLX汇编语言程序(后缀为“.s”的文件),然后单步、设断点或是连续执行该程序。

CPU的寄存器、流水线、I/O和存储器都可以用图形表示出来,以形象生动的方式描述DLX流水线的工作过程。

模拟器还提供了对流水线操作的统计功能,便于对流水线进行性能分析。

有关WinDLX的详细介绍,见WinDLX教程。

2. 熟悉WinDLX指令集和WinDLX源代码的编写3. 复习和掌握教材中相应的内容(1)DLX基本流水线(2)流水线的结构相关与数据相关结构相关:当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求,发生资源冲突时,将产生“结构相关”。

数据相关:当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中重叠执行时,就可能引起“数据相关”。

(3)定向技术的主要思想:在发生数据相关时,等待前面计算结果的指令并不一定真的马上就用到该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令需要它的地方,就可以避免暂停。

四.实验内容及结果1. 用 WinDLX 模拟器执行下列三个程序(任选一个):求阶乘程序 fact.s求最大公倍数程序 gcm.s求素数程序 prim.s分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU 中寄存器和存储器的内容。

熟练掌握WinDLX 的操作和使用。

北邮计算机系统结构WINDLX模拟器实验 报告

北邮计算机系统结构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系统结构实验报告

课程设计报告书课程名称:计算机系统结构题目:WinDLX模拟器实验学生姓名:xxx专业:计算机科学与技术(数字媒体)班别:x学号:x指导老师:x日期:2011 年 5 月 2 日一、实验目的:熟悉WinDLX的的基本概念和使用,了解各种不同指令在流水线的实际流动情况,对流水线做性能分析,加深对流水线及RISC处理器的理解二、实验环境:WinDLX模拟器可以装入DLX汇编语言程序,然后单步、设置断点或者连续执行该程序。

CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来。

模拟器还提供了对流水线操作的统计功能。

该模拟器对理解流水线和RISC处理器的特点很有帮助。

WinDLX要求的硬件平台是IBM PC兼容机,WinDLX是一个Windows应用程序,运行于Windows 3.0以上的操作系统。

三、实验步骤、结果分析:使用WinDLX模拟器,对Fact.s做如下分析:开始模拟之前的准备工作:(1) 通过双击WinDLX 图标启动WinDLX,将出现一个带有六个图标的主窗口:(2)进行初始化模拟器, 点击File菜单中的Reset all菜单项,弹出一个“Reset DLX”对话框。

然后点击窗口中的“确认”按钮即可。

(3)在开始模拟之前,至少应装入一个程序到主存。

为此,选择File / Load Code or Data,窗口中会列出目录中所有汇编程序。

fact.s计算一个整型值的阶乘;input.s中包含一个子程序,它读标准输入(键盘)并将值存入DLX处理器的通用寄存器R1中。

按如下步骤操作,把fact.s和input.s加载入主存。

•点击fact.s•点击select按钮•点击input.s•点击select按钮•点击load按钮得到如下图:弹出一下询问对话框,点击“是”。

1. 观察增加浮点运算部件对性能的影响。

(1)点击Configuration打开菜单,然后点击Floating Point Stages菜单项,选择如下标准配置:(2)再点击Execute Run,输入15点,回车,在弹出的对话框出现消息"Trap #0 occurred" 表明最后一条指令trap 0已经执行,Trap指令中编号“0”没有定义,只是用来终止程序。

计算机系统结构WinDlx实验报告

计算机系统结构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模拟器安装及使用实验内容: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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京邮电大学实验报告课程名称计算机系统结构/计算机学院 03班王陈(11)目录实验一 WINDLX模拟器安装及使用 (3)]·实验准备....................................... 错误!未定义书签。

·实验环境....................................... 错误!未定义书签。

·实验步骤....................................... 错误!未定义书签。

·实验内容及要求................................. 错误!未定义书签。

·实验过程....................................... 错误!未定义书签。

.实验总结 (8)实验二指令流水线相关性分析 (9).实验目的 (9).实验环境 (9).实验步骤 (9)·实验过程....................................... 错误!未定义书签。

、.实验总结 (16)实验三 DLX处理器程序设计 (17).实验目的 (17)·实验环境....................................... 错误!未定义书签。

·实验步骤....................................... 错误!未定义书签。

.实验过程 (17)A.向量加法代码及性能分析 (17)B.双精度浮点加法求和代码及结果分析 (22).实验总结 (27)实验四代码优化 (28).实验目的 (28)(·实验环境....................................... 错误!未定义书签。

.实验原理 (28)·实验步骤....................................... 错误!未定义书签。

.实验过程 (28).实验总结+实习体会 (33)实验五循环展开 (34).实验目的 (34)·实验环境....................................... 错误!未定义书签。

.实验原理 (34)·实验步骤....................................... 错误!未定义书签。

.实验过程 (34)[矩阵乘程序代码清单及注释说明 (34)相关性分析结果 (39)增加浮点运算部件对性能的影响 (39)增加forward部件对性能的影响 (39)转移指令在转移成功和转移不成功时候的流水线开销 (39).实验总结+实习体会+课程建议 (39)实验一 WINDLX模拟器安装及使用WinDLX模拟器的结构和功能说明1.点击运行之后,会看到一个如下图所示的窗口。

`它包括Register, Code, Pipeline, Clock Cycle Diagram, Statistics, Breakpoints。

接下来详细介模拟器的结构及各个部件的功能。

窗口介绍Rigister窗口中显示的是各个寄存器的名称及内容。

如下图:可以看到寄存器中以十六进制标识,从上图可以看出各个寄存器中的内容。

窗口介绍在没有进行任何执行的时候,初次打开code窗口,即为下图所示窗口现实的信息是各个存储器内同。

第一列标识存储器的地址;第二列是机器代码,用16进制表示;第三列是汇编指令。

当我们点击上方的,可以选择单步或多步执行(也可以使用快捷键F7或F8)。

若选择单步执行,每按一次F7,指令执行一次,可以看到,一次执行的为IF->ID->intEX->MEM->WB,没执行一次还有颜色的变化。

颜色是用来标识指令处于哪个流水段的,如下图。

~当然,我们也可以使用多步执行,按快捷键F8,选择5步流水,即可。

!窗口介绍通过阅读WinDLX模拟器说明书可以知道,Pipeline窗口显示的是DLX处理器的内部结构。

窗口用下图标识DLX五段流水。

当然,如同Code窗口介绍讲述的那样,不同的颜色显示了指令处于哪段流水线。

使用快捷键F7单步执行,可以明显的看出,不同时候流水段执行的不同指令。

如下图。

图片反映的正式与Code中所处的时刻相同的指令流水。

可以清晰看到不同流水段执行的是哪条指令。

Cycle Diagram窗口实验准备中我们已经知道,该窗口显示的是流水线的时空图。

时空图反映的是不同时隙内的运行情况。

如下图。

在我看来,时空图是最好理解的。

因为它反映的就是流水段的并行程度。

在这个DLX模拟器中,并不存在一些数据或者控制上的冲突问题。

所以可以依靠上图很清晰的看到指令所处的不同流水段,及指令执行情况。

该时空图同样也是和前面的Code等相对应。

也可以通过快捷键F7来进一步执行指令,可以看到流水线时空图的扩展情况。

任意双击指令的一行,可以详细看到不同流水段的情况。

如下图所示。

~窗口介绍该窗口是对运行程序中的数据进行分析。

主要包括模拟器中硬件配置情况,在该窗口中,我们可以比较不同配置对于该模拟器的不同影响。

如下图所示。

1)整体指令执行情况2)硬件配置情况3)暂停次数和百分比及原因分析4)分支次数和百分比5)!6)Load/Store指令执行情况7)浮点指令执行次数和百分比8)trap发生的次数和百分比窗口介绍该窗口使用来观察代码运行情况。

先打开Breakpoints窗口,点击窗口上方的来设置breakpoint,也就是设置指令运行到流水线的哪个阶段程勋停止执行。

<如上图,如果选择EX阶段,在Code窗口中相应的行会出现BEX,即指令执行到译码结束执行开始的时候,程序将中止。

·实验总结通过本次试验,由于是第一次接触DLX模拟器,该试验能够帮助我对这个模拟器大致的功能及使用做个大致的了解。

对于日后的实验打下好的基础。

我觉得WinDLX模拟器小而精悍,它有不同颜色的标记,不同寄存器及存储器的反映。

通过使用它,可以对5步流水的过程及不同阶段很清楚明白的看到。

也可以看到不同指令分析走到了哪一步,到了哪一步流水段。

》~实验二指令流水线相关性分析·实验目的通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。

·实验环境Windows XP操作系统WinDLX模拟器·实验步骤1.观察程序中出现的数据/控制/结构相关。

指出程序中出现上述现象的指令组合。

2.考察增加浮点运算部件对性能的影响。

3.考察增加forward部件对性能的影响。

4.观察转移指令在转移成功和转移不成功时候的流水线开销。

—1.观察程序中出现的数据/控制/结构相关;指出程序中出现上述现象的指令组合。

1)数据相关如下图所示,在Clock Cycle Diagram窗口所想是的时空图中和Pipeline 窗口中的流图中,第一次出现了R-Stall。

接下来可以点击上图中的橘色窗口,则屏幕显示lbu r3,0×0(r2)要在WB周期写回r3中的数据;而下一条指令seqi r5,r3,0×a;要在intEX周期中读取r3中的数据。

上述过程发生了WR冲突,即写读相关。

为了避免此类冲突,seq r5,r4,0×a的intEX指令延迟了一个周期进行。

由此,相关指令为:2)控制相关由上图可以看出,在第4时钟周期:第一条指令处于MEM段;第二条命令处于intEX段;第三条指令出于aborted状态;第四条命令处于IF段。

原因分析:jal InputUnsigned是无条件分支指令,但当第三个周期开始的时候,也就是jal这条指令被译码后才知道。

此时,movi2fp已经执行,且将要执行的下一条命令在另外一个地址处,所以这条指令不会执行,这个时候就会发生控制相关。

由此,发生控制相关的指令为:3)<4)结构相关首先,我们先来看一下执行过控制相关的时空图和Pipeline,如下图。

当我们点击Pipeline中IF所对应的框框可以看到详细的该指令执行情况,如下图:上图表明了addi r2,r2,0×1的详细信息。

该指令与它前一条指令add r1,r1,r3发生了结构相关。

并且由于此处的冲突,需要暂停2个周期。

在ID段暂停后,则开始进图intEX段。

所以这条指令(addi r2,r2,0×1)你不能进入ID流水段,译码部分占用,发生了结构相关。

该部分的指令为:2.考察增加浮点运算部件对性能的影响。

该实验取N=6)首先通过,点击Floating Point Stage Configuration来设置浮点运算部件的配置。

由于实验手册上面要求Delay=4,所以我们将Delay这一栏改成4,而Count可以任意,为了对比,我们第一次浮点运算部件取全部为2,第二次浮点运算部件取全部为3。

如下图所示:运行50个cycles之后,可以看到他们数据的对比:!~*由此可见,浮点运算部件的增减对效率无影响。

比较各个数据,发现没有变化。

无论怎么增加浮点运算部件,统计结果都一样。

原因在于此程序中浮点计算指令没有重叠,所以并行度没有增加,性能没有提高。

3.考察增加forward部件对性能的影响。

为了对比有无forward部件的性能。

需要在中勾选enable forwarding,以及不勾选enable configuration来看性能数据的对比。

·不使用forward部件:《使用forward部件:#从上面的数据我们可以看出增加forwardi部件后RAW由原来占总时钟周期的26%减少至18%,RAW个数由原来的13减少至9。

增加forward部件使得控制相关比例增加了。

即,使用forward部件后,总的时钟周期减少,数据相关减少,流水线的性能得到一定的改善。

3.观察转移指令在转移成功和转移不成功时候的流水线开销。

我们假设,浮点部件设置Count=3,Delay=4;N=6。

执行完毕后,查看条件转移分支,如下图所示:由上图可知,转移指令一共8条,成功转移2条(占25%),不成功为6条。

所以,静态指令调度算法只能解决数据相关,条件转移结果与原来相比没有变化。

即,若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低;若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,执行效率会下降。

·实验总结本次试验中,主要遇见一个问题,就是在当初文件加载时没有成功,后来通过查询资料和自己的尝试,发现,在选择文件的顺序很关键,它决定了文件在存储器中出现的顺序。

相关文档
最新文档