计算机系统结构实验报告西安交通大学.docx

上传人:b****7 文档编号:10511034 上传时间:2023-02-17 格式:DOCX 页数:27 大小:524.08KB
下载 相关 举报
计算机系统结构实验报告西安交通大学.docx_第1页
第1页 / 共27页
计算机系统结构实验报告西安交通大学.docx_第2页
第2页 / 共27页
计算机系统结构实验报告西安交通大学.docx_第3页
第3页 / 共27页
计算机系统结构实验报告西安交通大学.docx_第4页
第4页 / 共27页
计算机系统结构实验报告西安交通大学.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

计算机系统结构实验报告西安交通大学.docx

《计算机系统结构实验报告西安交通大学.docx》由会员分享,可在线阅读,更多相关《计算机系统结构实验报告西安交通大学.docx(27页珍藏版)》请在冰豆网上搜索。

计算机系统结构实验报告西安交通大学.docx

计算机系统结构实验报告西安交通大学

计算机系统结构课内实验》

实验报告

班级:

计算机15班姓名:

高君宇学号:

2110505112日期:

2014.5.7

动态分支预测实验

一、实验目的及要求

1.了解掌握动态分支与推断执行技术对流水线性能的改进效果

2.了解动态分支预测的基本技术;

3.了解推断执行的基本过程;

4.比较各种分支预测技术的性能。

二、实验环境

Linux、SimpleScalarToolSet、SPEC测试程序

三、实验内容

利用SimpleScalar仿真器中的分支预测仿真程序sim-pred运行所提供的三个benchmark程序,分别采用五种不同的分支预测方法,即bimod方式,two-leveladaptive方式,alwaystaken方式,alwaysnottaken方式,comb方式,并对前两种分别使用下表中两种参数配置;分析仿真器输出的关于分支预测的统计参数集,填写表格,并对各仿真器的能力给出相应说明。

命令格式为:

./sim-bpred{-option}executable_benchmark–argument

对于三种动态方法,分别说明如下:

bimod是最普通的,即采用一个2bit宽的分支方向预测表,按分支地址查找,2bit分支预测器的判断和更新与课本上的一致。

这种方式只有一个参数,就是分支预测表的长度。

2-level要复杂一些,它采用两级表格式,第一级是分支历史表,存放各组分支历史寄存器的值,第二级是全局/局部分支模式表,(全局或局部应是由表长相对于分支历史寄存器的长决定),它存放各分支历史模式的2bit预测器。

在判断时用当前分支指令对应的历史寄存器值去索引二级表得到相应预测器值。

更新时,把当前分支的方向左移入历史寄存器,并对使用过的2bit预测器作更新。

它有四个参数,前三个是一级表长度,二级表长度,历史寄存器宽度,最后一个是异或标志。

如果为1,则将历史寄存器的值与当前分支指令地址异或,用其结果再去索引二级模式表。

comb方式则组合了以上两种方法,它再加入了一个meta表,这个表类似bimod的预测表,只是它预测的是采取bimod还是2-level,也采用2-bit预测器,被采取的预测方法被定为第一方向,未被采取的定为第二方向。

更新时,如果第一方向与第二方向不同则更新meta表,否则只更新两种方法各自的表即可。

它共有三组参数,前两组即bimod和two-level的参数,第三组是关于meta表长度的说明。

至于BTB的更新与cache的更新方式相同。

四、实验步骤

1.在linux的环境下,进入到simpleScalar文件的根目录;

2.调整好命令的格式并运行(下面给出运行命令的的一部分内容):

./sim-bpred-bpredtakentests/bin.little/test-math

./sim-bpred-bprednottakentests/bin.little/test-math

./sim-bpred-bpredbimod-bpred:

bimod512tests/bin.little/test-math

./sim-bpred-bpredbimod-bpred:

bimod1024tests/bin.little/test-math

./sim-bpred-bpred2lev-bpred:

2lev11024801tests/bin.little/test-math

./sim-bpred-bpred2lev-bpred:

2lev16461tests/bin.little/test-math

./sim-bpred-bpredcomb-bpred:

comb1024-bpred:

2lev1102480-bpred:

bimod1024tests/bin.little/test-math

五、实验结果将结果总结如下表:

1.测试程序为test.math

预测方计结果测方法

alwaysnottaken

alwaystaken

bimod

(516)

bimod

(1024)

2-level(1,1024,8,0)

2-level(1,64,6,

1)

comb

(1024)(1,1024,8

0)

(1024)

sim_total_insn

2136

88

2136

88

213688

213688

213668

213723

213723

sim_total_refs

5689

7

5689

7

56897

56897

56897

56900

56900

sim_num_branches

3859

1

3859

1

38591

38591

38591

38599

38599

simelapsedtime

1

1

1

1

1

1

1

siminstrate

2136

2136

213688.0

213688.0

213688

213723

213723

88

88

000

000

simIPB

5.537

5.537

5.5372

5.5372

5.5372

5.537

5.537

2

2

bpred_bimod.looku

3859

3859

38591

38591

38591

38599

38599

ps

1

1

