在阅读了处理器如何使用管道(来自各种文章:维基百科、SU 和其他地方)之后,我对所读内容的某些部分感到有点困惑,所以我只想分享我的理解,如果有人可以澄清以下内容是正确的(如果有任何错误,请告诉我),
缩写:
cycle = 时钟周期
ICR = 指令完成率
IT = 指令吞吐量
IL = 指令延迟
IL 是单个指令通过整个管道所需的纳秒数(因此 IL 越低,ICR 越高)。
管道的每个阶段都需要一个周期才能完成。
假设:管道没有遇到任何“气泡”、缓存未命中等;管道深度为 5 个阶段,处理器以 2 GHz 的时钟速度运行(即每周期 0.5 纳秒)。
该处理器将能够在一秒钟内处理 800'000'000 条指令(忽略管道需要首先填充指令才能达到其最大 IT 的事实)。
如果流水线深度为 10 个阶段,则一条指令的 IL 将为 10 个周期。
单核、非超标量架构处理器可以实现的最大 IT 是每周期 1 条指令。
处理器的循环周期由其管道的最慢阶段决定。
管道每个阶段所花的时间越短,IT 和 ICR 就越高。
完美的管道具有:低 IL、高管道深度(但可防止“气泡”、缓存未命中等)、高时钟速度、高 IT 和高 ICR。
答案1
ICR=IT
1) 这实际上与管道的长度有关。相比之下,高延迟的互联网连接不一定是低带宽的连接。
2)是的,尽管有时当我们需要时,指令却无法离开管道的某个特定阶段(缓存未命中等)。
3) 不会,它将处理 2,000,000,000 条指令。管道的每个阶段随时都会有不同的指令,因此在没有任何冒泡或缓存未命中的完美情况下,拥有 5 个阶段不会减慢速度。
4) 听起来是对的。对于某些处理器,一条指令要经过多少个阶段取决于该指令。
5)听起来不错。
6)它们都必须在相同的时钟上运行,但是当您设计一个时钟时,是的,任何一个无法达到最高时钟的时钟都会成为限制因素。
7)是的,指令延迟也更短,尽管实现这些更高的时钟速度通常需要延长管道。
8) 较长的流水线可能会让您实现更高的时钟速度,但同时也会让您更容易受到气泡或错误预测分支的影响,因此这实际上是一种权衡。最终您关心的只是吞吐量。