系统结构实验报告.docx

上传人:b****6 文档编号:7293657 上传时间:2023-01-22 格式:DOCX 页数:28 大小:830.08KB
下载 相关 举报
系统结构实验报告.docx_第1页
第1页 / 共28页
系统结构实验报告.docx_第2页
第2页 / 共28页
系统结构实验报告.docx_第3页
第3页 / 共28页
系统结构实验报告.docx_第4页
第4页 / 共28页
系统结构实验报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

系统结构实验报告.docx

《系统结构实验报告.docx》由会员分享,可在线阅读,更多相关《系统结构实验报告.docx(28页珍藏版)》请在冰豆网上搜索。

系统结构实验报告.docx

系统结构实验报告

北京工业大学计算机学院

系统结构实验报告

 

07044101

王文通

2010-12-1

 

目录

目录2

实验一流水线中的相关3

一、实验目的3

二、实验原理3

三、实验步骤3

四、实验总结5

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

一、实验目的6

二、实验原理6

三、实验步骤6

1.指令调度技术6

2.循环展开以及指令调度提高性能8

四、实验总结10

五、代码10

实验三cache性能分析13

一、实验目的13

二、实验原理13

三、实验过程13

1.基本配置情况下运行程序13

2.改变Cache容量对Cache性能的影响;14

3.改变Cache的相联度对Cache性能的影响;16

4.改变Cache块大小对Cache性能的影响;18

5.不同的替换算法对Cache性能的影响。

19

5.1不同容量下,不同的替换算法对Cache性能的影响19

5.2不同相联度下,不同的替换算法对Cache性能的影响21

实验一流水线中的相关

一、实验目的

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

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

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

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

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

二、实验原理

用WinDLX模拟器模拟流水线。

三、实验步骤

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

􀁺求阶乘程序fact.s

􀁺求最大公倍数程序gcm.s

􀁺求素数程序prim.s

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

熟练掌握WinDLX的操作和使用。

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

资源相关:

ADDDF0,F0,F4

ADDDF2,F0,F2;加法器

ADDDF2,F0,F2

ADDIR2,R2,#8;加法器

ADDDF2,F0,F2

ADDIR2,R2,#8;MEM

ADDIR3,R3,#8;MEM

SUBR5,R4,R2;MEM

由资源相关引起的暂停时钟周期数是50个(每次循环5个,共10次循环),暂停时钟周期数占总执行周期数的百分比50/139=35.97%

资源相关降低CPU的性能,效率下降。

资源相关引起的暂停,可以采取指令调度的方法进行改进。

 

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

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

数据相关:

数据相关引起的时钟周期数是104个,执行程序总时钟周期数是202个。

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

 

在采用定向技术的情况下(勾选EnableForwarding),用WinDLX再次运行程序data_d.s。

重复上述3中的工作,并计算采用定向技术后性能提高的倍数。

数据相关引起的时钟周期数是30个,执行程序总时钟周期数是128个。

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

采用定向技术后性能提高202/128=1.58倍

四、实验总结

采用流水线技术会遇到:

数据相关、控制相关、资源相关等问题。

为解决数据相关引起的暂停,可以采用指令调度和定向技术的方法来避免。

通过指令调度,使相关的数据执行距离拉开,使得不会发生数据相关。

通过定向技术,可以将相关数据结果直接传送到所有需要它的功能单元的输入端,避免数据相关引起的暂停。

为解决控制相关引起的暂停,可以使用循环展开的方法来减少控制相关的次数。

为解决资源相关引起的暂停,可以采用指令调度的方法来避免。

通过指令调度,使相关的资源使用的距离拉开,使得不会发生资源相关。

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

一、实验目的

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

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

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

二、实验原理

用WinDLX模拟器模拟流水线。

三、实验步骤

1.指令调度技术

(1)用DLX汇编语言编写代码文件*.s,程序中应包括数据相关与结构相关(假设:

加法﹑乘法﹑除法部件各有2个,延迟时间都是3个时钟周期)

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

(3)用WinDLX运行程序。

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

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

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

(6)根据记录结果,比较调度前和调度后的性能。

论述指令调度对于提高CPU性能的意义。

改进之前:

共用了76个周期

共发生36次相关

资源相关:

9次

数据相关:

17次

控制相关:

