DLX流水线指令调度实验报告_第1页
DLX流水线指令调度实验报告_第2页
DLX流水线指令调度实验报告_第3页
DLX流水线指令调度实验报告_第4页
DLX流水线指令调度实验报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

广西工学院鹿山学院

《计算机系统结构》

DLX流水线指令调度实验报告

专业________________________________

指导教师_______________________________

班级_______________________________

学号_______________________________

姓名_______________________________

日期________________________________

广西工学院鹿山学院计算机工程系

DLX流水线指令调度实验报告

一、实验目的

1.理解指令调度的概念;

2.了解指令调度对系统性能的影响。

二、实验平台

WinDLX模拟器

三、预备知识

1.WinDLX模拟器的相关知识。

2.复习和掌握教材中相应的内容。

(1)流水线指令调度;

(2)旁路技术,即数据冒险实用上可以通过一种叫做旁路的硬件技术来消除。DLX是采用将结果

直接送到需要它的功能部件的方法来模拟。多路开关MUX有助于旁路技术的调度。

四、实验原理:

1、WinDLX是一个Windows应用程序,可以装入DLX汇编语言程序,然后单步、设置断点或者

连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来;对于DLX

流水线中出现的相关,以及处理相关进行的定向,该模拟器也能形象直观地表示出来;此外,该模

拟器还提供了对流水线操作(如执行总指令数、总时钟周期数、各种相关发生的次数、分支的次数、

分支成功的概率等)的统计功能。对执行后的指令情况(包括指令执行时间,RAM个数等)进行分

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

2、流水线指令执行的5个阶段:

(1)取指令周期;

(2)指令译码/读寄存器周期;

(3)执行/有效地址计算周期;

(4)存储器访问/分支完成周期;

(5)写回周期

五、实习环境:

1、WinDLX要求的硬件平台是IBMPC兼容机;

2、WinDLX是一个Windows应用程序,运行于Windows3.0以上的操作系统。

六、实验内容

1、在不采用旁路技术的情况下,用WinDLX处理器运行调度前的程序MtrMul.s,记录程序运行

结果,记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数。

2、采用旁路技术,用WinDLX处理器运行调度前的程序MtrMul.s,考察运算结果(应该与步骤

1一样!),记录程序执行过程中各种相关发生的次数以及程序执行的总时钟周期数。

3、根据上面记录的数据,计算采用步骤1至2后的流水线吞吐率、加速比和效率.

4、通过Co喊菜单中的"FloatingpointstagesM选项,增加2个除法单元,重新用

WinDLX处理器运行程序MtrMul.s,考察运算结果(应该与步骤1一样!),记录程序执行过程中各种

相关发生的次数以及程序执行的总时钟周期数,计算流水线吞吐率、加速比和效率。

5、采用旁路技术,用WinDLX处理器运行调度后的程序MtrMul_optimization.s,考察运算结

果(应该与步骤1一样),记录程序执行过程中各种相关发生的次数以及程序执行的总时钟周期数,

计算流水线吞吐率、加速比和效率。

6、根据记录和计算结果,分析比较下面两种方法带来的性能提高情况:

(1)采用旁路技术,不作指令调度,但增加硬件配置(即采用步骤4)

(2)采用旁路技术,进行指令调度,但不增加硬件配置(即采用步骤5)

这两种方法各主要改善何种延时情况,对性能提高影响如何?根据本实验情况,从性能和成本

等方面说明如何优化和改进计算机系统。

七、实验步骤及具体操作

1、双击WinDLX图标运行WinDLX。装入测试程序之前,先初始化WinDLX模拟器:点击H/e菜

单中Kese/a〃菜单项,弹出一个"ResetDLX”对话框。然后点击窗口的中“确认”按钮即可。

2、流水线结构首先采用采用WinDLX默认的结构设置:

①一个整数运算单元;

②浮点运算单元设置如图1所示。

③不旁路。

即点击Configuration/FloatingPointStages(Configuration打开菜单,然后点击FloatingPoint

Stages菜单项),选择如下标准配置:

FloatingPointStageConfiguration

Count:Delay:

AdditionUnits:12

MultiplicationUnits:15

DivisionUnits:119

NumberofUnitsineachClass:1<=M<=8,

Delay(ClockCycles):1<=N<=50

