【问题标题】:Pipelining affects the clock time or cycle-per-instruction(CPI)?流水线会影响时钟时间还是每指令周期(CPI)?
【发布时间】:2019-05-03 20:13:21
【问题描述】:

我的书提到“根据您认为的基线,减少可以被视为减少每条指令的时钟周期数 (CPI)、减少时钟周期时间或组合。如果起点是一个每条指令需要多个时钟周期的处理器,那么流水线通常被视为降低 CPI。”

我不明白的是流水线会影响 CPI 或时钟周期,因为在流水线的情况下,时钟周期被视为最大阶段延迟 + 锁存延迟,所以流水线确实会影响时钟时间。它还会影响 CPI,因为它在流水线的情况下变为 1。我错过了一些概念吗?

【问题讨论】:

  • 流水线增加了相同时钟速度下的平均吞吐量,这与降低平均 CPI 完全相同。或者,如果您的 CPU 时钟非常慢,以至于它可以在一个时钟周期内完成整个指令的所有操作,它可以让您提高时钟速度。
  • @PeterCordes 这是否意味着我们可以减少 CPI 或时钟周期时间,而不是两者?
  • 它通常会增加单个指令的周期时间,但平均而言,由于许多(=流水线长度)指令并行执行,因此每条指令的周期会减少.我建议您查看著名的洗衣示例,例如 hpca23.cse.tamu.edu/taco/utsa-www/cs5513-fall07/lecture3.html

标签: pipeline cpu-architecture instructions


【解决方案1】:

执行一条指令需要一组操作。为简单起见,假设有 5 个: fetch-instruction decode-execute-memory access-write back。

这可以通过多种方案来实现。

A/单循环处理器

方案如下: 处理器获取一条指令,将其引导到一个解码器,该解码器控制一组多路复用器,这些多路复用器将配置一个实现该指令的大型组合数据路径。

在这个模型中,每条指令需要一个周期,并且假设所有 5 个“阶段”都需要相同的时间 t,则周期将为 5t。 因此CPI=1,T=5

实际上,这或多或少是 40 年代后期早期计算机的基础模型。除此之外,还没有真正的处理器可以做到这一点,但理论上是完全可行的。

B/多周期处理器

与之前的模型相比,您在数据路径上引入了寄存器。第一个获取指令并将其发送到自动机的输入,自动机将按顺序应用计算“阶段”。

在这种情况下,指令需要 5 个周期(可能会稍微少一些,因为某些指令可能更简单,例如,跳过内存访问)。周期是 1t(或者考虑到寄存器遍历时间可能会稍微多一点)。

CPI=5,T=1

第一台“真正的”计算机就是这样实现的,这是 80 年代初期的主要架构模型。如今,一些微控制器,或者例如更简单的 NIOS 版本,仍然依赖于这种方案。

C/流水线处理器

为了跟踪指令和所有部分结果,您可以在阶段之间添加额外的寄存器。在这种情况下,每个阶段的执行可以是独立的,您可以在不同的阶段同时执行几条指令。

CPI 变为 1,因为您可以在每个时钟周期开始一条新指令(由于危险可能会更多,但这是另一回事)。 并且 T=1。

所以 CPI=1,T=1

(CPI反映吞吐量增加但单条指令执行时间没有减少)

因此,流水线可以看作是减少了方案 A 的周期时间,或者减少了方案 B 的 CPI。您还可以想象一个中间方案(比如 3 个阶段,周期为 2),其中流水线将减少两者。

【讨论】:

    猜你喜欢
    • 2017-03-12
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 2012-01-22
    • 2020-04-09
    • 2014-01-06
    • 1970-01-01
    相关资源
    最近更新 更多