CPU 流水线技术初识

在当今数字化的时代,计算机已经成为我们生活中不可或缺的一部分。而在计算机的核心部位,中央处理器(CPU)则是其重要的组成部分。CPU 的性能决定了计算机的运行速度和处理能力,而流水线技术则是 CPU 性能提升的关键所在。

1 指令执行生命周期回顾

一条指令的生命周期分为五个阶段:

取指阶段(Instruction Fetch):取指阶段是指将指令从存储器中读取出来的过程。程序指针寄存器用来指定当前指令在存储器中的位置。读取一条指令后,程序指针寄存器会根据指令的长度自动递增,或者改写成指定的地址。

译码阶段(Instruction Decode):指令译码是指将存储器中取出的指令进行翻译的过程。指令译码器对指令进行拆分和解释,识别出指令类别以及所需的各种操作数。

执行阶段(Instruction Execute):指令执行是指对指令进行真正运算的过程。例如指令是一条加法运算指令,则对操作数进行相加操作;如果是一条乘法运算指令,则进行乘法运算。在“执行”阶段最关键的模块为算术逻辑单元(Arithmetic Logical Unit,ALU),它是实施具体运算的硬件功能单元。

访存阶段(Memory Access):访存是指存储器访问指令将数据从存储器中读出,或写入存储器的过程。

写回阶段(Write-Back):写回是指将指令执行的结果写回通用寄存器的过程。如果是普通运算指令,该结果值来自于“执行”阶段计算的结果;如果是存储器读指令,该结果来自于“访存”阶段从存储器中读取出来的数据。
在这里插入图片描述

2 洗衣服流水线

什么是流水线?说的官方一点:流水线(Pipelining)是一种实现多条指令重叠的技术。通俗一点来说,跟工厂里面的流水线没有什么区别。
在这里插入图片描述

假设非流水线洗衣过程分为 4 个步骤:

  1. 清洗:用洗衣机清洗

  2. 烘干:洗衣机洗完后,放入烘干机烘干

  3. 叠放:烘干衣服后,将衣服从烘干机去除,放在桌子上叠好

  4. 取走:衣服叠好后,将衣服收好或让顾客取走

在这里插入图片描述

如果采用流水线的方法可以节省大量的时间。如果第一批衣服从洗衣机清洗完拿出来之后进行烘干,就可以把第二批衣服放入洗衣机清洗了。第一批衣服烘干了之后,第二批衣服也清洗完了,可以进行烘干了。
在这里插入图片描述

流水线的奇妙之处在于,对于单独的一批衣服来说,它的整个过程时间没有缩短,而在有多批任务并行执行时,流水线的优势就体现了出来。因为任务在并行执行,单位时间内完成的工作量就大大增加了。流水线实际上是改善了洗衣系统的吞吐率,使得工作效率大大提升。

可以试想一下,如果所有步骤所需时间一致,并且衣服足够多,那么采用流水线的速度将会是非流水线的 4 倍,正好等于步骤数。在图中的洗衣速度只提高了 2.3 倍的原因是图中只展示了清洗 4 批衣服,流水线在开始和结束阶段没有满载。

3 CPU 执行指令流水线

如果流水线各阶段操作平衡,那么在流水线上的指令执行时间为(理想情况下):

流水线指令执行时间 = 非流水线指令执行时间 / 流水线级数

假设指令执行所需要的执行时间如下:
在这里插入图片描述
在非流水线方式中,第一条指令与第四条指令之间的时间差是 3*800 = 2400ps

在流水线方式中,第一条指令与第四条指令之间的时间差是 3*200 = 600ps
在这里插入图片描述

在图中的加速比2400ps /1400ps,并不等于 4。这是为什么呢?这是因为执行指令的数量不够多。

如果在上面流水线中增加 1000000 条指令,每一条指令都将使得整个执行时间增加 200ps,因此整个执行时间变成了 1000000 * 200ps + 1400ps = 200001400ps

在非流水线方式下,执行时间将变成 1000000 * 800ps + 2400ps = 800002400ps

二者比值即无限接近于 4。

4 CPU 流水线技术的优势

从上面这两个例子,可以看到流水线技术是很有优势的:

  1. 提高执行效率:通过并行处理多条指令,流水线技术大大提高了 CPU 的执行效率。

  2. 降低延迟:由于指令可以在多个阶段同时进行,因此可以减少等待时间,降低指令执行的延迟。

  3. 提高吞吐量:流水线技术使得 CPU 可以在单位时间内处理更多的指令,从而提高系统的吞吐量。

  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

James Shangguan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值