《实验二流水线及流水线中的冲突.pdf》由会员分享,可在线阅读,更多相关《实验二流水线及流水线中的冲突.pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验二 流水线及流水线中的冲突实验目的(1)加深对计算机流水线基本概念的理解。(2)理解 MIPS 结构如何用 5 段流水线来实现,理解各段的功能和基本操作。(3)加深对数据冲突、结构冲突的理解,理解这两类冲突对 CPU 性能的影响。(4)进一步理解解决数据冲突的方法,掌握如何应用定向技术来减少数据冲突引起的停顿。实验平台:实验平台采用指令级和流水线操作级模拟器MIPSsim。实验内容和步骤:首先要掌握 MIPSsim 模拟器的使用方法。(1)启动 MIPSsim。(2)根据预备知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各 流水寄存器的含义。(用鼠标双击各段,就可以
2、看到各流水寄存器的内容)(3)参照 MIPSsim 模拟器使用说明,熟悉 MIPSsim 模拟器的操作和使用方法。可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中)。然后分别以单步执行一条周期、执行多个周期、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察 CPU中寄存器和存储器的内容的变化,特别是流水寄存器内容的变化。(4)选择配置菜单中的“流水方式”选项,使模拟器工作于流水方式下。(5)观察程序在流水线中的执行情况,步骤如下:1)选择 MIPSsim 的“文件”一 “载入程序”选项来加载 pipeline.s的“样例程序”文件夹中)。2)关闭定向功能。这是
3、通过“配置”一“定向”(使该项前面没有号)来实现的。3)用单步执行一个周期的方式(在“执行”菜单中)或按 F7 键执行该程序,观察每一个周期中,各段流水寄存器内容的变化、指令的执行情况(“代码”窗口)以及时钟周期图。4)当执行到第 13 个时钟周期时,各段分别正在处理的指令是:IFID:_ BEQ$r1,$r0,ret_:_ LW$r4,60($r6)_(在模拟器所在文件夹下EX:_MEM:_ ADDI$r3,$r0,25_ ADDI$r1,$r1,-1_WB:_ ADDI$r6,$r0,8_画出这时的时钟周期图。IutFQIutFQ!tL4ibX/Cyd-l-!tL4ibX/Cyd-l-ff
4、lffl iirssi.iirssi.-LWttWJWBlLWttWJWBl町 丈萍 典厅nw)代码型Kfl i:c)旨口四匚匡区|0WUhffl)mill$rH.$rO.7Gmill$rH.$rO.7GIT JrLjttrSIT JrLjttrSEGEUlZ$rJ.fnr.r ADD JEGEUlZ$rJ.fnr.r ADD JT TE.E.UIDIUIDIAUDI Jrl.irl.-LAUDI Jrl.irl.-LADDIADDI,ff x西LT fo-4.EULT fo-4.EU住rEOrEOBEQ txl.trfl.T.LBEQ txl.trfl.T.L(6)这时各流水寄存器中的内容为
5、:IF/ID.IR:_27053261 _IF/ID.NPC:_52_ID/EX.A:ID/EX.B:_ 8_ _ 0_ID/EX.Imm:_ 60_ID/EX.IR:_2361655356 _EX/MEM.ALUo:_25_EX/MEM.IR:_530767545 _MEM/WB.LMD _0_MEM/WB.ALUo:_4_MEM/WB.IR:_539099135_(在模拟器所在文件夹下的“样例程序”文件夹(7)观察和分析结构冲突对 CPU 性能的影响,步骤如下:2)执行该程序,找出存在结构冲突的指令导致结构冲突的部件:存储器。1)加载 structure_hz.sADD,D$f2,$f0,
6、$f1ADD,D$f2,$f0,$f1 和 ADD.D$f5,$f0,$f1ADD.D$f5,$f0,$f1对以及3)记录由结构冲突引起的停顿时钟周期数,计算停顿时钟周期数占总执行周期数的百分比:71.42857%71.42857%。4)把浮点加法器的个数改为 4 个。5)再次重复步骤的工作。6)分析结构冲突对 CPU 性能的影响,讨论解决结构冲突的方法。结构冲突对 CPU 性能的影响:当发生冲突时,流水线会出现停顿,从而降低了解决结构冲突的方法:在流水线处理机中设置相互独立的指令存储器和数据存储器(8)观察数据冲突并用定向技术来减少停顿,步骤如下:1)全部复位。2)加载 data_hz.s(
7、在模拟器所在的文件夹下的“样例程序”文件夹中)3)关闭定向功能。这是通过“配置”CPU 的性能。-“定向”(是该项前面没有号)来实现的。4)用单步执行一个周期的方式(F7)执行该程序,同时查看时钟周期图,列出在什么时刻发生了RAW(先写后读)冲突。答:在第三个周期的时候发生了写后读冲突,即在执行ADDIU$r2,$r0,56 时,刚执行到访问存储器的时候,LW$r1,0($r2)就执行到读的阶段了,所以发生了先写后读冲突。5)记录数据冲突引起的停顿时钟周期数以及程序执行的总时钟周期数,计算停顿时钟周期数占总执行周期数的百分比。答:停顿时钟周期数为46.66667%。7,执行的周期总数为15,则
8、停顿时钟周期数占总执行周期数的百分比为6)复位 CPU。7)打开定向功能。这是通过“配置”-“定向”(是该项前面有号)来实现的。8)用单步执行一个周期的方式(F7)执行该程序,同时查看时钟周期图,列出在什么时刻发生了RAW(先写后读)冲突,并与步骤3 的结果进行比较。答:ADDIU$r2,$r0,56 和 LW$r1,0($r2),LW$r1,0($r2)和 ADD$r1,$r1,$r3,SW$r1,0($r2)和 LW$r5,0($r1)发生了 RAW 中突。与步骤 3 的结果进行比较,停顿的周期数明显减少,这样可以 使 CPU的性能大大提升。9)记录数据冲突引起的停顿时钟周期数以及程序执行的总时钟周期数。计算采用定向技术后的性能是原来的几倍。答:数据冲突引起的停顿时钟周期数为是原来的 2.3 倍3,程序执行的总时钟周期数为15。采用定向技术后的性能