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章节
目录
相关文章
|
11月前
|
算法 编译器
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
926 1
|
5月前
|
存储 Ruby 内存技术
【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统
【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统
212 1
|
4月前
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
|
5月前
|
存储 缓存 Java
揭秘计算机指令执行的神秘过程:CPU内部的绝密操作
本文介绍了计算机指令和CPU如何执行指令。它解释了计算机指令可以被视为CPU所理解的语言,不同的CPU支持不同的指令集。文中重点介绍了MIPS指令集作为示例。同时,还描述了CPU的内部处理过程,包括控制单元、算术逻辑单元和数据单元。文章最后讨论了CPU和内存之间通过地址和数据总线进行的数据传输。
180 1
|
12月前
CPU和指令周期
转移指令时,需要判别转移是否成功,若成功则 PC 修改为转移指令的目标地址,否则下一条指令的地址仍然为PC自增后的地址
412 1
|
缓存 安全 Java
volatile底层的实现原理:volatile关键字的作用、内存模型、JMM规范和CPU指令
volatile底层的实现原理:volatile关键字的作用、内存模型、JMM规范和CPU指令
149 0
|
存储 编译器 C语言
CPU指令解析及函数调用机制
CPU指令解析及函数调用机制
258 0
|
存储 缓存 索引
通过地址和索引实现数组、CPU指令执行过程、内存概述及内存物理结构
通过地址和索引实现数组、CPU指令执行过程、内存概述及内存物理结构
91 0
|
前端开发 rax
实验一:查看CPU和内存,用机器指令和汇编指令编程
实验一:查看CPU和内存,用机器指令和汇编指令编程
180 0
|
存储
MOTOROLA VME172PA-652SE 复杂程度的计算机流水线指令
MOTOROLA VME172PA-652SE 复杂程度的计算机流水线指令
107 0
MOTOROLA VME172PA-652SE 复杂程度的计算机流水线指令