实验2 指令调度和延迟分支【计算机系统结构】

奋斗吧
奋斗吧
擅长邻域:未填写

标签: 实验2 指令调度和延迟分支【计算机系统结构】 博客 51CTO博客

2023-05-20 18:24:07 187浏览

实验2 指令调度和延迟分支【计算机系统结构】,实验2指令调度和延迟分支【计算机系统结构】



实验2 指令调度和延迟分支【计算机系统结构】

  • 前言
  • 推荐
  • 代理服务器拒绝访问解决
  • 实验2 指令调度和延迟分支
  • 1 实验目的
  • 2 实验平台
  • 3 实验内容和步骤
  • (1)启动MIPSsim。
  • (2)进一步理解流水段的构成和各个流水寄存器的功能。
  • (3)选择“配置”下的“流水方式”,让模拟器工作于流水方式下。
  • (4)采用指令调度技术解决流水线中的数据冲突。步骤如下:
  • (5)采用延迟分支减少分支指令对性能的影响。步骤如下:
  • 4 实验结论
  • 5 实验心得
  • 6 实验思考:
  • 最后


前言

2023-5-19 16:29:55

以下内容源自《创作模板三》
仅供学习交流使用

推荐

实验1 流水线及流水线中的冲突【计算机系统结构】

代理服务器拒绝访问解决

实验室机房
电脑上网

显示代理服务器拒绝访问

解决办法:

实验2 指令调度和延迟分支【计算机系统结构】_时钟周期

实验2 指令调度和延迟分支

1 实验目的

(1)加深对指令调度技术的理解。
(2)加深对延迟分支技术的理解。
(3)熟练掌握用指令调度技术解决指令流水线中的数据冲突的方法。
(4)进一步理解指令调度技术对CPU性能的改进。
(5)进一步理解延迟分支技术对CPU性能的改进。

2 实验平台

指令级和流水线操作级模拟器MIPSsim。

3 实验内容和步骤

(1)启动MIPSsim。

(2)进一步理解流水段的构成和各个流水寄存器的功能。

(3)选择“配置”下的“流水方式”,让模拟器工作于流水方式下。

(4)采用指令调度技术解决流水线中的数据冲突。步骤如下:

1)载入程序schedule.s。

实验2 指令调度和延迟分支【计算机系统结构】_指令调度_02

2)关闭定向功能。
点击配置,取消勾选定向

3)执行载入的程序。观察时钟周期图,找出程序执行中各种冲突发生的次数,发生冲突的指令组合以及程序执行的总时钟周期数。

实验2 指令调度和延迟分支【计算机系统结构】_时钟周期_03

实验2 指令调度和延迟分支【计算机系统结构】_指令调度_04

实验2 指令调度和延迟分支【计算机系统结构】_数据冲突_05

实验2 指令调度和延迟分支【计算机系统结构】_计算机系统结构_06


实验2 指令调度和延迟分支【计算机系统结构】_数据冲突_07


实验2 指令调度和延迟分支【计算机系统结构】_指令调度_08

4)采用指令调度技术对程序进行指令调度,消除冲突,将源程序在下面列出。并将调度后的指令存到after-schedule.s中。

源程序

冲突都是RAW冲突

实验2 指令调度和延迟分支【计算机系统结构】_数据冲突_09

修改后的程序
所以指令调度把读后写分开几个周期即可

实验2 指令调度和延迟分支【计算机系统结构】_指令调度_10

5)载入after-schedule.s。

实验2 指令调度和延迟分支【计算机系统结构】_计算机系统结构_11

6)执行程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数。

实验2 指令调度和延迟分支【计算机系统结构】_计算机系统结构_12

实验2 指令调度和延迟分支【计算机系统结构】_指令调度_13

实验2 指令调度和延迟分支【计算机系统结构】_指令调度_14

实验2 指令调度和延迟分支【计算机系统结构】_计算机系统结构_15

实验2 指令调度和延迟分支【计算机系统结构】_计算机系统结构_16

7)根据记录结果,比较调度前和调度后的性能。论述指令调度对提高CPU性能的作用。

调度前

实验2 指令调度和延迟分支【计算机系统结构】_时钟周期_17

调度后

实验2 指令调度和延迟分支【计算机系统结构】_计算机系统结构_18

可以发现
调度前:执行周期总数:33;ID段执行15条指令;RAW停顿:16
调度后:执行周期总数:21;ID段执行15条指令;RAW停顿:4

可以看出,指令调度对于CPU执行效率的明显提高。

(5)采用延迟分支减少分支指令对性能的影响。步骤如下:

1)启动MIPSsim。
2)载入branch.s。

