CPU流水线是提高吞吐量和指令级并行性的常见技术。我们可以任意增加CPU pipeline深度吗?
回答是否定的。
参加面试的工程师应该从以下方面回答这个问题:
1.pipeline需要在每个stage之间保持平衡。否则,stage之间将出现瓶颈。通常,pipeline越深,设计pipeline就越困难。
2.更深层次的流水线需要更多的硬件资源,例如,更多的pipeline stage register ,以及更多的ROB条目来实现精确的中断以及基于硬件的投机(speculation )。
3.CPU pipeline 需要处理结构/数据/控制hazard。pipeline 越深,控制逻辑就越复杂。
4.控制hazard可能会迫使pipeline flush,因此很少达到理论峰值性能。
5.数据hazard可能会阻止后续操作,因此无法利用某些并行性。
6.更深的pipeline引入了物理实现的问题,例如clock tree balance、clock skew以及reset tree路由routing
7.更深的pipeline 增加了指令延迟。
8.如果pipeline 更深,我们可能会进一步增加时钟频率和pipeline 吞吐量。然而,对于某个工艺节点时钟频率有一个上限。