CPU中的高科技:流水线、超标量、SIMD

在之前的文章中,我介绍了CPU中的超线程技术,使用这个技术可以提高CPU的利用率,不过经过这么多年的发展,科技工作者们在CPU中还发明了很多高科技,今天我再介绍几个更底层的CPU提效技术:流水线、超标量和SIMD。

流水线技术

我们可以把流水线技术想象成是一个快餐店。做一份快餐需要经过好几个步骤,比如切菜、炒菜、盛菜,如果一个人一次只做一份菜,等他完成一份菜的所有步骤后再开始做下一份菜,那么效率就会很低。但是,如果我们把这个过程分解开来,让A负责切菜,B负责炒菜,C负责盛菜,那么这三个人就可以同时工作,B炒菜2的时候,A就可以切菜3,C则可能在盛菜1,这可以大大提高整体工作效率。这就是流水线技术的原理。

然而,流水线技术并不是万能的。就像我们的快餐店例子,如果我们有太多的人同时工作,比如有10个人都在切菜,那么就会出现人手太多反而效率低下的情况。这是因为,每一个人都需要一个工作台,而工作台的数量是有限的。在计算机中,这个工作台就是流水线寄存器,它需要在每个阶段记录上一级的输出,供下一级使用。如果流水线级数过多,就会导致寄存器操作的时间开销过大,影响性能的提升。因此,我们需要选择一个合适的流水线级数,以达到最佳的性能。

超标量技术

接下来,我们来谈谈超标量技术。超标量技术就像一个有多道菜的餐厅。在一个普通的餐厅,你可能需要一个厨师去做一道菜,然后等他做完后再做下一道菜。但是在一个有多道菜的餐厅,你可以让多个厨师同时做多道菜,从而大大提高了效率。超标量技术就是这样,CPU一次从内存取出多条指令,然后发射到不同的指令译码器及后续的流水线中。本来1个时钟周期内只能执行1条指令,也就是1个标量的运算,现在通过多发射能够并行多个标量的运算,所以称为超标量技术。

然而,超标量技术也有其技术挑战,那就是它需要增加CPU电路设计的复杂度。为了解决这个问题,人们考虑将一部分工作放到软件中处理,提出了超长指令字设计(VLIW),编译器把多条指令打包成一个指令包(同时解决指令依赖问题),然后CPU取指令包,译码指令包,然后让多条指令并行执行。这就像是让我们的厨师们提前准备好菜单,然后让他们按照菜单上的顺序一起工作。但是,这种方法也有其问题,那就是如果我们想改变菜单,那么我们可能需要重新编译整个程序,向前兼容和向后兼容都存在问题,这就是安腾史诗级失败的原因。

SIMD技术

最后,我们来谈谈SIMD技术。SIMD技术就像是一台大型的食品加工机,它可以一次处理多个食品,而且这些食品的处理过程互相没有依赖,可以并行进行。这就是SIMD技术的原理,它通过一次从内存读取多个数据,然后在CPU中并行计算,从而提高了效率。

在CPU中,这是通过增加寄存器的方式实现的。一个寄存器一次性可以加载多个数据,这些数据的计算互相没有依赖,也就没有冒险问题需要处理。只要CPU里有足够多的功能单元,这些计算就可以并行进行。SIMD技术在向量运算、矩阵运算、图片、音频、视频处理等领域有广泛的应用。

更多学习资源

我注册了一个微/信/公/众/号:萤火架构,后续会分享很多架构方面的真实经验和认知,欢迎关注,以免错过精彩内容。


总的来说,计算机硬件的世界是一个充满了奇妙的世界,它通过流水线、超标量、SIMD等技术,使得我们的计算机能够更高效地工作。希望通过这个讲解,大家能够对计算机硬件有一个更深入的理解,从而更好地开发软件。需知,理解工具,才能更好地使用它。

相关推荐
RAN_PAND5 天前
计算机组成原理实验
网络·计算机组成原理
文军的烹饪实验室10 天前
CPU 架构(CPU Architecture)
架构·cpu
岑梓铭14 天前
考研408《计算机组成原理》复习笔记,第五章(5)——CPU的【指令流水线(含中断)】
笔记·考研·408·计算机组成原理·计组
回家路上绕了弯17 天前
CPU 打满 + 频繁 Full GC:从紧急止血到根因根治的实战指南
后端·cpu
JuneXcy17 天前
计算机组成原理实验
计算机组成原理
deng-c-f18 天前
Linux C/C++ 学习日记(29):IO密集型与CPU密集型、CPU的调度与线程切换
linux·学习·线程·cpu·io密集·cpu密集
梅小西爱学习20 天前
线上CPU飙到100%?别慌,这3个工具比top快10倍!
java·后端·cpu
岑梓铭21 天前
考研408《计算机组成原理》复习笔记,第五章(5)——CPU的【微程序控制器】
笔记·考研·408·计算机组成原理·计组
文火冰糖的硅基工坊21 天前
[嵌入式系统-135]:主流AIOT智能体开发板
开发语言·嵌入式·cpu
文火冰糖的硅基工坊22 天前
[嵌入式系统-136]:主流AIOT智能体软件技术栈
嵌入式硬件·架构·嵌入式·cpu·gpu