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

计算机体系结构实验

计算机体系结构实验
gtd f2,f10 ;f2>1?
bfpf InputArray1;若不大于1,跳到InputArray1,此时r9为10的n次方
mult r9,r7,r9
subi r2,r2,1
j Loop1 ; Loop1用来求出10的n次方(n为输入的位数),n随后面的循环逐渐减1
InputArray1:
div r11,r5,r9
2、程序中出现数据相关因为下面两条指令,第二条指令要读r1而执行到此操作时第一条指令仍对r1进行操作
lw r4,PrintfValue(r3)
sw Printf,r4
图4.数据相关
程序中出现控制相关,当程序执行下面指令时,第二条指令出现跳转指令时,第一条指令还没有执行完,所以出现控制相关
subi r2,r2,1
add r2,r8,r0 ;将r8中的数值放到r2寄存器中
addi r9,r0,1 ;r9置1;
j Loop1 ;跳转Loop1
Output: ;输出结果
lw r4,PrintfValue(r3)
sw Printf,r4 ;将寄存器r4中的内容存Printf地址单元中
addi r14,r0,PrintPar ;将要输出的数据格式输到寄存器r14中
点击zui3.s
点击select按钮
点击input.s
点击select按钮
点击load按钮
3、按F7键程序顺序执行观察6个子窗口的情况。
七、实验数据及结果分析:
1、先装入zui3.s再转入input.s时,因为程序顺序执行,地址顺序符合程序执行顺序,程序能够正确执行;顺序相反时,因为input.s的地址高,而程序顺序执行到input.s时将没有正确的输入窗口,程序执行到输出结果时,也不会出现结果

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

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

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

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

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

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

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

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

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

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

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

系统结构实验五:WinDLX模拟器的熟悉

系统结构实验五: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模拟器

北邮计算机系统结构实验报告实验一到五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模拟器实验

WinDLX模拟器实验

模拟器实验实习目的:通过使用模拟器,对程序中的三种相关原理进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和处理器的特点的理解。

实习环境:模拟器可以装入汇编语言程序,然后单步、设置断点或者连续执行该程序。

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

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

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

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

软件包中带有说明文件,供安装程序时候使用。

软件包中还有教程和联机帮助,可以通过它们进一步了解模拟器的使用方法和处理器的原理。

大家在进行模拟实验以前应该仔细阅读这些文档。

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

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

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

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

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

注意:除()以外,浮点加、乘、除部件都只有一个;本问题中所有浮点运算部件的延时都请设定为个周期。

二.使用汇编语言编写矩阵相乘程序,并对程序进行如下分析:()重复内容一中()()()()工作。

()使用循环展开手工优化程序()对优化程序,重复内容一中()工作。

()对优化程序,将浮点部件的延迟改为个时钟周期,再重复内容一中()工作。

注意:为了简单起见,可以固定矩阵的大小,例如×,可以不赋初值,不输出计算结果,目的仅仅是为了考察矩阵相乘的指令序列。

实习要求:. 针对上面的实验内容,记录实验过程,给出分析结果。

. 给出实验总结:根据实验,总结采用流水线技术会遇到的问题和为解决这些问题所采用的各种技术的作用。

同时简单谈谈自己对流水线技术的认识。

提交材料:实习报告(建议发送文件)报告要求:. 参照实习要求记录你完成的所有工作及相关实验结果. 你解决的困难和解决方法. 你没有解决的困难(如有)以及你做过的努力. 你的实习体会(如有). 你对该实习的建议. 其他你想写在报告里的东西提交方法:请在截止日期前将提交材料打成包发邮件至:邮件名请按如下命名规则:姓名。

北邮实验一WINDLX模拟器安装使用

北邮实验一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模拟器安装及使用略实验二指令流水线相关性分析一.实验类别验证实验二.实验目的通过使用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模拟器实验班级:姓名:学号:实验一 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流水线是如何工作的。

计算机体系结构实验报告

计算机体系结构实验报告

计算机体系结构实验报告实验⼀流⽔线中的相关⼀.实验⽬的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 中寄存器和存储器的内容。

2021年计算机系统结构winDLX流水线实验报告

2021年计算机系统结构winDLX流水线实验报告

