【发布时间】:2021-05-09 09:32:27
【问题描述】:
5 级流水线 CPU 具有以下阶段序列:
-
IF – 从指令存储器中取出指令。
-
RD - 指令解码和寄存器读取。
-
EX - 执行:用于数据和地址计算的 ALU 操作。
-
MA – 数据存储器访问 – 对于写访问,在 RD 状态下读取的寄存器是 用过。
-
WB – 寄存器回写。
现在我知道,例如,从内存中提取指令可能需要 4 个周期(L1 高速缓存)或最多 ~150 个周期(RAM)。但是,在每个流水线图中,我看到类似this 的内容,其中每个阶段都分配了一个周期。
现在,我当然知道真正的处理器具有超过 19 个阶段的复杂流水线,并且每种架构都不同。但是,我在这里错过了什么吗?在 IF 和 MA 中进行内存访问,这 5 级流水线是否需要数十个周期?
【问题讨论】:
-
如果您阅读该图的维基百科文章,您会看到处理器在执行内存访问操作时停止。如果可能,更高级的 CPU 设计将重新排序操作或使用分支预测(例如,如果分支指令需要内存读取),以允许它在等待内存访问完成时仍然做一些有用的工作。在现代处理器中,L1 缓存应该包含 大部分 被访问的内存,因此大多数(90%+?)时间的影响并不像 150 周期的 RAM 命中那么糟糕。
-
嗯,这很有道理,所以在小情况下,RAM 命中 150 个周期,流水线实际上会停顿那么多周期,对吧?
标签: cpu-architecture cpu-cache pipelining