计算机系统结构-第3章(2015年-second)

上传人:n**** 文档编号:50867996 上传时间:2018-08-11 格式:PPT 页数:60 大小:1.28MB
返回 下载 相关 举报
计算机系统结构-第3章(2015年-second)_第1页
第1页 / 共60页
计算机系统结构-第3章(2015年-second)_第2页
第2页 / 共60页
计算机系统结构-第3章(2015年-second)_第3页
第3页 / 共60页
计算机系统结构-第3章(2015年-second)_第4页
第4页 / 共60页
计算机系统结构-第3章(2015年-second)_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《计算机系统结构-第3章(2015年-second)》由会员分享,可在线阅读,更多相关《计算机系统结构-第3章(2015年-second)(60页珍藏版)》请在金锄头文库上搜索。

1、1/60计算机系统结构讲义第3章 流水线技术讲解者:刘东波联系方式:138759760452/60计算机系统结构讲义3.1流水线的基本概念3.2流水线的性能指标3.3流水线的相关与冲突 3.4流水线的实现3.5向量处理机本章内容3/60计算机系统结构讲义1流水线的相关与冲突2流水线的实现3本讲小结本讲主要内容4/60计算机系统结构讲义重点与难点重点经典5段流水线的定义流水线3种相关的含义流水线3种冲突的含义及其解决方法MIPS流水线的简单实现难点解决数据冲突和控制冲突的方法MIPS流水线的简单实现5/60计算机系统结构讲义介绍一个经典的5段RISC流水线 首先讨论在非流水情况下是如何实现的一条

2、指令的执行过程分为以下5个周期:取指令周期(IF)qIR MemPC 。 qPC值加4。(假设每条指令占4个字节) 3.3 流水线的相关与冲突3.3.1 一个经典的5段流水线6/60计算机系统结构讲义3.3 流水线的相关与冲突指令译码/读寄存器周期(ID)q译码。q用IR中的寄存器编号去访问通用寄存器组,读出所需 的操作数。执行/有效地址计算周期(EX)不同指令所进行的操作不同:q存储器访问指令:ALU把所指定的寄存器的内容与偏移量相加,形成用于访存的有效地址。q寄存器寄存器ALU指令:ALU按照操作码指定的操作对从通用寄存器组中读取的数据进行运算。7/60计算机系统结构讲义3.3 流水线的相

3、关与冲突q寄存器立即数ALU指令:ALU按照操作码指定的操作对从通用寄存器组中读取的第一操作数和立即数进行运算。q分支指令:ALU把偏移量与PC值相加,形成转移目标的地址。同时,对在前一个周期读出的操作数进行判断,确定分支是否成功。存储器访问分支完成周期(MEM)该周期处理的指令只有load、store和分支指令。其他类型的指令在此周期不做任何操作。8/60计算机系统结构讲义3.3 流水线的相关与冲突qload和store指令load指令:用上一个周期计算出的有效地址从存储器中读出相应的数据。store指令:把指定的数据写入这个有效地址所指出的存储器单元。q分支指令分支“成功”,就把转移目标地

4、址送入PC。分支指令执行完成。9/60计算机系统结构讲义3.3 流水线的相关与冲突写回周期(WB)ALU运算指令和load指令在这个周期把结果 数据写入通用寄存器组。ALU运算指令:结果数据来自ALU。load指令:结果数据来自存储器系统。在这个实现方案中:p分支指令需要4个时钟周期(如果把分支指令的执行提前到ID周期,则只需要2个周期)。pstore指令需要4个周期。p其他指令需要5个周期才能完成。10/60计算机系统结构讲义2. 将上述实现方案修改为流水线实现一个经典的5段流水线 q每一个周期作为一个流水段。q在各段之间加上锁存器(流水寄存器)。 11/60计算机系统结构讲义3.3 流水线

5、的相关与冲突5段流水线的两种描述方式q第一种描述(类似于时空图)12/60计算机系统结构讲义 第二种描述(按时间错开的数据通路序列)13/60计算机系统结构讲义3. 采用流水线方式实现时,应解决以下几个问题:要保证不会在同一时钟周期要求同一个功能段做两件不同的工作。例如,不能要求ALU同时做有效地址计算和算术运算。避免IF段的访存(取指令)与MEM段的访存(读/ 写数据)发生冲突。q可以采用分离的指令存储器和数据存储器;q一般采用分离的指令Cache和数据Cache。ID段和WB段都要访问同一寄存器文件。ID段:读 WB段:写3.3 流水线的相关与冲突14/60计算机系统结构讲义3.3 流水线

