流水线的多发射技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8 流水线技术(3)
张伟
计算机学院
大纲
.回顾上节内容
.流水线相关
.结构相关
.数据相关
.控制相关
.高级流水线技术
流水线性能分析
.吞吐率(throughput rate)
单位时间内流水线所完成的任务数或输出结果
的数量
.加速比(speedup ratio)
完成一批任务,使用非流水线执行时间与使用
流水线执行时间之比
.效率(efficiency)
(指流水线的设备利用率)从时空图看,就是
n个任务占用的时空区和m个段总的时空区之
比
流水线中的相关(1)
.流水线中存在一些冲突(冒险Hazard,相关、依
赖Dependence,竞争Competition)的情况,它使
得下一条指令无法在预定设计的时钟周期内执行
。这些冲突将降低流水线性能
.主要有三种类型的冲突(相关)
.结构相关(资源冲突):当指令重叠执行过程中,硬
件资源满足不了指令重叠执行的要求
.数据相关(数据冲突):在同时执行的多条指令中,
一条指令依赖前一条指令的执行结果(数据)
.控制相关(控制冲突):流水线遇到分支指令或其他
改变PC值的指令
结构相关
.1. 在流水线机器中,为了使各种指令组合能顺
利地重叠执行,需要把功能部件流水化,并把资
源重复设置。
.2. 如果某种指令组合因资源冲突而不能顺利重
叠执行,则称该机器具有结构相关。
.3. 常见的导致结构相关的原因:
.功能部件不是全流水
.重复设置的资源的份数不够
数据相关
.1. 数据相关简介
.当指令在流水线中重叠执行时,流水线有可能改变指
令读/写操作数的顺序,使之不同于它们在非流水实现
时的顺序,这将导致数据相关。
.举例
.当两条指令对存储器同一单元进行读写时,也可能发
生数据相关。但本章仅讨论有关寄存器的数据相关。
.2. 利用定向技术减少数据相关引起的暂停
.(1) 主要思路:在发生上述数据相关时,如果能够将计
算结果从其产生的地方直接送到需要它的地方,就可以
避免暂停。
.(2) 当定向硬件检测到前面某条指令的结果寄存器就是
当前指令的源寄存器时,控制逻辑会将前面那条指令的
结果直接从其产生的地方定向到当前指令所需的位置。
.(3)工作过程演示
.(4) 一个功能单元的输出不仅可以定向到其自身的输入
,而且还可以定向到其它单元的输入。
.(5)所有的定向发生在:(图示)
ALU或DM输出→ ALU输入,DM输入,“O”检测部件
D:\课件开发\chap3-fig1\arch65.gif
数据相关的分类
.按照指令对寄存器的读写顺序,可以将数据相
关分为以下三种类型:
.(考虑两条指令i和j,假
设i先进入流水线)
.(1) 写后读相关(RAW) (命名规则)
.在i写入之前,j 先去读。j 读出的内容是错误的
。这是最常见的相关。
.(2) 写后写相关(WAW)
.(3) 读后写相关(WAR)
D:\课件开发\chap3-fig1\arch56.gif
.4. 需要暂停的数据相关
.(1) 并非所有的数据相关都可以用定向技术解
决.举例
.(2) 增加流水线互锁硬件,插入“暂停”。
当互锁硬件发现这种相关时,就
暂停流水线,直到相关消失。
举例:演示A(流水线)演示B(时空图)
D:\课件开发\chap3-fig1\arch58.gif
D:\课件开发\chap3-fig1\arch59.gif
D:\课件开发\chap3-fig1\arch60.gif
3.3 流水线中的相关
流水线的控制相关
.分支指令主要有:
.无条件分支指令:跳转、过程调用和过程返回
.条件分支指令
.执行分支指令,程序计数器PC值两种情况:
.PC值改变为目标地址(转移成功)
.PC值保持正常(转移失败,顺序执行)
.PC值不定,所以流水线需要暂停,直到确定
了新的PC值为止
.在DLX流水线中,分支转移成功导致暂停3个
时钟周期。
D:\课件开发\chap3-fig1\arch67.gif
.处理分支指令最简单的方法
.一旦检测到分支指令(在ID段),就暂停执行其后的
指令,直到分支指令到达MEM段,确定出新的PC
值为止。
.减少流水线处理分支指令时的暂停周期数:
.流水线中尽早判断出转移成功或转移失败
.判断往前移
.尽早计算出转移成功的分支目标地址
.多个加法器部件
D:\课件开发\chap3-fig1\arch68.gif
降低流水线分支损失的方法
.4种简单的静态方法,编译时预测
.(1)冻结(Freeze)或排空(Flush)流水线
.暂停流水线直到分支目标地址确定
.(2)预测分支失败
.继续执行分支指令之后的指令
.在知道分支结果之前,分支指令后的指令不能改变机器状态
,或者改变了之后能够回退。
.若分支失败,则照常执行;否则,从转移目标处开始取指令
执行。
.DLX流水线的处理过程
5段MIPS改进后采用“预测分支失败”,分支
失败无停顿,分支成功有一个时钟周期的停顿;
还可以采用一条延迟指令槽的延迟分支方法
.(3)预测分支成功
.目标地址计算出之后,就开始执行目的地址处的指令
.起作用的前题:先知道分支目标地址,后知道分支是否成功。
.对DLX流水线没有任何好处。
.(4)延迟分支(Delayed Branch)
.把分支开销为n 的分支指令看成是延迟长度为n 的分支指令,其后
紧跟有n 个延迟槽Branch-delay Slot 。流水线遇到分支指令时,
按正常方式处理,顺带执行延迟槽中的指令,从而减少分支开销
。
.延迟分支以及指令的执行
顺序
.分支延迟槽中的指令“掩盖”了流水线原来必需插入的暂停周期
.分支延迟指令的调度
.任务:在延迟槽中放入有用的指令
.糟糕的情况:在延迟槽放置空操作NOP指令
.较好的情况:从分支指令前找到指令放置在延迟槽中,且不影响程序
D:\课件开发\chap3-fig1\arch72.gif
高级流水线技术
.超标量流水线
.超流水线
.超标量超流水线
单发射与多发射(issue)
单发射处理机:
每个周期只取一条指令、只译码一条指令,只执行一条指令,只写回一
个运算结果。
取指令部件和指令译码部件各设置一套;
只设置一个多功能操作部件或设置多个独立的操作部件;
操作部件中可以采用流水线结构,也可以不采用流水线结构。
目标是每个时钟周期平均执行一条指令,ILP的期望值为1。
多发射处理机:
每个周期同时取多条指令、同时译码多条指令,同时执行多条指令,同
时写回多个运算结果。
需要多个取指令部件,多个指令译码部件和多个写结果部件。
设置多个指令执行部件,有些指令执行部件采用流水线结构。
目标是每个时钟周期平均执行多条指令,ILP的期望值大于1。
单发射处理机的指令流水线时空图
1 2 3 4 5 6
I1 IF ID EX WR 时钟周期
I2 IF ID EX WR
I3 IF ID EX WR
指令
多发射处理机的指令流水线时空图
1 2 3 4 5 6
I1 IF ID EX WR 时钟周期
I2 IF ID EX WR
I3 IF ID EX WR
I4 IF ID EX WR
I5 IF ID EX WR
I6 IF ID EX WR
I7 IF ID EX WR
I8 IF ID EX WR
I9 IF ID EX WR
指令
. 单发射处理机的指令流水线
取指令指令译码执行指令EX写回结果
FA1FA2FA3
浮点加法部件
来自指令
CacheIFIDMD1MD2MD3WR通用寄存器
后行写数栈
乘除法部件
AL
定点算术逻辑部件
LS
取数存数部件
. 同时发射两条指令的多发射处理机的指令流水线
取指令指令译码执行指令写回结果
FA1FA2FA3
浮点加法部件
来自指令
CacheIF1ID1MD1MD2MD3WR1通用寄存器
后行写数栈
乘除法部件
来自指令
CacheIF2ID2ALWR2通用寄存器
后行写数栈
定点算术逻辑部件
LS
取数存数部件
多指令流出技术
.将等于1的理想CPI减小,必须实现一个时钟
周期发射(流出issue)多条指令
.超标量(Superscalar)处理器:每个时钟周期发射多条
指令(1~8),可以采用编译器进行静态调度顺序执
行,也可以采用硬件动态调度乱序执行
.超长指令字(VLIW: Very Long Instruction Word):通
过编译器调度无关的多条指令(4~16)形成一条长
指令,每个时钟周期发射一条长指令
.超级流水线(Super pipelining):将每个功能部件进一
步流水化,使得一个功能部件在一个时钟周期中可以
处理多条指令(
可以简单地理解为很长的流水线)
多发射流水线
0
1
2
3
4
5
6
7
T
正常流水线
超标量流水线
0
1
2
3
4
5
6
T
0
1
2
3
4
5
6
T
超长指令字流水线
3个操作
0
1
2
3
4
5
6
7
T
超级流水线
三种主流处理机:
超标量处理机:Intel公司的i860、i960、
Pentium处理机,Motolora公司的MC88110,IBM
公司的Power 6000,SUN公司的SPARC、
SuperSPARC、UltraSPARC等。
超流水线处理机:SGI公司的MIPS R4000、R5000、
R10000等。
超标量超流水线处理机:DEC公司的Alpha等。
超标量处理机基本结构
一般流水线处理机:
一条指令流水线,
一个多功能操作部件,
每个时钟周期平均执行指令的条数小于1。
多操作部件处理机:
一条指令流水线,
多个独立的操作部件,可以采用流水线,也可以不流水。
多操作部件处理机的指令级并行度小于1。
超标量处理机典型结构:
多条指令流水线。
先进的超标量处理机有:定点处理部件CPU,浮点处理部件FPU,图形加速
部件GPU,大量的通用寄存器,两个一级Cache。
超标量处理机的指令级并行度(ILP)大于1。