bpred_bimod.update

3859

3859

38591

38591

38591

38599

38599

s

1

1

bpred_bimod.addr_

2193

2556

34237

34237

34242

27961

35578

hits

8

1

bpred_bimod.dir_hir

2193

2556

34732

34732

34242

28514

36018

ts

8

1

bpred_bimod.misses

1665

1293

3859

3859

3797

10085

2581

3

0

bpredbimod.jrhits

3543

3543

3528

3528

3528

3529

3529

bpred_bimod.jr_see

n

3543

3543

3543

3543

3543

3544

3544

bpred_bimod.jr_non

3543

3543

28

28

28

28

28

_ras

hits.PP

bpred_bimod.jr_non

3543

3543

41

41

41

41

41

_ras

seen.PP

bpred_bimod.bpred

0.568

0.664

0.8872

0.8872

0.8873

0.7244

0.9217

_add

5

9

rrate

bpred_bimod.bpred

0.568

0.664

0.9000

0.9000

0.9016

0.7387

0.9331

_dir

5

9

rate

bpred_bimod.bpred

_jr_r

ate

1

1

0.9958

0.9958

0.9958

0.9958

0.9958

bpred_bimod.bpred_jr_nonrasrate.PP

1

1

0.6829

0.6829

0.6829

0.6829

0.6829

bpred_bimod.retstac

k_pu

shes

1

1

3504

3504

3504

3505

3505

bpred_bimod.retstack_pops

0

0

3502

3502

3502

3503

3503

bpred_bimod.used_r

as.PP

0

0

3502

3502

3502

3503

3503

bpred_bimod.ras_hit

0

0

3502

3500

3500

3501

3501

s.PP

bpred_bimod.ras_rat

0

0

0.9994

0.9994

0.9994

0.9994

0.9994

e.PP

2.测试程序为test.fmath

预测方统计结果方法

alwaysnottaken

alwaystaken

bimod(516)

bimod(1024)

2-level(1,1024,8,

0)

2-level(1,64,6,1)

comb

(1024)(1,1024,8,

0)

(1024)

sim_total_insn

53448

53448

5344

5344

53448

53482

53482

8

8

sim_total_refs

16342

16342

1634

1634

16342

16345

16345

2

2

sim_num_branches

10340

10340

1034

1034

10340

10347

10347

0

0

simelapsedtime

1

1

1

1

1

1

1

sim_inst_rate

53448

53448

5344

5344

53448

53482

53482

8

8

sim_IPB

5.169

5.169

5.169

5.169

5.1691

5.1688

5.1688

1

1

1

1

bpred_bimod.lookups

10340

10340

1034

1034

10340

10347

10347

0

0

bpred_bimod.updates

10340

10340

1034

1034

10340

10347

10347

0

0

bpredbimod.addrhits

5768

6839

8825

9021

8860

7574

9225

bpredbimod.dirhirts

5768

6839

9128

9315

9171

7888

9474

bpredbimod.misses

4572

3501

1212

1025

1169

2459

873

bpredbimod.jrhits

832

832

815

815

815

816

816

bpredbimod.jrseen

832

832

832

832

832

833

833

bpred_bimod.jr_non_r

832

832

4

4

4

4

4

as

hits.PP

bpred_bimod.jr_non_r

832

832

19

19

19

19

19

as

seen.PP

bpred_bimod.bpred_ad

0.557

0.661

0.853

0.872

0.8569

0.7320

0.8916

d

8

4

5

4

rrate

bpred_bimod.bpred_di

0.557

0.661

0.882

0.900

0.8869

0.7623

0.9156

r

8

4

8

9

rate

bpred_bimod.bpred_jr

1

1

0.979

0.979

0.2105

0.9796

0.9796

r

6

6

ate

bpred_bimod.bpred_jr

_n

onrasrate.PP

1

1

0.210

5

0.210

5

0.2105

0.2105

0.2105

bpred_bimod.retstack_pu

shes

0

0

815

815

815

816

816

bpred_bimod.retstack_

po

ps

0

0

813

813

813

814

814

bpred_bimod.used_ras.

PP

0

0

813

813

813

814

814

bpred_bimod.ras_hits.

PP

0

0

811

811

811

812

812

bpred_bimod.ras_rate.

PP

0

0

0.997

5

0.997

5

0.9975

0.9975

0.9975

3.测试程序为test.printf

预测方统计结果测方

alwaysnot法taken

alwaystaken

bimod

(516)

bimod

(1024)

2-level(1,1024,8,

0)

2-level(1,64,6,1)

comb

(1024)(1,1024,8,

0)

(1024)

sim_total_insn

18138

18138

18138

18138

1813877

181391

1813914

77

77

77

77

4

sim_total_refs

51694

51694

51694

51694

516941

516947

516947

1

1

1

1

sim_num_branches

40160

40160

40160

40160

401609

401623

401623

9

9

9

9

simelapsedtime

1

1

1

1

1

1

1

sim_inst_rate

18138

18138

18138

18138

1813877

181391

1813914

77

77

77

77

4

simIPB

4.5165

4.5165

4.5165