6、的相关与冲突如何解决对同一寄存器的访问冲突?把写操作安排在时钟周期的前半拍完成,把读操作安排在后半拍完成。考虑PC的问题q流水线为了能够每个时钟周期启动一条新的指令,就必须在每个时钟周期进行PC值的加4操作,并保留新的PC值。这种操作必须在IF段完成,以便为取下一条指令做好准备。(需设置一个专门的加法器)q但分支指令也可能改变PC的值,而且是在MEM段进行,这会导致冲突。请考虑一下,如何处理分支指令?15/60计算机系统结构讲义3.3 流水线的相关与冲突相关:两条指令之间存在某种依赖关系。如果两条指令相关,则它们就有可能不能在流水线中重叠执行或者只能部分重叠执行。相关有3种类型q数据相关(也称

7、真数据相关)q名相关q控制相关3.3.2 相关与流水线冲突1. 相关16/60计算机系统结构讲义3.3 流水线的相关与冲突(1)数据相关 对于两条指令i(在前,下同)和j(在后,下同 ),如果下述条件之一成立,则称指令j与指令i 数据相关。 q指令j使用指令i产生的结果;q指令j与指令k数据相关,而指令k又与指令i数据相关 。数据相关具有传递性。数据相关反映了数据的流动关系,即如何从其产生者流动到其消费者。 17/60计算机系统结构讲义3.3 流水线的相关与冲突例如:下面这一段代码存在数据相关。Loop: L.D F0,0(R1)/ F0为数组元素ADD.D F4,F0,F2/ 加上F2中的值

8、S.D F4,0(R1)/ 保存结果DADDIU R1,R1,8/ 数组指针递减8个字节BNE R1,R2,Loop/ 如果R1R2,则分支 18/60计算机系统结构讲义3.3 流水线的相关与冲突当数据的流动是经过寄存器时,相关的检测比较直观和容易。当数据的流动是经过存储器时,检测比较复杂。q相同形式的地址其有效地址未必相同。q形式不同的地址其有效地址却可能相同。(2)名相关名:指令所访问的寄存器或存储器单元的名称。如果两条指令使用相同的名,但是它们之间并没 有数据流动,则称这两条指令存在名相关。19/60计算机系统结构讲义3.3 流水线的相关与冲突指令j与指令i之间的名相关有两种:q反相关:

9、如果指令j写的名与指令i读的名相同,则称指令i和j发生了反相关。指令j写的名指令i读的名q输出相关:如果指令j和指令i写相同的名,则称指令i和j发生了输出相关。指令j写的名指令i写的名20/60计算机系统结构讲义3.3 流水线的相关与冲突名相关的两条指令之间并没有数据的传送。如果一条指令中的名改变了,并不影响另外一条指令的执行。换名技术q换名技术:通过改变指令中操作数的名来消除名相关。q对于寄存器操作数进行换名称为寄存器换名。既可以用编译器静态实现,也可以用硬件动态完成。21/60计算机系统结构讲义3.3 流水线的相关与冲突例如:考虑下述代码: DIV.DF2,F6,F4ADD.DF6,F0,

10、F12SUB.DF8,F6,F14DIV.D和ADD.D存在反相关。进行寄存器换名(F6换成S)后,变成:DIV.DF2,F6,F4ADD.DS,F0,F12SUB.DF8,S,F14 22/60计算机系统结构讲义3.3流水线的相关与冲突(3)控制相关 控制相关是指由分支指令引起的相关。q为了保证程序应有的执行顺序,必须严格按控制相关确定的顺序执行。典型的程序结构是“if-then”结构。请看一个示例:if p1 S1; S; if p2 S2;23/60计算机系统结构讲义3.3 流水线的相关与冲突控制相关带来了以下两个限制:q与一条分支指令控制相关的指令不能被移到该分支之前,否则这些指令就不