7次

Trap暂停:

3次

LWR1,0(R2)

ADDR1,R1,R3;数据相关,1次

ADDIR7,R0,8;资源相关,1次

LWR5,0(R1)

ADDIR5,R5,#10;数据相关,共发生8次

ADDIR2,R2,#4;资源相关,共发生8次

SUBR7,R7,1

BNEZR7,LOOP;数据相关,共发生8次

BNEZR7,LOOP

TRAP#0;控制相关,共发生7次

TRAP#0;Trap暂停3个周期

指令调度后:

共用了59个周期

共发生10次相关

 

控制相关:

7次

Trap暂停:

3次

 

指令调度后的加速比是76/59=1.29,通过指令调度,可以充分利用cpu部件利用率,减少数据相关和资源相关引起的暂停。

BNEZR7,LOOP

TRAP#0;控制相关,共发生7次

TRAP#0;Trap暂停3个周期

 

2.循环展开以及指令调度提高性能

(1)用DLX汇编语言编写代码文件*.s,程序中包含一个循环次数为4的整数倍的简单循环;

(2)用WinDLX运行该程序。

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

(3)将循环展开3次,将4个循环体组成的代码代替原来的循环体,并对程序做相应的修改。

然后对新的循环体进行寄存器换名和指令调度;

(4)用WinDLX运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;

(5)根据记录结果,比较循环展开、指令调度前后的性能。

单纯循环展开:

共用了58个周期

共发生24次相关

资源相关:

9次

数据相关:

11次

控制相关:

1次

Trap暂停:

3次

 

指令调度后的加速比是76/58=1.31,通过循环展开,可以充分利用cpu部件利用率,减少控制相关引起的冲刷和数据相关引起的暂停。

LWR1,0(R2)

ADDR1,R1,R3;数据相关,1次

ADDIR7,R0,8;资源相关,1次

LWR5,0(R1)

ADDIR5,R5,#10;数据相关,共发生8次

ADDIR2,R2,#4;资源相关,共发生8次

SUBR7,R7,1

BNEZR7,LOOP;数据相关,共发生2次

BNEZR7,LOOP

TRAP#0;控制相关,共发生1次

TRAP#0;Trap暂停3个周期

循环展开+指令调度:

共用了47个周期

共发生4次相关

 

控制相关:

1次

Trap暂停:

3次

 

指令调度后的加速比是76/47=1.62。

BNEZR7,LOOP

TRAP#0;控制相关,共发生1次

TRAP#0;Trap暂停3个周期

四、实验总结

循环展开和指令调度都能提高cpu性能,减少暂停,但是两者同时进行改进时,优化性能并不是单纯的相加。

因为循环展开的改进也会减少和循环判断有关的数据相关。

同时,循环展开和指令调度对cpu性能提高的能力也因不同程序而异,若循环次数较多,则采取循环展开获得的cpu性能提升较高,若数据相关、资源相关较多,则采取指令调度获得的cpu性能提升较高。

五、代码

改进前代码:

LHIR2,(A>>16)&0XFFFF

ADDUIR2,R2,A+8

LHIR3,(B>>16)&0XFFFF

ADDUIR3,R3,B&0XFFFF

LWR1,0(R2)

ADDR1,R1,R3

ADDIR7,R0,8

LOOP:

LWR5,0(R1)

ADDIR5,R5,#10

ADDIR2,R2,#4

SUBR7,R7,1

BNEZR7,LOOP

TRAP#0

A:

.WORD0,4,8,12,16,20,24,28,32,36

B:

.WORD9,8,7,6,5,4,3,2,1,0

指令调度后代码:

LHIR2,(A>>16)&0XFFFF

ADDUIR2,R2,A+8

LHIR3,(B>>16)&0XFFFF

ADDUIR3,R3,B&0XFFFF

LWR1,0(R2)

ADDIR7,R0,8

ADDR1,R1,R3

LOOP:

LWR5,0(R1)

ADDIR2,R2,#4

SUBR7,R7,1

ADDIR5,R5,#10

BNEZR7,LOOP

TRAP#0

A:

.WORD0,4,8,12,16,20,24,28,32,36

B:

.WORD9,8,7,6,5,4,3,2,1,0

循环展开后代码:

LHIR2,(A>>16)&0XFFFF