WARNING:Ifyouchangethevalues,theprocessor

willberesetautomatically!

|QK|Cancel

图1:WinDLX默认的结构设置

3、选择尸i/e/LoadCodeorZ)a也按如下步骤操作,可将MtrMul.s这个程序装入主存:

点击MtrMul.s;

点击select按钮;

点击load按钮。

3、按F5键程序执行观察运行结果和6个子窗口的情况,并记录相关数据。

4、WinDLX的结构设置为允许旁路,即点击Configuration/EnableForwarding(ASrConfiguration

打开菜单,然后点击E〃“Re尸。nvardi"g菜单项,在它旁边显示一个对勾,表示进行了设置)

5、选择尸〃e/LoadCodeor£>afa,按如下步骤操作,可将MtrMul.s这个程序装入主存:

点击MtrMul.s;

点击select按钮;

点击load按钮。

6、按F5键程序执行观察运行结果和6个子窗口的情况,并记录相关数据。

7,通过Configuration菜单中的"Floatingpointstages”选项,增加2个除法单元,重新用WinDLX

处理器运行程序MtrMul.s,考察运算结果(应该与步骤1一样!),记录程序执行过程中各种相关发

生的次数以及程序执行的总时钟周期数。配置如图2:

FloatingPointStaigeConfiguration

Count:Delay:

AdditionUnits:|~l][2]

MultiplicationUnits:|1~]|可

DivisionUnits:|3]|~l3]

NumberofUnitsineachClass:1<=M<=8,

Delay(ClockCycles):1<=N<=50

WARNING:Ifyouchangethevalues,theprocessor

willberesetautomatically!

IQKCancel

图2:WinDLX增加2个除法单元的结构设置

8、再选择File/LoadCodeorOaS,按如下步骤操作,可将MtrMul_optimization.s这个程序装入主存:

点击MtrMul_optimization.s;

点击select按钮;

点击load按钮。

9、按F5键程序执行观察运行结果和6个子窗口的情况,并记录相关数据。

八、实验数据及结果分析:

1、矩阵乘法程序MtrMuLs:

,data0x1000

A:.double2.00,2.01,2.02,2.03,2.04,2.05,2.06,2.07,2.08,2.09

.double2.10,2.11,2.12,2.13,2.14,2.15,2.16,2.17,2.18,2.19

.double2.20,2.21,2.22,2.23,2.24,2.25,2.26,2.27,2.28,2.29

.double2.30,2.31,2.32,2.33,2.34,2.35,2.36,2.37,2.38,2.39

.double2.40,2.41,2.42,2.43,2.44,2.45,2.46,2.47,2.48,2.49

,data0x2000

B:.double1.00,1.01,1.02,1.03,1.04

.double1.10,1.11,1.12,1.13,1.14

.double1.20,1.21,1.22,1.23,1.24

.double1.30,1.31,1.32,1.33,1.34

.double1.40,1.41,1.42,1.43,1.44

.double1.50,1.51,1.52,1.53,1.54

.double1.60,1.61,1.62,1.63,1.64

.double1.70,1.71,1.72,1.73,1.74

.double1.80,1.81,1.82,1.83,1.84

.double1.90,1.91,1.92,1.93,1.94

.data0x3000

PrintfFormat:.ascii"Theresultis:%lf,%lf,%lf,%lf,%lf\nH

.ascii“%lf,%lf,%lf,%lf,%lf\nn

.ascii“%lf,%lf,%lf,%lf,%lf\n"

.ascii“%lf,%lf,%lf,%lf,%lf\nn

.asciiz“%lf,%lf,%lf,%lf,%lf\nn

.align2

PrintfPar:.wordPrintfFormat

.align3

C:.double0.0,0.0,0.0,0.0,0.0

.double0.0,0.0,0.0,0.0,0.0

.double0.0,0.0,0.0,0.0,0.0

.double0.0,0.0,0.0,0.0,0.0

.double0.0,0.0,0.0,0.0,0.0

.text

.globalMatrixMul

MatrixMukaddirl,rO,5

addir2,rO,10

addir3,rO,5

addr5,rO,r2

LoopT:addr4,rO,rl

subir5,r5,1

LoopM:addr6,rO,r3

subir4,r4,1

