CPU的流水线指令设计(下)

简介: CPU的流水线指令设计

超长流水线的性能瓶颈

你说流水线能增加 CPU 吞吐率,流水线级数就越深越好咯?

增加流水线深度,是有性能成本的。


同步时钟周期的,不再是指令级别,而是流水线阶段级别。

每一级流水线对应的输出,都要放到流水线寄存器(Pipeline Register),然后在下一个时钟周期,交给下一个流水线级去处理。

所以,每增加一级流水线,就要多一级写入到流水线寄存器的操作。

虽然流水线寄存器非常快,比如只有20皮秒(ps,1 0 − 12 10^{-12}10 -12)。

image.png

但不断加深流水线,这些操作占整个指令的执行时间的比例就会不断增加。最后,性能瓶颈就会出现在这些overhead。

若指令执行有3ns=3000ps:


  • 20级流水线,则流水线寄存器写入就要400ps,占超过10%
  • 50级流水线,就要多花费1ns在流水线寄存器上,占到25%


这意味着,单纯增加流水线级数,不仅不能提升性能,反而会有更多overhead开销。所以,设计合理的流水线级数也是现代CPU中非常重要的一点。

总结

为不浪费CPU性能,通过把指令执行过程,切分成一个个流水线级,提升CPU吞吐率。而CPU设计,又是由一个个独立的组合逻辑电路串接起来形成,适合这样采用流水线“专业分工”的工作方式。


因为每一级overhead,一味地增加流水线深度,并不能无限提高性能。

因为指令的执行不再是顺序一条条执行,而是在上条执行到一半时,下一条就已经启动了,所以给程序带来很多挑战。这些挑战和对应解决方案,你就得持续关注这个系列文章了!



参考

  • 《深入理解计算机系统》的4.4章节
  • 《计算机组成与设计 硬件/软件接口》的4.5章节
目录
相关文章
|
5月前
|
算法 编译器
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
258 0
|
3月前
|
存储 Ruby 内存技术
【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统
【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统
80 1
|
4月前
|
存储 缓存 Java
揭秘计算机指令执行的神秘过程:CPU内部的绝密操作
本文介绍了计算机指令和CPU如何执行指令。它解释了计算机指令可以被视为CPU所理解的语言,不同的CPU支持不同的指令集。文中重点介绍了MIPS指令集作为示例。同时,还描述了CPU的内部处理过程,包括控制单元、算术逻辑单元和数据单元。文章最后讨论了CPU和内存之间通过地址和数据总线进行的数据传输。
101 1
|
8月前
|
缓存 安全 Java
volatile底层的实现原理:volatile关键字的作用、内存模型、JMM规范和CPU指令
volatile底层的实现原理:volatile关键字的作用、内存模型、JMM规范和CPU指令
122 0
|
11月前
|
存储 编译器 C语言
CPU指令解析及函数调用机制
CPU指令解析及函数调用机制
226 0
|
11月前
|
存储 缓存 索引
通过地址和索引实现数组、CPU指令执行过程、内存概述及内存物理结构
通过地址和索引实现数组、CPU指令执行过程、内存概述及内存物理结构
63 0
|
11月前
CPU流水线越大越好吗?
流水线技术是提升性能的银弹吗?它通过把一条指令的操作切分成更细的多步,可避免CPU“浪费”。每个细分的流水线步骤都很简单,单个时钟周期时间就可设得更短,变相让CPU主频提升很快。
152 0
|
11月前
|
缓存
CPU流水线竞争解决方案
增加资源,通过添加指令缓存和数据缓存,让我们对于指令和数据的访问可以同时进行。帮助CPU解决取指令和访问数据之间的资源冲突。
91 0
|
存储
MOTOROLA VME172PA-652SE 复杂程度的计算机流水线指令
MOTOROLA VME172PA-652SE 复杂程度的计算机流水线指令
83 0
MOTOROLA VME172PA-652SE 复杂程度的计算机流水线指令
3BHE032285R0102 XVC772A102 增加在CPU内执行指令的速率
3BHE032285R0102 XVC772A102 增加在CPU内执行指令的速率
102 0
3BHE032285R0102  XVC772A102 增加在CPU内执行指令的速率