计算机体系结构 第3章 流水线技术(1)

第3章 流水线技术

3.1 流水线的基本概念

3.1.1 流水线的基本概念

流水线技术

  • 把一个重复的过程分解为若干个子过程,每个子过程由专门的功能部件来实现。
  • 把多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其它的子过程并行进行。

流水线的段

  • 流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。
  • 流水线的段数称为流水线的深度。

指令流水线

  • 把指令的解释过程分解为分析和执行两个子过程,并让这两个子过程分别用独立的分析部件和执行部件来实现。
    • 理想情况:速度提高一倍
  • 浮点加法流水线(4段指令流水线 )
    • 把流水线技术应用于运算的执行过程,就形成了运算操作流水线,也称为部件级流水线。
    • 把浮点加法的全过程分解为求阶差、对阶、尾数相加、规格化四个子过程。
    • 理想情况:速度提高3倍

时-空图

  • 时-空图从时间和空间两个方面描述了流水线的工作过程。时-空图中,横坐标代表时间,纵坐标代表流水线的各个段

浮点加法流水线的时空图

流水技术的特点

  • 流水线把一个处理过程分解为若干个子过程(段),每个子过程由一个专门的功能部件来实现。

  • 流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流。

  • 时间最长的段将成为流水线的瓶颈

  • 流水线每一个段的后面都要有一个缓冲寄存器(锁存器),称为流水寄存器。

    • 作用:在相邻的两段之间传送数据,以保证提供后面要用到的信息,并把各段的处理工作相互隔离。
  • 流水技术适合于大量重复的时序过程,只有在输入端不断地提供任务,才能充分发挥流水线的效率。

  • 流水线需要有通过时间和排空时间。

    • 通过时间:第一个任务从进入流水线到流出结果所需的时间。
    • 排空时间:最后一个任务从进入流水线到流出结果所需的时间。

3.1.2 流水线的分类

部件级、处理机级及处理机间流水线

  • 按照流水技术用于计算机系统的等级不同进行分类
  • 部件级流水线(运算操作流水线):把处理机中的部件分段,再把这些分段相互连接起来,使得各种类型的运算操作能够按流水方式进行。
  • 处理机级流水线(指令流水线):把指令的执行过程按照流水方式处理。把一条指令的执行过程分解为若干个子过程,每个子过程在独立的功能 部件中执行。
  • 系统级流水线(宏流水线):把多台处理机串行连接起来,对同一数据流进行处理,每个处理机完成整个任务中的一部分。

单功能流水线与多功能流水线

  • 按照流水线所完成的功能来分类

  • 单功能流水线:只能完成一种固定功能的流水线。

  • 多功能流水线:流水线的各段可以进行不同的连接,以实现不同的功能。

    • 例: ASC的多功能流水线(⚠️常用来分析)

ASC的多功能流水线

静态流水线与动态流水线

  • 按照同一时间内各段之间的连接方式对多功能流水线作进一步的分类(对多功能流水线的深入)

  • 静态流水线:在同一时间内,多功能流水线中的各段只能按同一种功能的连接方式工作。

    • 对于静态流水线来说,只有当输入的是一串相同的运算任务时,流水的效率才能得到充分的发挥。
    • 例如:ASC的8段流水线
  • 动态流水线:在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能

    • 优点:灵活,能够提高流水线各段的使用率,从而提高处理速度。
    • 缺点:控制复杂。

静态和动态流水线的时空图

线性流水线与非线性流水线

  • 按照流水线中是否有反馈回路来进行分类
  • 线性流水线:流水线的各段串行连接,没有反馈回路。数据通过流水线中的各段时,每一个段最多只流过一次。
  • 非线性流水线:流水线中除了有串行的连接外,还有反馈回路
    • 非线性流水线的调度问题
    • 确定什么时候向流水线引进新的任务,才能使该任务不会与先前进入流水线的任务发生冲突——争用流水段。

顺序流水线与乱序流水线

  • 根据任务流入和流出的顺序是否相同来进行分类
  • 顺序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序完全相同。每一个任务在流水线的各段中是一个跟着一个顺序流动的。
  • 乱序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序可以不同,允许后进入流水线的任务先完成(从输出端流出)。也称为无序流水线、错序流水线、异步流水线

标量处理机与向量流水处理机

  • 把指令执行部件中采用了流水线的处理机称为流水线处理机。

  • 标量处理机:处理机不具有向量数据表示和向量指令

    • 仅对标量数据进行流水处理。
  • 向量流水处理机:具有向量数据表示和向量指令的处理机。

    • 向量数据表示和流水技术的结合。

3.2 流水线的性能指标

3.2.1 吞吐率

吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量。计算公式如下
T P = n T k TP = \frac{n}{T_{k}} TP=Tkn
其中:

  • n n n:任务数
  • T k T_{k} Tk:处理完成 n n n个任务所用的时间
