实验报告答案.docx

上传人:s****u 文档编号:12808372 上传时间:2020-05-25 格式:DOCX 页数:13 大小:264.77KB
返回 下载 相关 举报
实验报告答案.docx_第1页
第1页 / 共13页
实验报告答案.docx_第2页
第2页 / 共13页
实验报告答案.docx_第3页
第3页 / 共13页
点击查看更多>>
资源描述
实验2:MIPS指令系统和MIPS体系结构一.实验目的(1)了解和熟悉指令级模拟器(2)熟悉掌握MIPSsim模拟器的操作和使用方法 (3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解(4)熟悉MIPS体系结构二. 实验内容和步骤首先要阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统和汇编语言。(1)、启动MIPSsim(用鼠标双击MIPSsim.exe)。(2)、选择“配置”-“流水方式”选项,使模拟器工作在非流水方式。(3)、参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。 可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中),然后分别以单步执行一条指令、执行多条指令、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化。(4)、选择“文件”-“载入程序”选项,加载样例程序 alltest.asm,然后查看“代码”窗口,查看程序所在的位置(起始地址为0x00000000)。(5)、查看“寄存器”窗口PC寄存器的值:PC=0x00000000。(6)、执行load和store指令,步骤如下: 1)单步执行一条指令(F7)。 2)下一条指令地址为0x00000004,是一条 有 (有,无)符号载入 字节 (字节,半字,字)指令。3)单步执行一条指令(F7)。4)查看R1的值,R1= 0xFFFFFFFFFFFFFF80 。5)下一条指令地址为0x00000008,是一条 有 (有,无)符号载入 字 (字节,半字,字)指令。6)单步执行1条指令。7)查看R1的值,R1=0x0000000000000080 。 8)下一条指令地址为0x0000000C ,是一条 无 (有,无)符号载入 字节 (字节,半字,字)指令。 9)单步执行1条指令。 10)查看R1的值,R1= 0x0000000000000080 。 11)单步执行1条指令。 12)下一条指令地址为0x00000014 ,是一条保存 字 (字节,半字,字)指令。 13)单步执行一条指令。 14)查看内存BUFFER处字的值,值为 0x000080 (7)、执行算术运算类指令。步骤如下: 1)双击“寄存器”窗口中的R1,将其值修改为2。 2)双击“寄存器”窗口中的R2,将其值修改为3。 3)单步执行一条指令。 4)下一条指令地址为0x00000020 ,是一条加法指令。 5)单步执行一条指令。 6)查看R3的值,R3= 0x0000000000000005 。 7)下一条指令地址为0x00000024 ,是一条乘法指令。 8)单步执行一条指令。9)查看LO、HI的值,LO= 0x0000000000000006 ,HI= 0x0000000000000000。(8)、执行逻辑运算类指令。步骤如下:1)双击“寄存器”窗口中的R1,将其值修改为0XFFFF0000。2)双击“寄存器”窗口中的R2,将其值修改为0XFF00FF00。3)单步执行一条指令。4)下一条指令地址为0x000030,是一条逻辑与运算指令,第二个操作数寻址方式是 寄存器直接寻址 (寄存器直接寻址,立即数寻址)。5)单步执行一条指令。6)查看R3的值,R3= 0x00000000FF000000。7)下一条指令地址为0x00000034,是一条逻辑或指令,第二个操作数寻址方式是 立即数寻址 (寄存器直接寻址,立即数寻址)。8)单步执行一条指令。9)查看R3的值,R3= 0x0000000000000000。(9)、执行控制转移类指令。步骤如下: 1)双击“寄存器”窗口中R1,将其值修改为2。 2)双击“寄存器”窗口中R2,将其值修改为2。 3)单步执行一条指令。 4)下一条指令地址为0x00000040,是一条BEQ指令,其测试条件是 两操作数相等 ,目标地址为0x 。 5) 单步执行1条指令。 6) 查看PC的值,PC=0x0000004C,表明分支 成功 (成功,失败)。 7) 一条指令是一条BGEZ指令,其测试条件是 大于等于0 ,目标地址为0x00000058 。 8) 单步执行1条指令。 9) 查看PC的值,PC= 0x00000058,表明分支 成功 (成功,失败)。 10) 下一条指令是一条BGEZAL指令,其测试条件是 大于等于0 ,目标地址为0x00000064。 11) 单步执行1条指令。 12) 查看PC的值,PC= 0x00000064,表明分支 成功 (成功,失败);查看R31的值,R31=0x000000000000005C 。 13) 单步执行1条指令。 14)查看R1的值,R1=0x0000000000000074。 15)下一条指令地址为0x00000068,是一条JALR指令,保存目标地址的寄存器为R1 ,保存返回地址的目标寄存器为R3 。 16)单步执行1条指令。 17)查看PC和R3的值,PC=0x00000074,R3=0x000000000000006C。实验3 流水线及流水线中的冲突一.实验目的 (1)理解计算机流水线基本概念。(2)理解MIPS结构如何用5段流水线来实现,理(3)解各段的功能和基本操作。(4)加深对数据冲突、结构冲突的理解,理解这两类冲突对CPU性能的影响。(5)进一步理解解决数据冲突的方法,掌握如何应用定向技术来减少数据冲突引起的停顿。二.实验内容和步骤(1)、启动MIPSsim。(2)、根据预备知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。(用鼠标双击各段,就可以看到各流水寄存器的内容)(3)、参照MIPSsim模拟器使用说明,熟悉MIPSsim模拟器的操作和使用方法。 可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中)。然后分别以单步执行一条周期、执行多个周期、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化,特别是流水寄存器内容的变化。 (4)、选择配置菜单中的“流水方式”选项,使模拟器工作于流水方式下。(5)、观察程序在流水线中的执行情况,步骤如下: 1)选择MIPSsim的“文件”“载入程序”选项来加载pipeline.s。 2)关闭定向功能。这是通过“配置”“定向”。 3)用单步执行一个周期的方式执行该程序,观察每一个周期中,各段流水寄存器内容的变化、指令的执行情况(“代码”窗口)以及时钟周期图。 4)当执行到第13个时钟周期时,各段分别正在处理的指令是: IF: LW $r4, 60($r6) ID: ADDI $r3,$r0,25 EX: ADDI $r1,$r1,-1 MEM: ADDI $r6,$r0,8 WB: ADD $r2,$r1,$r0 画出这时的时钟周期图。(6)、这时各流水寄存器中的内容为: IF/ID.IR: 2361655356 IF/ID.NPC: 48 ID/EX.A: 0 ID/EX.B: 0 ID/EX.IR: 25 ID/EX.Imm: 537067545 EX/MEM.ALUo: 4 EX/MEM.IR: 539099135 MEM/WB.LMD: 0 MEM/WB.ALUo: 8 MEM/WB.IR: 37264136 (7)、观察和分析结构冲突对CPU性能的影响,步骤如下: 1)加载structure_hz.s(在模拟器所在文件夹下的“样例程序”文件夹中)。2)执行该程序,找出存在结构冲突的指令对以及导致结构冲突的部件。根据始终周期图可知存在结构冲突的指令是浮点加法指令fadd,导致结构冲突的部件是浮点加法器 3)记录由结构冲突引起的停顿时钟周期数,计算停顿时钟周期数占总执行周期数的百分比。总周期数为52个,结构停顿周期数35个,占总执行周期数的67.30769%4)把浮点加法器的个数改为4个。5)再次重复步骤(1)(3)的工作。如上图,可知修改后结构冲突引起的停顿时钟周期数为2个,占总执行周期数的10.52632%6)分析结构冲突对CPU性能的影响,讨论解决结构冲突的方法。结构冲突出现的频率较高,导致的停顿使得CPU流水的效率下降,可以通过分别设置独立的指令存储器和数据存储器的方法,或者仍只是一个存储器,但采用两个分离的Cache,即指令Cache和数据Cache(8)、 观察数据冲突并用定向技术来减少停顿,步骤如下: 1)全部复位 2)加载data_hz.s 3)关闭定向功能。4)单步执行一个周期,同时查看时钟周期图,列出在什么时刻发生了RAW(先写后读)冲突。发生冲突的周期是4、6、7、9、10、13、14、17、18、20、21、25、26、28、29、32、33、36、37、39、40、44、45、47、48、51、52、55、56、58、595)记录数据冲突引起的停顿时钟周期数及程序执行的总时钟周期数,计算停顿时钟周期数占总执行周期数的百分比。总时钟周期数65,其中数据冲突引起的停顿时钟周期数为31,占总周期数的47.69231%。 6)复位CPU。 7)打开定向功能。8)单步执行一个周期,同时查看时钟周期图,列出在什么时刻发生了RAW(先写后读)冲突,并与步骤(3)的结果进行比较。发生冲突的周期为5、10、13、18、22、25、30、34、37,共9个 9)记录由数据冲突引起的停顿时钟周期数以及程序执行的总时钟周期数,计算采用定向技术后的性能是原来的几倍。程序执行的总周期数为43,其中数据冲突引起的停顿数为9个,采用定向技术后性能是原来的65/43=1.51倍实验4 指令调度和延迟分支一.实验目的(1)加深对指令调度技术的理解。(2)加深对延迟分支技术的理解。(3)熟练掌握用指令调度技术解决流水线中的数据冲突的方法。(4)进一步理解指令调度技术对CPU性能的改进。(5)进一步理解延迟分支技术对CPU性能的改进。二.实验内容和步骤:(1)、启动MIPSsim。(2)、根据前面的相关知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。(3)、选择“配置”-“流水方式”选项,使模拟器工作于流水方式下。(4)、用指令调度技术解决流水线中的数据冲突。 1)启动MIPSsim。 2)加载schedule.s。 3)关闭定向功能。(4)执行所载入的程序。通过查看统计数据和时钟周期图,找出并记录程序执行过程中各种冲突发生的次数、发生冲突的指令组合以及程序执行的总时钟周期数。 由执行结果可知,程序执行总时钟周期数为33。观察程序执行的时钟周期图可知,发生停顿的指令组合如下: 第1对指令组合 LW $r2,0($r1) ADD $r4,$r0,$r2 第2对指令冲突 ADD $r4,$r0,$r2 SW $r4,0($r1)第3对指令冲突SW $r4,0($r1)LW $r6,4($r1)第4对指令冲突ADD $r8,$r6,$r1MUL $r12,$r10,$r1第5对指令冲突ADD $r16,$r12,$r1ADD $r18,$r16,$r1第6对指令冲突ADD $r18,$r16,$r1SW $r18,16($r1)第7对指令冲突SW $r18,16($r1)LW $r20,8($r1)第8对指令冲突MUL $r22,$r20,$r14MUL $r24,$r26,$r14 (5)采用指令调度技术对程序进行指令调度,消除冲突。将调度后的程序存到after-schedule.s中。 (6)载入after-schedule.s。 (7)执行该程序。观察程序在流水线中的执行情况,记录程序执行的总时钟周期数。 由执行结果可知,改进后的程序执行时钟周期总数为17。 (8)根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU性能 的作用。 很明显,指令调度后时钟总周期数从33降低到17,通过使用指令调度技术显著地提高了CPU的使用率,大大减少了指令冲突的次数,对提高CPU性能有很大的作用。5、用延迟分支减少分支指令对性能的影响。(1)启动MIPSsim。(2)载入branch.s。(3)关闭延迟分支功能。(4)执行该程序。观察并记录发生分支延迟的时刻。 发生延迟分支的时刻依次为第6、9、13、21、24、28时钟周期。(5)记录执行该程序所用的总时钟周期数。 由执行结果可知,该程序所执行总时钟周期数为38,ID段执行了18条指令。 (6)假设延迟槽有1个,对branch.s进行指令调度,然后保存到“delayed-branch.s”中。(7)载入delayed-branch.s。 (8)打开延迟分支功能。(9)执行该程序。观察其时钟周期图。 (10)记录执行该程序所用的总时钟周期数。 由执行结果可知,该程序所执行总时钟周期数为25,ID段执行了19条指令。 (11)对比上述两种情况下的时钟周期图。 (12)根据记录结果,比较没采用延迟分支和采用了延迟分支的性能之间的不同。 论述延迟分支对于提高CPU性能的作用。对比两种情况的时钟周期总数可知,在使用延迟槽后,指令在运行到跳转指令附近时,在期望概率上很大部分可能不会出现延迟等待,故能够稍微提高CPU性能,但是在跳转指令较多的程序中,此方法更为实用。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!