系统结构实验报告

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

计算机系统结构实验报告

实验一流水线的相关

实验目的:

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

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

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

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

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

实验平台:

WinDLX模拟器

实验内容和步骤:

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

求阶乘程序fact.s

求最大公倍数程序gcm.s

求素数程序prim.s

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

1、求阶乘程序fact.s

(1)分别以步进、连续、设置断点的方式运行程序

图1.1.1 求阶乘程序fact.s运行统计数据步进方式运行

图1.1.2 求阶乘程序fact.s运行统计数据连续方式运行

(2)数据统计

图1.1.4 求阶乘程序fact.s运行统计数据

图1.1.5 求阶乘程序fact.s流水线执行情况

图1.1.6 求阶乘程序fact.s寄存器使用情况2、求最大公倍数程序gcm.s

图1.2.1 求最大公倍数程序gcm.s运行统计数据

图1.2.2 求最大公倍数程序gcm.s流水线执行情况

图1.2.3 求最大公倍数程序gcm.s寄存器使用情况

3、求素数程序prim.s

图1.3.1 求素数程序prim.s运行统计数据

图1.3.2 求素数程序prim.s流水线执行情况

图1.3.3 求素数程序prim.s寄存器使用情况

二、用WinDLX运行程序structure_d.s,

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

图1.4.1 程序structure_d.s流水线执行过程

其中,有如下几种情况,产生了资源相关:

(1)

导致资源相关的部件:浮点数寄存器f4

addd f0,f0,f4 指令在译码阶段ID停滞1周期

(2)

导致资源相关的部件:ALU

addi r2,r2,0x8 指令在执行阶段intEX停滞1周期

图1.4.2 程序structure_d.s运行统计信息

由资源相关引起的暂停周期数为:30

总执行周期数为:139

暂停周期数占总执行周期数的百分比:21.58%

分析:资源相关使相关指令在流水线上停滞,降低了执行效率。

解决方法:在合理的指令调度范围内,尽量避免执行重复的指令。尽量避免同一寄存器的频繁使用,若无法避免,则使用寄存器换名的方法。

三、在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项前的勾选符),用WinDLX运行程序data_d.s

记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。

图1.5.1 不采用定向技术,程序data_d.s运行统计信息

由数据相关引起的暂停时钟周期数为:104

总执行周期数为:202

暂停周期数占总执行周期数的百分比:51.48%

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

图1.5.2 采用定向技术,程序data_d.s运行统计信息

由数据相关引起的暂停时钟周期数为:30

总执行周期数为:128

暂停周期数占总执行周期数的百分比:23.44%

通过这两个统计可以发现,在使用定向技术下运行程序指令将大幅降低数据相关发生的次数,这大幅提升了CPU的性能。

实验二循环展开及指令调度

实验目的:

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

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

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

实验平台:

WinDLX模拟器

实验内容和步骤:

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

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

.data

.global ONE

ONE: .word 1

.text

.global main

main:

lf f1,ONE

cvti2f f7,f1

nop

divf f1,f8,f7

divf f2,f1,f7

divf f13,f2,f7

divf f10,f3,f7

addf f5,f12,f7

addf f3,f1,f2

multf f6,f4,f5

Finish:

trap 0

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

图2.1.1 设置运算器数量及时钟周期

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

图2.1.2 程序执行统计信息

相关文档
最新文档