搜索
您的当前位置:首页正文

计算机体系结构实验三报告

来源:六九路网

实验三动态分支预测与推断执行

软件072班陈良伟20073001016

实验目的:
(1)了解动态分支预测的基本技术
(2)了解推断执行的基本过程
(3)比较各种分支预测技术的性能

实验环境:
(1)Ubuntu9.04+(或其他Linux版本)
(2)SimpleScalarv3.0

实验原理:
SimpleScalar分支预测的实现方法。

实验步骤:
(1)进入SimpleScalar目录(simplesim-3.0)

(2)sim-pred仿真器运行tests/bin.little目录下的三个测试程序(test-math,test-fmath, test-printf),分别采用五种不同的分支预测方法,即bimod方式,two-leveladaptive方式,alwaystaken方式,alwaysnot taken方式,comb方式,并对前两种分别使用下表中两种参数配置:分析仿真器输出的关于分支预测的统计参数集,填写表格,并对各仿真器的能力

给出相应说明。

实验结果统计:

模拟程序名:test-math



always taken

always not
taken

bimod (512)

bimod (1024)

2-level
(1,1024,

8,0)

2-level
(1,64,6,

1)

comb
(1024)

(1,1024,

8,0)
(1024)

sim_total_insn

213688

213688

213688

213688

213688

213688

213688

sim_total_refs

56897

56897

56897

56897

56897

56897

56897

sim_elapsed_time

1

1

1

1

1

1

1

sim_inst_rate

213688

213688

213688

213688

213688

213688

213688

sim_num_branches

38591

38591

38591

38591

38591

38591

38591

sim_IPB

5.5372

5.5372

5.5372

5.5372

5.5372

5.5372

5.5372

bpred_***.lookups

38591

38591

38591

38591

38591

38591

38591

bpred_***.updates

38591

38591

38591

38591

38591

38591

38591

bpred_***.addr_hits

25661

21938

33692

34237

34242

27844

35570

bpred_***.dir_hirts

25661

21938

34195

34732

34794

28387

36011

bpred_***.misses

12930

16653

4396

3859

3797

10204

2580

bpred_***.jr_hits

3543

3543

3528

3528

3528

3528

3528

bpred_***.jr_seen

3543

3543

3543

3543

3543

3543

3543

bpred_***.jr_non_ras_hits.PP

3543

3543

28

28

28

28

28

bpred_***.jr_non_ras_seen.PP

3543

3543

41

41

41

41

41

bpred_***.bpred_addr_rate

0.6649

0.5685

0.8731

0.8872

0.8873

0.7215

0.9217

bpred_***.bpred_dir_rate

0.6649

0.5685

0.8861

0.9

0.9016

0.7356

0.9331

bpred_***.bpred_jr_rate

1

1

0.9958

0.9958

0.9958

0.9958

0.9958

bpred_***.bpred_jr_non_ras_rate .PP

1

1

0.6829

0.6829

0.6829

0.6829

0.6829

bpred_***.retstack_pushes

0

0

3504

3504

3504

3504

3504

bpred_***.retstack_pops

0

0

3502

3502

3502

3502

3502

bpred_***.used_ras.PP

0

0

3502

3502

3502

3502

3502

bpred_***.ras_hits.PP

0

0

3500

3500

3500

3500

3500

bpred_***.ras_rate.PP

<error: divide
by
zero>

<error: divide
by
zero>

0.9994

0.9994

0.9994

0.9994

0.9994

分析:

bpred_***.addr_hits

bpred_***.dir_hirts

bpred_***.misses

bpred_***.bpred_addr_rate

bpred_***.bpred_dir_rate这些参数7种不同的分支预测方法方法下各不相同。

bpred_***.jr_hitsbpred_***.jr_non_ras_hits.PPbpred_***.jr_non_ras_seen.PPbpred_***.bpred_jr_rate

bpred_***.bpred_jr_non_ras_rate.PP

bpred_***.retstack_pushes

bpred_***.retstack_pops

bpred_***.used_ras.PPbpred_***.ras_hits.PPbpred_***.ras_rate.PP这些参数alwaystakenalwaysnot taken各自相同,其余5种方法的也各自相同。

其余的参数对于7种不同的分支预测方法都没有改变。

模拟程序名:test-fmath



always

always

bimod

bimod

2-level

2-level

comb

taken

not

(512)

(1024)

(1,1024,

(1,64,6,

(1024)

taken

8,0)

1)

(1,1024,

8,0)

sim_total_insn

53448

53448

53448

53448

53448

53448

(1024)

53448

sim_total_refs

16342

16342

16342

16342

16342

16342

16342

sim_elapsed_time

1

1

1

1

1

1

1

sim_inst_rate

53448

53448

53448

53448

53448

53448

53448

sim_num_branches

10340

10340

10340

10340

10340

10340

10340

sim_IPB

5.1691

5.1691

5.1691

5.1691

5.1691

5.1691

5.1691

bpred_***.lookups

10340

10340

10340

10340

10340

10340

10340

bpred_***.updates

10340

10340

10340

10340

10340

10340

10340

bpred_***.addr_hits

6839

5768

8825

9021

8860

7541

9226

bpred_***.dir_hirts

6839

5768

9128

9315

9171

7857

9475

bpred_***.misses

3501

4572

1212

1025

1169

2483

865

