Files

6.0 KiB
Raw Permalink Blame History

tags, create time
tags create time
计算机系统结构
重点复习
流水线
分类
2026-06-16 21:21

小题 2 — 流水线的分类

概述

本题考查流水线的多种分类维度:单功能/多功能、静态/动态、线性/非线性 的含义及区别。这是理解流水线技术的基础,常以选择题形式出现。

[!tip] 考试重点 需理解每种分类的定义和区别,尤其是静态多功能与动态多功能的对比,以及线性与非线性流水线的本质差异(是否允许反馈连接)。

正文

一、按功能分类:单功能 vs 多功能

分类 含义 特点 示例
单功能流水线 只能完成一种固定功能 设计简单、专用性强 浮点加法流水线、浮点乘法流水线
多功能流水线 同一流水线可以完成多种不同功能 灵活性高、但控制复杂 可重构的 ALU 流水线

[!question] 思考:为什么需要多功能流水线? 现代处理器需要执行加法、乘法、逻辑运算等多种操作。如果每种操作都设计一条专用流水线,硬件开销太大。多功能流水线通过动态重构段间连接,用同一条流水线支持多种功能,提高了硬件利用率。

二、按工作方式分类:静态 vs 动态

这是针对多功能流水线的进一步细分,描述的是流水线在同一时刻能否同时执行多种功能。

分类 含义 同时执行多种功能? 控制复杂度 性能
静态流水线 同一时刻只能按一种功能方式工作 否——切换功能需要排空流水线 低 较低
动态流水线 同一时刻可以有多种功能在不同段中同时工作 是——不同段可以执行不同功能的子任务 高 较高
graph LR
    subgraph Static["Static Pipeline"]
        S1["Phase 1: All ADD"] --> S2["Phase 2: All MUL"]
        S2 --> S3["Phase 3: All ADD"]
    end
    subgraph Dynamic["Dynamic Pipeline"]
        D1["Segment 1: ADD task"] --> D2["Segment 2: MUL task"]
        D2 --> D3["Segment 3: ADD task"]
    end

[!note] 静态 vs 动态的关键区别

静态流水线的工作过程:

  1. 当前阶段全部执行功能 A 的任务
  2. 功能 A 的最后一个任务完全流出后(排空)
  3. 才能开始执行功能 B 的任务
  4. 不允许 A 和 B 的任务在流水线中同时存在

动态流水线的工作过程:

  1. 功能 A 的某个任务在段 3 执行
  2. 同一时刻,功能 B 的另一个任务可以在段 1 开始
  3. 各段独立工作,无需排空

代价:动态流水线需要更复杂的段间互连和冲突检测逻辑,因为不同功能可能需要不同的段间数据通路。

[!question] 思考:静态流水线一定是单功能的吗? 不一定。静态流水线可以是多功能的,只是在某一时刻只执行一种功能。例如一条既能做加法又能做乘法的流水线,在某段时间全部做加法,排空后全部做乘法——这是静态多功能流水线。

三、按结构分类:线性 vs 非线性

分类 含义 特点 调度难度
线性流水线 各段串行连接,无反馈、无前馈 每拍可送入一个新任务 简单
非线性流水线 各段之间存在反馈或前馈连接 不能每拍送入新任务,需要预约表调度 复杂
graph LR
    subgraph Linear["Linear Pipeline"]
        L1["S1"] --> L2["S2"] --> L3["S3"] --> L4["S4"]
    end
    subgraph NonLinear["Non-Linear Pipeline"]
        NL1["S1"] --> NL2["S2"]
        NL2 --> NL3["S3"]
        NL3 --> NL4["S4"]
        NL3 -.->|"Feedback"| NL1
    end

[!note] 线性 vs 非线性的本质区别

线性流水线:数据单向流动,各段只使用一次。任务完成后立即释放所有段,下一拍可送入新任务。吞吐率恒定为 $1/\Delta t$(\Delta t 为最长段时间)。

非线性流水线:由于存在反馈连接,同一个任务可能多次使用某一段。如果新任务进入的间隔太小,就会产生段冲突——两个任务在同一时刻争用同一段。因此需要通过预约表分析来确定安全的进入间隔。

非线性流水线的调度是本课程的核心难点,详见 大题3-非线性流水线调度。

四、分类体系总览

graph TD
    ROOT["Pipeline Classification"] --> F["By Function"]
    ROOT --> W["By Working Mode"]
    ROOT --> S["By Structure"]

    F --> F1["Single-Function"]
    F --> F2["Multi-Function"]

    W --> W1["Static"]
    W --> W2["Dynamic"]

    S --> S1["Linear"]
    S --> S2["Non-Linear"]

    F2 --> W

完整的分类组合关系:

组合类型 含义 实例
单功能线性 只做一种功能,段间串行 浮点加法流水线
单功能非线性 只做一种功能,有反馈连接 某些迭代计算流水线
多功能静态线性 多种功能但需排空后切换,无反馈 早期向量处理器
多功能静态非线性 多种功能需排空切换,有反馈 复杂运算单元
多功能动态线性 同时执行多种功能,无反馈 高端处理器的执行单元
多功能动态非线性 同时执行多种功能,有反馈 最复杂的情况

[!warning] 考试常见陷阱

  • "静态"和"线性"是两个独立的维度,不要混淆。静态/动态描述的是多功能流水线的工作方式;线性/非线性描述的是段间连接结构。
  • 单功能流水线无所谓静态/动态(因为它只有一种功能,不存在"切换"的问题)。
  • 线性流水线的调度是确定性的(每 \Delta t 送入一个任务),非线性流水线需要专门的调度算法。

关联笔记