计算机系统结构:Pipelining 基本流水线技术

如何让程序运行更快?
CPU性能公式:CPU时间 = CPI × 所执行的指令条数 × 时钟周期时间
在这里插入图片描述
关于流水线的几个问题:
Pipeline Hazard(Data hazard、structure hazard、control)
流水线的性能评价
非线性流水线调度
程序的基本块
分支预测
静态调度:循环展开
动态调度:计分牌&Tomasulo算法

基本流水线技术

流水线的思想
在这里插入图片描述
如果顺序操作
在这里插入图片描述
如果流水线操作
在这里插入图片描述

流水线工作原理(review)

  1. 流水锁存器
    流水线的每一个阶段称为流水步、流水段、流水功能段、功能段、流水级、流水节拍等在每一个流水段的末尾或开头必须设置一个(多个)寄存器,称为:流水寄存器、流水锁存器、流水闸门寄存器等
    流水锁存器会增加每条指令的执行时间,但采用流水线之后整个程序的执行时间会缩短(为了简化,在一般流水线中不画出流水锁存器)
    在这里插入图片描述

  2. 流水线的表示方法
    连接图表示-表示流水线的逻辑关系
    在这里插入图片描述
    在这里插入图片描述
    时空图表示-表示流水线的时间关系
    预约表表示-后面介绍

  3. 流水线时空图
    一条简单流水线的时空图
    在这里插入图片描述
    一个浮点加法器流水线的时空图
    由求阶差、对阶、尾数加和规格化4个流水段组成
    在这里插入图片描述
    传统的流水线执行表示
    在这里插入图片描述

  4. 流水线的主要特点
    只有连续提供同类任务才能充分发挥流水线的效率。
    对于指令流水线:要尽量减少因条件分支造成的“断流”
    对于操作部件:主要通过编译技术,尽量提供连续的相同类型的操作。

    在流水线的每一个流水线段中都要设置一个流水锁存器
    导致流水线的执行时间加长,是流水线中需要增加的主要硬件之一。

    各流水段的时间应尽量相等。
    流水线处理机的基本时钟周期等于时间最长的流水段的时间长度。
    流水线需要有“通过时间”和“排空时间”

为什么采用流水线呢?因为有资源空闲
在这里插入图片描述
单时钟周期、多时钟周期、流水线的比较:
在这里插入图片描述
Load指令的五个阶段
在这里插入图片描述
Iftech:取指,从指令存储器中获取指令
Reg/Dec:获取寄存器,指令译码
Exec:计算内存地址
Mem:从数据存储器中读取数据
Wr:向寄存器文件写回数据

理想的加速比是流水线的段数,我们能够获得这个加速比吗?
在这里插入图片描述
数据通路
在这里插入图片描述
要将数据通路分割成不同的阶段,需要增加些什么?
流水线数据通路
在这里插入图片描述
LOAD延迟
在这里插入图片描述
5-级 RISC 处理器
在这里插入图片描述
5-stage RSIC 处理器新思路?
在这里插入图片描述
程序中的相关与流水线中的冲突
在这里插入图片描述
流水线的早期应用
流水线技术在50年代后期被应用于处理器设计
IBM Stretch—first general-purpose pipelined computer
CDC 6600 use load/store design to achieve efficient pipelining.

