计算机系统结构实验报告

  • 格式:doc
  • 大小:920.50 KB
  • 文档页数:22

下载文档原格式

  / 22
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机系统结构实验报告

3.1流水线中的相关

一、实验目的

1. 掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;

2. 加深对计算机流水线基本概念的理解;

3. 进一步了解DLX基本流水线各段的功能以及基本操作;

4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;

5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂

停。

二、实验平台

WinDLX模拟器。

三、实验内容、步骤及实验结果

1.用WinDLX模拟器执行下列三个程序:

求阶乘程序fact.s

求最大公倍数程序gcm.s

求素数程序prim.s

分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。熟练掌握WinDLX的操作和使用。

结果总结:

三种方式:

步进的方式是按快捷键F7或者选择菜单栏Execute中的Single Cycle;

连续的方式是按快捷键F5或者选择Execute中的Run;

设置断点是通过选择window菜单栏中的code,然后在菜单栏中多出一项code 项,选中你想要插入的指令,在多出来的code项中找到set breakpoint,即可插入断点,然后按F5执行即可。

以fact.s为例

Pipeline图

指出了每个功能段所进行的具体指令,点击指令还可以看到指令的具体相关的其他方面的内容。

时空图

更加直观的形式显示出了在某个时间周期某个功能段所执行的具体的指令。

Register图

指出了各个寄存器和存储器的值,如执行完了第一条加法指令之后,

R1=OX00001000。

Statistics图

指出了指令的相关分析数据,例如,执行了6个cycles,4条指令在流水线中等相关的总结信息。

执行结果图

gcm.s、prim.s类似,所以只给出运行的结果图

gcm.s结果图

Prim.s结果图

2. 用WinDLX运行程序structure_d.s,通过模拟找出存在资源相关的指令对以及导致资源相关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;论述资源相关对CPU性能的影响,讨论解决资源相关的方法。

结果图

资源相关的指令:

addd f0,f0,f4

addd f2,f0,f2(发生先写后读的数据相关导致消除了资源相关)

由图可知是因为只有一个faddEX的运算部件,而它需要两个时钟周期,当第一条addd指令执行EX段时,第二条指令势必要等一个周期等faddEX部件空闲了才能够使用。但是,同时由于这两条指令存在先写后读数据相关,暂停一个周期之后没有了资源相关

单条指令的详细资源冲突图

因为Statistics图中的分析数据没有看见structural stall,但是根据图知道这个存在addd f2,f0,f2时的资源冲突,大概循环了6次,总共时钟周期是139个,所以资源相关引起的暂停的时钟周期的个数是6个,暂停时钟周期数占总执行周期数的百分比为6/139 = 4.3%

Statistics数据分析图

资源相关降低CPU性能,并行运算的速度降低,解决资源相关的方法有停顿几个时钟周期法(针对访存冲突和设备资源冲突(轮流单个使用))或者是增加硬件设备(解决设备资源冲突)。

3. 在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding 选项前的勾选符),用WinDLX运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。

在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。重复上述3中的工作,并计算采用定向技术后性能提高的倍数。

1、不定向技术:

总时钟周期=202 数据相关引起的暂停时钟周期=104

暂停时钟周期数占总执行周期数的百分比=51.48%

2、定向技术:

总时钟周期=128 数据相关引起的暂停时钟周期=30

暂停时钟周期数占总执行周期数的百分比=23.44%

定向技术的加速比 = 202/128 = 1.578

四、心得体会

通过使用WinDlX对指令模拟与分析,我们对流水线的执行过程更加熟悉,也对执行时出现的问题,如资源相关,数据相关等产生原因有了清晰的认识,进一步加深了使我们对流水线的理解。

3.2循环展开及指令调度

一、实验目的

1. 加深对循环级并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解;

2. 熟悉用指令调度技术来解决流水线中的数据相关的方法;

3. 了解循环展开、指令调度等技术对CPU性能的改进。

二、实验平台

WinDLX模拟器。

三、实验内容、步骤及实验结果

1.用指令调度技术解决流水线中的结构相关与数据相关

(1)用DLX汇编语言编写代码文件*.s,程序中应包括数据相关与结构相关(假设:加法﹑乘法﹑除法部件各有2个,延迟时间都是3个时钟周期)

(2)通过Configuration菜单中的“Floating point stages”选项,把加法﹑乘法﹑除法部件的个数设置为2个,把延迟都设置为3个时钟周期;

(3)用WinDLX运行程序。记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总时钟周期数;

(4)采用指令调度技术对程序进行指令调度,消除相关;

(5)用WinDLX运行调度后的程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数;

(6)根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU 性能的意义。

1)代码:

divf f2,f5,f6

divf f1,f2,f6

divf f3,f1,f5

divf f0,f4,f7

addf f14,f0,f6

addf f15,f5,f7

multf f20,f4,f6

multf f21,f5,f7