LoopN:subir6,r6,1

multr7,r4,r2

addr7,r7,r5

sllir7,r7,3

IdfO,A(r7)

multr7,r5,r3

addr7,r7,r6

sllir7,r7,3

Idf2,B(r7)

multr7,r4,r3

addr7,r7,r6

sllir7,r7,3

Idf4,C(r7)

multdf6,fO,f2

adddf4,色,f6

sdC(r7),f4

bnezr6,LoopN

bnezr4,LoopM

bnezr5,LoopT

addir14,rO,PrintfPar

trap5

trap0

(1)采用默认设置的未采用旁路的流水线与未优化的程序,其运行结果如下图2:

DLX-Standard-1/O

j-一麻—:

Theresultis:29.735000,29.939500,30.144000,30.348500,30.553000

31.185000,31.399500.31.614000,31.828500,32.043000

32.635000,32.859500,33.084000,33.308500,33.533000

34,085000,34.319500,34,554000,34.788500,35.023000

35.535000,35.779500,36.024000,36.268500,36.513000

1

图3:未采用旁路的运行结果

Total:

14495Cycle(s)executed.

IDexecutedby4437Instruction(s).

2Instruction(s)currentlyinPipeline.

Hardwareconfiguration:

Memorysize:32768Bytes

faddEX-Stages:1zrequiredCycles:2

fmulEX-Stages:1,requiredCycles:5

fdivEX-Stages:1zrequiredCycles:19

Forwardingdisabled.

Stalls:

RAWstalls:9802(67.62%ofallCycles)

WAWstalls:0(0.00^ofallCycles)

Structuralstalls:0(0.00^ofallCycles)

Controlstalls:2491.72%ofallCycles)

Trapstalls:6(0.04%ofallCycles)

Total:10057Stall(s)(69.38^ofallCycles)

ConditionalBranches):

Total:310(7.00%ofallInstructions),thereof:

taken:249(80.32%ofallcond.Branches)

nottaken:61(19.68%ofallcond.Branches)

Load-/Store-Instruetions:

Total:1000(22.54%ofallInstructions),thereof:

Loads:750(75.00%ofLoad-/Store-lnstructions)

Stores:250[25.00%ofLoad,Store-instructions)

Floatingpointstageinstructions:

Total:1250(28.17%ofallInstructions^thereof:

Additions:250(20.00%ofFloatingpointstageins,

Multiplications:1000(80.00^ofFloatingpointstageinst)

Divisions:0(0.00^ofFloatingpointstageinst.)

图4:未采用旁路的WinDLX统计图

从图4的统计数据看出:总周期为14495,总延迟为10057个周期,占所有周期数的69.38%。其

中,由读写相关带来的延时最严重,占所有周期数的67.62%。为此,采用旁路技术以消除RAW延

时。

(2)采用旁路措施与未优化的程序,RAW延时系由数据冒险引起,消除数据冒险的方法之一,是

通过一种叫做旁路的硬件技术来消除。DLX是采用将结果直接送到需要它的功能部件的方法来模拟。

其运行结果如下图4:

■DLX-Standard-I/O

:i…京1

Theresultis:29.735000,29.939500,30.144000,30.348500,30.553000

31.185000,31.399500,31.614000,31.828500,32.043000

32.635000,32.859500,33.084000,33.308500,33.533000

34.085000,34.319500,34.554000,34.788500,35,023000

35.535000,35.779500,36.024000,36.268500,36.513000

图5:采用旁路的运行结果

显然我们可以看出采用旁路的运行结果跟未采用旁路结果是一样,而统计主要数据如下图5:

■FileWindowExecuteMemoryConfigurationStatistics

Total:

8943Cycle(s)executed.

IDexecutedby4437Instruction^).

2Instruction@currentlyinPipeline.

Hardwareconfiguration:

Memorysize:32768Bytes

faddEX-Stages:1,requiredCycles:2

fmulEX-Stages:1,requiredCycles:5

fdivEX-Stages:LrequiredCycles:19

Forwardingenabled.

Stalls:

RAWstalls:4250(47.52%ofallCycles),thereof:

LDstalls:0(0.00^ofRAWstalls)

Branch/Jumpstalls:0(0.00%ofRAWstalls)

Floatingpointstalls:4250(100.00%ofRAWstalls)

WAWstalls:0(0.00^ofallCycles)

Structuralstalls:0(0.00%ofallCycles)

Controlstalls:249(2.78^ofallCycles)

Trapstalls:6(0.07^ofallCycles)

Total:4505Stall网(50.37%ofallCycles)

ConditionalBranches):

