- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验3 指令调度与延迟分支
3.1 实验目的
(1)加深对指令调度技术的理解
(2)加深对延迟分支技术的理解
(3)熟练账务用指令调度技术解决流水线中的数据冲突的方法
(4)进一步理解指令调度技术对CPU性能的改进
(5)进一步理解延迟分支技术对CPU性能的改进
3.2 实验平台
实验平台采用指令级和流水线操作级模拟器MIPSsim
设计:张晨曦教授,版权所有
开发:孙太一
实验内容和步骤
首先要掌握MIPSsim模拟器的使用方法(见1.4节)
(1)启动MIPSsim。
(2)根据2.5节的相关知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水线寄存器的含义(双击各段,就可以看到各流水线寄存器中的内容)
(3)选择“配置”→“流水方式”选项,使模拟器工作在流水方式下。
(4)用指令调度技术解决流水线中的数据冲突:
1)启动MIPSsim
2)用MIPSsim的“文件”-“载入程序”选项来加载schedule.s(在模拟器所在文件夹下的“样例程序”文件夹中)。
3)关闭定向功能,这是通过“配置“-”定向“选项来实现的。
4)执行所载入的程序,通过查看统计数据和时钟周期图,找出并记录程序执行过程中各种冲突发生的次数,发生冲突的指令组合以及程序执行的总时钟周期数。
答:RAW数据冲突发生16次,其中lord停顿6次,自陷停顿1次,程序执行的总的时钟周期数33个。发生冲突的指令组合:
ADDIU $r1,$r0,56 LW $r2,0($r1) ADD $r4,$r0,$r2 SW $r2,0($r1)
LW $r6,4($r1) ADD $r8,$r6,$r1 MUL $r12,$r10,$r1 ADD $r16,$r12,$r1 ADD $r18,$r16,$r1发生了RAW冲突
5)自己采用调度技术对程序进行指令调度,消除冲突(自己修改源程序)。将调度(修改)后的程序重新命名为afer-schedule.s。(注意:调度方法灵活多样,在保证程序正确性的前提下自己随意调度,尽量减少冲突即可,不要求要达到最优。)
载入afer-schedule.s,执行该程序,记录程序执行的总时钟周期数。
比较调度前和调度后的性能,论述指令调度对提高CPU性能的作用。
答:afer-schedule.s指令代码
.text
main:
ADDIU $r1,$r0,A
MUL $r22,$r20,$r14
LW $r2,0($r1)
MUL $r24,$r26,$r14
ADD $r4,$r0,$r2
LW $r6,4($r1)
SW $r4,0($r1)
ADD $r8,$r6,$r1
MUL $r12,$r10,$r1
ADD $r18,$r16,$r1
ADD $r16,$r12,$r1
SW $r18,16($r1)
LW $r20,8($r1)
TEQ $r0,$r0
.data
A:
.word 4,6,8
调度后的执行周期数为21。指令调度让指令顺序重新组织顺序可以消除部分的数据冲突,指令调度的优劣直接影响着cpu性能的发挥好坏,好的指令调度可以让停顿周期大幅度减少。
用延迟分支技术减少分支指令对性能的影响:
在MIPSsim中载入branch.s样例程序(在本模拟器目录的“样例程序”文件夹中 ),关闭延迟分支功能,执行该程序(用连续执行方式),记录发生分支延迟的时刻,记录该程序执行的总时钟周期数。
答:分支延迟的时刻第13个周期,总的时钟周期数为38个
假设延迟槽为一个,自己对branch.s程序进行指令调度(自己修改源程序),将调度后的程序重新命名为delayed-branch.s。
载入delayed-branch.s,打开延迟分支功能,执行该程序,观察其时钟周期图,记录程序执行的总时钟周期数。
对比不采用延迟分支和采用延迟分支两种情况下的时钟周期图,比较两种情况下的性能之间的不同,论述延迟分支对提高CPU性能的作用。
答:delayed-branch.s程序清单
.text
main:
ADDI $r2,$r0,1024
ADD $r3,$r0,$r0
ADDI $r4,$r0,8
loop:
LW $r1,0($r2)
ADDI $r1,$r1,1
ADDI $r3,$r3,4
SUB $r5,$r4,$r3
SW $r1,0($r2)
BGTZ $r5,loop
ADD $r7,$r0,$r6
TEQ $r0,$r0
执行的时钟周期总数为31个。只要分支延迟槽中的指令是有用的,流水线中就没有停顿,这时延迟分支的方法就能很好的减少分支延迟。所以放入延迟槽中的指
您可能关注的文档
最近下载
- 一种具有调节皮肤微生态作用的多糖组合物及其制备方法与应用.pdf VIP
- 一种道路交通视频中敏感信息自动脱敏处理方法及系统.pdf VIP
- 面向对象的系统分析与设计.docx
- 广播电视编导-媒介融合背景下地方传统媒体的转型发展策略.docx
- 一种皮肤屏障修护和细胞修复抗皱组合物及其制备方法.pdf VIP
- 人教部编版七年级下册语文精品课件 第三单元 大概念引领下的大单元复习 (6).ppt VIP
- 一种抗敏消炎纳米组合物及其制备方法和应用.pdf VIP
- 2025北京市地铁运营有限公司公开选拔中层副职领导人员笔试参考题库附带答案详解.docx
- 一种靶向线粒体的自组装硒肽纳米材料及其制备方法和应用.pdf VIP
- 关于大学校园二手交易市场的调查分析.doc VIP
文档评论(0)