ADDUIR2,R2,A+8

LHIR3,(B>>16)&0XFFFF

ADDUIR3,R3,B&0XFFFF

LWR1,0(R2)

ADDR1,R1,R3

ADDIR7,R0,8

LOOP:

LWR5,0(R1)

ADDIR5,R5,#10

ADDIR2,R2,#4

SUBR7,R7,1

LWR5,0(R1)

ADDIR5,R5,#10

ADDIR2,R2,#4

SUBR7,R7,1

LWR5,0(R1)

ADDIR5,R5,#10

ADDIR2,R2,#4

SUBR7,R7,1

LWR5,0(R1)

ADDIR5,R5,#10

ADDIR2,R2,#4

SUBR7,R7,1

BNEZR7,LOOP

TRAP#0

A:

.WORD0,4,8,12,16,20,24,28,32,36

B:

.WORD9,8,7,6,5,4,3,2,1,0

循环展开+指令调度后的代码:

LHIR2,(A>>16)&0XFFFF

ADDUIR2,R2,A+8

LHIR3,(B>>16)&0XFFFF

ADDUIR3,R3,B&0XFFFF

LWR1,0(R2)

ADDIR7,R0,8

ADDR1,R1,R3

LOOP:

LWR5,0(R1)

ADDIR2,R2,#4

SUBR7,R7,1

ADDIR5,R5,#10

LWR5,0(R1)

ADDIR2,R2,#4

SUBR7,R7,1

ADDIR5,R5,#10

LWR5,0(R1)

ADDIR2,R2,#4

SUBR7,R7,1

ADDIR5,R5,#10

LWR5,0(R1)

ADDIR2,R2,#4

SUBR7,R7,1

ADDIR5,R5,#10

BNEZR7,LOOP

TRAP#0

A:

.WORD0,4,8,12,16,20,24,28,32,36

B:

.WORD9,8,7,6,5,4,3,2,1,0

实验三cache性能分析

一、实验目的

1.加深对Cache的基本概念、基本组织结构以及基本工作原理的理解;

2.了解Cache的容量、相联度、块大小对Cache性能的影响;

3.掌握降低Cache失效率的各种方法,以及这些方法对Cache性能提高的好处;

4.理解Cache失效的产生原因以及Cache的三种失效;

5.理解LRU与随机法的基本思想,及它们对Cache性能的影响;

二、实验原理

现代微机系统结构的另一重要技术是Cache。

但是Cache一般位于CPU内部,即使是对汇编语言程序员也是不可见的。

为了直观的建立Cache技术的各种概念,形象的学习甚至于自己动手进行Cache性能分析,设计一系列有针对性的仿真实验是个很好的教学方法。

SimpleScalar工具集中有专门针对Cache技术的模拟器sim-cache和sim-cheetah,正是完成这些仿真实验的理想平台。

借助这两个工具,我们在系统结构课程中增设了Cache性能分析的系列仿真实验帮助学生更好的理解和掌握Cache技术。

三、实验过程

1.基本配置情况下运行程序

默认参数:

-cache:

dl1dl1:

256:

32:

1:

l-cache:

dl2ul2:

1024:

64:

4:

l-cache:

il1il1:

256:

32:

1:

l

benchmark\bin.little\test-math

il1.misses23761#totalnumberofmisses

il1.miss_rate0.1113#missrate(i.e.,misses/ref)

benchmark\supplied\vortex.ss

il1.misses5122#totalnumberofmisses

il1.miss_rate0.1223#missrate(i.e.,misses/ref)

benchmark\bin.little\test-fmath

2.改变Cache容量对Cache性能的影响;

benchmark\bin.little\test-printf

-cache:

il1il1:

512:

32:

1:

l

-cache:

il1il1:

1024:

32:

1:

l

-cache:

il1il1:

2048:

32:

1:

l

-cache:

il1il1:

16384:

32:

1:

l

 

benchmark\bin.little\test-math

-cache:

il1il1:

512:

32:

1:

l

il1.misses15565#totalnumberofmisses

il1.miss_rate0.0729#missrate(i.e.,misses/ref)

-cache:

il1il1:

1024:

32:

1:

l

il1.misses6614#totalnumberofmisses

il1.miss_rate0.0310#missrate(i.e.,misses/ref)

