logo资料库

WinDLX实验报告-计算机体系结构作业.doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
WinDLX 实验报告 一、实验目的: 1)熟悉计算机流水线基本概念 2)了解 DLX 基本流水线的各段的功能 3) 了解各种不同指令在流水线中的实际流动情况 4) 对流水线做性能分析 5) 了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关 的种类 6) 了解解决数据相关的方法 二、实验内容及结果分析: 实验 2 1. 实验内容: 用 WinDLX 运行程序 structure_d.s,通过模拟:  找出存在结构相关的指令对以及导致结构相关的部件;  记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百 分比;  论述结构相关对 CPU 性能的影响,讨论解决结构相关的方法。 2.实验结果: 1)Addd f0,f0,f4 指令译码时需要对指令寄存器 IR 进行操作,而同时 addd f2,f0,f2 取指周期需要将指令存到 IR 中,所以发生冲突,冲突部件是指令寄存器 IR。停顿一周期 2)Addd f2,f0,f2 指令译码时需要对指令寄存器 IR 进行操作,而同时 addd r2,r2, ox8 取指周期需要将指令存到 IR 中,所以发生冲突,冲突部件是指令寄存器 IR。停顿一周 期 3)Addd f2,f0,f2 在执行浮点数运算时占用 ALU 两个周期,addd r2,r2,ox8 执行时
不能使用 ALU,所以发生冲突,冲突部件是 ALU。停顿一周期 4)第二条指令在译码周期需要将 r3 的内容存到 alu 的 A 寄存器中,而此时第一条指令 的执行周期正在占用 A 寄存器,所以发生结构冲突,冲突部件是 ALU,停顿一周期。 5)第一条指令译码时需要对指令寄存器 IR 进行操作,而同时第二条指令取指周期需要将指 令存到 IR 中,所以发生冲突,冲突部件是指令寄存器 IR。停顿一周期 3、实验总结: 由结构相关引起的暂停周期数为:55 总执行周期数为:139 暂停周期数占总执行周期数的百分比:39.6% 4、实验分析: 结构相关会使流水线停顿,降低 cpu 的效率 解决办法Ⅰ: 插入暂停周期(“流水线气泡” ) 解决方法Ⅱ: 设置相互独立的指令存储器和数据存储器或设置相互独立的指令 Cache 和数 据 Cache 实验 3 1、实验内容:
在不采用定向技术的情况下(去掉 Configuration 菜单中 Enable Forwarding 选项前的勾选 符),用 WinDLX 运行程序 data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行 的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。 1)LHI R2, (A>>16) & 0xFFFF ADDUI R2, R2, 0x134 Lhi 指令在译码时未完成对 r2 的写回,而 addui 指令在取指阶段需要读取 r2 的数据, 所以发生数据冲突,停顿两周期 2)LHI R3, 0x0 ADDUI R3, R3, 0x15c Lhi 指令在译码阶段未完成对 r3 的写操作,addui 在取指阶段需要读取 r3 的数据,所以 发生数据冲突,停顿两周期。 3)LW ADD R1, 0 (R2) R1, R1, R3 LW 指令在译码阶段未完成对 r1 的写操作,add 在取指阶段需要读取 r1 的数据,所以发 生数据冲突,停顿两周期。
4) ADD SW R1, R1, R3 0(R2), R1 ADD 指令在译码阶段未完成对 r1 的写操作,SW 在取指阶段需要读取 r1 的数据,所以 发生数据冲突,停顿两周期。 5) LW ADDI R5, 0 (R1) R5, R5, #10 LW 指令在译码阶段未完成对 r5 的写操作,ADDI 在取指阶段需要读取 r5 的数据,所以 发生数据冲突,停顿两周期。 6) ADDI SUB R2, R2, #4 R4, R3, R2 ADDI 指令在译码阶段未完成对 r2 的写操作,SUB 在取指阶段需要读取 r2 的数据,所 以发生数据冲突,停顿两周期。
7) SUB BNEZ R4, R3, R2 R4, loop sub 指令在译码阶段没有完成对 r4 的写操作,而 bnez 指令在取指阶段需要读取 r4 中的数据, 所以发生数据冲突,停顿一周期 2、实验总结: 由数据相关引起的暂停周期数为:104 总执行周期数为:202 暂停周期数占总执行周期数的百分比:51.48% 实验 4: 1、实验内容 在采用定向技术的情况下(勾选 Enable Forwarding),用 WinDLX 再次运行程序 data_d.s。 重复上述 2 中的工作,并计算采用定向技术后性能提高的倍数。 1)LW ADD R1, 0 (R2) R1, R1, R3 LW 指令在译码阶段未完成对 r1 的写操作,add 在取指阶段需要读取 r1 的数据,所以发生 数据冲突,停顿两周期。
2)LW ADDI R5, 0 (R1) R5, R5, 0xa LW 指令在译码阶段未完成对 r5 的写操作,ADDI 在取指阶段需要读取 r5 的数据,所以发 生数据冲突,停顿两周期。 3)SUB BNEZ R4, R3, R2 R4, loop sub 指令在译码阶段没有完成对 r4 的写操作,而 bnez 指令在取指阶段需要用到 r4 中的数据, 所以发生 raw 冲突,停顿一周期 2、实验总结: 由数据相关引起的暂停周期数为:30 总执行周期数为:128 暂停周期数占总执行周期数的百分比:23.44% 采用定向技术后性能提高的倍数为 202/128=1.72 倍。
分享到:
收藏