【问题标题】:What is the difference between pipeline and lane in terms of CPU architecture?在 CPU 架构方面,pipeline 和 lane 有什么区别?
【发布时间】:2019-07-31 17:03:24
【问题描述】:

我最近正在阅读 Jonh L. Hennessy 和 David A. Patterson 所著的“计算机架构:定量方法”一书。
我发现术语“车道” 在第 4 章中被广泛使用,但没有明确和正式定义。

它出现的第一个地方如下:
“所有现代向量计算机都有向量功能单元,带有多个并行管道(或通道),每个时钟周期可以产生两个或多个结果......” 在第 290 页(第 6 版)中。

我对“车道”和“管道”这两个术语有些困惑。它们是一样的吗?

【问题讨论】:

  • 这两个术语在该章中是同义词。通道是用于描述执行单元宽度的单元名称。例如,具有两个 32 位通道的执行单元可以执行具有两个 32 位元素的向量指令。这与将向量指令分成两条微指令形成对比,每条微指令由一个执行单元执行。同一个执行单元可能还可以作为一个具有四个 16 位通道的单元运行。 “流水线”一词也常用于指代处理器的整个流水线……
  • ...所以该术语的含义取决于上下文。通道不一定是完全流水线的(即,每个周期可以完成一个标量操作)。此外,车道不一定是执行单元中的实际物理路径,但这是实现向量执行单元的常用方式。
  • “lane”一词在 PCIe 标准中也用于表示一对线,一个用于发送单个比特,另一个用于接收单个比特。一个 x16 宽的 PCIe 插槽有 16 个通道,可以容纳一个 16 宽或更小的 PCIe 卡。
  • 感谢您的回答。我仍然不清楚管道数量是什么意思?例如,对于具有 5 级流水线的 CPU,我们说 CPU 有一条流水线还是有 5 条流水线?

标签: gpu cpu-architecture simd


【解决方案1】:

此上下文中的“通道”是 SIMD 元素。 (他们谈论的是向量执行单元,不是在整个 CPU 的“管道”中并行运行多条指令的超标量 CPU。实际上你两者都有)

例如x86 SSE addps xmm0, xmm1 使用一条指令执行 4x float32 加法,将 XMM 寄存器视为 4 通道 32 位浮点数。

它在一个 SIMD 执行单元上运行,该单元具有 4 个并行的单精度 FP 加法器。这个执行单元是流水线的,通常有 3 或 4 个周期的延迟和 1 个时钟的吞吐量。

在这种情况下,您的教科书是在讨论一个执行单元内的管道。就流水线而言,操作是什么,无论是 4x 32 位还是 2x 64 位或其他什么,都没有什么不同。在流水线阶段之间的缓冲区中,有一定数量的位要锁存,而锁存器并不关心它是如何解释的。

【讨论】:

    【解决方案2】:

    首先,确保您了解流水线是什么。

    流水线是一种实现技术,其中多条指令在执行中重叠。计算机流水线分阶段进行。每个阶段并行完成指令的一部分。这些阶段一个接一个地连接以形成一个管道 - 指令从一端进入,通过阶段,然后在另一端退出。

    在您的场景中,道路上有多个车道会增加汽车吞吐量。您将有更多的汽车到达最终目的地。但是,您的汽车速度将是相同的。流水线也是如此。

    流水线不会减少单个指令执行的时间。相反,它增加了指令吞吐量。指令流水线的吞吐量取决于指令退出流水线的频率。

    查看this website了解更多信息。

    【讨论】:

    • 非常感谢。在我看来,一条管道在我的上下文中是一条通道。但是,我仍然不清楚如何计算管道的数量?对于标有“Lane 2”的图,说图中给出了两条管道是否合适?或者,相比之下,单个管道由两条通道组成?
    猜你喜欢
    • 1970-01-01
    • 2017-03-14
    • 2020-02-22
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 2012-05-31
    • 1970-01-01
    相关资源
    最近更新 更多