Total:310(7.00^ofallInstructions),thereof:

taken:249(80.32%ofallcond.Branches)

nottaken:61(19.68%ofallcond.Branches)

Load-/Store-Instruetions:

Total:1000(22.54%ofallInstructions),thereof:

Loads:750(75.00%ofLoad-/Store-lnstructions)

Stores:250(25.0。%ofLoad-/Store-lnstructions)

图6:采用旁路的WinDLX统计图

采用旁路技术效果显著,,总周期减少了5552,运行时间减少了五分之二。但总延时为4505个周

期,占所有周期数的50.37%,其中,读写冒险产生的延迟为4250,占到总周期数的47.52%。

FClockCycleDiagram-□

Instructions/Cycles;-14।J3।.12।-11।JO।-9।-8।7।£।・5।.4।-3।2।10

adddf4J4J6

$dC(r7)J4

bnezrGXoopN

bnezr4,LoopM

bnezr5,LoopT

addir14j0,0x30c4

(rap0x5

trap0x0

nop

图7:程序运行时空图

分析原因,从时空图可以看出,因为只有一个浮点乘法部件,山第5周期开始的连续三条浮点

乘法运算导致了使用乘法部件的冲突。但是,此部分代码不是循环内代码,时间开销不是很高。如

果代码在循环内,必须将浮点运算分散,或者重复设置浮点乘法运算部件。

(3)为消除结构冒险,处理机结构在(2)的基础上增加2个浮点运算单元。在(2)的基础上

增加2个浮点除法运算单元。程序运行后统计窗口摘要如下图7:

■FileWindowExecuteMemoryConfigurationStatistics

Total:

8943Cycle($)executed.

IDexecutedby4437Instruction(s).

2InsUuction(s)currentlyinPipeline.

Hardwareconfiguration:

Memorysize:32768Bytes

faddEX-Stages:LrequiredCycles:2

fmulEX-Stages:requiredCycles:5

fdivEX-Stages:3,requiredCycles:19

Forwardingenabled.

Stalls:

RAWstalls:4250(47.52%ofallCycles),thereof:

LDstalls:0(0.00^ofRAWstalls)

Branch/Jumpstalls:0(0.00%ofRAWstalls)

Floatingpointstalls:4250000.00%ofRAWstalls)

WAWstalls:0(0.00^ofallCycles)

Structuralstalls:0(0.00^ofallCycles)

Controlstalls:249(2.78^ofallCycles)

Trapstalls:6(0.07^ofallCycles)

Total:4505Stall固(50.37%ofallCycles)

ConditionalBranches):

Total:310(7.00^ofallInstructions),thereof:

taken:249(80.32%ofallcond.Branches)

nottaken:61(19.68%ofallcond.Branches)

图8:增加2个浮点除法运算单元的WinDLX统计图

从图8的统计数据看出:总周期为8943,总延迟为4250个周期,占所有周期数的50.37%。

其中,由读写相关带来的延时最严重,占所有周期数的47.52%O从而与(2)的情况差不多,因此

通过结果来看这种改善并没有得到任何的提高(浮点除法指令在该程序中执行条数为0)。说明结构

冒险在本例中影响极小。当然,增加什么功能部件,这样做是否划算,需要根据具体情况来决定。

从而每增加一个运算单元会使得处理器成本提高,而且往往增加的那个运算单元不会被经常用到,产

生硬件冗余

2、优化程序,减少浮点运算

优化后的矩阵乘法程序MtrMul_optimization.s:

.dataOx1000

A:.double2.00,2.01,2.02,2.03,2.04,2.05,2.06,2.07,2.08,2.09

.double2.10,2.11,2.12,2.13,2.14,2.15,2.16,2.17,2.18,2.19

,double2.20,2.21,2.22,2.23,2.24,2.25,2.26,2.27,2.28,2.29

.double2.30,2.31,2.32,2.33,2.34,2.35,2.36,2.37,2.38,2.39

