指令调度和分支延迟实验报告_第1页
指令调度和分支延迟实验报告_第2页
指令调度和分支延迟实验报告_第3页
指令调度和分支延迟实验报告_第4页
指令调度和分支延迟实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机系统结构实验报告班级计算机一班实验日期2019.3.27实验成绩姓名顾川瑀学号22920162203979实验名称指令调度和分支延迟实验目的、要求加深对指令调度技术的理解;加深对延迟分支技术的理解;熟练掌握用指令调度技术解决流水线中的数据冲突的方法;进一步理解指令调度技术对CPU性能的改进;进一步理解延迟分支技术对CPU性能的改进。实验内容、步骤及结果实验步骤:1、 启动MIPSsim。2、 根据2.5节相关内容关于流水线的描述,进一步理解流水线窗口中各段的功能;3、 选择“配置”--“流水方式”选项;4、 用指令调度解决流水线中的数据冲突(1) 启动MIPSsim;(2) 用MIPSsim的“文件”—“载入程序”选项加载schedule.s;(3) 关闭定向功能,“配置”—“定向”;(4) 执行载入程序,通过查看统计数据与始终周期图,找出并记录程序执行过程中各种冲突的次数没发生冲突的指令组合以及程序执行的总周期数。程序执行的总周期数为33。程序冲突的组合:ADDIU$r1,$r0,ALW$r2,0($r1)与上条指令存在写后读冲突ADD$r4,$r0,$r2与上条指令存在写后读冲突SW$r4,0($r1)与上条指令存在写后读冲突LW$r6,4($r1)ADD$r8,$r6,$r1与上条指令存在写后读冲突MUL$r12,$r10,$r1ADD$r16,$r12,$r1与上条指令存在写后读冲突ADD$r18,$r16,$r1与上条指令存在组件冲突SW$r18,16($r1)与上条指令存在写后读冲突LW$r20,8($r1)MUL$r22,$r20,$r14与上条指令存在写后读冲突MUL$r24,$r26,$r14TEQ$r0,$r0(5) 采用指令调度技术对程序进行指令调度,消除冲突。将调度后的程序写入afer-schedule.s中。程序afer-schedule.s代码为:.textmain:ADDIU$r1,$r0,AMUL$r24,$r26,$r14LW$r2,0($r1)MUL$r12,$r10,$r1LW$r6,4($r1)ADD$r4,$r0,$r2ADD$r16,$r12,$r1ADD$r8,$r6,$r1LW$r20,8($r1)ADD$r18,$r16,$r1SW$r4,0($r1)MUL$r22,$r20,$r14SW$r18,16($r1)TEQ$r0,$r0.dataA:.word4,6,8(6) 载入after-schedule.s;(7) 执行该程序。观察程序在流水线中的执行情况,记录程序执行的总时钟周期数。总时钟周期数为:19(8) 根据记录结果,比较调度前与调度后的性能,论述指令调度对与提高CPU性能的作用。指令调度后时钟总周期从33减至19后,通过使用指令调度技术显著地提高了CPU的使用率,减少了指令冲突的次数,对提高CPU性能有较为明显的作用。5、 用延迟分支减少分支指令对性能的影响。(1) 启动MIPSsim;(2) 载入branch.s;(3) 关闭延迟分支功能,“配置”—“延迟槽”。(4) 执行程序,观察并记录发生分支延迟的时刻。在第18个时钟周期,指令BGTZ$R5,LOOP的EX段发生分支延迟。(5) 记录执行改程序所需要的总时钟周期数(6) 假设延迟槽为一个,对branch.s进行指令调度,然后保存到delayed-branch.s中;程序delayed-branch.s代码如下:main:ADDI$r2,$r0,1024ADD$r3,$r0,$r0ADDI$r4,$r0,8loop:LW$r1,0($r2)ADDI$r3,$r3,4ADDI$r1,$r1,1SUB$r5,$r4,$r3SW$r1,0($r2)BGTZ$r5,loopLW$r1,0($r2)ADD$r7,$r0,$r6TEQ$r0,$r0(7) 载入delayed-branch.s。(8) 打开延迟分支功能。(9) 执行该程序,观察其时钟周期图。(10) 记录执行该程序所用的总时钟周期数;(11) 对比上述两种情况的时钟周期图。(12) 根据记录结果,比较没采用延迟分支和采用了延迟分支的性能之间的不同,论述延迟分支对于提高CPU性能的作用。对比没采取延迟分支和采取延迟分支所用的时钟周期数后可知,使用延迟分支后,指令在运行大跳转指令BGTZ附近时,在期望概率上很大部分可能不会出现延迟等待,因此能够稍微地提高CPU性能。本次实验中跳转指令较少,在跳转指令较多的程序中,此方法效果应该会更好。6、补充实验(1)通过配置菜单,把加法﹑乘法﹑除法部件的个数设置为2个,把延迟都设置为3个时钟周期;用MIPS语言编写一段简单的程序,至少包含数据相关和结构相关,包含循环次数为4的倍数的循环,运行程序。记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总时钟周期数。编写test1.s,代码如下:.textmain:ADDIU$r1,$r0,6ADDIU$r2,$r0,4loop:ADDIU$r1,$r1,1MUL$r3,$r3,$r1ADDIU$r2,$r2,-1BGTZ$r2,loopTEQ$r0,$r0总时间周期为:42(2)用循环展开、寄存器换名以及指令调度提高性能;将循环展开3次,将4个循环体组成的代码代替原来的循环体,并对程序做相应的修改。然后对新的循环体进行寄存器换名和指令调度;运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数。编写test2.s,代码如下:.textmain:ADDIU$r1,$r0,6ADDIU$r2,$r0,4loop:ADDIU$r1,$r1,1ADDIU$r3,$r1,1ADDIU$r4,$r3,1ADDIU$r6,$r4,1MUL$r7,$r1,$r1MUL$r8,$r3,$r3MUL$r9,$r4,$r4MUL$r10,$r6,$r6ADDIU$r2,$r2,-4BGTZ$r2,loopTEQ$r0,$r0总结这次实验,主要内容是指令调度技术和延迟分支技术,通过课堂上老师的讲解,习题的练习以及实验课亲手实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论