2004年:当CPU温和地走入那个良夜

开场白

提起1994年,你会想起那时在世界电影史上都大放异彩的一年的,那一年国外影坛神仙打架,《阿甘正传》、《肖申克的救赎》、《这个杀手不太冷》等等横空出世,中国也有《重庆森林》、《活着》这样的佳作。

而2004年在你印象里有什么记忆深刻之处呢?好像没有,2004年在大多人眼里是平平无奇的一年。然而却消无声息地开始改变了后来很多程序员的命运,一直影响到现在,尽管当中的很多人都不自知。这一切的源头都是CPU。

摩尔定律与登纳德微缩定律

摩尔定律Moore's Law),我们都很熟悉。虽然名为定律,但并不是什么科学定律。这是Intel创始人Gordon Moore于1965年提出的一个观点:

集成电路上可以容纳的晶体管数目在大约每经过18个月便会增加一倍。

由于摩尔定律只是经验之谈,所以其中描述的翻倍时间并不总是准确,也有说法是18个月到24个月之间。另外还有一些延伸出来的解读指导着半导体行业的发展:比如每过N个月,芯片的性能就翻一倍。每过N个月,芯片的价格就降一倍。等等。

除了摩尔定律以外还有一个名气小一点的登纳德微缩定律Dennard Scaling):

晶体管的尺寸在每一代技术中都缩小了30% (0.7倍),因此它们的面积A减少了50%。这意味着电路减少了30% (0.7倍)的延迟,因此增加了约40% (1.4倍)的工作频率。最后,为了保持电场恒定,电压降低了30%,能量降低了65%,功率降低了50%。因此,在每一代技术中,晶体管密度增加一倍,电路速度提高40%,功耗(晶体管数量增加一倍)保持不变。

在摩尔定律与登纳德定律提出之后的相当长的时间内,事情的发展都十分顺遂。CPU的性能在稳步的提升翻倍。在2000年前,CPU的更新换代,主要是提升时钟频率,而非增加核数。而且那时CPU的每次升级,软件可以自动地获得大幅性能提升。程序员们并不需要花费过多的学习成本,只需要更换新的处理器就可以了。那真是一段快乐的时光,直到2004年。

免费的午餐结束了!

当时人们早早地获得了2GHz的CPU,3GHz也很快成为主流。按照发展速度,4GHz、5GHz甚至10GHz的的CPU都应该能如期而至。但是从3GHz以后,4GHz却迟迟不至。受限于诸多物理问题,登纳德定律走向终结。

提高CPU主频变得越来越困难,因为这不仅仅是一个而是几个物理问题造成,特别是热、功耗过大、当前的电流泄露问题。

这是2007年,C++大牛Herb Sutter发表的文章《The Free Lunch Is Over》中的一句。

http://www.gotw.ca/publications/concurrency-ddj.htm

文中还有详细描述:

主要的处理器设计生产商,从Intel和AMD到SPARC和PowerPC,已经几乎穷尽了所有的传统方法来提高CPU性能。大多数应用在几十年内都可以获得免费规律的性能提升,甚至不需要发行新版本或做其他任何特殊的事情,因为CPU制造商(主要)和硬盘制造商(次要)拥有可靠的更新更快的主流系统。时钟频率不是衡量的唯一标准,甚至不是好性能的必要标准,但却是有指导意义的标准:我们已经习惯看到500MHz的CPU被1GHz的替代,1GHz的被2GHz替代等等。今天主流电脑的主频可以达到3GHz的范围。

为了能让CPU继续稳步地提升性能,给摩尔定律的18个月性能翻一倍的说法续命,CPU“被迫”朝向多核发展。当然CPU这么多年的技术发展不仅仅是时钟频率以及多核带来的,还有缓存,指令优化等等。但不得不说的是时钟频率和多核带来的提升更多些。

The Free Lunch Is Over,直译就是“免费的午餐结束了”。自此CPU发展的重点从不断提高时钟频率转移到了利用并行性的架构特性上。这意味着程序员们没办法在毫不感知硬件变化的情况下,继续享受硬件升级带来的红利了。并且需要编写不仅正确而且还要优秀的代码才能吃掉CPU新增的性能。当然前面这些话有些绝对,毕竟后来CPU缓存之类的优化,也可以让程序员免费享受到一些性能增益,只是还不够多而已。

尽管在2004年以前就有涉及到并行的技术。比如pthread与openMP。但对于大多数程序员而言,这其实是可有可无的非必修技能,而2004年以后,程序员们的技能树上则必须把多线程与并发编程的技能点满。然而这还不是全部,并发与并行并非完全对等的概念。真正的并行计算还有很有更多的技术接踵而至,越来越多的程序员们将无法独善其身。

