北邮计算机系统结构-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模拟器安装及使用......................................... 错误!未定义书签。
·实验准备................................................................................ 错误!未定义书签。
·实验环境................................................................................ 错误!未定义书签。
·实验步骤................................................................................ 错误!未定义书签。
·实验内容及要求.................................................................... 错误!未定义书签。
·实验过程............................................................................. 错误!未定义书签。
·实验总结............................................................................. 错误!未定义书签。
实验二指令流水线相关性分析 ............................................... 错误!未定义书签。
·实验目的............................................................................. 错误!未定义书签。
windlx实验报告(浮点运算,forward 转移指令)

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程序代码:.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 05.2 Input.s程序代码:.data;*** Data for Read-TrapReadBuffer: .space 80ReadPar: .word 0,ReadBuffer,80;*** Data for Printf-Trap PrintfPar: .space 4SaveR2: .space 4SaveR3: .space 4SaveR4: .space 4SaveR5: .space 4.text.global InputUnsigned InputUnsigned:;*** save register contentssw SaveR2,r2sw SaveR3,r3sw SaveR4,r4sw SaveR5,r5;*** Promptsw PrintfPar,r1addi 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 -> Exitbnez r5,Finishsubi r3,r3,48 ;??multu r1,r1,r4 ;Shift decimaladd r1,r1,r3addi r2,r2,1 ;increment pointerj LoopFinish: ;*** restore old register contentslw r2,SaveR2lw r3,SaveR3lw r4,SaveR4lw r5,SaveR5jr r31 ; Return6 参照实验要求进行实验并记录实验分析结果6.1 考察增加浮点运算部件对性能的影响。
系统结构 第一、二次试验报告

实验一熟悉模拟器WinDLX的使用一、实验目的1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点。
2. 加深对计算机流水线基本概念的理解。
3.了解DLX基本流水线各段的功能以及基本操作。
二、实验平台WinDLX模拟器三、实验任务用WinDLX模拟器执行下列两个程序:求阶乘程序求最大公倍数程序分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。
熟练掌握WinDLX的操作和使用。
1.用WinDLX模拟器执行求阶乘程序(1)用WinDLX模拟器执行求阶乘程序。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了中的输入子程序,这个子程序用于读入正整数。
(2)输入数据“3”,采用单步执行方法,完成程序并通过使用WinDLX,总结WinDLX的特点。
(3)注意观察变量说明语句所建立的数据区,理解WinDLX指令系统。
(4)分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。
熟练掌握WinDLX的操作和使用。
2.用WinDLX模拟器求最大公约数程序(1)用WinDLX模拟器执行程序。
该程序从标准输入读入两个整数,求他们的greatest common measure,然后将结果写到标准输出。
该程序中调用了中的输入子程序。
(2)给出两组数6、3和6、1,采用单步和连续混合执行的方法完成程序,注意中间过程和寄存器的变化情况,观察流水线工作情况。
然后单击主菜单上的execute/display dlx-i/o,观察结果。
(3 ) 分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。
实验结果:1、(1)导入和代码(2)单步执行流水线:寄存器的值:由图可知:PC寄存器中存放下一条要执行的语句的地址,IMAR中存放当前执行的语句的地址。
计算机体系结构实验报告——实验一

计算机体系结构实验报告——实验一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模拟器

北京邮电大学实验报告课程名称计算机系统结构计算机学院 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中的输入子程序。
北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器

北京邮电大学实验报告课程名称计算机系统结构计算机学院 2016111303班王陈(2016110711)目录实验一 WINDLX模拟器安装及使用 (3)·实验准备........................................................................... 错误!未定义书签。
·实验环境........................................................................... 错误!未定义书签。
·实验步骤........................................................................... 错误!未定义书签。
·实验内容及要求............................................................... 错误!未定义书签。
·实验过程........................................................................... 错误!未定义书签。
.实验总结 (8)实验二指令流水线相关性分析 (9).实验目的 (9).实验环境 (9).实验步骤 (9)·实验过程........................................................................... 错误!未定义书签。
.实验总结 (16)实验三DLX处理器程序设计 (17).实验目的 (17)·实验环境........................................................................... 错误!未定义书签。
北邮实验一WINDLX模拟器安装使用

