21 | 面向流水线的指令设计(下):奔腾4是怎么失败的?
徐文浩
该思维导图由 AI 生成,仅供参考
上一讲,我给你初步介绍了 CPU 的流水线技术。乍看起来,流水线技术是一个提升性能的灵丹妙药。它通过把一条指令的操作切分成更细的多个步骤,可以避免 CPU“浪费”。每一个细分的流水线步骤都很简单,所以我们的单个时钟周期的时间就可以设得更短。这也变相地让 CPU 的主频提升得很快。
这一系列的优点,也引出了现代桌面 CPU 的最后一场大战,也就是 Intel 的 Pentium 4 和 AMD 的 Athlon 之间的竞争。在技术上,这场大战 Intel 可以说输得非常彻底,Pentium 4 系列以及后续 Pentium D 系列所使用的 NetBurst 架构被完全抛弃,退出了历史舞台。但是在商业层面,Intel 却通过远超过 AMD 的财力、原本就更大的市场份额、无所不用的竞争手段,以及最终壮士断腕般放弃整个 NetBurst 架构,最终依靠新的酷睿品牌战胜了 AMD。
在此之后,整个 CPU 领域竞争的焦点,不再是 Intel 和 AMD 之间的桌面 CPU 之战。在 ARM 架构通过智能手机的快速普及,后来居上,超越 Intel 之后,移动时代的 CPU 之战,变成了高通、华为麒麟和三星之间的“三国演义”。
“主频战争”带来的超长流水线
我们在第 3 讲里讲过,我们其实并不能简单地通过 CPU 的主频,就来衡量 CPU 乃至计算机整机的性能。因为不同的 CPU 实际的体系架构和实现都不一样。同样的 CPU 主频,实际的性能可能差别很大。所以,在工业界,更好的衡量方式通常是,用 SPEC 这样的跑分程序,从多个不同的实际应用场景,来衡量计算机的性能。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
CPU流水线技术是提升性能的重要技术,但超长流水线设计可能导致性能下降。以Intel的Pentium 4为例,其超长流水线设计导致功耗增加、散热问题,且在实际程序执行中存在指令依赖问题。这提示我们在评估CPU性能时应考虑实际体系架构和应用场景,而非仅以主频为标准。文章还介绍了流水线技术带来的吞吐率提升、依赖问题以及解决方案。总的来说,合理的流水线深度能提升CPU执行指令的吞吐率,但过深的流水线会增加功耗、散热问题,并且在实践中需要解决指令之间的依赖问题。这篇文章深入浅出地介绍了现代CPU设计的多个方面,适合读者快速了解现代CPU的设计。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出计算机组成原理》,新⼈⾸单¥68
《深入浅出计算机组成原理》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(34)
- 最新
- 精选
- 上善若水什么时候苹果用华为的芯片
作者回复: 吴凌华同学你好, 这个恐怕很难了,特别是苹果有自己的ARM CPU设计团队。
2020-01-0335 - -W.LI-老师好!所以Java在编译成机器码的时候会设计到指令重排序,就是为了把没有依赖关系的指令放一起,可以用流水线并发来提高效率是么?。然后再多线程里面就会采用一些关键字volatile禁止指令重排,保证数据在多线程之间的可见性。2019-06-231166
- Hjava的指令重排序,也是为了适应cpu的流水线技术,从而提高性能。对应的volatile是禁止指令重排,提供内存可见性,但不提供原子性。2020-12-28121
- test终于知道为什么要指令重排了!2020-05-3019
- 隆隆配合Bilibili计算机组成原理视频讲解:https://www.bilibili.com/video/BV1c4411w7nd?p=22020-04-21216
- skyunJava在编译成机器码的时候会设计到指令重排序,就是为了把没有依赖关系的指令放一起,可以用流水线并发来提高效率是。然后在多线程里面就会采用一些关键字volatile禁止指令重排,保证数据在多线程之间的可见性2020-07-108
- Linuxer条件分枝也是一种依赖吧2019-06-126
- Wilson徐老师的课讲得好,课后的延申阅读同样棒!比如今天这篇Modern Microprocessors, A 90-Minute Guide!2021-04-305
- A君流水线也讲平衡,不是级数越多越好,级数多了虽然可以提高指令吞吐率,但因为每级流水线要做的事情少了,就需要提高时钟频率才不会浪费算力,但这又带来功耗提升的问题。不仅如此,很多代码由于依赖关系也就是数据冒险(例如下调指令的输入等于上一条指令的输出)很难通过流水线来优化,需要指令乱序和预测等方法来优化,然而随着流水线的增多,这些方法的执行难度也会跟着升高,因此,流水线的数量并非越多越好。2020-06-285
- 殷勤的匠人...单个时钟周期内能够完成的事情变少了。所以,只有提升时钟周期,CPU 在指令的响应时间... 此處筆誤。應是降低週期,提升「主頻」。2019-06-1214
收起评论