在许多年以后,随着一场世纪围棋大战,人民对于并行算力的要求达到顶峰,显卡之上的GPU逐渐成为人们追逐的焦点。又因为数字货币引发的挖矿热潮,导致显卡一卡难求!当然这是另外一个故事了。

C++失去的10年

C++11的出现在一定程度上盘活了陷入僵局的C++,被称为C++的“文艺复兴”。在2011年向前倒推10年,可谓C++失去的十年。这期间C++只颁布了C++03这一个标准,并且并不是大版本,只能说是C++98基础上的一次小增补。在2003年往后,2011年之前的7年之间更是一个新版本都没有正式释出。其实C++11之前的版本代号是C++0x,确实是计划在2010年之前颁布的,中途曾定档为2009年,但最终仍然跳票。直到2011年才最终发布。

2000年前编程语言发展的重点,大抵体现在如何组织代码的软件工程学上,比如从面向过程到面向对象,又比如C++中的模板。这些都是编程范式上的探索。而自2003年之后,2011年之前的这段C++的晦暗时光中,Java、C#都一度攻城掠地,甚至PHP也赢来黄金期。这个时间段,C++的低落自然和Web的发展有关,但我感觉和CPU时钟频率陷入僵局,开始朝向多核发展也有着千丝万缕的联系。C++必须要针对多核有所作为!在此期间C++并非不能使用多线程,但那都是C语言的。C++只不过是兼容C语言而已,并且由于是系统级API,不同操作系统有着不同的实现。Java早早在官方标准中就定义好了多线程的API,因为虚拟机这一中间层,使得Java程序员可以轻松享受到便利。而这是C++的劣势。作为一门不是某个厂商把持的、面向系统的编程语言,C++还是需要统一各平台的多线程并发的API,而这并没有想象中那么容易。这并不是把pthread改成面向对象的接口那么简单,C++11做得也不仅仅是一个std::thread。还有统一内存模型、线程同步API、std::future、甚至lambda表达式等等等等。

当然C++失落的200x年与CPU遭遇2004年之间的因果联系大多仅代表我个人观点。毕竟前面提到的那篇《免费午餐结束了》是由C++大神撰写的。

闲谈时钟频率

前文的思绪有些飘,来点务实的。CPU运行在哪种频率下是有几种模式可以选择的。如果你是Linux系统的,可以尝试用cpupower frequency-info命令查看一下。可能展示是结果是powersave(节能模式)、performance(性能模式)或其他模式。我还真听说过有线上机器没有开启performance模式,而是powersave模式跑了很长时间,改成performance以后,啥代码都不用改,就获得了几十毫秒的性能提升的事。当然这种问题可能相对低级,专业的运维或基础架构团队应该都能保障,不需要程序员操心。

时至今日,我在公司的服务器机器上,查询CPU的频率的,基本也显示为3GHz。但咨询运维说机器CPU实际达不到满满的3GHz,只能到2.8GHz。我说怎么可能?他说用turbostat命令查看,那个显示的运行频率更真实。好吧,我试了一下还真是。

当然服务器和个人电脑的CPU是不同的。即使都是Intel家的,个人电脑一般是酷睿(Core)系列,而CPU是至强(Xeon)系列。自Herb Sutter发文的2007年,到如今也已经14年了。Intel其实也打造出来4GHz的产品。虽然比预期的时间晚了很多。然而毕十年之功于一役,后续稳步提升频率依旧艰难。所以程序员们,还是好好学习多线程编程和并行计算吧。

原文地址:https://cloud.tencent.com/developer/article/1917501

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