北京邮电大学计算机学院《计算机系统结构》课程实验2015年4月实验一WINDLX模拟器安装及使用一、实验类别:综合实验二、实验目的:建立实验环境,了解WINDLX模拟器的结构及使用三、实验学时:2四、人组数:1/1五、实验设备环境:WinDLX要求的硬件平台是IBM PC兼容机,WinDLX是一个Windows应用程序,运行于Windows 3.0以上的操作系统。
六、实验原理:WinDLX软件包中带有说明文件,供安装程序时候使用。
七、教学要点与学习难点:软件包中还有WinDLX教程和联机帮助,可以通过它们进一步了解模拟器的使用方法和DLX处理器的原理。
大家在进行模拟实验以前应该仔细阅读这些文档。
八、实验内容和要求:阅读模拟器Help文档和相关资料,利用Fact.s及Input.s代码熟悉模拟器的配置、各项工具使用、寄存器设置及指令系统。
九、实验步骤:(1)WINDLX模拟器安装(2)熟悉模拟器的配置(3)熟悉各工具的使用WinDLX模拟器的安装WinDLX 包含windlx.exe和windlx.hlp文件。
同时,还需要一些扩展名为.s的汇编代码文件。
在本教程中将使用fact.s 和input.s这两个汇编代码文件。
WinDLX的安装非常简单,我们获得WinDLX压缩包(224K),只要将其解压到一个指定的目录,然后执行里面的windlx.exe 即可。
做实验时直接双击桌面上的WinDLX图标就可进入Windlx模拟器。
开始和配置WinDLX双击WinDLX 图标启动WinDLX后,将出现一个带有六个子窗口的主窗口.为了初始化模拟器, 点击File 菜单中的Reset all 菜单项,弹出一个“Reset DLX”对话框。
然后点击窗口中的“确认”按钮即可。
WinDLX可以在多种配置下工作。
你可以改变流水线的结构和时间要求、存储器大小和其他几个控制模拟的参数。
点击Configuration / Floating Point Stages(点击Configuration打开菜单,然后点击Floating Point Stages菜单项),选择如下标准配置:装载测试程序在开始模拟之前,至少应装入一个程序到主存。
北邮计算机系统结构-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的使用一、实验目的1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点。
2. 加深对计算机流水线基本概念的理解。
3.了解DLX基本流水线各段的功能以及基本操作。
二、实验平台WinDLX模拟器三、实验任务用WinDLX模拟器执行下列两个程序:●求阶乘程序fact.s●求最大公倍数程序gcm.s分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。
熟练掌握WinDLX的操作和使用。
1.用WinDLX模拟器执行求阶乘程序fact.s(1)用WinDLX模拟器执行求阶乘程序fact.s。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
(2)输入数据“3”,采用单步执行方法,完成程序并通过使用WinDLX,总结WinDLX的特点。
(3)注意观察变量说明语句所建立的数据区,理解WinDLX指令系统。
(4)分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。
熟练掌握WinDLX的操作和使用。
2.用WinDLX模拟器求最大公约数程序gcm.s(1)用WinDLX模拟器执行程序。
该程序从标准输入读入两个整数,求他们的greatest common measure,然后将结果写到标准输出。
该程序中调用了input.s中的输入子程序。
(2)给出两组数6、3和6、1,采用单步和连续混合执行的方法完成程序,注意中间过程和寄存器的变化情况,观察流水线工作情况。
然后单击主菜单上的execute/display dlx-i/o,观察结果。
(3 ) 分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。
实验结果:1、(1)导入fact.s和input.s代码(2)单步执行流水线:寄存器的值:由图可知:PC寄存器中存放下一条要执行的语句的地址,IMAR中存放当前执行的语句的地址。
北邮计算机系统结构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模拟器实验学生姓名: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软件中的应用学校:专业:学号:姓名:指导教师:***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" ,它表示当本指令在译码段时,程序中止执行。
计算机系统结构实验报告_4

