CPU流水线技术全面解读

本文详细介绍了CPU流水线的工作原理,超流水线技术的应用,以及流水线冒险(包括结构冒险、数据冒险和控制冒险)的解决方法。此外,还探讨了分支预测、乱序执行、SIMD和NEON在提升性能中的作用,以及单发射和多发射处理器的区别和优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 引言

流水线是工业社会化大生产背景下的产物,可以极大地提高生产效率。

流水线上的每个工人只需要专注自己所涉及的环节,便可以使整个流水线高效运行。

举个例子,假如生产一步手机需要三个步骤,组装,质检和贴膜包装,如果每个人独立负责各个环节。
在这里插入图片描述
这样看似没什么问题,实际上需要很大的学习成本,每个人因为要学习整个手机的生产技能,分身乏术,且一旦产品出了问题,也不方便找到具体的人。


如果是每个人只负责一个环节,就会好很多。
在这里插入图片描述
A只负责组装,同理,B负责质检,C负责贴膜和包装,每个人责任明确,工作起来也很高效。CPU流水线与其原理类似。


本篇内容提要:
在这里插入图片描述

1.流水线工作原理

一条指令的执行需要经过取指令翻译指令执行指令三个基本流程。CPU内部的电路也分为不同的单元:取指单元译码单元执行单元等,指令的执行也是按照流水线的工序一步一步执行的。

若不采用流水线技术,则每个时钟周期内只有一个单元在工作,其余两个单元在“观望”,如下图所示:
(假设每个单元的工作周期都为1,且不算流程转换的时间)
在这里插入图片描述
引入流水线技术之后,就大不一样了,每个电路单元都状态拉满,基本不会有空闲:
在这里插入图片描述
从上图中可以看到,从第三个时钟周期开始,每个单元都会“满状态”工作,CPU的指令执行效率大幅提升。

流水线的本质就是拿空间换时间。将每条指令的步骤分解到不同的电路单元,从而使得多个指令并行执行。

2.超流水线技术

上述流水线确实可以提升CPU的工作效率,但我们假设了每个小环节的执行周期是相同的,但若不同呢?现在我们假设取指单元的工作需要两个时钟周期来完成,就会出现以下情况:
在这里插入图片描述
可以发现,又会出现部分工作单元出现空闲的情况,为了进一步提升效率,我们可以这样做:
将取指的工作分配给两个物理单元去完成,这时又会像开始那样,非常高效地运行,如下图所示:
在这里插入图片描述
这样设计,我们便通过增加流水线的深度提升了CPU处理指令的效率。

优化前:执行一个指令平均需要2个指令周期;
优化后:执行一个指令平均仅需要1个指令周期。

实际的工程中,会根据实际情况来设计流水线的深度,通常我们把5级以上的流水线称为超流水线结构。高性能的处理器一般都会采用这种超流水线结构。Inter的i7处理器有16级流水线,AMD的速龙64系列CPU有20级流水线。

既然每条指令的执行都需要N个时钟周期,那我们便可以通过缩短一个时钟周期的时间来提升效率。影响时钟周期的关键制约因素就是CPU内每个单元消耗的时间。

提升CPU主频的办法有三个:

  • 优化流水线中各级的性能。
  • 提升搬半导体制造工艺,制程越先进,相对发热越小,越容易提升主频。
  • 不断增加流水线深度,流水线越深,各级延迟越小,更容易提升主频。

第一点:受限于目前集成电路的设计水准,比较难实现;
第二点:依靠半导体的制造工艺,工艺制程越先进,越容易提升主频。这也就是为什么荷兰的ASML公司可以卡其他国家脖子,包括我国;
第三点:增加流水线深度,从上面的例子中我们便可以看出来,提升流水线深度确实是个看似比较好的方法,但事实果真如此吗?

弊端一:流水线的的本质是空间换时间,流水线越深,芯片面积越大,功耗越高,这对类似手机类的移动设备来说非常致命,这将意味着更加频繁的充电。

弊端二:如果指令执行是顺序结构的,没有中断或跳转,流水线一般确实越深效率越高。但当程序中存在跳转。分支结构时,下面预取的指令可能要全部丢掉了,需要到跳转的地方重新取指令执行。
比方下面这段代码(汇编):

BEQ R1, R2, here
ADD 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值