ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-04-19 15:19:45  阅读:394  来源: 互联网

标签:r4 r0 r1 调度 r18 ADD 指令 体系结构 延迟


指令调度和延迟分支

1.启动MIPSsim

2.根据预备知识中关于流水线各段操作的描述,进一步理解流水线中各段的功能,掌握各流水线的含义(用鼠标双击各段,就可以看到各流水寄存器的内容)

3.勾选配置菜单中的“流水方式”,使模拟器工作于流水方式下

4.用指令调度技术解决流水线中结构冲突和数据冲突

a) 启动MIPSsim
b) 通过“配置”菜单中的“常规配置”项把加法、乘法、除法部件的个数设置为两个,把他们的延迟时间都设置为3个时钟周期
c) 用MIPSsim的“文件”菜单中的“载入程序”来加载schedule.s(在模拟器文件夹下的“样例程序”中)
d) 关闭定向功能
e) 执行所载入的程序,通过查看统计数据和时钟周期图,找出并记录程序执行过程中各种冲突发生的次数、发生冲突的指令组合,以及程序执行的总时钟周期数:33个
答:各种冲突发生的次数:
RAW停顿: 16 ,占周期总数的百分比: 48.48485% ,其中load停顿: 6 ,占所有RAW停顿的百分比: 37.5%
自陷停顿: 1 ,占周期总数的百分比: 3.030303%
停顿周期总数: 17 ,占周期总数的百分比: 51.51515%
发生冲突的指令组合:
LW r 2 , 0 ( r2,0( r2,0(r1) 和 ADD r 4 , r4, r4,r0,$r2
ADD r 4 , r4, r4,r0,$r2 和 SW r 4 , 0 ( r4,0( r4,0(r1)
SW r 4 , 0 ( r4,0( r4,0(r1) 和 LW r 6 , 4 ( r6,4( r6,4(r1)
ADD r 8 , r8, r8,r6,$r1 和 MUL r 12 , r12, r12,r10,$r1
ADD r 16 , r16, r16,r12,$r1 和 ADD r 18 , r18, r18,r16,$r1
ADD r 18 , r18, r18,r16,$r1 和 SW r 18 , 16 ( r18,16( r18,16(r1)
SW r 18 , 16 ( r18,16( r18,16(r1) 和 LW r 20 , 8 ( r20,8( r20,8(r1)
MUL r 22 , r22, r22,r20,$r14 和 MUL r 24 , r24, r24,r26,$r14
f) 采用指令调度技术对程序进行指令调度,消除冲突。将调度后的程序放到afterschedule.s中
g) 载入afterschedule.s
afterschedule.s指令代码如下:
ADDIU r 1 , r1, r1,r0,A
MUL r 22 , r22, r22,r20,$r14
LW r 2 , 0 ( r2,0( r2,0(r1)
MUL r 24 , r24, r24,r26,$r14
ADD r 4 , r4, r4,r0,$r2
LW r 6 , 4 ( r6,4( r6,4(r1)
SW r 4 , 0 ( r4,0( r4,0(r1)
ADD r 8 , r8, r8,r6,$r1
MUL r 12 , r12, r12,r10,$r1
ADD r 18 , r18, r18,r16,$r1
ADD r 16 , r16, r16,r12,$r1
SW r 18 , 16 ( r18,16( r18,16(r1)
LW r 20 , 8 ( r20,8( r20,8(r1)
TEQ r 0 , r0, r0,r0
h) 执行该程序,观察程序在流水线中的执行情况,记录程序的总时钟周期数为 21 ,
ID段执行了 15 条指令。
在这里插入图片描述

i) 根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU的作用
答:调度前的执行周期为 33 ,调度后的执行周期数为 21 。指令调度可以消除部分的数据冲突,通过使用指令调度提高了CPU的使用率,大大减少了指令冲突的次数,提高了CPU性能。

5.用延迟分支减少分支指令对性能的影响

a) 启动MIPSsim
b) 载入branch.asm
c) 关闭延迟分支功能。这是通过在“配置”菜单中去选“延迟分支”来实现的
d) 执行该程序,观察并记录发生分支延迟的时刻,保存下其时钟周期图
答:分支延迟的时刻为:Cycle
时钟周期图如下:
在这里插入图片描述
在这里插入图片描述

e) 记录执行该程序所花的时钟周期数: 38
假设延迟槽为一个,对branch.asm进行指令调度,然后存到delay-branch.s中
delay-branch.s的指令代码:
ADDI r 2 , r2, r2,r0,1024
ADD r 3 , r3, r3,r0,$r0
ADDI r 4 , r4, r4,r0,8
LW r 1 , 0 ( r1,0( r1,0(r2)
ADDI r 3 , r3, r3,r3,4
ADDI r 1 , r1, r1,r1,1
SUB r 5 , r5, r5,r4,$r3
SW r 1 , 0 ( r1,0( r1,0(r2)
BGTZ $r5,loop
ADD r 7 , r7, r7,r0,$r6
TEQ r 0 , r0, r0,r0
f) 载入delayed-branch.asm
g) 打开延迟分支功能
h) 执行该程序,观察其时钟周期图,保存下其时钟周期图
在这里插入图片描述
在这里插入图片描述

i) 对比上述两种情况下的时钟周期图
j) 根据记录结果,比较没有采用延迟分支的性能和采用了延迟分支的性能。论述延迟分支对于提高CPU性能的作用
答:比较两种情况的时钟周期总数,可知:

在使用延迟槽后, 指令在运行到跳转bgezal指令,在期望概率上很大部分可能不会出现延迟等待,能够稍微提高CPU性能,本实验跳转指令过少,在跳转指令过多的情况下更为明显 。

标签:r4,r0,r1,调度,r18,ADD,指令,体系结构,延迟
来源: https://blog.csdn.net/qq_44824148/article/details/115864547

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有