各段时间均相等的流水线
  • 各段时间均相等的流水线时空图

各段时间均相等的流水线时空图

  • 流水线完成n个连续任务所需要的总时间为:(假设一条k段线性流水线)
    T k = k Δ t + ( n - 1 ) Δ t   =   ( k + n - 1 ) Δ t T_k=kΔt+(n-1)Δt\ =\ (k+n-1)Δt TkkΔt(n1)Δt  (kn1)Δ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=nlim(k+n1)Δtn=Δt1

    • 流水线的实际吞吐率小于最大吞吐率,它除了与每个段的时间有关外,还与流水线的段数k以及输入到流水线中的任务数n等有关。
    • 只有当n>>k时,才有 T P ≈ T P m a x TP≈TP_{max} TPTPmax
各段时间不完全相等的流水线
  • 各段时间不等的流水线及其时空图

各段时间不等的流水线及其时空图

  • 各段时间不等的流水线的实际吞吐率为:( Δ t i Δt_i Δti为第i段的时间,共有 k k k个段 )
    T P = n ∑ i = 1 k Δ t i + ( n − 1 ) max ⁡ ( Δ t 1 , Δ t 2 , ⋯   , Δ t k ) T P=\frac{n}{\sum_{i=1}^{k} \Delta t_{i}+(n-1) \max \left(\Delta t_{1}, \Delta t_{2}, \cdots, \Delta t_{k}\right)} TP=i=1kΔti+(n1)max(Δt1,Δt2,,Δtk)n

  • 流水线的最大吞吐率为:
    T P m a x = 1 max ⁡ ( Δ t 1 , Δ t 2 , ⋯   , Δ t k ) TP_{max}=\frac{1}{ \max \left(\Delta t_{1}, \Delta t_{2}, \cdots, \Delta t_{k}\right)} TPmax=max(Δt1,Δt2,,Δtk)1

解决流水线瓶颈问题的常用方法
  • 细分瓶颈段
    • 把流水线中的瓶颈段切分为几个独立的功能段,从而使流水线各段的处理时间都相等
  • 重复设置瓶颈段
    • 将处理时间较长的段重复设置,假设其他段处理时间为 Δ t \Delta t Δt,瓶颈段处理时间为 n Δ t n \Delta t nΔt,则设置n个
    • 缺点:控制逻辑比较复杂,所需的硬件增加了。

3.2.2 流水线的加速比

加速比:完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。

假设:不使用流水线(即顺序执行)所用的时间为 T s T_s Ts,使用流水线后所用的时间为 T k T_k Tk,则该流水线的加速比为:
S = 不 使 用 流 水 线 所 用 的 时 间 使 用 流 水 线 所 用 的 时 间 = T s T k S = \frac{不使用流水线所用的时间}{使用流水线所用的时间} =\frac{T_{s}}{T_{k}} S=使线使线=TkTs

流水线各段时间相等(都是△t)
  • 一条k段流水线完成n个连续任务所需要的时间为:

    T k = ( k + n - 1 ) Δ t T_k = (k+n-1)Δt Tk=(kn1)Δt

  • 顺序执行n个任务所需要的时间:
    T s = n k △ t T_s= nk△t Ts=nkt

  • 流水线的实际加速比为:

    S = n k k + n − 1 S = \frac{nk}{k+n-1} S=k+n1nk

  • 最大加速比
    S max ⁡ = lim ⁡ n → ∞ n k k + n − 1 = k S_{\max }=\lim _{n \rightarrow \infty} \frac{n k}{k+n-1}=k Smax=nlimk+n1nk=k

流水线的各段时间不完全相等时
  • 一条k段流水线完成n个连续任务的实际加速比为:
    S = n ∑ i = 1 k Δ t i ∑ i = 1 k Δ t i + ( n − 1 ) max ⁡ ( Δ t 1 , Δ t 2 , ⋯   , Δ t k ) S=\frac{n \sum_{i=1}^{k} \Delta t_{i}}{\sum_{i=1}^{k} \Delta t_{i}+(n-1) \max \left(\Delta t_{1}, \Delta t_{2}, \cdots, \Delta t_{k}\right)} S=i=1kΔti+(n1)max(Δt1,Δt2,,Δtk)ni=1kΔti

3.2.3 流水线的效率

流水线的效率:流水线中的设备实际使用时间与整个运行时间的比值,即流水线设备的利用率。

由于流水线有通过时间和排空时间,所以在连续完成n个任务的时间内,各段并不是满负荷地工作。

