流水线

编辑
本词条由“匿名用户” 建档。

在计算中,管道也称为数据管道,是一组串联的数据处理元素,其中一个元素的输出是下一个元素的输入。流水线的元素通常以并行或时间片的方式执行。通常在元素之间插入一定量的缓冲区存储。 与计算机相关的管道包括: 指令流水线,例如经典的RISC流水线,用于中央处理器(CPU)和其他微处理器,允许使用相同的电路重叠执行多条指令。电路通常分为几个阶段,每个阶段一次处理一条指令的特定部分,将部分结果传递给下一个阶段...

流水线

编辑

在计算中,管道也称为数据管道,是一组串联的数据处理元素,其中一个元素的输出是下一个元素的输入。 流水线的元素通常以并行或时间片的方式执行。 通常在元素之间插入一定量的缓冲区存储。

计算机相关的管道包括:

  • 指令流水线,例如经典的 RISC 流水线,用于中央处理器 (CPU) 和其他微处理器,允许使用相同的电路重叠执行多条指令。 电路通常分为几个阶段,每个阶段一次处理一条指令的特定部分,将部分结果传递给下一个阶段。 阶段的示例是指令解码、算术/逻辑和寄存器获取。 它们涉及超标量执行、操作数转发、推测执行和乱序执行等技术
  • 图形管线,存在于大多数图形处理单元 (GPU) 中,由多个算术单元或完整的 CPU 组成,可实现常见渲染操作的各个阶段(透视投影、窗口裁剪、颜色和光线计算、渲染、 等)。
  • 软件管道,由一系列计算过程(命令、程序运行、任务、线程、过程等)组成,概念上并行执行,一个过程的输出流自动作为输入流 下一个。 Unix 系统调用管道是这一概念的典型示例。
  • HTTP 流水线技术,一种通过同一 TCP 连接发出多个 HTTP 请求的技术,无需等待前一个请求完成后再发出新请求。

一些操作系统可能会提供类似 UNIX 的语法来将多个程序运行串在管道中,但将后者实现为简单的串行执行,而不是真正的流水线——即等待每个程序完成后再启动下一个程序。

概念与动机

编辑

流水线是日常生活中常用的概念。 例如,在汽车厂的装配线上,每项具体任务——如安装发动机、安装引擎盖和安装车轮——通常由单独的工作站完成。 这些站点并行执行任务,每个站点都在不同的汽车上。 一旦汽车完成一项任务,它就会移动到下一个站点。 完成任务所需时间的变化可以通过缓冲(将一辆或多辆汽车停在车站之间的空间内)和/或通过停顿(暂时停止上游车站)来适应,直到下一个车站可用。

假设组装一辆汽车需要完成三项任务,分别需要 20、10 和 15 分钟。 那么,如果这三项任务都由一个站点完成,那么工厂每 45 分钟就会产出一辆汽车。 通过使用三个站点的流水线,工厂将在 45 分钟内生产出xxx辆汽车,然后每 20 分钟生产一辆新汽车。

如本示例所示,流水线操作不会减少延迟,即一项通过整个系统的总时间。 然而,它确实增加了系统的吞吐量,即在xxx个项目之后处理新项目的速率

设计注意事项

编辑

平衡阶段

由于流水线的吞吐量不可能比其最慢元素的吞吐量更好,因此设计人员应尝试在各个阶段之间分配工作和资源,以便它们都花费相同的时间来完成任务。 在上面的汽车组装示例中,如果这三个任务各花费 15 分钟,而不是 20、10 和 15 分钟,则延迟仍将是 45 分钟,但是一辆新车将每 15 分钟完成一次,而不是每 20 分钟。

缓冲

在理想情况下,如果所有处理元素都同步并花费相同的时间来处理,那么每个元素都可以在一个时钟周期内接收到每个项目,就像它被前一个元素释放一样。 这样,物品就会以恒定的速度流过管道,就像水道中的波浪一样。 在这样的波流水线中,除了数据项所需的存储之外,阶段之间不需要同步或缓冲。

微处理器

更一般地说,当处理时间不规则时,或者当可能沿管道创建或销毁项目时,管道阶段之间的缓冲是必要的。 例如,在处理要在屏幕上呈现的三角形的图形管道中,检查每个三角形可见性的元素可能会丢弃三角形(如果不可见),或者可能输出元素的两个或多个三角形部分(如果它们部分不可见) 隐。 还需要缓冲以适应应用程序将项目提供给xxx阶段并消耗最后一个输出的速率的不规则性。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/196081/

(1)
词条目录
  1. 流水线
  2. 概念与动机
  3. 设计注意事项
  4. 平衡阶段
  5. 缓冲

轻触这里

关闭目录

目录