11、受该分支控制了。对于上述的例子,then 部分中的指令不能移到if语句之前。 q如果一条指令与某分支指令不存在控制相关,就不能把该指令移到该分支之后。对于上述的例子,不能把S移到if语句的then部分中。24/60计算机系统结构讲义3.3 流水线的相关与冲突流水线冲突是指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。流水线冲突有3种类型:q结构冲突:因硬件资源满足不了指令重叠执行的要求而发生的冲突。q数据冲突:当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的冲突。q控制冲突:流水线遇到分支指令和其他会改变PC值的指令所引起的冲突。2.流

12、水线冲突25/60计算机系统结构讲义3.3 流水线的相关与冲突带来的几个问题:导致错误的执行结果。流水线可能会出现停顿,从而降低流水线的效率和实际的加速比。我们约定当一条指令被暂停时,在该暂停指令之后流出的所有指令都要被暂停,而在该暂停指令之前流出的指令则继续进行(否则就永远无法消除冲突)。26/60计算机系统结构讲义3.3 流水线的相关与冲突(1)结构冲突在流水线处理机中,为了能够使各种组合的指令都能顺利地重叠执行,需要对功能部件进行流水或重复设置资源。如果某种指令组合因为资源冲突而不能正常执行,则称该处理机有结构冲突。常见的导致结构相关的原因:q功能部件不是完全流水q资源份数不够27/60

13、计算机系统结构讲义3.3 流水线的相关与冲突结构冲突举例:访存冲突有些流水线处理机只有一个存储器,将数据和指令放在一起,访存指令会导致访存冲突。q解决办法:插入暂停周期(“流水线气泡”或“气泡”)引入暂停后的时空图q解决方法: 设置相互独立的指令存储器和数据存储器或设置相互独立的指令Cache和数据Cache。28/60计算机系统结构讲义3.3 流水线的相关与冲突由于访问同一个存储器而引起的结构冲突 29/60计算机系统结构讲义3.3 流水线的相关与冲突为消除结构冲突而插入的流水线气泡 30/60计算机系统结构讲义3.3 流水线的相关与冲突引入暂停后的时空图指令编号 时钟周期 12345678

14、910指令i IF ID EX MEM WB 指令i+1 IF ID EX MEM WB 指令i+2 IF ID EX MEM WB WB 指令i+3 stall IFID EX MEM WB 指令i+4 IFID EX MEM WB 指令i+5 IFIDEX MEM 31/60计算机系统结构讲义3.3 流水线的相关与冲突有时流水线设计者允许结构冲突的存在主要原因:减少硬件成本q如果把流水线中的所有功能单元完全流水化,或者重复设置足够份数,那么所花费的成本将相当高。(2)数据冲突 当相关的指令靠得足够近时,它们在流水线中的重叠执行或者重新排序会改变指令读/写操作数的顺序,使之不同于它们非流水实

15、现时的顺序,则发生了数据冲突。32/60计算机系统结构讲义3.3 流水线的相关与冲突举例:DADD R1,R2,R3DSUB R4,R1,R5XOR R6,R1,R7AND R8,R1,R9OR R10,R1,R1133/60计算机系统结构讲义3.3 流水线的相关与冲突流水线的数据冲突举例 34/60计算机系统结构讲义3.3 流水线的相关与冲突根据指令读访问和写访问的顺序,可以将数据冲突分为3种类型。考虑两条指令i和j ,且i在j之前进入流水线,可能发生的数据冲突有:q写后读冲突(RAW)在 i 写入之前,j 先去读。j 读出的内容是错误的。这是最常见的一种数据冲突,它对应于真数据相关 。 3

16、5/60计算机系统结构讲义3.3 流水线的相关与冲突q写后写冲突(WAW)在 i 写入之前,j 先写。最后写入的结果是 i 的。错误!这种冲突对应于输出相关。写后写冲突仅发生在这样的流水线中:n流水线中不只一个段可以进行写操作。n当先前某条指令停顿时,允许其后续指令继续前进。前面介绍的5段流水线不会发生写后写冲突。(只在WB段写寄存器) 36/60计算机系统结构讲义3.3 流水线的相关与冲突q读后写冲突(WAR) 在 i 读之前,j 先写。i 读出的内容是错误的!由反相关引起。这种冲突仅发生在这样的情况下:n有些指令的写结果操作提前了,而且有些指令的读操作滞后了。n指令被重新排序了。读后写冲突在前述5段流水线中不会发生。(读操作(在ID段)在写结果操作(在WB段)之前)37/60计算机系统结构讲义3.3 流水线的相关与

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号