各段时间相等
  • 各段的效率 e i e_i ei相同,
    e 1 = e 2 = ⋯ = e k = n Δ t T k = n k + n − 1 e_{1}=e_{2}=\cdots=e_{k}=\frac{n \Delta t}{T_{k}}=\frac{n}{k+n-1} e1=e2==ek=TknΔt=k+n1n

  • 整条流水线的效率为:
    E = e 1 + e 2 + ⋯ + e k k = k e 1 k = k n Δ t k T k E = \frac{e_{1}+e_{2}+\cdots+e_{k}}{k} = \frac{ke_{1}}{k} = \frac{kn\Delta t}{k T_{k}} E=ke1+e2++ek=kke1=kTkknΔt

  • 可以写成:
    E = n k + n − 1 E = \frac{n}{k+n-1} E=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=nlimk+n1n=1

流水线的效率与吞吐率以及加速比的关系

  • 当流水线各段时间相等时,流水线的效率与吞吐率成正比。
    E = T P ⋅ △ t E=TP·△t E=TPt

  • 流水线的效率是流水线的实际加速比S与它的最大加速比k的比值。
    E = S k E = \frac{S}{k} E=kS

    • 当E=1时,S=k,实际加速比达到最大。

从时空图求流水线的效率

  • 效率就是n个任务占用的时空面积和k个段总的时空面积之比。
    E = n 个任务实际占用的时空区 k 个段总的时空区 E = \frac{\text{n 个任务实际占用的时空区}}{\text{k 个段总的时空区}} E=个段总的时空区个任务实际占用的时空区

  • 当各段时间不相等时:
    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\left[\sum_{i=1}^{k} \Delta t_{i}+(n-1) \cdot \max \left(\Delta t_{1}, \Delta t_{2}, \cdots, \Delta t_{k}\right)\right]} E=k[i=1kΔti+(n1)max(Δt1,Δt2,,Δtk)]ni=1kΔti

3.2.4 流水线的性能分析举例

参见《计算机系统结构教程》(第二版)清华大学 张晨曦 王志英 等 P62-P64

3.2.5 流水线设计中的若干问题

1. 瓶颈问题
  • 理想情况下,流水线在工作时,其中的任务是同步地每一个时钟周期往前流动一段。
  • 当流水线各段不均匀时,机器的时钟周期取决于瓶颈段的延迟时间。
  • 在设计流水线时,要尽可能使各段时间相等。
2. 流水线的额外开销
  • 流水寄存器延迟

    • 需要建立时间和传输延迟
    • 建立时间:在触发写操作的时钟信号到达之前,寄存器输入必须保持稳定的时间。
    • 传输延迟:时钟信号到达后到寄存器输出可用的时间。
  • 时钟偏移开销

    • 流水线中,时钟到达各流水寄存器的最大差值时间。(时钟到达各流水寄存器的时间不是完全相同)
  • ⚠️几个关键问题

    • 流水线并不能减少(而且一般是增加)单条指令的执行时间,但却能提高吞吐率。
    • 增加流水线的深度(段数)可以提高流水线的性能。
    • 流水线的深度受限于流水线的额外开销
    • 时钟周期小到与额外开销相同时,流水已没意义。因为这时在每一个时钟周期中已没有时间来做有用的工作
冲突问题
  • 流水线设计中要解决的重要问题之一。