流水线的分类

  1. 线性流水线与非线性流水线
    流水线的各个流水段之间是否有反馈信号
    线性流水线(Linear Pipelining):
    每一个流水段都流过一次,而且仅流过一次。
    非线性流水线(Nonlinear Pipelining):
    在流水线的某些流水段之间有反馈回路或前馈回路。
    线性流水线能够用流水线连接图唯一表示
    非线性流水线必须用流水线连接图流水线预约表等共同表示
    在这里插入图片描述

  2. 按照流水线的级别来分
    处理机级流水线,又称为指令流水线。
    例如:在采用线性控制器的处理机中,各功能部件之间的流水线
    在这里插入图片描述
    部件级流水线(操作流水线),如浮点加法器流水线
    在这里插入图片描述
    处理机之间的流水线称为宏流水线(Macro Piplining)
    每个处理机对同一个数据流的不同部分分别进行处理
    在这里插入图片描述

  3. 单功能流水线和多功能流水线
    单功能流水线:只能完成一种固定功能的流水线。
    Cray-1 计算机共有12条
    Pentium有一条5段的定点和一条8段的浮点流水线。
    Pentium有两条定点指令流水线,一条浮点指令流水线。

    流水线的各段通过不同的连接实现不同的功能。
    Texas公司的ASC计算机中的8段流水线,能够实现:
    定点加减法、定点乘法、
    浮点加法、浮点乘法、
    逻辑运算、移位操作、
    数据转换、向量运算等。
    在这里插入图片描述

  4. 静态流水线与动态流水线
    静态流水线:同一段时间内,多功能流水线中的各个功能段只能按照一种固定的方式连接,实现一种固定的功能。
    只有连续出现同一种运算时,流水线的效率才能得到充分的发挥。
    在这里插入图片描述
    动态流水线:在同一段时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。
    在这里插入图片描述

  5. 流水线的其它分类方法
    按照数据表示方式:标量流水线和向量流水线
    按照控制方式:同步流水线和异步流水线
    在这里插入图片描述
    顺序流水线与乱序流水线(又称为无序流水线、错序流水线、异步流水线等)

线性流水线的性能分析