计算机科学与技术学院《计算机体系结构》课程试验学号:班级:专业:学生姓名:年月日实验报告七、试验数据及结果分析:1、先装入Variance.s再转入Input.s时, 因为程序次序实施, 地址次序符合程序实施次序, 程序能够正确实施; 次序相反时, 因为Input.s地址高, 而程序次序实施到Input.s 时将没有正确输入窗口, 程序实施到输出结果时, 也不会出现结果2、程序中出现三种相关(1)数据相关: 以图1中出现两个数据相关为例下面两条指令中, 因为第二条指令要读r3, 而实施到此操作时加载指令仍对r3进行操作, 所以出现了数据相关lbu r3,0(r2)seqi r5,r3,10下面两条指令中, 因为加法指令要读r1, 而实施到此操作时乘法指令仍对r进行操作, 所以出现了数据相关multu r1,r1,r4add r1,r1,r3图1 数据相关(2)控制相关: 以图2中出现控制相关为例下面两条指令中, 因为第一条指令出现跳转指令时, 存放指令取指将作废, 所以出现控制相关jal InputUnsignedsw PrintfValue(r3),r1图2 控制相关(3)结构相关: 以图3中出现结构相关为例下面两条指令中, 因为当第二条乘法指令需要使用乘法器时, 第一条乘法指令仍在使用乘法器, 所以出现结构相关mult r2,r0,r0mult r3,r0,r0图3 结构相关3、主程序Variance.s代码.data ;.data标识下面数据放在数据区中;输入语句, 指示你输入要求多少个数方差Prompt: .asciiz "Please input An integer which is array's size value>0: ";输入语句, 指示你输入要求方差数PromptLast: .asciiz "Please input the integer :";输出格式, 表示求出方差按什么格式输出PrintfFormat: .asciiz "the Variance is : %g ";表示下面采取字对齐.align 2;.word在存放器中次序存放列出字PrintfPar: .word PrintfFormat;在存放区中空出对应大小区域Printf: .space 8Variance: .space 8PrintfValue: .space 1024.text ;.text标识下面代码存放在代码区中.global main ;.global标识main能够被全局访问main:;将Prompt字符串首地址放入r1寄存器中addi r1,r0,Prompt;跳转向InputUnsigned标识地址, 调用input子函数读取数组大小值 jal InputUnsigned;将input函数读取数放入寄存器中add r5,r0,r1add r6,r0,r1add r7,r0,r1add r8,r0,r1addi r3,r3,4subi r7,r7,1;无条件跳转向Loop2标识指令地址j Loop2Average2:;求出方差存入r11中div r11,r2,r8output:;将方差存入Variance所指存放空间中sw Variance,r11;转换为双精度并输出lf f2,Variancecvti2d f0,f2sd Printf,f0addi r14,r0,PrintfPartrap 5 ;调用中止, 格式化输出转化为标准输出over:trap 0 ;调用系统中止, 0表示程序实施结束4、样例输出, 以图4中数据为例输入需要求方差数个数为4, 4个数分别为3, 5, 6, 2, 输出结果为2图4 输出界面5、尽可能降低和消除程序中出现相关(1)消除数据相关a.采取定向技术: 在发生数据相关时, 等候前面计算结果指令并不一定真立即就用到该计算结果, 假如能够将该计算结果从其产生地方直接送到其她指令需要它地方, 就能够避免暂停。

北邮大三计算机体系结构实验一 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)。

实验报告学院:计算机学院课程名称:计算机系统结构实验名称: 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个周期。

六.实验过程在开始模拟之前,将fact.s和input.s加载至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指令延迟了一个周期进行。

则发生数据相关的指令为1.2控制相关可知第0*00000130条指令jfact.Loop为循环指令,指令在EX时刻才能判别指令是否发生转移,此时发生了控制相关。

如下所示,此时指令跳转成功,故顺序取出的指令必须中断,并且转向取出转移到的指令。

jfact.Loop在EX时发现跳转成功,则在EX阶段马上结束指令顺序取出的指令sd PrintfValue(r0),f0,转而执行led f0/4指令的取指阶段ID。

由于此控制相关使得流水线断流一个时钟周期。

1.3 结构相关上图表明了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由原来占总时钟周期的32.5%减少至16.46%,RAW个数由原来的65减少至26。

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

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

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

可知条件分支指令总共有15条,其中有2条转移成功(13.33%),有13条转移不成功。

转移不成功的指令就顺序执行,故不会影响程序的运行,不会导致流水线断流;而转移成功的指令会导致流水线的断流,要废弃预先读入的指令,重新从转移成功处读入指令,执行效率会下降。

经分析可知,两次断流都会导致一个周期的流水线断流。

七.实验总结1.在流水线中,硬件资源满足不了指令重叠执行的要求,会产生资源冲突或竞争,称为流水线结构相关,而解决流水线相关的途径之一是设置双存储器(哈弗结构):一个数据存储,一个指令存储。

实际上,本身实现DLX指令的硬件设备已经考虑到了这一点,本身已有两个存储器,一个为数据存储器,一个为指令存储器。

故本身就解决了部分结构相关问题。

并且fact.s中的指令并不会导致其他资源冲突,故无法体现资源相关。

试验中多加入浮点数部件,运行效率等没有变化。

通过观察指令的运行情况,因为不会发生结构相关(硬件资源冲突),在流水线中的部件线性使用,故加入部件也不会对结果有直接的影响。

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由原来占总时钟周期的39.22%减少至20.32%,RAW个数由原来的162减少至64。

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

相关文档
最新文档