当前位置:文档之家› 北邮 计算机系统结构 实验报告(全部)指令流水线相关性分析 DLX 处理器程序设计 代码优化

北邮 计算机系统结构 实验报告(全部)指令流水线相关性分析 DLX 处理器程序设计 代码优化

课程名称:计算机系统结构实验名称:WINDLX模拟实验一、二班级:2010211309姓名:毕鹏飞学长班内序号:日期:2012年3月18日目录实验一WINDLX模拟器安装及使用 (3)简要介绍WINDLX模拟器结构和功能 (3)Register 窗口 (4)Code 窗口 (4)Pipeline 窗口 (5)Clock Cycle Diagram 窗口 (5)Statistics 窗口 (6)Breakpoint 窗口 (6)实验二指令流水线相关性分析 (8)1.实验目的 (8)2.实验原理 (8)3.实验过程及结果分析 (8)3.1.观察程序中的数据/控制/结构相关及指令组合 (8)3.2.考察增加浮点运算部件对性能的影响(N=7) (10)3.3.考察增加forward部件对性能的影响(N=7,floating为2,4) (11)3.4.观察转移指令在转移成功和转移不成功时候的流水线开销 (12)4.实验总结 (13)实验三DLX处理器程序设计 (13)一、实验目的 (13)二、实验设备环境 (13)三、实验内容和要求 (13)四、代码清单及注释 (13)五、程序相关性分析结果 (15)六、实验心得 (17)实验四代码优化实验 (18)实验目的: (18)实验原理: (18)实验核心思想 (18)优化程序代码清单及注释说明: (18)四、实验分析: (20)五、实验总结: (23)实验五循环展开(选作) (24)实验目的: (24)实验原理: (24)实验核心思想 (24)优化程序代码清单及注释说明: (24)四、实验分析: (25)五、实验总结: (27)实验一WINDLX模拟器安装及使用简要介绍WINDLX模拟器结构和功能第一次打开WINDLX模拟器,我们可以看到如下六个小窗口。

Register窗口显示寄存器中的内容。

为此,双击主窗口中的Register 图标。

Register 窗口会显示各个寄存器中的内容。

看一下R1到R5的值。

按F5使模拟继续运行到下一个断点处,有些值将发生改变。

Code 窗口该窗口代表存储器内容的三栏信息,从左到右依次为:地址(符号或数字)、命令的十六进制机器代码和汇编命令。

现在,点击主窗口中的Execution开始模拟。

在出现的下拉式菜单中,点击Single Cycle或按F7键。

这时,窗口中带有地址“$TEXT ”的第一行变成黄色。

按下F7键,模拟就向前执行一步,第一行的颜色变成橘黄色,下一行变成黄色.。

这些不同颜色指明命令处于流水线的哪一段。

Pipeline窗口显示DLX处理器的内部结构。

窗口中用图表形式显示了DLX的五段流水线。

你应尽可能地扩大此窗口,以便处于不同流水段的指令都能够在图表中显示。

水线的时空图。

该时空图中显示了每一个时隙内的运行情况。

对准Clock cycle diagram窗口中相应命令所在行,然后双击它,弹出一个新窗口。

窗口中会详细显示每一个流水段处理器内部的执行动作。

该窗口是对运行程序中数据的分析。

Statistics 窗口提供各个方面的信息:模对模拟的影响。

Breakpoint 窗口通过Code 窗口可以观察代码(如果未打开,双击图标Code),可以通过Breakpoint 来观察代码运行的情况。

单击Set Breakpoint ,将弹出一个新的"Set Breakpoint" 窗口。

通过此窗口,可以选择命令运行到流水线的哪一阶段时,程序停止执行。

缺省为ID段。

点击OK 关闭窗口。

实验二指令流水线相关性分析1.实验目的通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。

2.实验原理指令流水线中主要有结构相关、数据相关、控制相关。

相关影响流水线性能。

3.实验过程及结果分析3.1.观察程序中的数据/控制/结构相关及指令组合3.1.1.数据相关及指令组合1)截图及分析在第25个周期里(两次输入都是7),Clock Cycle Diagram窗口的时空图(下图为多了两个周期后的,以明显显示橘黄色的R-Stall)和Pipeline窗口中的流图第一次出现了橘黄色的R-Stall。

点击Pipeline的橘黄色框,出现的Information about seqir5,r3,0xa中有右图:lbu r3,0x0(r2)要在WB周期写回r3中的数据,而下一条指令seqi r5,r3,0xa 要在intEX周期中读取r3中的数据。

发生了写读相关。

