《深入浅出计算机组成原理》学习笔记 Day15

1. 单指令周期处理器

单指令周期处理器(Single Cycle Processor)的设计思路是确保在一个时钟周期内,处理器正好能处理一条指令(CPI 也就是 1)。

快速执行完成的指令,需要等待满一个时钟周期,才能执行下一条指令

对于单指令周期处理器,无论是执行一条用不到 ALU 的无条件跳转指令,还是一条计算起来电路特别复杂的浮点数乘法运算,我们都要等满一个时钟周期。而且,在这个情况下,虽然 CPI 能保持在 1,但时钟频率却没法太高。如果太高,有些复杂的指令没有办法在一个时钟周期内完成。那么在下一个时钟周期到来,开始执行下一条指令的时候,前一条指令的执行结果可能还没有写入到寄存器里面。那下一条指令读取的数据就是不准确的,就会出现错误。

前一条指令的写入,在后一条指令的读取之前
对于单指令周期处理器,一个 CPU 时钟周期就等于执行一条最复杂的指令的时间

2. 现代处理器的流水线设计

一个指令的执行过程会拆分成“取指令、译码、执行”这三大步骤,如果分更细,其实还包含从寄存器或者内存中读取数据,通过 ALU 进行运算,把结果写回到寄存器或者内存中。

CPU 的指令执行过程,其实也是由各个电路模块组成的。在取指令的时候,需要一个译码器把数据从内存中取出来,写入到寄存器里;在指令译码的时候,我们需要另外一个译码器,把指令解析成对应的控制信号、内存地址和数据;到指令执行的时候,我们需要的则是一个完成计算工作的 ALU。这些都是一个个独立的组合逻辑电路

我们不用把时钟周期设置成整条指令执行的时间,而是拆分成完成一个这样小的步骤所需要的时间。同时,每一个阶段的电路在完成对应的任务之后,也不需要等待整个指令执行完成,而是可以直接执行下一条指令的对应阶段。

流水行示意图
这样的协作模式就是指令流水线。这里面的每一个独立的步骤,我们就称之为流水线阶段或者流水线级(Pipeline Stage)。

如果把一个指令拆分成“取指令 - 指令译码 - 执行指令”这样三个部分,那这就是一个三级的流水线。如果进一步把“执行指令”拆分成“ALU 计算(指令执行)- 内存访问 - 数据写回”,那么它就会变成一个五级的流水线。

五级的流水线,就表示在同一个时钟周期里面,同时运行五条指令的不同阶段。这个时候,虽然执行一条指令的时钟周期变成了 5,但是我们可以把 CPU 的主频提得更高了我们不需要确保最复杂的那条指令在时钟周期里面执行完成,而只要保障一个最复杂的流水线级的操作,在一个时钟周期内完成就好了

如果某一个操作步骤的时间太长,就可以把这个步骤拆分成更多的步骤,让所有步骤需要执行的时间都尽量差不多。这样就可以解决单指令周期处理器中性能瓶颈来自于最复杂的指令的问题。

虽然不能通过流水线,来减少单条指令执行的“延时”这个性能指标,但是,通过同时在执行多条指令的不同阶段,我们提升了 CPU 的“吞吐率”。在外部看来,CPU 好像是“一心多用”,在同一时间,同时执行 5 条不同指令的不同阶段

3. 超长流水线的性能瓶颈

增加流水线深度,是有性能成本的

我们用来同步时钟周期的,不再是指令级别的,而是流水线阶段级别的。每一级流水线对应的输出,都要放到流水线寄存器(Pipeline Register)里面,然后在下一个时钟周期,交给下一个流水线级去处理。所以,每增加一级的流水线,就要多一级写入到流水线寄存器的操作。虽然流水线寄存器非常快,比如只有 20 皮秒(ps, 1 0 − 12 10^{-12} 1012 秒)。

在这里插入图片描述
如果不断加深流水线,这些操作占整个指令的执行时间的比例就会不断增加。最后,性能瓶颈就会出现在这些 overhead 上。

如果指令的执行有 3 纳秒,也就是 3000 皮秒。我们需要 20 级的流水线,那流水线寄存器的写入就需要花费 400 皮秒,占了超过 10%。如果我们需要 50 级流水线,就要多花费 1 纳秒在流水线寄存器上,占到 25%。这也就意味着,单纯地增加流水线级数,不仅不能提升性能,反而会有更多的 overhead 的开销。

参考

极客时间《深入浅出计算机组成原理》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Balaaam

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

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

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

打赏作者

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

抵扣说明:

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

余额充值