-cache:

il1il1:

2048:

32:

1:

l

il1.misses2712#totalnumberofmisses

il1.miss_rate0.0127#missrate(i.e.,misses/ref)

-cache:

il1il1:

16384:

32:

1:

l

il1.misses1636#totalnumberofmisses

il1.miss_rate0.0077#missrate(i.e.,misses/ref)

benchmark\supplied\vortex.ss

-cache:

il1il1:

512:

32:

1:

l

il1.misses3241#totalnumberofmisses

il1.miss_rate0.0774#missrate(i.e.,misses/ref)

-cache:

il1il1:

1024:

32:

1:

l

il1.misses2497#totalnumberofmisses

il1.miss_rate0.0596#missrate(i.e.,misses/ref)

-cache:

il1il1:

2048:

32:

1:

l

il1.misses1111#totalnumberofmisses

il1.miss_rate0.0265#missrate(i.e.,misses/ref)

-cache:

il1il1:

16384:

32:

1:

l

il1.misses590#totalnumberofmisses

il1.miss_rate0.0141#missrate(i.e.,misses/ref)

Cache容量对Cache性能的影响:

Cache容量越大,失效率越低,命中率越高。

 

3.改变Cache的相联度对Cache性能的影响;

benchmark\bin.little\test-printf

-cache:

il1il1:

256:

32:

1:

l

-cache:

il1il1:

256:

32:

2:

l

-cache:

il1il1:

256:

32:

4:

l

-cache:

il1il1:

256:

32:

8:

l

-cache:

il1il1:

256:

32:

64:

l

benchmark\bin.little\test-math

-cache:

il1il1:

256:

32:

1:

l

il1.misses23761#totalnumberofmisses

il1.miss_rate0.1113#missrate(i.e.,misses/ref)

-cache:

il1il1:

256:

32:

2:

l

il1.misses13479#totalnumberofmisses

il1.miss_rate0.0631#missrate(i.e.,misses/ref)

-cache:

il1il1:

256:

32:

4:

l

il1.misses4889#totalnumberofmisses

il1.miss_rate0.0229#missrate(i.e.,misses/ref)

-cache:

il1il1:

256:

32:

8:

l

il1.misses1640#totalnumberofmisses

il1.miss_rate0.0077#missrate(i.e.,misses/ref)

-cache:

il1il1:

256:

32:

64:

l

il1.misses1636#totalnumberofmisses

il1.miss_rate0.0077#missrate(i.e.,misses/ref)

benchmark\supplied\vortex.ss

-cache:

il1il1:

256:

32:

1:

l

il1.misses5122#totalnumberofmisses

il1.miss_rate0.1223#missrate(i.e.,misses/ref)

-cache:

il1il1:

256:

32:

2:

l

il1.misses2575#totalnumberofmisses

il1.miss_rate0.0615#missrate(i.e.,misses/ref)

-cache:

il1il1:

256:

32:

4:

l

il1.misses619#totalnumberofmisses

il1.miss_rate0.0148#missrate(i.e.,misses/ref)

-cache:

il1il1:

256:

32:

8:

l

il1.misses590#totalnumberofmisses

il1.miss_rate0.0141#missrate(i.e.,misses/ref)

-cache:

il1il1:

256:

32:

64:

l

il1.misses590#totalnumberofmisses

il1.miss_rate0.0141#missrate(i.e.,misses/ref)

相联度对Cache性能的影响:

相联度越路数越大,失效率越低,命中率越高。

4.改变Cache块大小对Cache性能的影响;

benchmark\bin.little\test-printf

-cache:

il1il1:

256:

64:

1:

l-cache:

dl2ul2:

1024:

256:

4:

l

-cache:

il1il1:

256:

128:

1:

l-cache:

dl2ul2:

1024:

256:

4:

l

-cache:

il1il1:

256:

256:

1:

l-cache:

dl2ul2:

1024:

256:

4:

l

-cache:

il1il1:

256:

2048:

1:

l-cache:

dl2ul2:

1024:

2048:

4:

l

benchmark\bin.little\test-math

-cache:

il1il1:

256:

64:

1:

l-cache:

dl2ul2:

1024:

256:

4:

l

-cache:

il1il1:

256:

128:

1:

l-cache:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1