计算机系统结构实验报告计算机系统结构实验报告姓名学号指导老师实验一、流水线中的相关一、实验目的1. 掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;2. 加深对计算机流水线基本概念的理解;3. 进一步了解DLX基本流水线各段的功能以及基本操作;4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。
二、实验平台WinDLX模拟器。
三、实验内容、步骤及实验结果1.用WinDLX模拟器执行下列三个程序:1>求阶乘程序fact.s2>求最大公倍数程序gcm.s3>求素数程序prim.s分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。
熟练掌握WinDLX的操作和使用。
结果总结:三种方式:步进的方式是按快捷键F7或者选择菜单栏Execute中的Single Cycle;连续的方式是按快捷键F5或者选择Execute中的Run;设置断点是通过选择window菜单栏中的code,然后在菜单栏中多出一项code 项,选中你想要插入的指令,在多出来的code项中找到set breakpoint,即可插入断点,然后按F5执行即可。
1.用WinDLX运行fact.sPipeline图指出了每个功能段所进行的具体指令,点击指令还可以看到指令的具体相关的其他方面的内容。
时空图更加直观的形式显示出了在某个时间周期某个功能段所执行的具体的指令。
Register图指出了各个寄存器和存储器的值.Statistics图指出了指令的相关分析数据,例如,执行了53个cycles,2条指令在流水线中等相关的总结信息。
2. 用WinDLX运行程序structure_d.s,通过模拟找出存在资源相关的指令对以及导致资源相关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;论述资源相关对CPU性能的影响,讨论解决资源相关的方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告学院:计算机学院课程名称:计算机系统结构实验名称: 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)观察程序中出现的数据/控制/结构相关。
指出程序中出现上述现象的指令组合。
(2)考察增加浮点运算部件对性能的影响。
(3)考察增加forward部件对性能的影响。
(4)观察转移指令在转移成功和转移不成功时候的流水线开销。
注意:除(2)以外,浮点加、乘、除部件都只有一个;本问题中所有浮点运算部件的延时都请设定为4个周期。
六.实验过程在开始模拟之前,将和加载至WinDLX中。
加载完后点击Code后可以看到如下图所示。
证明加载成功,即可进行以下实验。
(1)观察程序中出现的数据/控制/结构相关。
指出程序中出现上述现象的指令组合。
1.1.数据相关如图所示lbu r3,0×0(r2)要在WB周期写回r3中的数据;而下一条指令seqi r5,r3,0×a要在intEX周期中读取r3中的数据。
上述过程发生了WR冲突,即写读相关。
为了避免此类冲突,seq r5,r4,0×a的intEX指令延迟了一个周期进行。
则发生数据相关的指令为控制相关可知第0*00000130条指令为循环指令,指令在EX时刻才能判别指令是否发生转移,此时发生了控制相关。
如下所示,此时指令跳转成功,故顺序取出的指令必须中断,并且转向取出转移到的指令。
在EX时发现跳转成功,则在EX阶段马上结束指令顺序取出的指令sd PrintfValue(r0),f0,转而执行led f0/4指令的取指阶段ID。
由于此控制相关使得流水线断流一个时钟周期。
结构相关上图表明了addi r2,r2,0×1的详细信息。
该指令与它前一条指令add r1,r1,r3发生了结构相关。
并且由于此处的冲突,需要暂停2个周期。
在ID段暂停后,则开始进图intEX段。
所以这条指令(addi r2,r2,0×1)你不能进入ID流水段,译码部分占用,发生了结构相关。
该部分的指令为:(2)考察增加浮点运算部件对性能的影响。
取N=12设置浮点运算部件的配置。
由于实验手册上面要求Delay=4,所以我们将Delay这一栏改成4,而Count可以任意,为了对比,我们第一次浮点运算部件取全部为2,第二次浮点运算部件取全部为4。
分别运行50个cycles后,数据对比如下:比较各个数据,发现没有变化。
无论怎么增加浮点运算部件,统计结果都一样。
原因在于此程序中浮点计算指令没有重叠,所以并行度没有增加,性能没有提高。
所以,浮点运算部件的增减对效率无影响。
(3)考察增加forward部件对性能的影响。
为了对比有无forward部件的性能。
需要在勾选enable forwarding,以及不勾选enable configuration来看性能数据的对比。
不使用forward部件:使用forward部件:从上面的数据我们可以看出增加forward部件后,总的周期数由200减少至158,RAW由原来占总时钟周期的%减少至%,RAW个数由原来的65减少至26。
增加forward部件使得控制相关比例增加了。
所以,使用forward部件后,总的时钟周期减少,数据相关减少,流水线的性能得到一定的改善。
(4)观察转移指令在转移成功和转移不成功时候的流水线开销。
可知条件分支指令总共有15条,其中有2条转移成功(%),有13条转移不成功。
转移不成功的指令就顺序执行,故不会影响程序的运行,不会导致流水线断流;而转移成功的指令会导致流水线的断流,要废弃预先读入的指令,重新从转移成功处读入指令,执行效率会下降。
经分析可知,两次断流都会导致一个周期的流水线断流。
七.实验总结1.在流水线中,硬件资源满足不了指令重叠执行的要求,会产生资源冲突或竞争,称为流水线结构相关,而解决流水线相关的途径之一是设置双存储器(哈弗结构):一个数据存储,一个指令存储。
实际上,本身实现DLX指令的硬件设备已经考虑到了这一点,本身已有两个存储器,一个为数据存储器,一个为指令存储器。
故本身就解决了部分结构相关问题。
并且中的指令并不会导致其他资源冲突,故无法体现资源相关。
试验中多加入浮点数部件,运行效率等没有变化。
通过观察指令的运行情况,因为不会发生结构相关(硬件资源冲突),在流水线中的部件线性使用,故加入部件也不会对结果有直接的影响。
2.本次实验,主要通过对于三种相关的观察,分析出现相关时的指令,分析浮点运算部件和forward部件对性能的影响,观察转移指令在转移成功和不成功时的流水线开销,这些实验一步一步,通过WinDLX形象生动的表示,使我在实践中更加深入的认识了流水线。
3. 通过本次实验,我熟悉了指令执行的每个阶段的任务,对时空图的理解也更深了一步,对流水线中的三种相关性问题有了认识,同时通过此实验学习到了解决这些相关问题的方法,从而对课上所学的知识有了更系统的认识。
实验三 DLX处理器程序设计一.实验类别综合型实验二.实验目的学习使用DLX汇编语言编程,进一步分析相关现象三.实验环境Windows XP操作系统DLX汇编语言环境四.实验原理掌握向量运算算法和编程方法。
五.实验步骤(1)熟悉DLX汇编语言。
(2)?编写两双精度浮点一维向量的加法运算程序。
(3)?对此程序完成上面实验二中1)、2)、3)、4)方面的分析。
六.实验过程(1)代码清单和注释说明.dataVectorLength: .word 16Vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16Vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16; 声明向量长度以及声明向量 1、2Printf1: .asciiz "Vector ="Printf2: .asciiz " %f".align 2PrintPrompt: .word Printf1PrintPar: .word Printf2Result: .space 4 ; 存放打印数据的空间申请.textmain:addi r14,r0,PrintPrompttrap 5lw r20,VectorLengthaddi r2,r0,0Loop:ld f10,Vector1(r2)ld f12,Vector2(r2) ; 循环体中读入向量cvti2d f0,f10cvti2d f2,f12addd f4,f2,f0 ; 加法运算Finish:;**** Finish,write result into stdoutsd Result,f4addi r14,r0,PrintPartrap 5 ; 系统中断,输出结果addi r2,r2,4subi r20,r20,1bnez r20,Loop;Endtrap 0运行结果(2)观察程序中出现的数据/控制/结构相关。
指出程序中出现上述现象的指令组合。
无结构相关,有控制相关15次和数据相关64次。
数据相关:以当对当前指令的操作数寄存器进行操作(EX)的时候,前几条指令的运算结果还未写回(WB)结果寄存器,由此产生数据相关。
结构相关:由于只做了一次加法,所以没有产生结构相关第一条命令在WB段,第二条命令在intEX段,第四条命令在IF段。
而第三条命令指示为"aborted"。
此处发生了控制相关。
(3)考察增加浮点运算部件对性能的影响。
设置浮点运算部件的配置。
由于实验手册上面要求Delay=4,所以我们将Delay这一栏改成4,而Count可以任意,为了对比,我们第一次浮点运算部件取全部为2,第二次浮点运算部件取全部为4。
数据对比如下:比较各个数据,发现没有变化。
无论怎么增加浮点运算部件,统计结果都一样。
原因在于此程序中浮点计算指令没有重叠,所以并行度没有增加,性能没有提高。
所以,浮点运算部件的增减对效率无影响。
(4)考察增加forward部件对性能的影响。
为了对比有无forward部件的性能。
需要在勾选enable forwarding,以及不勾选enable configuration来看性能数据的对比。
不使用forward部件:使用forward部件:从上面的数据我们可以看出增加forward部件后,总的周期数由413减少至315,RAW由原来占总时钟周期的%减少至%,RAW个数由原来的162减少至64。
增加forward部件使得控制相关比例增加了。
所以,使用forward部件后,总的时钟周期减少,数据相关减少,流水线的性能得到一定的改善。
(5)观察转移指令在转移成功和转移不成功时候的流水线开销。