衡量流水线性能的主要指标有:吞吐率、加速比、效率。

  1. 吞吐率(Though Put)
    计算流水线吞吐率的最基本公式: T P = n T k TP=\frac{n}{T_k} TP=Tkn
    其中: n n n为任务数, T k T_k Tk为完成 n n n个任务所用的时间。
    各段执行时间相等,输入连续任务情况下:
    在这里插入图片描述
    完成n个连续任务需要的总时间为: T k = ( k + n − 1 ) Δ t T_k=(k+n-1)\Delta t Tk=(k+n1)Δt
    其中: k k k为流水线的段数, Δ t \Delta t Δt为时钟周期。
    吞吐率为: T P = n ( k + n − 1 ) Δ t TP=\frac{n}{(k+n-1)\Delta t} TP=(k+n1)Δtn
    最大吞吐率为: T P m a x = lim ⁡ n → ∞ n ( k + n − 1 ) Δ t = 1 Δ t TP_{max}=\lim_{n\rightarrow \infty}\frac{n}{(k+n-1)\Delta t}=\frac{1}{\Delta t} TPmax=limn(k+n1)Δtn=Δt1
    各段执行时间不等,输入连续任务的情况下:
    吞吐率为: T P = n ∑ i = 1 k t i + ( n − 1 ) m a x ( Δ t 1 , Δ t 2 , . . . , Δ t k ) TP=\frac{n}{\sum_{i=1}^kt_i+(n-1)max(\Delta t_1,\Delta t_2,...,\Delta t_k)} TP=i=1kti+(n1)max(Δt1,Δt2,...,Δtk)n
    最大吞吐率为: T P = 1 max ⁡ ( Δ t 1 , Δ t 2 , . . . , Δ t k ) TP=\frac{1}{\max(\Delta t_1, \Delta t_2,...,\Delta t_k)} TP=max(Δt1,Δt2,...,Δtk)1
    流水线各段执行时间不相等的解决办法:
    在这里插入图片描述
    在这里插入图片描述
    (1)将流水线的“瓶颈”部分再细分(如果可分的话)
    在这里插入图片描述
    (2)”瓶颈“流水段重复设置:增加分配器和收集器
    在这里插入图片描述

  2. 加速比(Speedup)
    计算流水线加速比的基本公式: S = 顺 序 执 行 时 间 T o 流 水 线 执 行 时 间 T k S=\frac{顺序执行时间T_o}{流水线执行时间T_k} S=线TkTo
    各段执行时间相等,输入连续任务情况下:
    加速比为: S = k ⋅ n ⋅ Δ t ( k + n − 1 ) Δ t = k ⋅ n k + n − 1 S=\frac{k\cdot n \cdot \Delta t}{(k+n-1)\Delta t}=\frac{k\cdot n}{k+n-1} S=(k+n1)ΔtknΔt=k+n1kn
    最大加速比为: S m a x = lim ⁡ n → ∞ k ⋅ n k + n − 1 = k S_{max}=\lim_{n\rightarrow \infty}\frac{k\cdot n }{k+n-1}=k Smax=limnk+n1kn=k
    各段时间不相等,输入连续任务情况下,实际加速比为:
    在这里插入图片描述
    当流水线段数增加时,需要连续输入的任务数也必须增加
    在这里插入图片描述

  3. 效率
    计算流水线效率的一般公式: E = n 个 任 务 占 用 的 时 空 区 k 个 流 水 段 的 总 时 空 区 = T 0 k ⋅ T k E=\frac{n个任务占用的时空区}{k个流水段的总时空区}=\frac{T_0}{k\cdot T_k} E=kn=kTkT0
    各流水段执行时间相等,输入 n n n个连续任务:
    流水线的效率为: E m a x = k ⋅ n ⋅ Δ t k ⋅ ( k + n − 1 ) ⋅ Δ t = n k + n − 1 E_{max}=\frac{k\cdot n \cdot \Delta t}{k\cdot(k+n-1)\cdot \Delta t}=\frac{n}{k+n-1} Emax=k(k+n1)ΔtknΔt=k+n1n
    流水线的最高效率为: E m a x = lim ⁡ n → ∞ n k + n − 1 = 1 E_{max}=\lim_{n \rightarrow \infty}\frac{n}{k+n-1}=1 Emax=limnk+n1n=1
    各流水段执行时间不相等,输入 n n n个连续任务:
    流水线效率为: E = n ⋅ ∑ i = 1 k Δ t i k ⋅ [ ∑ i = 1 k Δ t i + ( n − 1 ) ⋅ max ⁡ ( Δ t 1 , Δ t 2 , . . . , Δ t k ] E=\frac{n\cdot \sum_{i=1}^k\Delta t_i}{k\cdot[\sum_{i=1}^k\Delta t_i+(n-1)\cdot \max(\Delta t_1,\Delta t_2,...,\Delta t_k]} E=k[i=1kΔti+(n1)max(Δt1,Δt2,...,Δtk]ni=1kΔti
    当流水线各段的设备量或者各段的价格不相等时:流水线的效率为: E = n 个 任 务 占 用 的 加 权 时 空 区 k 个 流 水 段 的 总 加 权 时 空 区 E=\frac{n个任务占用的加权时空区}{k个流水段的总加权时空区} E=kn
    即: E = n ⋅ ∑ i = 1 k a i ⋅ Δ t i ∑ i = 1 k a i ⋅ [ ∑ i = 1 k Δ t i + ( n − 1 ) ⋅ max ⁡ ( Δ t 1 , Δ t 2 , . . . , Δ t n ) ] E=\frac{n\cdot \sum_{i=1}^ka_i\cdot \Delta t_i}{\sum_{i=1}^k a_i \cdot [\sum_{i=1}^k\Delta t_i +(n-1)\cdot \max(\Delta t_1,\Delta t_2,...,\Delta t_n)]} E=i=1kai[i=1kΔti+(n1)max(Δt1,Δt2,...,Δtn)]ni=1kaiΔti,其中, a i < k a_i<k ai<k,且 ∑ i = 1 k a i = k \sum_{i=1}^ka_i=k i=1kai=k
    流水线的吞吐率、加速比与效率的关系:
    因为: T P = n ( k + n − 1 ) Δ t , S = k ⋅ n k + n − 1 , E = n k + n − 1 TP=\frac{n}{(k+n-1)\Delta t},S=\frac{k\cdot n}{k+n-1},E=\frac{n}{k+n-1} TP=(k+n1)Δtn,S=k+n1kn,E=k+n1n
    因此: E = T P ⋅ Δ t ,   S = k ⋅ E E=TP\cdot \Delta t,\ S=k\cdot E E=TPΔt, S=kE

  4. 流水线最佳段数的选择
    采用顺序执行方式完成一个任务的时间为 t t t
    在同等速度的 k k k段流水线上执行一个任务的时间为: t / k + d t/k+d t/k+d,其中:d为流水锁存器的延迟时间
    流水线的最大吞吐率为: P = 1 t / k + d P=\frac{1}{t/k+d} P=t/k+d1
    流水线的总价格估计为: C = a + b k C=a+bk C=a+bk,其中:a为所有功能段本身的总价格,b为每个锁存器的价格
    A.G.Larson把流水线的性能价格比PCR定义为:
    P C R = P C = 1 t / k + d ⋅ 1 a + b k PCR=\frac{P}{C}=\frac{1}{t/k+d}\cdot \frac{1}{a+bk} PCR=CP=t/k+d1a+bk1
    求得到PCR的最大值为: k = a ⋅ t b ⋅ d k=\sqrt{\frac{a\cdot t}{b\cdot d}} k=bdat
    在这里插入图片描述
    推导过程
    在这里插入图片描述

  5. 流水线性能分析举例(1)
    对于单功能线性流水线,输入连续任务的情况,通过上面给出的公式很容易计算出流水线的吞吐率、加速比和效率。
    例:用一条4段浮点加法器流水线求8个浮点数的和:
    Z = A + B + C + D + E + F + G + H Z=A+B+C+D+E+F+G+H Z=A+B+C+D+E+F+G+H
    4段运算流水线:求阶差、对接、尾数加、规格化
    在这里插入图片描述
    解:Z=[(A+B)+(C+D)]+[(E+F)+(G+H)]
    7个浮点加法共用了15个时钟周期。
    流水线的吞吐率为: T P = n T k = 7 15 ⋅ Δ t = 0.47 1 Δ t TP=\frac{n}{T_k}=\frac{7}{15\cdot \Delta t}=0.47\frac{1}{\Delta t} TP=Tkn=15Δt7=0.47Δt1
    流水线的加速比为: S = T 0 T k = 4 × 7 ⋅ Δ t 15 ⋅ Δ t = 1.87 S=\frac{T_0}{T_k}=\frac{4\times 7 \cdot \Delta t}{15\cdot \Delta t}=1.87 S=TkT0=15Δt4×7Δt=1.87
    流水线的效率为: E = T 0 k ⋅ T k = 4 × 7 ⋅ Δ t 5 × 15 ⋅ Δ t = 0.47 E=\frac{T_0}{k\cdot T_k}=\frac{4\times 7\cdot \Delta t}{5\times 15\cdot \Delta t}=0.47 E=kTkT0=5×15Δt4×7Δt=0.47

    流水线的性能分析举例(2)
    设在下图所示的静态多功能流水线上计算: ∏ i = 1 4 ( A i + B i ) \prod_{i=1}^4(A_i+B_i) i=14(Ai+Bi)
    流水线的输出可以直接返回输入端或暂存于相应的流水寄存器中,试计算其吞吐率、加速比和效率。
    在这里插入图片描述
    解:(1)选择适合于流水线工作的算法
    先计算 A 1 + B 1 , A 2 + B 2 , A 3 + B 3 A_1+B_1,A_2+B_2,A_3+B_3 A1+B1,A2+B2,A3+B3 A 4 + B 4 A_4+B_4 A4+B4
    再计算 ( A 1 + B 1 ) × ( A 2 + B 2 ) (A_1+B_1)\times(A_2+B_2) (A1+B1)×(A2+B2) ( A 3 + B 3 ) × ( A 4 + B 4 ) (A_3+B_3)\times (A_4+B_4) (A3+B3)×(A4+B4)
    然后求总的乘积结果。
    (2)画出时空图
    在这里插入图片描述

    T P = 7 18 Δ t TP=\frac{7}{18\Delta t} TP=18Δt7 S = 36 Δ t 18 Δ t = 2 S=\frac{36\Delta t}{18\Delta t}=2 S=18Δt36Δt=2

    E = 4 × 6 + 3 × 4 8 × 18 = 0.25 E=\frac{4\times 6+3\times 4}{8\times 18}=0.25 E=8×184×6+3×4=0.25

流水线的性能分析举例(3)
有一条动态多功能流水线由5段组成,加法用1、3、4、5段,乘法用1、2、5段,第4段的时间为 2 Δ t 2\Delta t 2Δt,其余各段时间均为 Δ t \Delta t Δt,而且流水线的输出可以直接返回输入端或暂存于相应的流水寄存器中。若在该流水线上计算: ∑ i = 1 4 ( A i × B i ) \sum_{i=1}^4(A_i\times B_i) i=14(Ai×Bi),试计算其吞吐率、加速比和效率。
解:(1)选择适合于流水线工作的算法
应先计算 A 1 × B 1 A_1\times B_1 A1×B1 A 2 × B 2 A_2\times B_2 A2×B2 A 3 × B 3 A_3\times B_3 A3×B3 A 4 × B 4 A_4\times B_4 A4×B4;再计算 ( A 1 × B 1 ) + ( A 2 × B 2 ) (A_1\times B_1)+(A_2\times B_2) (A1×B1)+(A2×B2) ( A 3 × B 3 ) + ( A 4 × B 4 ) (A_3\times B_3)+(A_4\times B_4) (A3×B3)+(A4×B4);然后求总的累加结果。
(2)画出时空图;
(3)计算性能
在这里插入图片描述

非线性流水线的调度技术

非线性流水线调度的任务是要找出一个最小循环周期,按照这周期向流水线输入新任务,流水线的各个功能段都不会发生冲突,而且流水线的吞吐率和效率最高

  1. 非线性流水线的预约表表示方法
    线性流水线能够用流水线连接图唯一表示,连接图不能用唯一表示非线性流水线的工作流程,因此,引入流水线预约表
    在这里插入图片描述
    与流水线预约表对应的流水线连接图
    在这里插入图片描述
    注意,一张预约表可能与多个流水线连接图相对应,上面的预约表也可以对应的连接图为:
    在这里插入图片描述
    一个流水线连接图对应于多张预约表
    在这里插入图片描述

  2. 非线性流水线的冲突
    流水线的启动距离:连续输入两个任务之间的时间间隔
    流水线的冲突:几个任务争用同一个流水段
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 无冲突调度方法
    由E.S.Davidson及其学生于1971年提出
    非线性流水线的禁止启动集合F:预约表中每一行任意两个“ × \times ×"之间的距离都计算出来,去掉重复的。上例中为 F = { 3 , 4 , 6 } F=\{3,4,6\} F={3,4,6}
    由禁止启动集合得到冲突向量: C = ( C m C m − 1 . . . C 2 C 1 C=(C_mC_{m-1}...C_2C_1 C=(CmCm1...C2C1
    其中:m是禁止集合中的最大值,如果i在禁止集合F中,则 C i = 1 C_i=1 Ci=1,否则 C i = 0 C_i=0 Ci=0。上例中 C = ( 101100 ) C=(101100) C=(101100)
    由冲突向量构造状态图:

    把冲突向量送入一个m位逻辑右移移位器;如果移位器移出0,用移位器中的值与初始冲突向量作”按位或“运算,得到一个新的冲突向量;否则不作任何处理,如此重复m次。对于中间形成的每一个新的冲突向量,也要按照这一方法进行处理。

    在初始冲突向量和所有的新形成的冲突向量之间用带箭头的线连接,当形成的冲突向量出现重复时间可以合并到一起。
    在这里插入图片描述
    解:(1)禁止集合为:(2,4,6);初始冲突向量:101010;
    (2)初始冲突向量逻辑右移2、4、6位时,不作任何处理,逻辑右移1、3、5和大于等于7时,要进行处理。
    在这里插入图片描述
    在这里插入图片描述
    预约表与状态图是唯一对应,但不同的预约表也可能有相同的状态图。
    简单循环:状态图中各种冲突向量只经过一次的启动循环。简单循环的个数是有限的,由简单循环计算平均启动距离。
    在这里插入图片描述
    (3)最小的启动循环为(1,7)和(3,5),平均启动距离为4.
    (4)启动距离最小的恒定循环是(5)。
    在这里插入图片描述
    在这里插入图片描述

  4. 优化调度方法
    L.E.Shar于1972年提出流水线最小平均启动距离的限制范围
    (1)下限是预约表中任意一行里”ד的最多个数。
    (2)小于或等于状态图中任意一个简单循环的平均启动距离。
    (3)最小平均启动距离的上限是冲突向量中1的个数再加上1.
    1992年,L.E.Shar又证明了上述限制范围。
    最有用的是第1条。预约表中”ד最多的行一定是瓶颈流水段
    采用预留算法来调度非线性流水线,可以达到最优调度:
    (1)确定最小平均启动距离(MAL)。预约表任一行中”ד的最多个数
    (2)确定最小启动循环。一般恒定循环作为最小启动循环。
    (3)通过插入非计算延迟段–修改预约表实现最小启动循环。
    对于上面的例子:
    在这里插入图片描述
    预约表变为:
    在这里插入图片描述
    任一行中与第一个”x“的距离为2的倍数的周期都要预留出来。
    S 3 S_3 S3行的第2个”ד从周期5延迟到周期6.为此
    S 2 S_2 S2行的第2个”x“要向后延迟一个周期,从周期6延迟到周期7;
    S 1 S_1 S1行的第2个”x“要向后延迟一个周期,从周期7延迟到周期8.
    实际上,只要在流水段S4的输出端到流水段S3的输入端中间插入一个非计算延迟D1.
    在这里插入图片描述
    根据新的预约表画出状态图:
    在这里插入图片描述
    在这里插入图片描述
    在非线性流水线中,”ד最多的流水段一定是”瓶颈“流水段。
    实现最优调度的目标是使”瓶颈“流水段处于忙碌状态,没有空闲周期。
    最优调度方法能够使非线性流水线的吞吐率、加速比和效率达到最优。

  5. 动态调度方法
    一个启动循环C,从C推导出各个起始之间所有可能的时间间隔集合 G c G_c Gc,称为启动间隔集合
    在这里插入图片描述
    在禁止启动集合为F的流水线中:
    iff: F ( m o d p ) F(mod p) F(modp) G c ( m o d   p ) = ∅ G_c(mod\ p) = \emptyset Gc(mod p)=时,周期为p和启动间隔集合 G c G_c Gc的启动循环 C C C才是可以允许的。

高级流水线

三种主流处理机:
超标量处理机:Intel公司的i860、i960、Pentium处理机、IBM公司的Power PC、SUM公司的SPARC、SuperSPARC、UltraSPARTC等;
超流水线处理机:SGI公司的MIPS R4000、R5000、R10000等
超标量超流水线处理机:DEC公司的Alpha等
在这里插入图片描述

  1. 超标量流水线
    基本结构:
    一般流水线处理机:一条指令流水线,一个多功能操作部件,每个时钟周期平均执行指令的条数小于1。
    多操作部件处理机:一条指令流水下,多个独立的操作部件,可以采用流水线,也可以不流水。多操作部件处理机的指令级并行度小于1。
    超标量处理机典型结构:多条指令流水线。先进的超标量处理机有:定点处理部件CPU,浮点处理部件FPU,图形加速部件GPU,大量的通用寄存器,两个一级Cache。
    超标量处理机的指令级并行度(ILP)大于1.
    单发射与多发射(Issue)
    单发射处理机:每个周期只取一条指令、只译码一条指令,只执行一条指令,只写回一个运算结果。取指令部件和指令译码部件设置一套;只设置一个多功能操作部件或设置多个独立的操作部件;操作部件中可以采用流水线结构,也可以不采用流水线结构。目标是每个时钟周期平均执行一条指令,ILP的期望值为1.
    多发射处理机:每个周期同时取多条指令、同时译码多条指令,同时执行多条指令,同时写回多个运算结果。需要多个取指令部件,多个指令译码部件和多个写结果部件。设置多个指令执行部件,有些指令执行部件采用流水线结构。目标是每个时钟周期平均执行多条指令,ILP的期望值大于1.
    在这里插入图片描述
    单发射处理机的指令流水线
    在这里插入图片描述
    同时发射两条指令的多发射处理机的指令流水线
    在这里插入图片描述
    超标量处理机:一个时钟周期能同时发射多条指令的处理机
    必须有两条或两条以上能够同时工作的指令流水线。
    先行指令窗口:能够从指令Cache中预取多条指令,能够对窗口内的指令进行数据相关性分析和功能部件冲突检测。先行指令窗口的大小一般为2至8条指令。
    目前的指令调度技术,每个周期发射2至4条指令比较合理
    操作部件的个数一般多于每个周期发射的指令条数。通常为4个至16个操作部件。
    超标量处理机的指令级并行度:1<ILP<m。m为每个周期发射的指令条数。
    有线性指令窗口的超标量处理机的流水线结构:
    在这里插入图片描述
    多条流水线的调度问题是一个NP完全问题

    顺序发射(in-order issue)与乱序发射(out-order issue):
    指令发射顺序是按照程序中指令排列顺序进行的称为顺序发射
    顺序完成(in-order completion)与乱序完成(out-order completion)
    指令完成顺序是按照程序中指令排列顺序进行的称为顺序完成
    多流水线的调度主要有三种方法:
    顺序发射顺序完成,顺序发射乱序完成,乱序发射乱序完成。
    在这里插入图片描述
    a. 顺序发射顺序完成
    6条指令按顺序分三个时钟周期发射,共用10个时钟周期完成。除了流水线的装入和排空部分之外,还有8个空闲的时钟周期。
    在这里插入图片描述
    b. 顺序发射乱序完成
    与顺序发射顺序完成调度方法相比,少了5个空闲时钟周期。6条指令总的执行时间为9个时钟周期,与顺序发射顺序完成调度方法相比节省了一个时钟周期。
    在这里插入图片描述
    c,乱序发射乱序完成,必须使用先行指令窗口。
    除了装入和排空之外,没有空闲周期,功能部件得到充分利用。6条指令总的执行时间缩短为8个周期,比顺序发射顺序完成方法节省2个周期,比顺序发射乱序完成方法相比节省一个周期。
    在这里插入图片描述
    资源冲突
    如果操作部件采用流水线结构,发生资源冲突的可能性很小;如果不采用流水线结构,发生资源冲突的可能性就大。
    下面是一个由4条指令程序的程序:
    在这里插入图片描述
    在这里插入图片描述
    操作部件不采用流水线:
    做完4条指令总共用了11个周期,有5个空闲周期。
    操作部件采用流水线:
    做完4条指令公用8个周期,少用3个周期。
    在这里插入图片描述
    普通标量处理机,希望相同操作连续出现。只有连续出现相同操作的指令序列时,流水线才能不”断流“,功能部件的效率才能得到充分发挥。

    超标量处理机则正好相反,希望相同操作不要连续出现。相同操作的指令序列连续出现时,会发生资源冲突;要求相同操作的指令能够相对均匀地分布在程序中。

    超标量处理机的这种要求正好符合一般标量程序的特点。

    超标量处理机性能:
    单流水线普通标量处理机的指令并行度记作(1,1),
    超标量处理机的指令级并行度记作(m,1),
    超流水线处理机的指令级并行度记作(1,n),
    而超标量超流水线处理机的指令级并行度记作(m,n)。

    在理想情况下,N条指令在单流水线标量处理机上的执行时间为: T ( 1 , 1 ) = ( k + N − 1 ) Δ t T(1,1)=(k+N-1)\Delta t T(1,1)=(k+N1)Δt

    在每个周期发射m条指令的超标量处理机上执行的时间为: T ( m , 1 ) = ( k + N − m m ) Δ t T(m,1)=(k+\frac{N-m}{m})\Delta t T(m,1)=(k+mNm)Δt

    超标量处理机相对于单流水线标量处理机的加速比为: S ( m , 1 ) = T ( 1 , 1 ) T ( m , 1 ) = m ( k + N − 1 ) N + m ( k − 1 ) S(m,1)=\frac{T(1,1)}{T(m,1)}=\frac{m(k+N-1)}{N+m(k-1)} S(m,1)=T(m,1)T(1,1)=N+m(k1)m(k+N1)

    超标量处理机的加速比的最大值为: S ( m , 1 ) M A X = m S(m,1)_{MAX}=m S(m,1)MAX=m

  2. 超流水线
    超流水线处理机
    两种定义:
    在一个周期内能够分时发射多条指令的处理机
    指令流水线的功能段数为8段或超过8段的流水线处理机?
    提高处理机性能的不同方法:
    超标量处理机:通过增加硬件资源来提高处理机性能
    超流水线处理机:通过各部分硬件的重叠工作来提高处理机性能。
    两种不同的并行性:
    超标量处理机采用的是空间并行性。
    超流水线处理机采用的是时间并行性。
    指令执行时序
    每隔1/n个时钟周期发射一条指令,即处理机的流水周期为1/n个时钟周期。
    在超标量处理机中,流水线的有些功能段还可以进一步细分,例如:ID功能段,可以再细分为:译码、读第一操作数和读第二操作数三个流水段。
    在这里插入图片描述
    典型处理机结构
    MIPS R4000处理机,每个时钟周期包含两个流水段,是一种很标准的超流水线处理机结构。
    指令流水线有8个流水段,有两个Cache,指令Cache和数据Cache的容量各8KB,每个时钟周期可以访问Cache两次,因此在一个时钟周期内可以从指令Cache中读出两条指令,从数据Cache中读出或写入两个数据。主要运算部件有整数部件和浮点部件。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    如果在LOAD指令之后的两条指令中,任何一条指令要在它的EX流水级使用这个数据,则指令流水线要暂停一个时钟周期。
    采用顺序发射方式。
    在这里插入图片描述
    超流水线处理机性能:
    指令级并行度为(1,n)的超流水线处理机,执行N条指令所用的时间为: T ( 1 , n ) = ( k + N − 1 n ) Δ t T(1,n)=(k+\frac{N-1}{n})\Delta t T(1,n)=(k+nN1)Δt
    超流水线处理机相对于单流水线普通标量处理机的加速比为:
    S ( 1 , n ) = T ( 1 , 1 ) T ( 1 , n ) = ( k + N − 1 ) Δ t ( k + N − 1 n ) Δ t = n ( k + N − 1 ) n k + N − 1 S(1,n)=\frac{T(1,1)}{T(1,n)}=\frac{(k+N-1)\Delta t}{(k+\frac{N-1}{n})\Delta t}=\frac{n(k+N-1)}{nk+N-1} S(1,n)=T(1,n)T(1,1)=(k+nN1)Δt(k+N1)Δt=nk+N1n(k+N1)
    超流水线处理机的加速比最大值为: S ( 1 , n ) M A X = n S(1,n)_{MAX}=n S(1,n)MAX=n

  3. 超标量超流水线处理机
    把超标量与超流水线技术结合在一起,就成为超标量超流水线处理机
    超标量超流水线处理机在一个时钟周期内分时发射指令m次,每次同时发射指令n条
    超标量超流水线处理机每个时钟周期总共发射指令m n条

    指令执行时序
    在这里插入图片描述
    性能:
    指令并行度为(m,n)的超标量超流水线处理机,连续执行N条指令所需要的时间为: T ( m , n ) = ( k + N − m m ⋅ n ) Δ t T(m,n)=(k+\frac{N-m}{m\cdot n})\Delta t T(m,n)=(k+mnNm)Δt
    超标量超流水线处理机相对于单流水线标量处理机的加速比为: S ( m , n ) = S ( 1 , 1 ) S ( m , n ) = ( k + N − 1 ) Δ t ( k + N − m m n ) Δ t = m ⋅ n ⋅ ( k + N − 1 ) m ⋅ n ⋅ k + N − m S(m,n)=\frac{S(1,1)}{S(m,n)}=\frac{(k+N-1)\Delta t}{(k+\frac{N-m}{mn})\Delta t}=\frac{m\cdot n\cdot (k+N-1)}{m\cdot n\cdot k+N-m} S(m,n)=S(m,n)S(1,1)=(k+mnNm)Δt(k+N1)Δt=mnk+Nmmn(k+N1)
    在理想情况下,超标量超流水线处理机加速比的最大值为: S ( m , n ) M A X = m n S(m,n)_{MAX}=mn S(m,n)MAX=mn

    三种指令级并行处理机性能比较 在这里插入图片描述

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值