CA-第八讲 流水线技术

Molaters Lv5
# Recap
  • 流水线的基本概念
    • 流水技术的定义
    • 流水线的特点
  • 流水线的分类
    • 实现的功能(单功能和双功能)
    • 连接方式(静态和动态)
    • 子过程的粒度(部件级、处理机级和处理机间)
    • 数据表示(标量和向量)
    • 反馈回路 (线性和非线性)
  • MIPS基本流水线
    • 将数据通路划分流水段,加入段间寄存器文件
    • 没功能段完成指令子过程的相应操作
    • 多路线选择器的控制

流水线性能分析

三项性能指标:吞吐率、加速比和效率

吞吐率

是衡量流水线的重要指标

  • 吞吐率是指单位时间内流水线所完成的任务数或输出结果的数量

  • 最大吞吐率$TP_{max}$是指流水线在达到稳定状态后所得到的吞吐率。

  • 设流水线由m段组成,完成n个任务的吞吐率称为 实际吞吐率,记作TP

最大吞吐率

假设流水线的隔断时间相等,均为$\Delta t_0$,则:
$TP_{max}=1/\Delta t_0$
假设流水线隔段时间不等,第i段时间为$\Delta t_i$,则:
$TP_{max}=1/max{\Delta t_i}$

  • 最大吞吐率取决于流水线中最慢的一段时间,这段称为流水线的瓶颈

- 消除瓶颈的方法

  • 细分瓶颈段
  • 重复设置瓶颈段

实际吞吐率

  • 如果隔断时间相等(假设均为$\Delta t_0$),则完成时间

$T_{流水}=m\Delta t_0 + (n-1)\Delta t_0$

实际吞吐率

$$
TP=\frac n{T_{\textit{流水}} }=\frac n{{m{\Delta}t{0}+(n-1)\bullet{\Delta}t_{0}}}
$$
$$
TP=\frac{n}{\sum_{\mathrm{i}=1}^{m}\Delta t_{i}+(n-1):\Delta t_{j}}
$$

加速比

如果流水线是m段,每一段时间均为$\Delta t_0$,那么
$$
S=\frac{\mathrm{mn}}{m+n-1}=\frac{m}{1+\frac{m-1}n}
$$

效率

通过时间和排空时间使得各段不是一直满负载工作

$$
E=\frac{n\triangle t_{o}}{T_{流水}}=\frac{n}{m+n-1}=\frac{1}{1+\frac{m-1}{n}}
$$

流水线举例

$$
\sum^{4}_{i=1}A_iB_i= A_1B_1+A_2B_2+A_3B_3+A_4B_4
$$

乘法:1,6,7,8 —— 4次
加法:1,2,3,4,5,8 —— 3次

有关流水线性能的若干问题

  • 流水线并不能减少单条指令的执行时间,但是能够提高吞吐率

流水线中的冲突

结构冲突
数据冲突
控制冲突

导致结构冲突的常见原因

  • 功能部件不是全流水
  • 重复设置的资源数量不足

示例:当数据和指令在同一个寄存器中的时候,访存指令回应一存储器访问冲突

解决方法:

  • 插入暂停周期
  • 将指令寄存器和数据存储器分离

避免结构冲突的方法

  • 所有功能单元完全流水化
  • 设置足够多的硬件资源 但是硬件代价很大!

当前许多机器都没有将浮点功能单元完全流水,比如在MIPS实现中,浮点乘需要5个时钟周期但对该指令不流水。请分析由此引起的结构冲突对mdlidp2基准程序在MIPS上运行的性能有何影响? 为简单起见,假设浮点乘法服从均匀分布。

mdljdp2中浮点乘法出现的频率约为14%
最坏情况:每个浮点成都要和其他操作重叠执行,都需要五个周期,此时的CPI为1.56
最好情况:可以完全重叠执行,仅需要一个周期,此时没有性能损失

流水线的数据冲突

数据冲突简介

产生原因:当指令在流水线中重叠执行的时候,流水线有可能改变指令读/写操作数的顺序,使之不同于它们在非流水实现的时候的顺序,这将导致数据冲突。

消除方法向流水线中插入暂停周期

通过定向技术减少数据冲突带来的暂停

定向(Forwarding),也称为旁路(Bypassing),是指在计算机指令流水线中,将运算结果从前一条指令的执行阶段直接送往下一条指令的执行阶段,而不需要等待写回阶段的结果。这样可以节省一部分时间,提高计算机的运算效率。定向可以理解为”抄近道”,不必等待写回阶段的结果即可将数据直接送往下一指令的输入端。

工作过程

主要思路:将计算结果从其产生的地方直接送到真正需要它的地方,就可以避免暂停。

  • 寄存器文件中的ALU运算结果总是回送到ALU的输入寄存器
  • 从定向通路得到输入数据的ALU操作不必从源寄存器中读取操作数

通过定向技术减少数据冲突带来的暂停

进一步推广:一个结果不经可以从某一个功能单元的输出定向到其自身的输入,而且还可以定向到其它功能单元的输入。

在MIPS中,任何流水寄存器到任何功能单元的输入都可能需要定向路径,将形成复杂的旁路网络。

两条指令访问同一个存储单元,也可能引起数据冲突,例如访问数据Cache失效的时候

只讨论寄存器数据冲突!

  • 标题: CA-第八讲 流水线技术
  • 作者: Molaters
  • 创建于 : 2023-11-24 11:30:49
  • 更新于 : 2023-10-12 17:04:06
  • 链接: https://molaters.github.io/2023/11/24/计算机体系结构/CA-第八讲 流水线技术/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论