第一 计算机体系结构的基本概念 11 引论 1.2 计算机体系结构的概念 1.2.1 计算机系统中的层次概念 1.2.2 计算机体系结构 1.2.3 计算机组成和计算机实现技术 13 计算机体系结构的发展 131 存储程序计算机体系结构及其发展 13.2 计算机的分代和分型 133 应用需求的发展 13.4 计算机实现技术的发展 13. 5 体系结构的生命周期 1.4 计算机体系结构中并行性的发展 1.4.1并行性概念 1.4.2 提高并行性的技术途径 1.5 定量分析技术基础 1.5.1 计算机性能的评测 1.5.2 测试程序 1.5.3 性能设计和评测的基本原则 1.5.4 CPU的性能 1.6 影响计算机体系结构的成本和价格因素 1.6.1 集成电路的成本 1.6.2 计算机系统的成本和价格 1.7 小结习题一第二 计算机指令集结构设计 2.1 指令集结构的分类 2.11 指令集结构的分类 2.1.2 通用寄存器型指令集结构分类 2.2 寻址技术 2.3 指令集结构的功能设计 2.31 CISC计算机指令集结构的功能设计 2.3.2 RISC计算机指令集结构的功能设计 2.33 控制指令 2.4 操作数的类型、表示和大小 2.5 指令集格式的设计 2.5.1 寻址方式的表示方法 2.5.2 指令集格式的选择 2.6 编译技术计算机体系结构设计 2.6.1 现代编译器的结构和相关技术 2.6.2 现代编译技术计算机体系结构设计的影响 2.6.3 计算机体系结构对当前编译技术的影响 2.7 DLX指令集结构 2.7.1 DLX指令集结构 2.7.2 DLX指令集结构效能分析 2.8 小结习题二第三章 流水线技术 31 流水线的基本概念 311 流水线的基本概念 31.2 流水线的分类 3.2 DLX的基本流水线 3.2.1 DLX的一种简单实现 3.2.2 基本的DLX流水线 3.2.3 流水线性能分析 3. 3 流水线中的相关 331 流水线的结构相关 33.2 流水线的数据相关 333 流水线的控制相关 3.4 流水线计算机实例分析(MIPS R4000) 3.4.1 MIPS R4000整型流水线 3.4.2 MIPS R4000浮点流水线 3.4.3 MIPS R4000流水线的性能分析 3.5 向量处理机 3.5.1 向量处理方式和向量处理机 3.5.2 向量处理机实例分析 3.6 小结习题三第四 指令级并行 4.1 指令级并行的概念 4.11 循环展开调度的基本方法 4.1.2 相关性 4.2 指令的动态调度 4.2.1 动态调度的原理 4.2.2 动态调度算法之一:记分牌 4.2.3 动态调度算法之二:Tomasulo算法 4.3 控制相关的动态解决技术 4.31 减少分支延迟:分支预测缓冲技术 4.3.2 进一步减少分支延迟:分支目标缓冲 4.33 基于硬件的推断执行 4.4 多指令流出技术 4.4.1 超标量技术 4.4.2 多指令流出的动态调度 4.4.3 超长指令字技术 4.4.4 多流出处理器受到的限制 4.5 小结习题四第五 存储层次 5.1 存储器的层次结构 5.11 从单级存储器到多级存储器 5.1.2 存储层次的性能参数 5.13 “Cache—主存”和“主存—辅存”层次 5.1.4 存储层次的四个问题 5.2 Cache基本知识 5.2.1 映象规则 5.2.2 查找方法 5.2.3 替换算法 5.2.4 写策略 5.2.5 Cache的结构 5.2.6 Cache性能分析 5.2.7 改进Cache性能 5.3 降低Cache失效率的方法 5.31 增加Cache块大小 5.3.2 提高相联度 5.33 Victim Cache 5.3.4 伪相联Cache 5.3.5 硬件预取技术 5.3.6 由编译器控制的预取 5.3.7 编译器优化 5.4 减少Cache失效开销 5.4.1 让读失效优先于写 5.4.2 子块放置技术 5.4.3 请求字处理技术 5.4.4 非阻塞Cache技术 5.4.5 采用两级Cache 5.5 减少命中时间 5.5.1 容量小,结构简单的Cache 5.5.2 虚拟Cache 5.5.3 写操作流水化 5.5.4 Cache优化技术小结 5.6 主存 5.6.1 存储器技术 5.6.2 提高主存性能的存储器组织结构 5.7 虚拟存储器 5.7.1 虚拟存储器基本原理 5.7.2 快表(TLB) 5.7.3 页面大小的选择 5.8 进程保护和虚存实例 5.8.1 进程保护 5.8.2 页式虚存举例:Alpha AXP的存储管理和21064的TLB 5.9 Alpha AXP 21064存储层次 5.10 小结习题五第六 输入输出系统 6.1 概述 6.2 存储设备 6.2.1 磁盘设备 6.2.2 磁带设备 6.2.3 光盘设备 6.3 总线 6.31 总线分类 6.3.2 总线基本工作原理 6.33 总线使用 6.3.4 总线标准和实例 6.3.5 设备的连接 6.3.6 CPU与I/O处理的匹配 6.4 通道处理机 6.4.1 通道的作用和功能 6.4.2 通道的工作过程 6.4.3 通道种类 6.4.4 通道中的数据传送过程 6.4.5 通道的流量分析 6.5 I/O与操作系统 6.5.1 I/O和Cache数据一致性 6.5.2 DMA和虚拟存储器 6.6 I/O系统设计 6.7 小结习题六第七 多处理机 7.1 引言 7.11 并行计算机体系结构的分类 7.1.2 通信模型和存储器的结构模型 7.13 通信机制的性能 7.1.4 不同通信机制的优点 7.1.5 并行处理面临的挑战 7.1.6 并行程序的计算/通信比率 7.2 多处理机的存储器体系结构 7.2.1 集中式共享存储器体系结构 7.2.2 分布式共享存储器体系结构 7.3 互连网络 7.31 互连网络的性能参数 7.3.2 静态连接网络 7.33 动态连接网络 7.4 同步与通信 7.4.1 同步机制 7.4.2 大规模机器的同步 7.5 并行化技术 7.5.1 并行化的基本策略 7.5.2 并行语育与编译器 7.6 多处理机实例 7.6.1 Challenge多处理机系统 7.6.2 Origin 20007.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值