bpred_***.jr_hits

832

832

815

815

815

815

815

bpred_***.jr_seen

832

832

832

832

832

832

832

bpred_***.jr_non_ras_hits.PP

832

832

4

4

4

4

4

bpred_***.jr_non_ras_seen.PP

832

832

19

19

19

19

19

bpred_***.bpred_addr_rate

0.6614

0.5578

0.8535

0.8724

0.8569

0.7293

0.8923

bpred_***.bpred_dir_rate

0.6614

0.5578

0.8828

0.9009

0.8869

0.7599

0.9163

bpred_***.bpred_jr_rate

1

1

0.9796

0.9796

0.9796

0.9796

0.9796

bpred_***.bpred_jr_non_ras_rate

1

1

0.2105

0.2105

0.2105

0.2105

0.2105

.PP

bpred_***.retstack_pushes

0

0

815

815

815

815

815

bpred_***.retstack_pops

0

0

813

813

813

813

813

bpred_***.used_ras.PP

0

0

813

813

813

813

813

bpred_***.ras_hits.PP

0

0

811

811

811

811

811

bpred_***.ras_rate.PP

<error:

<error:

divide

divide

0.9975

0.9975

0.9975

0.9975

0.9975

by

by

zero>

zero>

分析:

bpred_***.addr_hits

bpred_***.dir_hirts

bpred_***.misses

bpred_***.bpred_addr_rate

bpred_***.bpred_dir_rate这些参数7种不同的分支预测方法方法下各不相同。

bpred_***.jr_hitsbpred_***.jr_non_ras_hits.PPbpred_***.jr_non_ras_seen.PPbpred_***.bpred_jr_rate

bpred_***.bpred_jr_non_ras_rate.PP

bpred_***.retstack_pushes

bpred_***.retstack_pops

bpred_***.used_ras.PPbpred_***.ras_hits.PPbpred_***.ras_rate.PP这些参数alwaystakenalwaysnot taken各自相同,其余5种方法的也各自相同。

其余的参数对于7种不同的分支预测方法都没有改变。

模拟程序名:test-printf




always taken

always not
taken

bimod (512)

bimod (1024)

2-level
(1,1024,

8,0)

2-level
(1,64,6,

1)

comb
(1024)

(1,1024,

8,0)
(1024)

sim_total_insn

181387 7

181387 7

181387 7

181387 7

181387 7

181387 7

181387 7

sim_total_refs

516941

516941

516941

516941

516941

516941

516941

sim_elapsed_time

1

1

1

1

1

1

1

sim_inst_rate

181387 7

181387 7

181387 7

181387 7

181387 7

181387 7

181387 7

sim_num_branches

401609

401609

401609

401609

401609

401609

401609

sim_IPB

4.5165

4.5165

4.5165

4.5165

4.5165

4.5165

4.5165

bpred_***.lookups

401609

401609

401609

401609

401609

401609

401609

bpred_***.updates

401609

401609

401609

401609

401609

401609

401609

bpred_***.addr_hits

261363

233361

372591

377458

373619

323623

384151

bpred_***.dir_hirts

261363

233361

374901

379761

375930

325966

386385

bpred_***.misses

140246

168248

26708

21848

25679

75643

15224

bpred_***.jr_hits

31998

31998

30152

30152

30152

30152

30152

bpred_***.jr_seen

31998

31998

31998

31998

31998

31998

31998

bpred_***.jr_non_ras_hits.PP

31998

31998

363

363

363

363

363

bpred_***.jr_non_ras_seen.PP

31998

31998

2198

2198

2198

2198

2198

bpred_***.bpred_addr_rate

0.6508

0.5811

0.9277

0.9399

0.9303

0.8058

0.9565

bpred_***.bpred_dir_rate

0.6508

0.5811

0.9335

0.9456

0.9361

0.8117

0.9621

bpred_***.bpred_jr_rate

1

1

0.9423

0.9423

0.9423

0.9423

0.9423

bpred_***.bpred_jr_non_ras_rate .PP

1

1

0.1652

0.1652

0.1652

0.1652

0.1652

bpred_***.retstack_pushes

0

0

29802

29802

29802

29802

29802

bpred_***.retstack_pops

0

0

29800

29800

29800

29800

29800

bpred_***.used_ras.PP

0

0

29800

29800

29800

29800

29800

bpred_***.ras_hits.PP

0

0

29789

29789

29789

29789

29789

bpred_***.ras_rate.PP

<error: divide
by
zero>

<error: divide
by
zero>

0.9996

0.9996

0.9996

0.9996

0.9996

分析:

bpred_***.addr_hits

bpred_***.dir_hirts

bpred_***.misses

bpred_***.bpred_addr_rate

bpred_***.bpred_dir_rate这些参数7种不同的分支预测方法方法下各不相同。

bpred_***.jr_hitsbpred_***.jr_non_ras_hits.PPbpred_***.jr_non_ras_seen.PPbpred_***.bpred_jr_rate

bpred_***.bpred_jr_non_ras_rate.PP

bpred_***.retstack_pushes

bpred_***.retstack_pops

bpred_***.used_ras.PPbpred_***.ras_hits.PPbpred_***.ras_rate.PP这些参数alwaystakenalwaysnot taken各自相同,其余5种方法的也各自相同。

其余的参数对于7种不同的分支预测方法都没有改变。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top