WinDLX实验报告
- 格式:doc
- 大小:108.00 KB
- 文档页数:6
计算机系统结构实验报告一、实验目的: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里的程序是一种汇编语言,通过对寄存器和条件转移来实现程序的实现。
北京邮电大学实验报告课程名称计算机系统结构计算机学院03班王陈(11)目录实验一WINDLX模拟器安装及使用......................................... 错误!未定义书签。
·实验准备................................................................................ 错误!未定义书签。
·实验环境................................................................................ 错误!未定义书签。
·实验步骤................................................................................ 错误!未定义书签。
·实验内容及要求.................................................................... 错误!未定义书签。
·实验过程............................................................................. 错误!未定义书签。
·实验总结............................................................................. 错误!未定义书签。
实验二指令流水线相关性分析 ............................................... 错误!未定义书签。
·实验目的............................................................................. 错误!未定义书签。
WinDLX实验报告1.实验目的:1)熟悉计算机流水线基本概念2)了解DLX基本流水线的各段的功能了解各种不同指令在流水线中的实际流动情况3)对流水线做性能分析4)了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关的种类5)了解决数据相关的方法2.实验内容:1)在仿真器上分别运行单条指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即数ALU指令,记录它们在流水线中的执行情况2)仿真器运行一段无相关的程序,记录执行情况,计算流水线的加速比、吞吐率与效率。
3)在仿真器运行一段程序,统计该程序在流水线中出现的各种相关个数,及其引起的流水线暂停周期数4)在流水线中设置定向路径来消除数据相关,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期数5)通过对程序进行编译优化并结合其他相关解决方法——分支预测与延迟槽,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期数。
3.实验步骤:1.)熟悉WinDLX的使用用WinDLX模拟器执行求阶乘程序fact.s 。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
实验结果:在载入fact.s和input.s之后,不设置任何断点运行。
a.不采用重新定向技术,我们得到的结果b.采用定向技术,我们得到的结果:从上面的数据我们可以看出定向的作用:在定向技术存在的情况下Statistics 窗口中的各种统计数字:总的周期数(215) 和暂停数(17 RAW, 25 Control, 12 Trap; 54 Total)在定向技术不存在时候,控制暂停和Trap 暂停仍然是同样的值,而RAW暂停从17变成了53,总的模拟周期数增加到236。
所以定向技术带来的加速比:236 / 215 = 1.098DLX forwarded比DLX not forwarded快9.8%。
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 考察增加浮点运算部件对性能的影响。
北京邮电大学实验报告课程名称计算机系统结构计算机学院 201班王陈(2016110711)目录实验一 WINDLX模拟器安装及使用 (2)·实验准备............................................................................. 错误!未定义书签。
·实验环境............................................................................. 错误!未定义书签。
·实验步骤............................................................................. 错误!未定义书签。
·实验内容及要求................................................................. 错误!未定义书签。
·实验过程............................................................................. 错误!未定义书签。
.实验总结 (6)实验二指令流水线相关性分析 (6).实验目的 (7).实验环境 (7).实验步骤 (7)·实验过程............................................................................. 错误!未定义书签。
.实验总结 (12)实验三DLX处理器程序设计 (13).实验目的 (13)·实验环境............................................................................. 错误!未定义书签。
计算机科学与技术学院《计算机体系结构》课程实验学号:班级:专业:学生姓名:年月日实验报告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模拟器的操作和使用,清楚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教程)1.用WinDLX模拟器执行下列三个程序(按照10位学号除3的余数选择):●求阶乘程序fact.s(余数为0)●求最大公约数程序gcm.s(余数为1)●求素数程序prim.s(余数为2)●我的学号为2010011147所以我用的函数是:gcm.s分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。
步进:连续:设置断点:注意:gcm.s中调用了input.s中的输入子程序。
load程序时,要两个程序一起装入(都select后再点击load)。
fact.s也是如此。
在报告中:1.1简单阐述程序的作用和运行原理作用:用WinDLX模拟器执行求最大公约数程序运行原理:这个程序说明浮点指令的使用。
该程序从标准输入读入两个个整数,求其最大公约数,然后将结果存放在R2寄存器中。
该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
1.2跟踪CPU中寄存器和存储器内容,把造成其内容发生变化的指令、操作涵义、变化情况(以截图体现)体现出来2、用WinDLX运行程序structure_d.s,通过模拟:●找出存在结构相关的指令对以及导致结构相关的部件;●记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;论述结构相关对CPU性能的影响,讨论解决结构相关的方法。
在报告中:2.1分析并找出全部结构相关的指令、原因、流水线停顿截图、停顿时钟周期数(循环的只写一轮)Addi r2,r2,0x8;addi r3,r3,0x8;sub r5,r4,r2这三条指令和addd f2,f0,f2存在结构相关,其中addi r2,r2,0x8这条指令停顿2个时钟周期,其余都停顿1个时钟周期。
2.2分析并找出导致结构相关的部件答:存储数据和指令的存储部件。
2.3记录由结构相关引起的暂停时钟周期数、总执行周期数、计算暂停时钟周期数占总执行周期数的百分比由结构相关引起的暂停周期数为:30总执行周期数为:139暂停周期数占总执行周期数的百分比:21.58%2.4论述结构相关对CPU性能的影响,讨论解决结构相关的方法答:结构相关使相关指令在流水线上停滞,降低了执行效率。
实验一熟悉WInDLX的使用实验目的:通过本实验,熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点。
实验内容:一.用WinDLX模拟器执行求阶乘程序facts 。
执行步骤详见“WinDLX 教程”。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
二.输入数据“3”采用单步执行方法,完成程序并通过上述使用WinDLX,总结WinDLX的特点。
三.意观察变量说明语句所建立的数据区,理解WinDLX指令系统。
实验步骤:一.运行WinDLX仿真器。
二.在开始模拟之前,fact.s程序装入一个程序到主存。
在装入fact.s程序的同时需要同时装入input.s程序,现在可以开始模拟工作了。
三.找出实验中的不明白的地方,自己解决并写出原因。
四.输入数据“3”采用单步执行方法,完成程序并通过上述使用WinDLX,总结WinDLX的特点。
实验结果:打开Pipeline窗口,点击 F7用单步执行,做完以后,用多步执行命令,实验结果如下所示:用F7单步跟踪直到出现如下所示:输入“3”然后“确定”。
结果如下所示:在本次实验遇到两个问题:问题一在上述窗口中,你将看到模拟正在第四时钟周期,第一条命令正在MEM 段,第二条命令在intEX段,第四条命令在IF段。
而第三条命令指示为"aborted"。
其原因是:第二条命令(jal)是无条件分支指令,但只有在第三个时钟周期,jal指令被译码后才知道,这时,下一条命令movi2fp已经取出,但需执行的下一条命令在另一个地址处,因而,movi2fp的执行应被取消,在流水线中留下气泡。
问题二在下图中,你将看到模拟正处于时钟周期14。
trap 0x5行如下所示:原因是:无论何时遇到一条trap指令时,DLX 处理器中的流水线将被清空实验体会:通过本次实验我掌握了WinDLX模拟器的操作和使用,了解DLX指令集结构及其特点,更加深入的了解计算机系统流水线的工作过程。
北京邮电大学计算机学院《计算机系统结构》课程实验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实验报告
1.实验目的:
1)熟悉计算机流水线基本概念
2)了解DLX基本流水线的各段的功能
3)了解各种不同指令在流水线中的实际流动情况
4)对流水线做性能分析
5)了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关的种类
6)了解解决数据相关的方法
2.实验内容:
1)在仿真器上分别运行单条指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即数ALU指令,记录它们在流水线中的执行情况2)仿真器运行一段无相关的程序,记录它的执行情况,计算流水线的加速比、吞吐率与效率。
3)在仿真器运行一段程序,统计该程序在流水线中出现的各种相关个数,及其引起的流水线暂停周期数
4)通过在流水线中设置定向路径来消除数据相关,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期数
5)通过对程序进行编译优化并结合其他相关解决方法——分支预测与延迟槽,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期
数。
3.实验步骤:
整个实验分三部分来做:
1.)熟悉WinDLX的使用
用WinDLX模拟器执行求阶乘程序fact.s。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
实验结果:
在载入fact.s和input.s之后,不设置任何断点运行。
a.不采用重新定向技术,我们得到的结果
b.采用定向技术,我们得到的结果:
从上面的数据我们可以看出定向的作用:
在定向技术存在的情况下Statistics 窗口中的各种统计数字:总的周期数(215) 和暂停数(17 RAW, 25 Control, 12 Trap; 54 Total)
在定向技术不存在时候,控制暂停和Trap 暂停仍然是同样的值,而RAW暂停从17变成了53,总的模拟周期数增加到236。
所以定向技术带来的加速比:
236 / 215 = 1.098
DLX forwarded比DLX not forwarded快9.8%。
2)不相关的程序
下面是一段不相关的程序,一共6条指令
ADDI R5, R5, 1
SUBI R4, R4, 1
AND R3, R3, R3
XOR R7, R7, R7
ADDI R8, R8, 1
ADDI R9, R9, 1
在WinDLX中执行的结果如下:
如上图所示:
6条指令一共执行了10个周期,而每个指令都需要5个周期来完成。
故可得加速比:5*6/10=3
实际吞吐率:
流水线由5段组成,完成6条指令,m=5,n=6
T=5△t+(6-1) △t=10△t
Tp=n/T=3/(5△t),即为实际吞吐率。
效率:E=1/(1+(m-1)/n)=TP*△t=3/5
3)存在相关的程序
a.数据相关
先给出一个存在数据相关的程序:
LHI R2, (A>>16) & 0xFFFF
ADDUI R2, R2, A & 0xFFFF
LHI R3, (B>>16)&0xFFFF
ADDUI R3, R3, B&0xFFFF
loop:
LW R1, 0 (R2)
ADD R1, R1, R3
SW 0(R2), R1
LW R5, 0 (R1)
ADDI R5, R5, #10
ADDI R2, R2, #4
SUB R4, R3, R2
BNEZ R4, loop
TRAP #0
A: .word 0, 4, 8, 12, 16, 20, 24, 28, 32, 36
B: .word 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
没有采用定向技术时运行该程序:得到
程序执行了202个周期,10个数据相关引起的时钟周期RAW stall为104个。
暂停时钟周期数占总执行周期数的百分比=51.48%
采用定向技术时运行该程序:得到
程序执行了128个周期,共有6个数据相关引起的时钟周期RAW stall为30个。
暂停时钟周期数占总执行周期数的百分比=23.44%
可见通过定向技术,减少了数据相关,缩短了程序的执行周期,整个性能为原来的1.57倍。
b.结构相关
下面这段程序存在结构相关
ADDI R5, R5, 1
SUBI R4, R4, 1
AND R3, R3, R3
XOR R7, R7, R7
ADDI R8, R8, 1
ADDI R9, R9, 1
MULT R1,R5,R4
MULT R2,R3,R7
执行之后得到的clock cycle programe
Statistics:
可见1个结构相关引起了4个stall,占总共20个CYCLE 的20%
为了避免结构相关,可以考虑采用资源重复的方法,比如,在流水线机器中设置相互独立的指令存储器和数据存储器,也可以将CACHE分割成指令CACHE 和数据CACHE。
c.指令调度:
首先,通过Configuration菜单中的“Floating point stages”选项,把除法单元数设置为3,把加法﹑乘法﹑除法的延迟设置为3个时钟周期。
给出调度前的程序sch_bef:
.data
.global ONE
ONE: .word 1
.text
.global main
lf f1,ONE ;turn divf into a move cvti2f f7,f1 ;by storing in f7 1 in nop ;floating-point format
divf f1,f8,f7 ;move Y=(f8) into f1 divf f2,f9,f7 ;move Z=(f9) into f2 addf f3,f1,f2
divf f10,f3,f7 ;move f3 into X=(f10) divf f4,f11,f7 ;move B=(f11) into f4 divf f5,f12,f7 ;move C=(f12) into f5 multf f6,f4,f5
divf f13,f6,f7 ;move f6 into A=(f13) Finish:
trap 0
运行之后可以得到结果:
调度之后的程序sch_aft:
.data
.global ONE
ONE: .word 1
.text
.global main
main:
lf f1,ONE ;turn divf into a move cvti2f f7,f1 ;by storing in f7 1 in nop ;floating-point format
divf f1,f8,f7 ;move Y=(f8) into f1 divf f2,f9,f7 ;move Z=(f9) into f2 divf f4,f11,f7 ;move B=(f11) into f4 divf f5,f12,f7 ;move C=(f12) into f5 addf f3,f1,f2
multf f6,f4,f5
divf f10,f3,f7 ;move f3 into X=(f10) divf f13,f6,f7 ;move f6 into A=(f13) Finish:
运行之后得到:
可以看出经过调度之后
运行周期从27减少到21,而且减少了相关。
实验总结:
通过本实验,基本掌握了WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点,对于体系结构这门课程的学习和后面的实验还是很有帮助的。