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等技术,使得我们的计算机能够更高效地工作。希望通过这个讲解,大家能够对计算机硬件有一个更深入的理解,从而更好地开发软件。需知,理解工具,才能更好地使用它。

相关推荐
人道领域21 小时前
计算机组成原理入门:一个公式读懂硬件、软件和数字思维
计算机组成原理
tianyuanwo3 天前
CPU 密集型任务的实现原理与知识全景解析
cpu·计算密集型
磊 子4 天前
cpu是如何执行程序的?
数据库·操作系统·cpu
杨充10 天前
01.计算机组成结构原理
计算机组成原理
humors22112 天前
十款顶级跑分与排名软件全解析
电脑·内存·测试·cpu·gpu·笔记本·硬盘
humors22115 天前
硬件(处理器/显卡)大比拼(不定期更新)
电脑·cpu·gpu·显卡·笔记本·处理器·比较
DSP芯思路20 天前
用人体类比讲透芯片:CPU是大脑,PLL是心脏,总线是大动脉
cpu·芯片·总线·pll
其实防守也摸鱼21 天前
计算机组成原理--5.输入/输出(I/O)系统
服务器·笔记·深度学习·计算机网络·知识图谱·工具·计算机组成原理
今天又在写代码1 个月前
计算机组成与原理v2
计算机组成原理
同勉共进1 个月前
并发编程核心概念辨析
c++·cpu·内存屏障·缓存一致性·memory order