浅谈 pipeline

Pipeline” 这个英语单词,经常出现在我看的论文中。今天天气晴朗,惠风和畅,心情愉悦,故有想法搞清楚它的内涵。于是上维基百科查它。先说我的结论,现在这个概念对我而言是:需要处理已有数据,从而得到目标数据,对如何安排处理多条数据流(大多数时候,数据流是单向流动的)的抽象
“Pipeline” 在牛津词典上的解释有:

  • a series of pipes that are usually underground and are used for carrying oil, gas, etc. over long distances

确实。。“油" 和 “气” 不就是对应 “数据” ?另外,管线流水线计算机科学领域有时是同义词。中文维基百科关于“流水线”词条介绍如下:

  • 流水线,亦称管线,是现代计算机处理器中必不可少的部分,是指将计算机指令处理过程拆分为多个步骤,并通过多个硬件处理单元并行执行来加快指令执行速度。其具体执行过程类似工厂中的流水线,并因此得名。

本文要介绍的是计算领域的 Pipeline如图1,计算领域pipeline也被称为 data pipeline ,是一组串联连接的数据处理元素。其中一个元素的输出是下一个元素的输入。 流水线的元素通常以并行或分时(time-sliced)的方式执行。 通常在元素之间插入一定数量的缓冲区存储空间。

在这里插入图片描述

图1. 维基百科中 “Pipeline” 多个词条

它涵盖了

  • 指令流水线
  • 在软件工程中的流水线
  • 绘图管线

指令流水线

在计算机科学中,指令流水线是一种在单个处理器中实现指令级并行性的技术。 流水线尝试通过将传入指令分成一系列顺序步骤来使处理器的每个部分都忙于某些指令,这些步骤由不同的处理器单元执行,并并行处理不同的指令部分

例如经典的 RISC 流水线,用于中央处理单元(cpu)和其他微处理器中,允许在同一电路中重叠执行多个指令。 电路通常分为多个阶段(stage,下文也翻译成 “级”),每个阶段一次处理一条指令的特定部分,将部分结果传递给下一个阶段。 阶段的示例是指令解码、算术/逻辑和寄存器获取。 它们与超标量执行、操作数转发、推测执行和乱序执行等技术有关。

在这里插入图片描述

图2. 本图来自维基百科。在 RISC 机器中基本的五级流水线 (IF = Instruction Fetch, ID = Instruction Decode, EX = Execute, MEM = Memory access, WB = Register write back). 垂直轴是连续的指令;水平轴是时间。所以在绿色的那一列,最早的指令是在 WB 级,最新的指令是取指令。

在软件工程中的流水线

在软件工程中,管线是由一系列处理元素(进程线程协程函数等)组成的,它们的排列使每个元素的输出成为下一个元素的输入; 这个名字类似于物理管道。 通常在连续的元素之间提供一定数量的缓冲。 在这些管线中流动的信息通常是记录、字节或位的流(strem),管线中的元素可以称为过滤器; 这也称为管线和过滤器设计模式。 将元素连接到管道类似于函数组合。

狭义地说,管线是线性和单向的,尽管有时这个术语被用于更一般的流动。 例如,一个主要的单向管线可能在另一个方向有一些通信(communication),称为返回通道(return channel)或反向通道(backchannel),如lexer hack,或者管线可能是完全双向的。 具有单向树和有向无环图拓扑的流的行为类似于(线性)流水线——缺少循环使它们变得简单——因此可以松散地称为“管线”。

绘图管线

在计算机图形学中,计算机图形管线、渲染管线或简单的绘图管线是一个概念模型,描述了图形系统将3D场景渲染到2D屏幕所需执行的步骤。一旦3D模型被创建,例如在电子游戏或任何其他3D计算机动画中,绘图管线就是将3D模型转换成计算机显示的内容的过程。由于此操作所需的步骤取决于所使用的软件和硬件以及所需的显示特性,因此没有适用于所有情况的通用图形管线。

在这里插入图片描述

图3. 本图来自维基百科。 绘图管线主要包含 应用阶段,几何阶段 和 光栅化阶段 三个部分

HTTP 流水线

HTTP 流水线HTTP/1.1 的一个特性,它允许在一个 TCP (传输控制协议)连接上发送多个 HTTP 请求,而无需等待相应的响应。 HTTP/1.1 规范要求服务器正确响应流水线化的请求,即使服务器不支持 HTTP 流水线化,也要返回非流水线化但有效的响应。 尽管有这个需求,许多遗留的 HTTP/1.1 服务器并不支持正确的管线,这迫使大多数HTTP客户端在实践中不使用HTTP管道。

这项技术被大多数现代浏览器支持的 HTTP/2 的多路复用所取代

在 HTTP/3 中,多路复用是通过新的底层 QUIC 传输协议来实现的,它取代了 TCP 。 这进一步减少了加载时间,因为不再有首行阻塞。

时间,因为不再有首行阻塞。
在这里插入图片描述

图4. 本图来自维基百科。 非流水线与流水线连接的时间图
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

培之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值