【问题标题】:Clock cycle in pipelining and single-clock cycle implementation流水线中的时钟周期和单时钟周期实现
【发布时间】:2017-03-12 03:54:50
【问题描述】:

有两种执行指令的机制。

  1. 单时钟周期实现
  2. 流水线。

在 MIPS 架构中(来自计算机组织与设计一书),指令有 5 个阶段。

因此,在单时钟周期实现中,这意味着在一个时钟周期内,一条指令执行 5 个阶段。

例如,加载指令(它有 5 个阶段)在一个时钟周期内执行。所以其他指令可以在这个时钟周期之后执行。 假设一个时钟周期是 10 秒。

现在,在流水线中,多条指令可以重叠。与上面示例中的一个时钟周期的时间相比,我对这个概念感到困惑。

这里要执行 5 条指令,需要 9 个时钟周期。这意味着执行 5 条指令,需要 90 秒。但在单时钟周期实现中,执行 5 条指令只需要 50 秒。流水线需要更多的时钟周期。(不好)我想错了吗?还是我错过了什么??

那么,执行第一条指令lw $10, 20($1),需要50秒??

【问题讨论】:

  • 假设一个时钟周期为 10 秒。 1 纳秒是更可能的选择(1GHz CPU)。即使是一个非常早期的 RISC,它可能使用如此简单的流水线,也可能以 100MHz 运行。因此,您对可能是一个好的/合理的例子的猜测相差了 9 或 10 个数量级......
  • 您所缺少的是流水线允许您比整个指令必须在单个周期中获取/解码/执行/写回更快地为设计提供时钟。 (更典型的是,像英特尔最初的 8086 这样的非流水线 CPU 会为每条指令花费多个周期,而不是运行非常慢的时钟并将其细分为内部操作的时间。)

标签: mips cpu-architecture


【解决方案1】:

我认为您的主要误解是您认为两种设计中时钟周期的持续时间相同,但事实并非如此。 让我们将单周期设计中的时钟周期表示为X,将流水线设计中的时钟周期表示为Y。 在单周期设计中,5 条指令将占用 5X 个周期,而在流水线设计中,这将占用 9Y 个周期。

现在我们需要找到XY 之间的关系。 现在考虑一个只有一条指令要执行的情况。 在单周期设计中,这将占用X 个周期,而在流水线设计中,这将占用5Y。如果两者的时钟频率相同,X 应该等于 5Y

现在让我们做一些替换数学:-)

单循环 - 5X

管道 - 9Y

替换X = 5Y

单循环 - 25Y

管道 - 9Y

给你。单周期设计比多周期设计慢 2.7 倍。

【讨论】:

  • 流水线设计从头到尾等着5条指令走完有点不现实。执行长指令流的稳态情况理想为5Y 个周期。 (当然,由于有限的并行性和分支错误预测而导致的停顿会减慢速度,所以毕竟 9Y 可能是现实的)。
  • 但是你使用它的方式,期望流水线 CPU 的 1 条指令一直通过流水线的时间大约等于非流水线 CPU 的时间会更合理对于一条指令(如果您流水线所需的最少数量)。因此时钟速度比很容易达到 5:1(相对于一个愚蠢的设计,它的时钟速度如此之慢,以至于可以在一个周期内运行每条指令)。
最近更新 更多