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

面向流水线的指令设计(二)

1. 超长流水线的缺点

增加流水线的深度,在同主频下,其实就是降低了 CPU 的性能。

一个 Pipeline Stage,就需要一个时钟周期。如果我们把任务分成 31 个阶段,就需要 31 个时钟周期才能完场一个任务;而把任务拆分成 11 个阶段,就需要 11 个时钟周期就能完成任务。在这种情况下,31 个 Stage 的 3GHz 主频的 CPU,其实和 11 个Stage 的 1 GHz 主频的 CPU 性能差不多。事实上,每个 Stage 都需要有对应的 Pipeline 寄存器的开销,此时,更深的流水线性能可能还会更差些。

流水线技术并不能缩短单条指令的响应时间这个性能指标,但是可以增加在运行很多指令时候的吞吐率

在这里插入图片描述
提升流水线深度,必须要和提升 CPU 主频同时进行。

因为在单个 Pipeline Stage 能够执行的功能变简单了,也就意味着单个时钟周期内能够完成的事情变少了。所以,只有提升时钟周期,CPU 在指令的响应时间这个指标上才能保持和原来相同的性能。同时,由于流水线深度的增加,我们需要的电路数量变多了,也就是所使用的晶体管也就变多了。

主频的提升和晶体管数量的增加都使得我们 CPU 的功耗变大了

2. 冒险和分支预测

流水线技术带来的性能提升,是一个理想情况。在实际的程序执行中,不一定能做得到

要想完全利用流水线,意味着:如果我们有 20 级流水线,意味着我们要确保这 20 条指令没有依赖关系。

这个依赖问题就是冒险(Hazard)问题。有数据冒险、结构冒险、控制冒险等其他的依赖问题。

为了解决这些依赖问题,我们有乱序执行、分支预测等相应的解决方案。

参考

极客时间《深入浅出计算机组成原理》:http://gk.link/a/11UMi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Balaaam

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

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

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

打赏作者

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

抵扣说明:

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

余额充值