北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器
- 格式:doc
- 大小:796.50 KB
- 文档页数:37
计算机系统结构实验报告一、实验目的: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里的程序是一种汇编语言,通过对寄存器和条件转移来实现程序的实现。
操作系统实验实验报告实验日期:11月23日实验名称:实验一一、实验目的1.学习LINUX操作系统2.熟悉UNIX/LINUX的常用基本命令3.理解fork()与clone()函数的区别和联系4.深入理解生产者和消费者问题二、实验内容(1)安装LINUX:(2)熟悉UNIX/LINUX的常用基本命令如ls、who、wc、pwd、ps、pstree、top,cat,cd,chgrp,chmod,chown,comm,cmp,cp,rm,diff,mv,rmdir等,了解环境。
(3)比较fork()和clone()的功能,利用fork()生成子进程和clone()生成线程。
(4)利用pthread库,通过其中的mutex来实现生产者和消费者问题。
三、项目要求及分析基本要求:(1)安装LINUX:使用FEDORA11(2)熟悉UNIX/LINUX的常用基本命令如ls、who、wc、pwd、ps、pstree、top,cat,cd,chgrp,chmod,chown,comm,cmp,cp,rm,diff,mv,rmdir等,了解环境。
(3)比较fork()和clone()的功能,利用fork()生成子进程和clone()生成线程。
(4)利用pthread库,通过其中的mutex来实现生产者和消费者问题。
四、具体实现1.linux常用指令1.1 目录操作和DOS 相似,Linux 采用树型目录管理结构,由根目录开始一层层将子目录建下去,各子目录以“/”隔开。
用户login后,工作目录的位置称为home directory,由系统管理员设定。
‘—’符号代表自己的home directory,例如:~/myfile是指自己home目录下myfile这个文件。
Linux 的通配符有三种:‘*’和‘?’用法与DOS相同,‘’代表区间内的任一字符,如test[05]即代表test0,test1,……,test5的集合。
深圳大学实验报告课程名称:计算机体系结构实验项目名称:实验一WinDLX模拟器安装和基本操作学院:计算机与软件学院专业:计算机科学与技术指导教师:罗秋明报告人:学号:班级:实验时间:2015年3月实验报告提交时间:2015年3月教务部制实验内容下载和安装WinDLX;观察软件各个观察窗口的内容和作用;安装实验步骤进行操作,掌握软件的使用方法;课前可以先浏览阅读DLX的RISC指令集。
实验环境硬件:桌面PC软件:Windows实验步骤1.开始和配置WinDLX1、点击File 菜单中的 Reset all 菜单项,弹出一个“Reset DLX”对话框。
然后点击窗口中的“确认”按钮。
如图:2、点击 Configuration / Floating Point Stages(点击Configuration打开菜单,然后点击Floating Point Stages菜单项),选择如下标准配置:3、在Configuration →Symbolic addresses, Absolute Cycle Count 和Enable Forwarding。
点击相应菜单项后,在它的旁边将显示一个小钩。
2. 装载测试程序在开始模拟之前,至少应装入一个程序到主存。
为此,选择File / Load Code or Data,窗口中会列出目录中所有汇编程序。
将fact.s和input.s这两个文件装入主存。
点击“是(Y)”按钮确认3. 模拟(1) Pipeline 窗口程序开始前各段显示:X,表示没有处理有效信息。
执行程序后,IF段处理命令“jal InputUnsigned”,ID段处理命令“addi r1, r0, 0x1000 ”。
(2) Code 窗口执行命令前,各行均没有颜色,表示没有正在执行的命令。
按下 F7 键,模拟就向前执行一步,第一行的颜色变成橘黄色,下一行变成黄色。
继续按F7键,出现不同的颜色。
再次按下F7键,代码窗口中的颜色会再改变,红色表明命令处入第三段“intEX”。
计算机系统结构实验报告一.流水线中的相关实验目的: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。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
实验结果:在载入fact.s和input.s之后,不设置任何断点运行。
北京邮电大学实验报告课程名称计算机系统结构计算机学院 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提供了多种长度的整型数据和浮点数据。
实验五:数据相关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中读取计算结果,这就产生了数据相关。
北京邮电大学实验报告课程名称计算机系统结构计算机学院 201班王陈(2016110711)目录实验一 WINDLX模拟器安装及使用 (2)·实验准备............................................................................. 错误!未定义书签。
·实验环境............................................................................. 错误!未定义书签。
·实验步骤............................................................................. 错误!未定义书签。
·实验内容及要求................................................................. 错误!未定义书签。
·实验过程............................................................................. 错误!未定义书签。
.实验总结 (6)实验二指令流水线相关性分析 (6).实验目的 (7).实验环境 (7).实验步骤 (7)·实验过程............................................................................. 错误!未定义书签。
.实验总结 (12)实验三DLX处理器程序设计 (13).实验目的 (13)·实验环境............................................................................. 错误!未定义书签。
实验五:熟悉WinDLX的使用
一、实验目的:
1、熟练掌握WinDLX模拟器的操作和使用
2、熟悉DLX指令集结构及其特点
二、实验内容:
1、用WinDLX模拟器执行求阶乘程序fact.s。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
2、用WinDLX模拟器执行求最大公约数程序gcm.s。
该程序从标准输入读入两个整数,求他们的最大公约数,然后将结果写到标准输出。
该程序中调用了input.s中的输入子程序。
3、通过上述使用WinDLX,总结WinDLX的特点。
三、实验报告
认真记录实验数据或显示结果。
如实填写实验报告。
1。
计算机科学与技术学院《计算机体系结构》课程实验学号:班级:专业:学生姓名:年月日实验报告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;求出方差存入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. 熟练掌握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。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
实验结果:在载入fact.s和input.s之后,不设置任何断点运行。
北京邮电大学实验报告课程名称计算机系统结构计算机学院03班王陈(11)目录实验一WINDLX模拟器安装及使用......................................... 错误!未定义书签。
·实验准备................................................................................ 错误!未定义书签。
·实验环境................................................................................ 错误!未定义书签。
·实验步骤................................................................................ 错误!未定义书签。
·实验内容及要求.................................................................... 错误!未定义书签。
·实验过程............................................................................. 错误!未定义书签。
·实验总结............................................................................. 错误!未定义书签。
实验二指令流水线相关性分析 ............................................... 错误!未定义书签。
·实验目的............................................................................. 错误!未定义书签。
·实验环境................................................................................ 错误!未定义书签。
·实验步骤................................................................................ 错误!未定义书签。
·实验过程............................................................................. 错误!未定义书签。
·实验总结............................................................................. 错误!未定义书签。
实验三DLX处理器程序设计 .................................................... 错误!未定义书签。
·实验目的............................................................................. 错误!未定义书签。
·实验环境................................................................................ 错误!未定义书签。
·实验步骤................................................................................ 错误!未定义书签。
·实验过程............................................................................. 错误!未定义书签。
A.向量加法代码及性能分析 ................................................... 错误!未定义书签。
B.双精度浮点加法求和代码及结果分析 .............................. 错误!未定义书签。
·实验总结............................................................................. 错误!未定义书签。
实验四代码优化 ....................................................................... 错误!未定义书签。
·实验目的............................................................................. 错误!未定义书签。
·实验环境................................................................................ 错误!未定义书签。
·实验原理................................................................................ 错误!未定义书签。
·实验步骤................................................................................ 错误!未定义书签。
·实验过程............................................................................. 错误!未定义书签。
·实验总结+实习体会........................................................... 错误!未定义书签。
实验五循环展开 ....................................................................... 错误!未定义书签。
·实验目的............................................................................. 错误!未定义书签。
·实验环境................................................................................ 错误!未定义书签。
·实验原理................................................................................ 错误!未定义书签。
·实验步骤................................................................................ 错误!未定义书签。
·实验过程............................................................................. 错误!未定义书签。
矩阵乘程序代码清单及注释说明........................................... 错误!未定义书签。
相关性分析结果........................................................................... 错误!未定义书签。
增加浮点运算部件对性能的影响........................................... 错误!未定义书签。
增加forward部件对性能的影响 ............................................ 错误!未定义书签。
转移指令在转移成功和转移不成功时候的流水线开销 .. 错误!未定义书签。
·实验总结+实习体会+课程建议......................................... 错误!未定义书签。
实验一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模拟器中,并不存在一些数据或者控制上的冲突问题。