系统结构实验设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实践设计报告
设计名称:计算机系统结构实践设计
设计项目:流水线与流水线冲突
姓名:冯皓明
专业:计算机科学与技术
班级:18-4
学号:1804010405
计算机科学与技术学院
实验教学中心
20 20 年 5 月15 日
目录
一.实践设计的目的和意义
二.实践设计的内容和要求
三.设计用的设备仪器
四.实践设计的相关技术
五.项目设计与实现
六.结束语
一实验目的
加深对计算机流水线基本概念的理解。
理解MIPS结构如何用段流水线来实现,理解各段的功能和基本操作。
加深对数据冲突、结构冲突和控制冲突的理解,理解这三类冲突对CPU性能的影响。
通过采用相关技术来消解各种冲突,进一步理解解决流水线冲突的方法。二.要求
学习模拟器的结构、原理和基本操作方法。
运行样例程序,观察流水线的工作过程和冲突产生的情况。
运用所学知识,通过对模拟器的一些功能设置来解决产生的结构冲突,数据冲突,控制冲突。
自行编写一段程序,分别验证各种冲突的解决方法。(程序行数不需过多,10行左右,只要包括这几种冲突情况即可)。
三实验用设备器材
计算机一台。指令级和流水线操作级模拟器MIPS。
四.实践设计的相关技术
五.项目设计与实现
(1)启动MIPSsim
(2)根据预备知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。
流水线窗口如下图:
取指令(IF)、指令译码/读寄存器(ID)、执行/访存有效地址计算(EX)、存储器访问(MEM)、结果写回寄存器(WB),(用鼠标双击各段,就可以看到各流水寄存器的内容)
1.观察程序在流水线中的执行情况,步骤如下:
(1)选择MIPS的“文件”—>“载入程序”选项来加载pipeline.s。(2)观察比较各个执行周期
当执行到第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
时钟周期图:
流水线寄存器中内容
2.观察和分析结构冲突对CPU性能的影响,步骤如下:
(1)加载structure_hz.s
(2)执行该程序,找出存在结构冲突的指令对以及导致结构冲突的部件。答:结构冲突的指令:ADD.D$f2,$f0,$f1和ADD.D$f3,$f0,$f1
结构冲突部件:加法寄存器
对CPU性能的影响:当发生冲突时,流水线会发生停顿,从而降低了CPU的性能。解决方法:在流水线处理机中设置相互独立的指令存储器和储存器
3.观察数据冲突并用定向技术来减少停顿,步骤如下:
(1)全部复位
(2)加载data_hz.s。
(3)关闭定向功能
(4)单步执行一个周期,同时查看时钟周期图,列出在什么时刻发生了RAW(先写后读)冲突。
4、5、6、8、9、10、12、13、16、17、19、20、24、25、26、27、28、31、32、35、、36、38、39周期发生了RAW冲突
(5)记录数据冲突引起的停顿时钟周期数及程序执行的总时钟周期数,计算停顿时钟周期数占总执行周期数的百分比。
(6)复位cpu
(7)打开定向功能:
(8)单步执行一个周期,同时查看时钟周期图,列出在什么时刻发生了RAW(先写后读)冲突,并与步骤(3)的结果进行比较。第4、6、8、9、10、12、13、18、20、22、24、25、30、32、34、36、37周期发生了RAW冲突
(9)比
采用定向技术后性能会有大幅提升。
结果分析;
当发生结构冲突时,流水线会出现停顿,从而降低了CPU的性能。要避免结构冲突就要在流水线处理机中设置相互独立的指令存储器和数据存储器。当发生数据冲突时,程序执行并定向时的总停顿周期比没有定向功能的时候少,说明要降低数据冲突的方法是对CPU复位并定向。
3.控制冲突指令调度和延时分支
(1)全部复位
(2)加载branch.s
(3)延迟分支减少分支指令对性能的影响,关闭延迟分支功能。这是通过在“配置”菜单中去选“延迟分支”来实现的
(4)
分支延迟的时刻:Cycle 6, 9, 13, 21, 24, 28.
记录执行该程序所花的时钟周期数:38
假设延迟槽为一个,对branch.s进行指令调度,然后存到delay-branch.s中
delay-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
载入delayed-branch.asm 打开延迟分支功能
执行该程序,观察其时钟周期图,保存下其时钟周期图
对比上述两种情况下的时钟周期图
比较两种情况的时钟周期总数,可知:在使用延迟槽后,指令在运行到跳转指令时,不会出现延迟等待,则能够提高CPU的性能。
结构冲突:在只有一个浮点加法器的情况下,连着用浮点加法器,就会出现结构冲突
ADD.D $f2,$f0,$f1 //设置相互独立的指令,存储器和数据存储器
ADD.D $f3,$f0,$f1
ADD.D $f4,$f0,$f1
TEQ $r0,$r0
数据冲突: 相关指令靠的太近在流水线中的重叠执行或者重新排序会改变指令读写操作数的顺序
使之不同于他们串行执行时的顺序,则发生了数据冲突
DADD R1,R2,R3
DSUB R4,R1,R5 //采用定向技术
XOR R6,R1,R7
AND R8,R1,R9
OR R10,R1,R11
控制冲突:流水线遇到分支指令和其他会改变pc值的指令所引起的冲突
Lw $t0, 0($t1)
bne $t0, $s5, exit