计算机体系结构第5章
为了进一步提高处理机的指令级并行度,可以把超标量技术 与超流水线技术结合在一起,这就是超标量流水线处理机。 两种定义:
一个周期内能够分时发射多条指令的处理机称为超流水 线处理机指令流水线有8个或更多功能段的流水线处理机称 为超流水线处理机 提高处理机性能的不同方法: 超标量处理机是通过增加硬件资源为代价来换取处理机性能 的 超流水线处理机则通过各硬件部件充分重叠工作来提高处理 机性能 两种不同并行性: 超标量处理机采用的是空间并行性 超流水线处理机采用的是时间并行性
(2) 两个独立的存储器:独立的指令存储器和数据存储器。如果再规 定,执行指令所需要的操作数和执行结果只写到通用寄存器,那 么,取指令、分析指令和执行指令就可以同时进行。
(3)采用先行控制技术。
先行控制技术的关键是缓冲技术和预处理技术。缓冲技术是在工 作速度不固定的两个功能部件之间设置缓冲栈,用以平滑它们的 工作。在采用了缓冲技术和预处理技术之后,运算器能够专心于 数据的运算,从而大幅度提高程序的执行速度。
流水线需要有“装入时间”和“排空时间”
4. 流水线的特点
在处理机中采用流水线方式与采用传统的串行方式相比具 有如下特点:
(1)在流水线中处理的必须是连续任务,只有连续不断地提供任务才 能充分发挥流水线的效率。
(2)把一个任务分解成几个有联系的子任务,每个子任务由一个专门 的功能部件来实现。
(3)在流水线的每个功能部件的后面都要有一个缓冲寄存器,用于保 存本段的执行结果。
5.3.2 单发射与多发射
单发射处理机: 每个周期只取一条指令、只译码一条指令,只执行一条指令,只写
回一个运算结果 取指部件和译码部件各设置一套 可以只设置一个多功能操作部件,也可以设置多个独立的操作部件
操作部件中可以采用流水线结构,也可以不采用流水线结构 设计目标是每个时钟周期平均执行一条指令,ILP的期望值1
1、指令执行时序
每隔1/n个时钟周期发射一条指令,流水线周期为1/n个时钟周期
在超标量处理机中,流水线的有些功能段还可以进一步细分
例如:ID功能段可以再细分为译码、读第一操作数和读第二操作数三个 流水段。也有些功能段不能再细分,如WR功能段一般不再细分。因此 有超流水
线的另外一种定义:有8个或8个以上流水段的处理机称为超流水线处理 机
1.吞吐率
流水线的吞吐量(thoughput rate,TP)是指在单位时间 内流水线所完成的任务数量或输出的结果数量。
TP = n/Tk
2.加速比
完成一批任务,不使用流水线所用的时间与使用流水线
所用的时间之比称为流水线的加速比(speedup ratio)。 如果不使用流水线的时间为T0 ,使用流水线的执行时间 为Tk,则流水线的加速比为:
4.缓冲深度的设计
“缓冲深度”即各个缓冲栈中的缓冲寄存器个数。
静态分析是通过分析两种极端情况来计算缓冲深度。 一种极端情况是:先行指令缓冲栈从完全充满到全部被
取空的过程。 另一种极端情况是:先行指令缓冲栈从完全空到全部被
充满的过程。
通常在一般程序中,执行时间短的指令所占的比例要远远 大于执行时间长的指令。所以一般采用第一种情况来计算 缓冲深度。
当有多条指令要在处理机中执行时,可以有多种执行方式 : 1、顺序执行方式 执行n条指令所用的时间为:
如果每段时间都为t,则执行n条指令所用 的时间为:T=3nt
主要优点:控制简单,节省设备。 主要缺点:执行指令的速度慢,功能部件的利用率很低。
2.一次重叠执行方式 一种最简单的流水线方式
如果两个过程的时间相等,则执行n条指令的时间为: T=(1+2n)t
一条流水线只能完成一种固定的功能,称为单功能流水 线。流水线的各段可以进行不同的连接,实现不同的功能 称为多功能流水线。 4.静态流水线与动态流水线
按照在同一时间内是否能够连接成多种方式,同时执行 多种功能,可以把流水线分为静态流水线和动态流水线。
n Tk
5.2.3 线性流水线的性能分析
衡量流水线的主要指标有吞吐率、加速比和效率。
1. 处理机结构
如图5.3所示,只要在处理机内部设置一定容量的指令 缓冲栈,把指令分析器所需要的指令事件取到缓冲栈 中,而不必访问主存储器。这样就能够使取指令、分 析指令和执行指令重叠起来执行。
2. 指令执行时序
采用先行控制方式,在理想情况下,指令执行部件应
该一直是忙碌的,因此,处理机连续执行n条指令所需
对于指令流水线:要尽量减少因条件分支造成的“断流” 对于操作部件:主要通过编译技术,尽量提供连续的同类操作
在流水线的每一个流水线段中都要设置一个流水锁存 器
时间开销:流水线的执行时间加长是流水线中需要增加的主要硬件之 一
各流水段的时间应尽量相等
流水线处理机的基本时钟周期等于时间最长的流水段的时间长度
(4)流水线中各段的时间应尽量相等,否则将引起“堵塞”、“断流” 等。
(5)流水线需要有“装入时间”和“排空时间”。
5.2.2 流水线的分类
1.线性流水线与非线性流水线 按照流水线的各个功能段之间是否有反馈信号,可以把
流水线分为线性流水线和非线性流水线两类。 2.流水线的级别
按照流水线使用的不同级别,可以把流水线分为功能部 件级、处理机级和处理机间级等多种类型。 3.单功能与多功能流水线
2.主存操作数相关
如果发生: 结果地址(k)= 主存操作数地址(k+1) 则发生主存操作数相关。解决主存操作数相关一般采用推后处理法。
3.通用寄存器数据相关
看下面两条指令: k: OP R1 , A2 ; R1=( R1)OP(A2) k+1: OP R1 , R2 ; R1=( R1)OP(R2) 如果发生:
S = T0/Tk
3.效率
流水线的效率是指流水线的设备利用率。
5.2.4 非线性流水线的调度技术
1.非线性流水线的表示 2.非线性流水线的冲突 3.无冲突调度方法 4.优化调度方法
5.2.5局部相关 1. 顺序流动与乱序流动 2. 数据相关及其避免方法 3.数据重定向
5.3 超标量处理机与超流水线处理机 5.3.1 超标量处理机
R1(k) = R1(k+1) 则称为R1数据相关。 如果发生:
R1(k) = R2(k+1) 则称为R2数据相关。 解决通用寄存器数据相关一般有如下几种方法:
(1)不设置缓冲寄存器或锁存器。 (2)分析指令推后一个周期执行。 (3)分析指令仅推后一个节拍。 (4)设置专用数据通路。
4.变址相关
由于在变址寄存器中存放的变址量在指令分析过程中要 用它来计算有效地址,因此与通用寄存器的数据相关累死,也 可能发生变质相关,解决方法也类似。
3、 超流水线处理机性能
指令级并行度为(1,n)的超流水线处理机,执行N条指令所的 时间为:
超流水线处理机相对于单流水线普通标量处理机的加速比为:
重点、难点提示和教学手段
重点: 先行控制技术、流水线原理及分析方发。 难点: 非线性流水线的表示及调度技术。
采用二次重叠执行方式,必须解决两个问题:
(1)有独立的取指令部件、指令分析部件和指令执行部件独立的控制 器:存储控制器、指令控制器、运算控制器
(2)要要访问存储器
解决访存冲突的方法:
(1)采用低位交叉存取方式:这种方法不能根本解决冲突问题。取指 令、读操作数、写结果。
主要优点: 指令的执行时间缩短 功能部件的利用率明显提高
主要缺点: 需要增加一些硬件 控制过程稍复杂
3、二次重叠执行方式 如果三过程的时间相等,执行n条指令的时间为:T=(2+n)t
理想情况下同时有三条指令在执行处理机的结构要作比较 大的改变,必须采用先行控制方式
5.1.2 先行控制方式的原理和结构
1. 从重叠到流水线 一次重叠执行方式就是一种简单的指令流水线。
2、流水线的时空图
一条简单流水线的时空图:
一个浮点加法器流水线的时空图(由求阶差、对阶、尾数加和规格化4个 流水段组成):
NL:规格化MA:尾数加 EA:对阶ED:求阶差
3、流水线的主要特点
只有连续提供同类任务才能充分发挥流水线的效率:
1.基本结构 一般流水线处理机: 一条指令流水线, 一个多功能操作部件, 每个时钟周期平均执行指令的条数小于1。 多操作部件处理机: 一条指令流水线, 多个独立的操作部件,操作部件可以采用流水线,也可以不流水。 多操作部件处理机的指令级并行度小于1。
超标量处理机典型结构: 多条指令流水线
先进的超标量处理机有:定点处理部件CPU,浮点处理部件FPU,图形加速 部件GPU 大量的通用寄存器,两个一级高速Cache 超标量处理机的指令级并行 度大于1
5.1.3 数据相关
所谓相关是指在一段程序的相近指令之间有某种关系,这种关系 可能影响指令的重叠执行。分为两大类:数据相关和控制相关。 本节主要介绍数据相关,下一节介绍控制相关。 数据相关分为四种:指令相关、主存操作数相关、通用寄存器相关和变 址相关。
1.指令相关
第k+1条指令本身的内容取决于第k条指令的执行结果,则产生指令 相关。 解决指令相关的根本办法是在程序设计中不允许修改指令。
的时间为:
T先行 = t分析1 + ∑t执行i ≈ ∑t执行
3.先行缓冲栈
在采用先行控制方式的处理机中,一般要设置四个先行缓冲栈,如图 5.3所示,作用如下:
(1)先行指令缓冲栈: 作为主存储器与指令分析器之间的一个缓冲部件,用于平滑主存储器和 指令分析器的工作。 (2)先行操作栈: 指令分析器对已经存放在先行指令缓冲栈里的指令进行预处理,把处理 之后的指令送入该栈。各种运算型指令、移位指令、数据传送指令等都要 先处理成寄存器-寄存器型(RR型)指令,然后送入先行操作栈。 (3)先行读数栈: 由一组缓冲寄存器和有关控制逻辑等组成。每一个缓冲寄存器由三部 分组成,包括先行地址缓冲寄存器、先行操作数缓冲寄存器和标志字段。 它是主存储器与运算器之间的一种缓冲存储器,把后续指令要用到的操作 数“先行”取出。 (4)后行写数栈 也由一组缓冲寄存器和有关控制逻辑组成。每一个缓冲寄存器必须包括后 行地址缓冲寄存器、后行数据缓冲寄存器和标志字段。其中的后行地址缓 冲寄存器和后行数据缓冲寄存器不能合用。