4.5165

4.5165

4.5165

4.5165

bpred_bimod.lookup

40160

40160

40160

40160

401609

401623

401623

s

9

9

9

9

bpred_bimod.updates

40160

40160

40160

40160

401609

401623

401623

9

9

9

9

bpred_bimod.addr_hi

23336

26136

37259

37745

373619

317099

384169

ts

1

3

1

8

bpred_bimod.dir_hirt

23336

26136

37490

37976

375930

319444

386404

s

1

3

1

1

bpred_bimod.misses

16824

14024

26708

21848

25679

82179

15219

8

6

bpredbimod.jrhits

31998

31998

30152

30152

30152

30153

30153

bpredbimod.jrseen

31998

31998

31998

31998

31998

31999

31999

bpred_bimod.jr_non_ras

hits.PP

31998

31998

363

363

363

363

363

bpred_bimod.jr_non_ras

seen.PP

31998

31998

2198

2198

2198

2198

2198

bpred_bimod.bpred_addrrate

0.5811

0.6508

0.9277

0.9399

0.9303

0.7865

0.9565

bpred_bimod.bpred_dir

rate

0.5811

0.6508

0.9335

0.9456

0.9361

0.7954

0.9621

bpred_bimod.bpred_j

1

1

0.9423

0.9423

0.9423

0.9423

0.9423

r_rate

bpred_bimod.bpred_jr_nonrasrate.PP

1

1

0.1652

0.1652

0.1652

0.1652

0.1652

bpred_bimod.retstack

_pu

shes

0

0

29802

29802

29802

29803

29803

bpred_bimod.retstack

_po

ps

0

0

29800

29800

29800

29801

29801

bpred_bimod.used_ra

s.PP

0

0

29800

29800

29800

29801

29801

bpred_bimod.ras_hits

.PP

0

0

29789

29789

29789

29790

29790

bpred_bimod.ras_rat

e.PP

0

0

0.9996

0.9996

0.996

0.9996

0.9996

六、总结所谓的动态分支处理方法,是指利用程序执行期间的信息,进行处理,所以这儿很明显带来的是硬件开销,因为程序执行期间是不可能由软件协助的,否则性能影响也就太大了吧。

相对的,静态分支处理,其实是利用编译器实现的。

这次实验我最大的感受就是计算机就像董老师说的一样,是在玩平衡。

体系结构设计的核心是平衡,以最快的速度获取指令,需要较少的时钟周期,但带来的是预测准确率的下降;如果希望提高准确率,则是较慢的速度;三种分支预测方式实现难度各不相同,在性能方面也各有优劣,一级分支预测追求的是快,二级分支预测追求的是准确率,这都是在玩平衡。

通过实验,我更加熟悉了动态分支预测的方法,学以致用才是硬道理,计算机的这个“平衡“还得好好玩下去。

七、附录(源程序清单)使用的是程序自带的源代码test.math,test.fmath,test.printf故在此不单独列出。

基本流水线和Tomasulo算法

实验

一、实验目的及要求

1.掌握DLXview模拟器的使用方法;

2.进一步理解指令动态调度的基本思想,了解指令动态调度的基本过程与方法;

3.理解记分牌算法和Tomasulo算法的基本思想,了解它们的基本结构、运行过程;

4.比较分析基本流水线与记分牌算法和Tomasulo算法的性能及优缺点。

二、实验环境

DLXview模拟器

三、实验内容

1、用DLX汇编语言编写代码文件*.s(程序中应包括指令的数据相关、控制相关以及结构相关),以及相关的初始化寄存器文件*.i和数据文件*.d;

2、观察程序中出现的数据相关、控制相关、结构相关,并指出三种相关的指令组合;

3、将自己编写的程序*.s、*.i、*.d装载到DLXview模拟器上,

4、分别用基本流水线和Tomasulo算法模拟,针对每一种模拟做如下分析:

(1)统计程序的执行周期数和流水线中的暂停时钟周期数;

(2)改变功能部件数目重新模拟,观察并记录性能的改变

(3)改变功能部件延迟重新模拟,观察并记录性能的改变;

5、记录运行Tomasulo算法时的指令状态表和保留站信息;

四、实验步骤

用DLX汇编语言编写代码文件*.s(程序中应包括指令的数据相关、控制相关以及结构相关),以及相关的初始化寄存器文件*.i和数据文件*.d;

将自己编写的程序*.s、*.i、*.d装载到DLXview模拟器上;

用DLXview模拟器进行模拟。

五、实验结果

一)普通流水线:

实验参数设置

实验结果显示该段程序运行了11个时钟周期

改变部件数目:

根据实验结果依然运行了11个时钟周期

 

所以对该f305程序增加除法器部件数目,不影响执行效率

增加了一个加法器部件

实验结果显示依然运行了11个时钟周期。

所以该f305程序对于加法器部件数目要求也不高,增加后不影响执行效率

增加了一个乘法器部件

实验结果依然运行了11个时钟周期

所以该f305程序对于乘法器部件数目要求不高,增

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

当前位置:首页 > 高等教育 > 军事

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

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