最近大家都在讨论,有人不知道是骁龙4gen1和骁龙695哪个好?如果你非要拿这两个进行区别的话,小编建议大家仔细分析,让我们细细道来。骁龙4gen1和骁龙695区别对比
现在对于吃鸡来说,大家还是在乎充分的享受,那么到底能开多少帧好像也是测试芯片的一个能力的时候。你们知道骁龙695吃鸡能开多少帧?骁龙695处理器游戏性能介绍
红米手机官方价格非常亲民,目前的售价也是可以接受的。消费者可以通过红米官方网站或各大电商平台进行购买。天玑7200-Ultra将会由红米系列手机发布,如果要比较天玑7200-Ultra和骁龙778G两款处理器哪个更好,我们需
51款CPU是目前全新在售的,cpubenchmark跑分在2万分以上的桌面版电脑CPU。跑分在2万分以下的CPU例如AMD 5500没有放在表格中(2022年了,装机还是要保证性能嘛,所以2万分以下的cpu被我忽视了),如果对2万分以下的cp
中央处理器cpu中的控制器是整个中心。控制器指挥计算机的各个部件按照指令的功能要求协调工作的部件,是计算机的神经中枢和指挥中心,由指令寄存器IR(InstructionRegister)、程序计数器PC(ProgramCounter)和操作控制器0C(OperationController)三个部件组成,对协调整个电脑有序工作极为重要。
cpu会烧坏。一般来说,cpu的温度在正常工作范围内(通常为50°C至70°C)时不会烧坏。但如果由于内部故障或外部原因导致cpu温度过高,就有可能导致cpu烧坏。因此,您应该定期检查cpu的温度,并确保它处于正常工作范围内。
CPU fan是指专门用于散热的风扇的接口,它通常安装在电脑主板上,与CPU连接,负责散热CPU。CPU fan通常接口有3种:3针接口、4针接口和4针扩展接口。如果您想安装CPU fan,应该根据主板上的插座类型选择合适的接口。
CPU插槽通常位于电脑的主板上方,与主板的主插槽(即内存插槽)相邻。如果您不确定电脑主板上的CPU插槽位置,可以打开电脑的机箱,并仔细查看主板的布局。一般来说,主板的CPU插槽会标有CPU字样,并且位于主板上方的中间位置。
如何设置忽略计算机cpu转速(如何设置忽略计算机cpu转速)BIOS,英文\\"BasicInputOutputSystem\\"缩略词的缩略词中文名称是\\"基本输入输出系统\\",这些专业术语似乎不容易理解,但
电脑cpu高怎么解决(电脑CPU高怎么办)cpu是电脑最重要组成部件,有时出现占用过高直电脑接影响电脑运行性能,要怎么解决呢?下面就是小编给大家整理的电脑cpu占用过高解决办法,希望对你有用!要是驱动的程序不兼容会导致CPU使用率升高。在用电脑的时候有的人会把驱动的程序更新至最新,要先看看操作系统能否兼容驱动程序新版本,最新也未必是最好的。在更新的时候要先看看更新的版本可不可以和操
win10怎么看电脑cpu温度(win10怎么查看电脑cpu温度)CPU温度多少算正常?电脑网上的说法各不一样,有人说60度,也有人说70度,还有人说80度,那么电脑CPU的温度究竟多少算正常呢?昨天家里的一台老旧电脑电脑,突然频繁重启无法正常使用,于时我就打开机
为什么电脑cpu使用100(为什么电脑cpu使用100%)电脑的年龄有点大,勉强升级到win10也还将就用,可前段时间出现从头条首页看视频卡顿的情况,先以为浏览器的问题,重置浏览器,不行,换了不同内核的浏览器还是不行,怀疑是经常停电把系统搞乱了或是显卡高温了,但看其它站的视频或高清电影又没问题。于是重装了系统,但问题依旧。打开任务
电脑cpu散热器转速如何调节(电脑cpu散热器转速如何调节)散热风扇有PWM调整;温控调速;电压0~10V调速;改变风扇供电电压调速(仅针对非恒转速风扇),最常见的是PWM调速。电脑电脑电脑电脑
win7cpu使用率100是一个看起来很郁闷的事情,一般情况下电脑是运行不到100%的,只要极个别的情况或者恶意插件和病毒会导致这些问题,也有可能是硬件配置的原因,下面来看看解决方法吧。win7cpu使用率100解决方法答:
我们在使用微软win10系统的时候,有时候电脑会变得卡顿,在查看后台运行进程的时候会发现有一个叫Microsoft compatibility
win11系统对于cpu进行了一些限制,只有满足微软要求的cpu才可以升级,那么几代cpu可以升级win11呢,理论上酷睿只有第八代及以上才能升级,不过实际上如何呢。
作为仅次于x86、ARM的第三大CPU架构,RISC=V凭借开源、免费的优势迅速发展,之前主要用于低功耗市场,但是现在也开始冲击高性能领域,Ventana公司日前已经做出了5nm 192核的芯片。Ventana公司日前发布了第一款产品Veyron V1,该公司研发了一种高性能RISC-V架构
今天,十铨将于今年推出全球首款同时解决CPU及SSD双热源的ARGB一体式水冷散热系统,让PCIe Gen5 SSD能维持在优异的工作温度,达到长时间稳定的高速运作
英特尔官宣将于 9 月 27-28 日举行 Innovation 活动,外媒猜测英特尔可能会在此次大会上发布 13 代酷睿处理器。作为参考,英特尔在去年 10 月的 Innovation 上英特尔发布了 12 代酷睿处理器。
AMD 锐龙 7000 CPU 的工程样本首次出现在 BaseMark 数据库中,爆料者 @TUM_APISAK 发现了这款 OPN 代码为“100-000000593-20_Y”的 AMD 新款处理器。BaseMark 数据库信息显示,这是一款 6 核 处理器