文档介绍:实验一流水线及流水线中的冲突
实验目的
加深对计算机流水线基本概念的理解。
理解MIPS结构如何用5段流水线来实现,理解各段的功能和基本操作。
加深对数据冲突、结构冲突的理解。
加深对指令调度技术的理解并进一步理解指令调度技术对CPU性能的改善。
实验平台
实验平台采用指令集和流水线操作级模拟器MIPSsim。
通用寄存器:
浮点寄存器:
特殊寄存器:
流水寄存器:
第13个时钟周期的时钟周期图如下:
各段指令为:
(1) 学号为单数的同学自己编写一段关于结构冲突的汇编语言程序,分析该段程序存在结构冲突的指令以及导致结构冲突的部件,记录由结构冲突引起的停顿时钟周期数,计算停顿周期数占总执行周期数的百分比。分析结构冲突对CPU性能的影响。
编写的代码如下:
.text
main:
$f2,$f0,$f1
$f3,$f0,$f1
$f4,$f0,$f1
$f5,$f0,$f1
$f6,$f0,$f1
$f7,$f0,$f1
$f8,$f0,$f1
$f9,$f0,$f1
TEQ $r0,$r0
由结构冲突引起的停顿周期数为:35个
计算停顿周期数占总执行周期数的百分比为:%
$f3,$f0,$ $f4,$f0,$f1指令间存在结构冲突,由于读f0和f1的值都要访存,又因为执行一条流水线时只能有有一条指令访存,所有产生结构冲突。
结构冲突降低了CPU的性能,是执行周期时间变长,并行性较差。
(2)。通过查看统计数据和时钟周期图,找出并记录程序执行过程中各种冲突发生的次数,发生写后读冲突的指令组合以及程序执行的总时钟周期数。
RAW停顿:12 占周期总数的百分比:%
load停顿:3 占所有RAW停顿的百分比:25%
浮点停顿:0 占所有RAW停顿的百分比:0%
WAW停顿:0 占周期总数的百分比:0%
结构停顿:0 占周期总数的百分比:0%
控制停顿:0 占周期总数的百分比:0%
自陷停顿:1 占周期总数的百分比:%
停顿周期总数:13 占周期总数的百分比:%
发生写后读冲突的指令:LW $r2,0($r1)和MUL $r24,$r26,$r14等
程序执行的总时钟周期数为:29
(3)采用指令调度技术对程序进行指令调度,消除冲突,将调度后的程序重新加载,执行该程序观察程序在流水线中的执行情况,记录程序执行的总周期数。
消除冲突后程序为:
.text
main:
ADD