所以为了避免冲突,seqi r5,r3,0xa的intEX指令延迟了一个周期进行。

2)相关指令组合lbu r3,0x0(r2)seqi r5,r3,0xa3.1.2.控制相关及指令组合:1)截图及分析在第四时钟周期,第一条命令正处于MEM段,第二条命令处于intEX段,第四条命令处于IF段,而第三条命令处于"aborted"。

原因是:第二条命令jal InputUnsigned是无条件分支指令,但只有在第三个时钟周期,jal 指令被译码后才知道。

这时,下一条命令movi2fp已经取出,但需执行的下一条命令在另一个地址处,因而,movi2fp的执行应被取消,在流水线中留下气泡。

此处发生了控制相关。

2)相关指令组合addi r1, r0 , 0x1000jal InputUnsignedmovi2fp f10,r1sw SaveR2[r0],r23.1.3.结构相关及指令组合1)截图及分析在下图中,Clock Cycle Diagram窗口的时空图可发现指令Stall了4个周期。

点击右上图Pipeline窗口流水线的亮黄色框,则弹出的Information about addi r2,r2,0x1显示如右图:addi r2, r2, 0x1 该指令与它前面的一天指令addr1,r1, r3发生了结构相关。

由于上一条指令由于数据相关需要停4个周期,在ID段后停滞,不能进入intEX段,故addi r2,r2,0x1 就不能进入ID段,译码部分已经被占用。

故发生了结构相关。

2)相关指令组合add r1,r1, r3addi r2, r2, 0x13.2.考察增加浮点运算部件对性能的影响(N=7)1)结果截图浮点运算部件均为1浮点运算部件均为2N=7,floating 为2,4且有forward 部件时条件转移结果如下图:条件转移分析(有数据通路): 静态指令调度算法只能解决数据相关,条件转移结果与原来相比没有变化。

转移指令一共9条。

其中成功转移的2条,占22.22%,不成功转移的7条,占84.62%。

2) 结果分析若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低。

若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,每执行一条条件转移指令,一条x段流水线就有x-2个流水线被浪费掉,执行效率降低,性能有一定的损失。

4.实验总结这次实验,通过观察程序中出现的数据相关、控制相关、结构相关,以及他们的指令组合,并考察增加浮点运算部件、forward部件对性能的影响,观察转移指令在转移成功和不成功时的流水线开销。

我更加深入的认识了流水线的概念。

WINDLX软件使得流水线的知识变得更加形象生动,易于理解。

试验中,我一开始因为对软件的不了解,摸索了一段时间,后来才变得很顺利,出现问题也知道该如何充分利用软件功能来分析理解。

我认为流水线技术确实可以提高计算机的执行效率,但是它的不足之处也是很多的。

比如发生一些相关的时候就需要延迟,当浮点运算部件,前向部件,条件转移等问题都会对吞吐率有很大的影响。

如果要将流水线的效率做到最大,就需要对代码进行优化处理,而这个并没有什么唯一的方法,只能通过个人的分析,手工进行。

实验三DLX处理器程序设计一、实验目的学习使用DLX 汇编语言编程,进一步分析相关现象。

二、实验设备环境DLX汇编语言环境三、实验内容和要求自编一段汇编代码,完成一维向量加法运算,并输出结果。

观察程序中出现的数据/控制/结构相关。

(注:使用一维数组表示一维向量。

)四、代码清单及注释*向量加法设计*1、源代码.dataVectorLength: .word 16Vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 Vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 Printf1: .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,f0Finish:;**** Finish,write result into stdoutsd Result,f4addi r14,r0,PrintPartrap 5addi r2,r2,4subi r20,r20,1bnez r20,Loop;**** Endtrap 02、注释VectorLength: .word 16Vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 Vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 声明向量长度以及声明向量1、2Result: .space 4存放打印数据的空间申请Loop:ld f10,Vector1(r2)ld f12,Vector2(r2)循环体中读入向量addd f4,f2,f0加法运算trap 5系统中断,输出结果3、运行结果五、程序相关性分析结果1、数据、控制、结构相关数据相关。

所以当对当前指令的操作数寄存器进行操作(EX)的时候,前几条指令的运算结果还未写回(WB)结果寄存器,由此产生数据相关。

结构相关。

由于程序只简单的做了一次加法,所以没有结构相关产生。

控制相关。

于系统按照预测成功来执行指令,所以执行bnez后马上将其下一条指令trap读进来。

2、浮点运算部件带来的影响将浮点加法器有1个增加为2个后,程序执行的性能未得到提升。

相关主题