.double2.40,2.41,2.42,2.43,2.44,2.45,2.46,2.47,2.48,2.49

.data0x2000

B:.double1.00,1.01,1.02,1.03,1.04

.double1.10,1.11,1.12,1.13,1.14

.double1.20,1.21,1.22,1.23,1.24

.double1.30,1.31,1.32,1.33,1.34

.double1.40,1.41,1.42,1.43,1.44

.double1.50,1.51,1.52,1.53,1.54

.double1.60,1.61,1.62,1.63,1.64

.double1.70,1.71,1.72,1.73,1.74

.double1.80,1.81,1.82,1.83,1.84

.double1.90,1.91,1.92,1.93,1.94

.data0x3000

PrintfFormat:.ascii"Theresultis:%lf,%lf,%lf,%lf,%lf\nu

.ascii“%lf,%lf,%lf,%lf,%lftnn

.asciiH%lf,%lf,%lf,%lf,%lf\n"

.ascii“%lf,%lf,%lf,%lf,%li\nu

.asciiz"%lf,%lf,%lf,%lf,%lf\nH

.align2

PrintfPar:.wordPrintfFormat

.align3

C:.double0.0,0.0,0.0,0.0,0.0

.double0.0,0.0,0.0,0.0,0.0

.double0.0,0.0,0.0,0.0,0.0

.double0.0,0.0,0.0,0.0,0.0

.double0.0,0.0,0.0,0.0,0.0

.text

.globalMatrixMul

MatrixMukaddirl,rO,5

addir2,rO,10

addir3,rO,5

multr7,rl,r3

multr8,rl,r2

multr9,r2,r3

addr5,rO,r2

LoopT:addr4,rO,rl

addrlO,r0,r7

addrl1,1-0,r8

subir5,r5,1

subr9,r9,r3

LoopM:addr6,rO,r3

subir4,r4,1

subrlO,rlO,r3

subrll,rll,r2

addr!3,rl1,r5

sllirl3,rl3,3

LoopN:subir6,r6,1

IdfO,A(rl3)

addrl2,r9,r6

sllirl2,rl2,3

Idf2,B(rl2)

addr!2,rlO,r6

mulldf6,fO,f2

sllirl2,rl2,3

Idf4,C(rl2)

adddf4,f4,f6

sdC(rl2),f4

bnezr6,LoopN

bnezr4,LoopM

bnezr5,LoopT

addir14,rO,PrintfPar

trap5

trap0

(4)数据冒险、结构冒险也可以用指令重排的方法来避免,如DLX编译器通过调度指令来改进

流水线的性能。考虑到DLX作乘除法是采用浮点部件来实现的,要减少浮点运算,就要减少乘除法

运算。程序优化主要是修改程序,在循环结构中以连续减法来代替乘法操作。程序运行后统计窗口

摘要如下图9:

■FileWindowExecuteMemoryConfigurationStatistics

Total:

4435Cycle(s)executed.

IDexecutedby3420Instruction®

2Instruction(s)currentlyinPipeline.

Hardwareconfiguration:

Memorysize:32768Bytes

faddEX-Stages:1zrequiredCycles:2

fmulEX-Stages:1zrequiredCycles:5

fdivEX-Stages:1,requiredCycles:19

Forwardingenabled.

Stalls:

RAWstalls:75006.91%ofallCycles),thereof:

LDstalls:0(0.00%ofRAWstate)

Branch/Jumpstalls:0(0.00^ofRAWstalls)

Floatingpointstalls:750000.00%ofRAWstalls)

WAWstalls:0(0.00^ofallCycles)

Structuralstalls:8(0.18%ofallCycles)

Controlstalls:249(5.61%ofallCycles)

Trapstalls:6(0.14%ofallCycles)

Total:1013Stall(s)(22.84%ofallCycles)

ConditionalBranches):

Total:310(9.06%ofallInstructions),thereof:

taken:249(80.32%ofallcond.Branches)

nottaken:6109.68%ofallcond.Branches)

Floatingpointstageinstructions:

Total:503(14.71%ofallInstructions),thereof:

Additions:250(49.7。%ofFloatingpointstageinst.)

Multiplications:253(50.3吃ofFloatingpointstageinst)

Divisions:0(0.00^ofFl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论