实验2 指令调度和延迟分支【计算机系统结构】_数据冲突_19

3)关闭延迟分支功能。通过“配置”下取消“延迟槽”选项。
4)执行该程序,观察并记录发生分支延迟的时刻。

第一次分支:到loop

实验2 指令调度和延迟分支【计算机系统结构】_计算机系统结构_20

第二次分支:到npc

实验2 指令调度和延迟分支【计算机系统结构】_时钟周期_21

5)记录该程序执行的总时钟周期数。

实验2 指令调度和延迟分支【计算机系统结构】_指令调度_22

6)假设延迟槽为一个,对程序进行指令调度,然后保存到delay-branch.s中。
下面只针对分支指令进行指令调度
采用从目标处调度

实验2 指令调度和延迟分支【计算机系统结构】_数据冲突_23

7)载入delay-branch.s。

实验2 指令调度和延迟分支【计算机系统结构】_数据冲突_24

8)打开延迟分支功能。
点击配置,勾选延时槽

9)执行该程序,观察时钟周期图。

第一次分支,到loop,(延时槽)

实验2 指令调度和延迟分支【计算机系统结构】_指令调度_25

第二次分支,到npc,(延时槽)

实验2 指令调度和延迟分支【计算机系统结构】_时钟周期_26

10)记录执行该程序的总的时钟周期数。

实验2 指令调度和延迟分支【计算机系统结构】_指令调度_27

11)对比上述两种情况下的时钟周期图。

没有采用延迟分支之前

实验2 指令调度和延迟分支【计算机系统结构】_指令调度_28


采用了延迟分支之后

实验2 指令调度和延迟分支【计算机系统结构】_计算机系统结构_29

可以发现:

没有采用延迟分支之前:执行周期总数:38;ID段执行了18条指令;分支指令占比11%
采用了延迟分支之后:执行周期总数:37;ID段执行了19条指令;分支指令占比10%

12)根据记录,比较没有采用延迟分支和采用了延迟分支的性能之间的不同。论述延迟分支对CPU性能的作用。

延时分支:可以使CPU在分支的时候,只要分支延迟槽中的指令是有用的,流水线就没有出现停顿,这时延迟分支的方法能很好地消除分支延迟。

4 实验结论

指令调度:可以减少数据冲突造成的停顿

延时分支:可以使CPU在分支的时候,只要分支延迟槽中的指令是有用的,流水线就没有出现停顿,这时延迟分支的方法能很好地消除分支延迟。

5 实验心得

通过本次实验:

(1)加深了对指令调度技术的理解。
(2)加深了对延迟分支技术的理解。
(3)熟练掌握了用指令调度技术解决指令流水线中的数据冲突的方法。
(4)进一步理解了指令调度技术对CPU性能的改进。
(5)进一步理解了延迟分支技术对CPU性能的改进。

6 实验思考:

以下是一段MIPS指令序列,

I 1  loop:   add   $t1,  $s3,  $s3
I 2           add   $t1,  $t1,  $t1
I 3           add   $t1,  $t1,  $s6
I 4           lw    $t0,   0($t1)
I 5           bne   $t0,  $s5,  exit
I 6           add   $s3,  $s3,  $s4
I 7           j     loop
I 8           exit

假如在实验的五段流水线中执行上述指令序列,在数据通路中,寄存器写口和寄存器读口分别安排一个时钟周期的前、后半个周期内独立工作,请思考:
(1)哪些指令之间发生数据相关?哪些指令之间发生控制相关?
数据相关:
I1和I2和I3、I4和I5
控制相关:
I5和I6和I8

(2)如果不采用“直通”技术进行数据冲突处理,那么应该在何处、加入几条nop指令才能避免数据冲突?假定采用“直通”技术处理,是否可以完全解决数据冲突?不行的话,需要在发生数据冲突的指令前加入几条nop指令,才能使这段指令序列的执行避免数据冲突?

(3)对于第5条分支指令引起的控制冲突,假定将检测结果是否为“零”并更新PC的操作放在“访存(Mem)”执行,则分支延迟损失时间片为多少?在何处、加入几条nop指令可以消除控制冲突?若检测结果是否为“零”并更新PC的操作在“执行(EX)”执行,则分支延迟损失时间片为多少?

(4)对于第7条指令“j loop”,假定更新PC的操作在“执行(EX)”阶段执行,则流水线会被阻塞几个时钟周期?需要在何处、加入几条nop指令可以消除该控制冲突?假定更新PC的操作在“译码(ID)”阶段执行,则流水线又将被阻塞几个时钟周期?

最后

2023-5-19 18:39:27

你对我百般注视,
并不能构成万分之一的我,
却是一览无余的你。

好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695