四流水线中的相关与冲突
流水线的相关问题
流水线只有连续不断地流动,不出现断流,才能获得高效率。如果处理不当,使流水线产生“断流”,就会使流水效率显著下降。流水过程中因为相关问题而产生冲突,是导致流水线断流的主要原因。一般来讲,流水线的相关主要分为以下三种类型。
1. 结构相关
结构相关是指当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求,两条或两条以上指令争用同一资源而引起的冲突,因此,结构相关又称为资源相关。
例如,假设一条指令流水线由5段组成,分别为取指令(IF)、指令译码(ID)、取操作数(MEM)、执行运算(EX)和写寄存器(WR)。该流水线的时空图如图8-12所示。
图8-12 5段指令流水线
从图中可以看出,指令I2的取操作数和指令I4的取指令都需要访问存储器。若机器中只有一个单端口存储模块,那么I2的取操作数和指令I4的取指令就产生了访存冲突,两个操作无法同时进行,这就是一种典型的资源冲突。
一种解决这种冲突的方法是在机器中增加存储器模块,如使用双端口存储器,使指令和数据分别存放在不同的存储器模块中,这样,取指令和取操作数就不会发生冲突。另一种方法是,当发生取指令或取操作数冲突时,将其中一个操作的执行时间推迟,如图8-13所示。当然,这样的话也就是发生了流水线的断流,流水线的吞吐率就下降了。
图8-13 访存相关引起流水线断流
2. 数据相关
当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中重叠执行时,就有可能产生数据相关。
在流水计算机中,指令的处理是重叠进行的,前一条指令还没有结束,第二、三条指令就陆续地开始工作。由于多条指令的重叠处理,当后继指令所需的操作数,刚好是前一指令的运算结果时,便发生数据相关冲突。例如,某一时间以下3条指令在图8-12的流水线中执行。
实验四流水线中的相关与冲突
实验四流水线中的相关与冲突
4.1 实验目的
1.加深对数据冲突、结构冲突的理解;
2.进一步理解解决数据冲突的方法,掌握如何应用定向技术来减少数据冲突引起的停顿;
3.理解这两类冲突对CPU性能的影响,并进行性能分析和比较。
2.2 实验平台
指令级和流水线操作级模拟器MIPSsim
4.3 实验内容和步骤
1. 启动MIPSsim;
2.观察和分析结构冲突对CPU性能的影响,步骤如下:
(1)加载structure_hz.s(在模拟器所在文件夹下的“样例程序”文件夹中);
(2)执行该程序,找出存在结构冲突的指令对以及导致结构冲突的部件;
(3) 记录由结构冲突引起的停顿时钟周期数,计算停顿时钟周期数占总执行周期数的百
分比;
(4)把浮点加法器的个数改为6个;
(5)再次重复上述(1)~(3)的工作;
(6)分析结构冲突对CPU性能的影响,讨论解决结构冲突的方法。
3. 观察数据冲突并用定向技术来减少停顿,步骤如下:
(1)把浮点加法器的个数改为1个;
(2)加载data_hz.s(在模拟器所在文件夹下的“样例程序”文件夹中);
(3)关闭定向功能。这是通过在“配置”菜单中去选“定向”(即使得该项前面没有“√”号)来实现的;
(4)用单步执行一个周期的方式(F7)执行该程序,同时查看时钟周期图,列出在什
么时刻发生了RAW(先写后读)冲突;
(5)记录数据冲突引起的停顿时钟周期数以及程序执行的总时钟周期数,计算停顿时
钟周期数占总执行周期数的百分比;
(6)复位CPU;
(7)打开定向功能。这是通过在“配置”菜单中勾选“定向”(即使得该项前面有一个“√”号)来实现的;
3-2 流水线技术
功能部件不是完全流水或者资源不够用。 例如访存冲突
结构冲突举例:访存冲突
例1: ··· i: LOAD i+1: ADD i+2: SUB i+3: AND i+4: OR ··· 1 i: IF i+1: R1, X R2, R3, R4 R5, R6, R7 R8, R9, R10 R11,R12,R13 2 ID IF 3 EX ID 4访存 5 MEM WB EX MEM 6 7 8 9
采用延迟转移技术。
EX
MEM
WB
?
IF
3、控制冲突
执行分支指令的结果有两种:
分支成功:PC值改变为分支转移的目标地址。在 条件判定和转移地址计算都完成后,才改变PC值。 不成功或者失败:PC的值保持正常递增,指向顺 序的下一条指令。
处理分支指令最简单的方法:“冻结”或者 “排空”流水线。
简单处理分支指令:分支成功的情况
i:
j:
ADD
SUB
F2,F6,F4
F6,F0,F8
输出相关:如果指令j和指令i写相同的名, 则称指令i和j发生了输出相关。
i: j: ADD SUB F6,F2,F4 F6,F0,F8
名相关的特点及解决办法
特点:
名相关的两条指令之间并没有数据的传送。 如果一条指令中的名改变了,并不影响另外一条 指令的执行。 通过改变指令中操作数的名来消除名相关。 对寄存器操作数进行换名称为寄存器换名。 既可用编译器静态实现,也可用硬件动态完成。
计算机体系结构第三章-1
3.2 流水线的基本概念
4.流水线的工作特点
1)一条流水线通常由多个流水段组成,在每一个流水段有 专门的功能部件来实现。 2)各流水段所需的时间应尽可能相等,否则将引起流水线 堵塞、断流。时间较长的段将成为流水线瓶颈。
3)流水线每个功能部件后面都有一个缓冲寄存器,称为流 水寄存器。
4)流水线的工作一般分为3个阶段,即填入(建立)、填满和 排空。 5)流水线技术适合于大量重复的时序过程,只有在输入端 不断地提供任务,才能充分发挥流水线的效率。
流水线中的每个子过程及其功能部件称为流水线的 级或段,段与段相互连接形成流水线。流水线的段数称 为流水线的深度(Pipeline Depth)。
3.2 流水线的基本概念
2.流水线结构
重叠执行是流水线结构的思想基础,只要在指令分析器 与指令执行部件之后都加上一个锁存器,就成了一个简单的 流水线结构。
存到寄存器中,使指令能快速执行 . 后行写数栈
运算器
3.1 重叠执行和先行控制
先行控制技术中采取了两个根本的措施:指令预处理 技术和缓冲技术。由于指令和数据的缓冲,保证了指 令分析和指令的执行都能全速地运行。
第k+2条指令 分析k+2 分析k+1 分析k 执行k 执行k+1 执行k+2
改 进 前
排空
… n-1 n
实验2 流水线及流水线中的冲突
选择配置中的流水方式,使模拟器工作于流水方式下。
观察程序在流水线中的执行情况
当执行到第13个时钟周期时,各段分别正在处理的指令是:
IF: LW $r4,60($r6)
ID: ADDI $r3,$r0,25
EX: ADDI $r1,$r1,-1
MEM: ADDI $r6,$r0,8
WB: ADDI $r2,$r1,$r0
这时各流水寄存器中的内容为:
IF/ID.IR:0x8CC4003C
IF/ID.NPC:0x00000030
ID/EX.A:0x0000000000000000
ID/EX.B:0x0000000000000000
ID/EX.Imm:0x0000000000000019
ID/EX.IR:0x20030019
EX/MEM.ALUo:0x0000000000000004
EX/MEM.IR:0x2021FFFF
MEM/WB.LMD:0x0000000000000000
MEM/WB.ALUo:0x0000000000000008
MEM/WB.IR:0x20060008
分析结构冲突对CPU性能的影响,加载structure_hz.s
结构冲突的指令为连续的ADD
结构冲突的部件为Fadd浮点加法器
可以看到结构停顿的周期数为35,占总周期的67.30769%
3.3 流水线相关冲突及解决办法_v3.0介绍
3 流水线技术
张伟 计算机学院
北京信息科技大学 1
©
计算机体系结构
3.4 流水线的相关
相关:两条指令之间存在某种依赖关系。 如果两条指令相关,则它们就有可能不 能在流水线中重叠执行或者只能部分重叠 执行。 相关有3种类型 数据相关(也称真数据相关) 名相关 控制相关
北京信息科技大学
北京信息科技大学
计算机体系结构
3.4 流水线的相关
控制相关带来了以下两个限制: 与一条分支指令控制相关的指令不能被移到该分支 之前,否则这些指令就不受该分支控制了。 对于上述的例子,then 部分中的指令不能移到if 语句之前。 如果一条指令与某分支指令不存在控制相关,就不 能把该指令移到该分支之后。 对于上述的例子,不能把S移到if语句的then部分中。
北京信息科技大学
计算机体系结构
3.4 流水线的冲突
有时流水线设计者允许结构冲突的存在
2.
北京信息科技大学
计算机体系结构
3.4 流水线的相关
指令j与指令i之间的名相关有两种:
反相关:如果指令j写的名与指令i读的名相同,则 称指令i和j发生了反相关。
指令j写的名=指令i读的名
输出相关:如果指令j和指令i写相同的名,则称指 令i和j发生了输出相关。
实验2_流水线及流水线中的冲突
实验2_流⽔线及流⽔线中的冲突
西安邮电⼤学
(计算机学院)
课内实验报告
实验名称:流⽔线及流⽔线中的冲突
专业名称:计算机科学与技术
班级:
学⽣姓名:
学号(8位):
指导教师:
实验⽇期:
实验2 流⽔线及流⽔线中的冲突
2.1 实验⽬的
(1)加深对计算机流⽔线基本概念的理解。
(2)理解MIPS结构如何⽤5段流⽔线来实现,理解各段的功能和基本操作。
(3)加深对数据冲突和资源冲突的理解,理解这两类冲突对CPU性能的影响。
(4)进⼀步理解解决数据冲突的⽅法,掌握如何应⽤定向技术来减少数据冲突引起的停顿。
2.2 实验平台
指令级和流⽔线操作级模拟器MIPSsim。
2.3 实验内容和步骤
(1)启动MIPSsim。
(2)根据教材中关于流⽔线各段操作的描述,进⼀步理解流⽔线窗⼝中各段的功能,掌握各流⽔寄存器的含义。(⿏标双击各段,即可看到各流⽔寄存器的内容)
(3)载⼊⼀个样例程序(在本模拟器所在⽂件夹下的“样例程序”⽂件夹中),然后分别以单步执⾏⼀个周期、执⾏多个周期、连续执⾏、设置断点等⽅式运⾏程序,观察程序的执⾏情况,观察CPU中寄存器和存储器内容的变化,特别是流⽔寄存器内容的变化。
(4)选择配置菜单中的“流⽔⽅式”选项,使模拟器⼯作于流⽔⽅式下。
(5)观察程序在流⽔⽅式下的执⾏情况,步骤如下:
1)选择“⽂件”→“载⼊程序”,加载pipeline.s(在模拟器所在⽂件夹下的“样例程
序”⽂件夹中)。
2)选择“配置”→“定向”(使该项前没有“√”),关闭“定向功能”。
3)选择单步执⾏⽅式(在“执⾏”菜单中)或按F7来执⾏该程序,观察每⼀个周期
流水线的工作原理
流水线的工作原理
流水线的工作原理是将一个任务拆分成多个子任务,并由多个处理单元按照顺序进行并行处理,从而实现提高任务处理效率的目的。
具体来说,流水线工作原理分为以下几个步骤:
1. 任务拆分:将一个任务分解成多个子任务,每个子任务具有一定的独立性,可以并行处理。
2. 指令执行阶段划分:将每个子任务划分为不同的阶段,每个阶段需要不同类型的处理单元进行处理。
3. 并行处理:每个处理单元在每个阶段对应的子任务上进行处理,各个处理单元同时工作,形成并行处理的效果。
4. 流水线寄存器:流水线中的每个阶段之间通过流水线寄存器进行数据传输,保证各个阶段之间的数据同步。
5. 流水线冲突处理:由于流水线中各个阶段同时进行,可能会出现数据相关等冲突,需要通过添加硬件逻辑或进行优化来解决这些冲突,以保证流水线的正常工作。
6. 结果合并:当所有子任务完成处理后,将各个处理单元输出的结果合并得到最终的任务结果。
通过以上步骤,流水线能够将一个任务分解并并行处理,充分利用硬件资源,提高任务处理的效率和速度。但是流水线也会因为流水线寄存器的引入,导致任务执行速度下降,同时需要处理冲突问题,因此需要根据具体情况进行流水线设计和优化。
3.3 流水线相关冲突及解决办法_v3.0
计算机体系结构
3.4 流水线的冲突
流水线冲突是指对于具体的流水线来说,由于相关 的存在,使得指令流中的下一条指令不能在指定的时钟 周期执行。 流水线冲突有3种类型: 结构冲突:因硬件资源满足不了指令重叠执行的 要求而发生的冲突。 数据冲突:当指令在流水线中重叠执行时,因需 要用到前面指令的执行结果而发生的冲突。 控制冲突:流水线遇到分支指令和其他会改变PC 值的指令所引起的冲突。
2.
北京信息科技大学
计算机体系结构
3.4 流水线的相关
指令j与指令i之间的名相关有两种:
反相关:如果指令j写的名与指令i读的名相同,则 称指令i和j发生了反相关。
指令j写的名=指令i读的名
输出相关:如果指令j和指令i写相同的名,则称指 令i和j发生了输出相关。
指令j写的名=指令i写的名
北京信息科技大学
北京信息科技大学
计算机体系结构
3.4 流水线的相关
当数据的流动是经过寄存器时,相关的检测比较 直观和容易。 当数据的流动是经过存储器时,检测比较复杂。 相同形式的地址其有效地址未必相同。 形式不同的地址其有效地址却可能相同。 名相关 名:指令所访问的寄存器或存储器单元的名称。 如果两条指令使用相同的名,但是它们之间并没有 数据流动,则称这两条指令存在名相关。
流水线及流水线中的冲突
计算机组成原理
实验报告
学院(系):软件学院
专业:软件工程
班级:大数据2班
学号:1415925131
姓名:王经伟
2016年11 月22 日
实验4 流水线及流水线中的冲突
一.实验目的
(1)理解计算机流水线基本概念。
对CPU内部的各条指令的执行方式的一种形容,要了解它,就必须先了解指令及其执行过程。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水。
(2)理解MIPS结构如何用5段流水线来实现。
(3)理解各段的功能和基本操作。
(4)加深对数据冲突、结构冲突的理解,理解这两类冲突对CPU性能的影响。(5)进一步理解解决数据冲突的方法,掌握如何应用定向技术来减少数据冲突引起的停顿。
数据冲突采用定向功能对RAW(先写后读)冲突所产生得影响,后推法以及定向技术对冲突有所改进;
二.实验内容和步骤
(1)、启动MIPSsim。
(2)、根据预备知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。(用鼠标双击各段,就可以看到各流水寄存器的内容)
(3)、参照MIPSsim模拟器使用说明,熟悉MIPSsim模拟器的操作和使用方法。
(4)、选择配置菜单中的“流水方式”选项,使模拟器工作于流水方式下。
(5)、观察程序在流水线中的执行情况,步骤如下:
1)选择MIPSsim的“文件”—>“载入程序”选项来加载pipeline.s。
2)关闭定向功能。这是通过“配置”—>“定向”。
3)用单步执行一个周期的方式执行该程序,观察每一个周期中,各段流水寄存器内容的变化、指令的执行情况(“代码”窗口)以及时钟周期图。
浅析流水线冲突及解决方案
4、指令相关
(3)控制相关 控制相关是指由分支指令引起的相关。它需
要根据分支指令的执行结果来确定后续指 令是否执行。一般说来,为确保程序应有 的执行顺序,必须严格按控制相关确定的 顺序执行
5、流水线冲突及解决方案
流水线冲突:指对于具体的流水线来说,由 于相关的存在,使得指令流中的下一条指 令不能在特定的时钟周期执行。
IF段
ID段
EX段
MEM段
WB段
IM
Reg
DM
Reg
ALU
流水寄存器
(1)取指令周期(IF):根据PC指示的地址从存储器 中取出指令并放入指令寄存器IR,同时PC值加4,指 向顺序的下一条指令。
(2)指令译码/读寄存器周期(ID):对指令进行译 码,并用IR中的寄存器编号去访问通用寄存器组。 (3)执行/有效地址计算周期(EX):AUL对在上一 周期准备好的操作数进行运算或处理。
流水线冲突有三种类型:结构冲突、数据冲 突、控制冲突。
5、流水线冲突及解决方案
(1)结构冲突 定义:因硬件资源满足不了指令重叠执行的
要求而发生的冲突。 解决方案: a、可以在前一个指令访问存储器时,将流水
线停顿一个时钟,推迟后面取指令的操作。 停顿周期称为“流水线气泡”。 b、在流水线处理机中设置相互独立的指令。 存储器和数据存储器
实验2 流水线与流水线中的冲突_实验报告
计算机系统结构实验报告
班级实验日期实验成绩姓名学号
实验名称实验2 流水线与流水线中的冲突
实验目的、要求1、加深对计算机流水线基本概念的理解;
2、理解MIPS结构如何用5段流水线来实现,理解各段的功能和基本操作;
3、加深对数据冲突、结构冲突的理解,理解这两类冲突对CPU性能的影响。
4、进一步理解解决数据冲突的方法,掌握如何应用定向技术来减少数据冲突引起的停顿。
实验内容、步骤及结果2.1观察程序在流水线中的执行情况(载入piplelines.s)
1、执行到第13个时钟周期,各段分别在处理的指令,画出这这时的时钟周期图
2、这时个流水寄存器中的内容为
IF/ID.IR=000000008CC4003C
IF/ID.NPC=0000000000000030
ID/EX.A=0000000000000000
ID/EX.B=0000000000000000
ID/EX.IMM=0000000000000019
ID/EX.IR=0000000020030019
EX/MEM.ALUOUT=0000000000000004
EX/MEM.IR=000000002021FFFF
MEM/WB.ALUOUT=0000000000000008
MEM/WB.IR=0000000020060008
MEM/WB.LMD=0000000000000000
2.2观察和分析结构冲突对CPU性能的影响(载入structure_hz.s)1、浮点加法器的个数改为1个
(1)导致结构冲突的部件加法器
(2)由结构冲突引起的停顿始终周期数35
流水线中的相关
的指令继续向前流动。
秦杰 郑丽萍 张庆辉
18/63
② DLX整数流水线中不会发生这种相关
(仅在WB段进行写操作) ③ 若对DLX作以下修改,则会发生WAW相 关:
◆ 把ALU操作指令的“写回”移到MEM
段
◆ 假设访问数据存储器需占用两拍
◆ 消除相关的基本方法:
让流水线中的某些指令暂停,而让其它
指令继续执行。
在本章中,我们约定:
当一条指令被暂停时,暂停在其后发射 (流出)的指令,但继续执行在其前发射的 指令。
秦杰 郑丽萍 张庆辉
2/63
3.3 流水线中的相关
3.3.1 流水线中的结构相关
1. 在流水线机器中,为了使各种指令组合能顺 利地重叠执行,需要把功能部件流水化,并 把资源重复设置。
秦杰 郑丽萍 张庆辉
16/63
3.3 流水线中的相关
(1) 写后读相关 (RAW) (命名规则) 在 i 写入之前,j 先去读。 j 读出的内容是错误的。 这是最常见的相关。 (2) 写后写相关 (WAW) 在 i 写入之前,j 先写。 最后写入的结果是 i 的,错误! ① 这种相关仅出现在这样的流水线中:
④ 复杂指令可能导致这种相关。
秦杰 郑丽萍 张庆辉
20/63
3.3 流水线中的相关
流水线注意事项
流水线注意事项
以下是流水线的一些注意事项:
1. 程序依赖:流水线上的指令需要按照正确的顺序执行,因为后续指令可能依赖于之前指令的结果。如果指令顺序不正确,可能会导致程序逻辑错误。
2. 数据冲突:流水线上的指令之间可能存在数据冲突,包括读后写冲突(RAW)、写后读冲突(WAR)和写后写冲突(WAW)。这些冲突可能会导致预测错误或者结果错误。
3. 管道阻塞:流水线中的某个阶段可能由于数据冲突、分支预测失败等原因导致阻塞,导致整个流水线停滞。这可能会降低流水线的性能。
4. 分支预测:流水线中的分支指令可能会导致流水线的预测错误,从而导致之后的指令无效。为了减少预测错误的影响,可以采用分支预测策略,如静态预测、动态预测等。
5. 异常处理:流水线中的异常指令可能会在执行过程中触发异常,如除零、越界等。需要设计相应的异常处理机制来正确处理这些异常情况。
6. 资源冲突:流水线中的某些阶段可能需要共享一些硬件资源,如寄存器、缓存等。如果多个指令同时需要使用同一个资源,可能会导致资源冲突,需要采取
合适的调度策略来避免冲突。
7. 指令冗余:流水线中的一些指令可能是无效的,如跳转指令的目标条件不满足时,后续的指令就是无效的。需要采取相应的方法来减少这种冗余。
8. 性能评估:设计流水线时,需要进行性能评估来确定流水线的吞吐量、延迟等指标。这将有助于优化设计和调整流水线参数。
这些注意事项在设计和优化流水线时需要考虑,以确保流水线的正确性和性能。
中央控制器(四)
分析k+2
执行k+2
t
取指k+2 取指k+1 取指k 分析k c 分析k+1 执行k
分析k+2 执行k+1
执行k+2
t
两次重叠执行方式 指令的几种执行方式
图12.3
如果取指令、分析指令、执行指令的时间都 相等,每段的时间都为t,则n条指令所用的 时间为: 顺序执行 T = 3 nt 一次重叠执行 T = ( 1 + 2 n ) t 两次重叠执行 T = ( n + 2 ) t 计算机组成原理 Slide
9/ 35
流水线的表示方法
• 流水线连接图表示法
入 取指令 译码 执行 存结果 出
Δt1
Δt2
Δt3
Δt4
图12.4 4段指令流水线 入 出
求阶差
对阶
尾数加
规格化
Δt
Δt
Δt
Δt
图12.5 浮点加法器流水线
计算机组成原理 Slide 10/ 35
流水线的表示方法
• 流水线时空图表示法
– 在时空图中,横坐标表示时间,也就是输入到流水线 中的各个任务在流水线中所经过的时间。当流水线中 各个流水段的执行时间都相等时,横坐标被分割成相 等长度的时间段。纵坐标表示空间,即流水线的每一 个流水段。
A B C D
实验一 流水线及流水线中的冲突
实验一流水线及流水线中的冲突
程元彬
PB12011076
实验目的
1.加深对计算机流水线基本概念的理解;
2.理解MIPS结构如何用5段流水线来实现,理解各段的功能和基本操作;
3.加深对数据冲突、结构冲突的理解,理解这两类冲突对CPU性能的影响;
4.进一步理解解决数据冲突的方法,掌握如何应用定向技术来减少数据冲突引起的停顿。
5.加深对指令调度和延迟分支技术的理解;
6.熟练掌握用指令调度技术来解决流水线中的数据冲突的方法;
7.进一步理解指令调度技术和延迟分支技术对CPU性能的改进。
实验平台
指令级和流水线操作级模拟器MIPSsim,
实验内容和步骤
首先要掌握MIPSsim模拟器的使用方法。
一、流水线及流水线中的冲突观察
1. 启动MIPSsim。
2.根据预备知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。(用鼠标双击各段,就可以看到各流水寄存器的内容)
3. 熟悉MIPSsim模拟器的操作和使用方法。
可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中),然后分别以单步执行一个周期、执行多个周期、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化,特别是流水寄存器内容的变化。
4. 勾选配置菜单中的“流水方式”,使模拟器工作于流水方式下。
5.观察程序在流水线中的执行情况,步骤如下:
(1)用MIPSsim的“文件”菜单中的“载入程序”来加载pipeline.s(在模拟器所在文
件夹下的“样例程序”文件夹中);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四流水线中的相关与冲突
4.1 实验目的
1.加深对数据冲突、结构冲突的理解;
2.进一步理解解决数据冲突的方法,掌握如何应用定向技术来减少数据冲突引起的停顿;
3.理解这两类冲突对CPU性能的影响,并进行性能分析和比较。
2.2 实验平台
指令级和流水线操作级模拟器MIPSsim
4.3 实验内容和步骤
1. 启动MIPSsim;
2.观察和分析结构冲突对CPU性能的影响,步骤如下:
(1)加载structure_hz.s(在模拟器所在文件夹下的“样例程序”文件夹中);
(2)执行该程序,找出存在结构冲突的指令对以及导致结构冲突的部件;
(3) 记录由结构冲突引起的停顿时钟周期数,计算停顿时钟周期数占总执行周期数的百分比;
(4)把浮点加法器的个数改为6个;
(5)再次重复上述(1)~(3)的工作;
(6)分析结构冲突对CPU性能的影响,讨论解决结构冲突的方法。
3. 观察数据冲突并用定向技术来减少停顿,步骤如下:
(1)把浮点加法器的个数改为1个;
(2)加载data_hz.s(在模拟器所在文件夹下的“样例程序”文件夹中);
(3)关闭定向功能。这是通过在“配置”菜单中去选“定向”(即使得该项前面没有“√”号)来实现的;
(4)用单步执行一个周期的方式(F7)执行该程序,同时查看时钟周期图,列出在什么时刻发生了RAW(先写后读)冲突;
(5)记录数据冲突引起的停顿时钟周期数以及程序执行的总时钟周期数,计算停顿时钟周期数占总执行周期数的百分比;
(6)复位CPU;
(7)打开定向功能。这是通过在“配置”菜单中勾选“定向”(即使得该项前面有一个“√”号)来实现的;
(8)用单步执行一周期的方式(F7)执行该程序,同时查看时钟周期图,列出在什么时刻发生了RAW(先写后读)冲突,并与(3)的结果进行比较;
(9)记录数据冲突引起的停顿时钟周期数以及程序执行的总时钟周期数。计算采用定向技术后性能提高的倍数。