随着工艺的进步,现在手机芯片是越来越强大了,我们可以看到,苹果最新的soc里的晶体管数,已经将近100亿,这已经比台式机里英特尔的CPU的晶体管数要多了,如果看它的性能的话,用一些测试性能的软件,像geekbench,那么它的分数已经比很多中低端的PC性能要高了。而这仅仅是现在苹果在使用台积电的7纳米的工艺制造的soc,台积电的5纳米的技术已经比较成熟了,今年也就是2020年我们就可以看到5纳米的芯片,5nm提供了更高的晶体管密度,更低的功耗,性能还有进一步的提升空间。

这几年intel的工艺似乎是停滞了,这是导致桌面PC性能一直原地踏步的一个原因吧。我们都说intel是牙膏厂,出个新cpu性能甚至只有1%的提升,这也不能仅仅只怪罪于intel的设计部门。提升CPU每个时钟周期性能也就是ipc已经很难了。现在的大部分架构,指令都已经能做到在一个时钟周期内完成,甚至加上一些超标量的技术,在一些循环内部,甚至IPC会小于一,如果继续压榨,仅仅靠架构来提升每个单独cpu的ipc,不会有多大的进展了。可能我们增加缓存或者一些其他方式能够提升一些性能,然而这只是通过降低内存IO的延迟来获得的,并不能说CPU本身的性能提升。所以简单的指责intel挤牙膏是不对的。造成intel原地踏步的主要原因是他的制程工艺这几年一直没有什么突破,从性能提升的角度看,工艺的进步远比架构上提升要来得快得多。

下面是不同厂商的制程工艺的晶体管密度

制程节点 大致晶体管密度 Transistor Density (MTr/mm² 百万每平方毫米)
TSMC’s 5nm EUV 171.3
TSMC’s 7nm+ EUV 115.8
Intel’s 10nm 100.8*
TSMC’s 7nm (Mobile) 96.5
Samsung’s 7nm EUV 95.3
TSMC’s 7nm (HPC) 66.7
Samsung’s 8nm 61.2
TSMC’s 10nm 60.3
Samsung’s 10nm 51.8
Intel’s 14nm 43.5
GlobalFoundries 12nm 36.7
TSMC’s 12nm 33.8
Samsung / GlobalFoundries 14nm 32.5
TSMC’s 16nm 28.2

台积电在10纳米工艺的时候已经跟intel差不多了,intel的10nm一直没有大规模量产,甚至性能还不及14nm,所以上面intel的10nm工艺后面有一个*号的意思就是说是估计,不能作为大规模量产的工艺来看待。如果10nm只能算并驾齐驱的话,那么在7纳米的时候台积电已经是毫无疑问的领先了,特别是n7p和n7+,晶体管密度甚至比intel的未量产的10nm都高。如果今年5纳米工艺能够大规模使用的话,英特尔基本上是被甩开了。未来几年之内,按照现在英特尔整个公司的状态,实在是很难看到他能够有大的新工艺突破的可能。

所以,从未来上看,包括桌面的PC,使用arm芯片作为CPU是一个趋势。如果AMD能够能够很争气的话,也许在桌面上还能让x86架构在苟延残喘一段时间,英特尔已经没指望了。其实amd现在也是台积电代工的,他的晶圆厂GlobalFoundries也就是格罗方德早就跟不上技术进步了。正是靠tsmc的代工使它现在开始逆袭,这也说明了工艺进步对cpu性能提升的重要性,当然我们也不能忽略amd这几年在架构上的优化,他们的每瓦功耗性能已经开始比intel高了。

这几年手机芯片性能提升的速度还是很快的,我们只是下意识的认为,它跟PC的性能差距还是很大,实际上这个差距已经很小了,随着新工艺的提升以及intel工艺的固步不前,很快我们就会看到比桌面更快的手机芯片出现。

在桌面上使用arm芯片,其实已经开始几年了,高通之前就把好几款移动soc发布为pc版,在一些低端上网本上采用。最近这几个月,微软刚发布的Surface Pro X上已经采用了高通的芯片。win 10也支持了在arm上运行,虽然说只是通过jit的即时编译,实时把x86的指令集转化为arm指令,并不是原生的exe就是arm代码。可以理解为模拟执行吧,性能损失肯定是有的。但是要注意到,Surface Pro X上的这颗高通的soc里面的显卡部分,计算能力可以达到2000 gflops,这已经是桌面中端显卡的级别了,比macbook pro上的intel的显卡快了两三倍。

至少目前看来,arm取代PC的趋势势不可挡,虽然说这需要时间。过去,从2010年到2020年花了差不多10年,arm在手机上站稳了脚跟,并且一步一步提升性能,现在已经没有人抱怨手机发热了,这10年的时间智能手机开始崛起和普及的时间。而且arm的性能已经一步步的提升到了接近PC的程度,在未来的十年,也就是2020年到2030年,这10年之间,可能的趋势是arm逐渐逐渐渗透到桌面里,当然这个10年里边可能会是两种芯片并存的状态,如果再往前看10年就是从2030年往后,我们很有可能看到arm占统治地位。

因为arm有一个特点,它是开放的。arm这家公司是直接把芯片ip直接授权给各种厂商,基于他们的指令集授权来生产自己的CPU和SOC,它是一个开放的平台结构。英特尔的x86架构恰恰相反,它是一个封闭的指令架构,只有英特尔一家公司采用这个指令集,而且它是有专利的。加上他授权过的AMD,基本上就是两家。私有的就意味着如果英特尔自己出了问题,他不能再引领技术的发展,x86几乎不可避免的会没落下去。即便是AMD可以顶上来,但是他所发挥的作用顶多只是延缓一下x86的寿命而已。

而且同等功耗下arm的性能更出色,arm之所以在移动设备上被广泛采用,就是因为他的功耗控制要好得多。这也意味着更好的能效比,intel的cpu有很大的历史包袱,这导致他们的cpu花大量的精力在维护对之前的兼容性上面。比如,英特尔的指令集是可变长度的,而arm是固定长度的,虽然可变长度有更好的代码密度,但在今天的巨大内存和硬盘空间上来看这基本可以忽略,有一个数据,intel的atom CPU,在指令的解码上,就要多消耗20%的能耗,而arm完全没有这部分电路。

现在arm在PC上使用的主要原因还是,它的性能不够好,然而现在intel这么不争气,工艺上再没有突破的话,arm很快就会在性能上领先英特尔。甚至现在苹果的最新芯片,如果只是从geekbench的跑分上来看的话,已经比很多intel的cpu要快了,要是给他再加一个风扇,设置更高的时钟频率,相信一定比这些桌面cpu更出色。

据说明年苹果就会推出一款基于arm的MacBook,应该不是因为苹果非要跟英特尔对着干,而是CPU这几年根本没有太大的性能提升。而且,英特尔的CPU集成的显卡,性能上一直都是MacBook的软肋,如果能用自己的arm芯片,不只是CPU性能上的提升,显卡的速度也会有很大的提升,再加上功耗的降低,实在是没有理由怀疑苹果会用arm作为他们的选择,恐怕苹果也是对英特尔失望透了。加上arm再手机soc上的积累,比桌面拥有更高的集成度,更少的芯片,更低的功耗,以及未来的更高的性能。虽然目前下定论还早,但是等明年,苹果的新MacBook出来之后,我们就可以看看出一些对比了。

其实还有一个趋势,那就是,新的芯片不一定非要用在PC上,手机同样可以运行PC的操作系统,因为手机的CPU性能越来越强大,手机的图形处理器速度也越来越快,现在已经接近了入门级PC的水平,如果我们可以在手机上装一个桌面操作系统,在工作的时候可以直接连到手机上来进行,下班可以带回家接着工作,会很方便,因为你的一些各种各样的软件,以及偏好设置,包括一些资料东西,都放在一个地方,在家和工作环境来回切换的话,很多东西不需要来回麻烦的去找。既然手机的性能如此强大了,为什么不用它来作为桌面工作PC来用呢?如果我们不是用它来打游戏,不是用它来做一些特别很耗性能的工作,简单的办公应用,入门级的PC足够了,我们10年前用的电脑都够,更何况现在更快的处理器呢。

如何在手机上装一个桌面的操作系统?我们希望它是什么样子?这个系统除了支持手机上自己运行的小屏幕的系统,我们把它连接在外接显示器的时候,就可以直接运行桌面系统。就像是同一个系统带一个桌面端和一个手机端。

比如说我们手机的安卓系统,当他接到外接设备的时候我们可以让它运行一个桌面端,手机上显示的还是手机端的桌面,而在电脑上显示的是另外一个桌面端,它是在同时运行的,就是说你在桌面端上打开一些办公应用的时候,是不影响手机的接电话发短信等功能。这是很可行的,我们可以把桌面端当成一个应用程序,运行在安卓上的一个应用程序,只是说,安卓需要在系统层做一个支持,加一个模式。只是不知道这些厂商什么时候才会加进去,Google应该还没有支持安卓这样的计划。

那能不能自己动手呢?也许这是个机会。我仔细思考了一下,有好几种方式来实现,我们可以做一个类似于虚拟机的东西,通过一个APP来实现,这是在我们在windows和MAC上经常用的技术,装一个虚拟机,然后在虚拟机上装各种各样的系统。甚至不用模拟x86的指令,很多linux发行版直接都支持arm的。只需要虚拟出来一个环境。

不要忘了,安卓是运行在Linux内核上的,如果我们可以把Linux的一些权限开放出来,直接远程ssh上去,那么同样也可以在上面装各种各样的软件,用adb调试的时候有一个adb shell的命令就可以提供ssh访问,虽然adb的权限也不是root,但是已经可以执行大部分代码了,能不能在安卓上开放ssh呢?

我google了一下,很快就找到了解决方案,已经有人做了,而且还做得更好。比如Samsung DeX,Debian Noroot,Ubuntu Touch等。

我比较喜欢的是一个叫termux的app。它的大致的思路是,做一个安卓APP,这个APP实现一个简单的shell,或者说一个terminal。

简单的看了它的下代码,实现很简单,大部分都是一些Java层的UI,用来实现一个终端窗口输入和显示等交互,这没有什么好说的。他的c++实现很简单,只有一两百行,核心就是create process。先建一个伪终端,然后fork一下自己,然后exec调用命令行,把结果返回过去。这是很标准的一个,教科书般的,实现shell的方法。

你可能觉得这么简单的一个terminal并没有什么用,但是不要忘了安卓的内核是基于Linux的。基于这个terminal我们有了可以执行本地代码的能力,因为安卓下边本身就支持c++实现本地代码,我们只是没有root权限,事实上我们根本用不到root权限,只要能运行二进制代码,我们虚拟一个linux的运行环境就够了,而且这个环境的性能并不会降低,因为它运行的是原生代码,并没有模拟层的存在,你可以认为这个APP就是它的沙盒,可以运行本地代码。而且安卓可以使用ndk来编译c++程序。我们只要在本地把相应的基本运行时库编译了,并按照linux的目录结构摆放,设置一些变量把他们指到正确的位置,就可以编译和执行各种各样的程序了。这些工具甚至不需要大的改动,只需要重新编译一下。现在termux下面已经有各种各样的编译好的pkg了,比如clang,这是一个C/C++编译器,有了编译器我们可以编译各种程序。大部分的包都可以在下面找到,比如python,php,nginx等一些常用的工具在下面都有。有人已经把x11这些图形库给打包了,你甚至可以在上面装ubuntu或者debian等一些Linux发行版。

这些Linux的发行版,本身并不是一个操作系统,他们只是基于Linux内核,把一些常用的软件打包一下,做一些包管理器等等,仅此而已。实际上基于安卓,我们完全可以做一个新的Linux发行版本,我们可以把各种各样的软件打包进去,甚至是图形化的桌面,这一切都在安卓上的一个APP的沙盒环境里运行,其实也是在安卓上运行,他拥有CPU执行的一切,没有的仅仅是无法直接读取手机的其他功能,调用安卓的一些API,可以优化一下,这就是一个完美的环境。

随着手机的发展,存储也越来越大,我们现在看128g都是起步的配置,手机内存也到了主流的8g,这些都已经算是台式机的配置了,只要储存空间够大,我们就可以塞进去更多的东西,在安卓上再运行一个桌面环境,可以通过安卓的USB接口,连接外部设备,MacBook其实也就一个USB type-c接口,就可以连接所有的外设,安卓手机其实也是一样的。在未来我们只要兜里装一个手机,那么我们到处都可以连上显示器和键盘作为一个办公环境,当然如果觉得插线麻烦的话,通过ssh和vnc连接也是一样的。

等未来这一切都更清晰明朗一些的话,无论是谷歌还是苹果都是会看到这些趋势的,安卓和iOS都可能会加一个桌面版的模式,可以直接在系统级别实现,也有可能是基于一个APP上来运行,跟其他功能互不干涉,我觉得后者的可能性更大一些。

甚至可能会出现,直接安装在手机上的桌面操作系统,如果你的旧手机不用了,换新手机了,那么旧手机就可以刷上一个桌面系统,这样就不用再买单独的电脑。

其实PC的小型化也是一个趋势,除非你追求性能,更快的游戏速度。像手机大小的PC,没有噪音,速度又不是很慢的话,足够写程序,其实也就够了。甚至随着一些接口的速度提升,比如USB 4.0标准都出来了,接口速度甚至能达到40Gbps,这么快的速度足够将显卡外接了,就像移动硬盘一样,把显卡作为外接设备,这样打游戏也不会存在性能不够的问题了。

简单总结一下,arm将逐渐取代x86,PC的小型化,微型化,甚至可以在手机上运行的桌面环境。

这些只是我对过去的观察思考,以及对未来的预测,它不一定会发生,然而,总结过去和预测将来,尝试抓住一些机会是重要的。就像那位戴眼镜的长者说过的,人的一生,不止要靠自己努力,也要考虑历史行程的影响。

当然写在这里的东西都是一些空泛的思考了,真正觉得有价值可执行去做的事情,是不会公开的。

以前埋头苦干太多,现在则需要多思考,大部分时间战略比战术重要。

又是年终,2013年就要过去了。

眼睛的情况暂时稳定住了,买了个屏蔽蓝紫光的夹片,又戴了个帽子,把那些波长短能量高的伤害眼睛光线阻挡了大部分,至少最近疼痛没有那么厉害了。

想做的几件事情都不了了之,几点原因:找不到合适的人,自己决心不够,健康和惰性因素的影响。

上周末冬至,才意识到自己已经二十八岁了,时间流逝,不经意间已经快步入中年了。看看自己还是一事无成,上学时那些理想志向,几乎已消磨殆尽。现实中到处受挫折,当年那些妄图改变世界的想法,现在想起来不禁苦笑,笑自己年少轻狂。但我知道,这些想法还隐藏在内心深处,只是在逐渐淡去,

“年与时驰,意与日去,遂成枯落,多不接物,悲守穷庐,将复何及”,我还清晰记得父亲当年在黑板上写下来诸葛亮的诫子书时的情景,是在讲出师表的那堂课上。直到今天才深刻咀嚼出这段话的意义。

我曾不止一次思考,人活着的意义到底是什么。有人想做一番大事业,有人选择嘻嘻哈哈过一辈子,有些人过一天是一天,自己都不知道在干嘛。我以前很看不起后面的几种人,现在却觉得没啥不同,五十步笑百步罢了。作为一种复杂的碳基化合物,大脑都是天天在发生化学反应,结果没啥意义可言。我们活着,不都是为了刺激大脑,获得我们称之为愉悦满足的化学状态么。什么高尚,荣耀,真理,不过是我们称为地球的大石头表面上的微尘般的化合物体间冲突交互的微不足道的表现罢了。

记得看过Daniel Dennett的一个演讲的视频,具体内容找不到了,他当时大致是说:作为一名哲学家,我最被经常问道的问题就是我们活着到底有什么意义,所以我就准备了一个到处都可以应付的标准答案,那就是选择一件你认为对的事情,并坚持做下去并从中获得乐趣。

说实话他的解释等于没说,或者太宽泛,用来敷衍广大的提问者。

最终决定我们行为的还是大脑底层机制,那些激素化合物,如何使大脑获得愉悦而不是悲伤才是奠定我们行为的最基本的因素,或者说趋利避害的生物本能。只是人类的高层次理性把这些底层因素巧妙的隐藏了起来。

那么我认为正确而该从事的事情是什么呢?可以罗列一排,人工智能,机器人,新能源,意识的本质,室温超导……..

那为什么我现在不义无反顾的去做呢?那是因为这些东西离现实还有很远,在这个世界上,首先要谋生,其次才能从事爱好。这些东西偏重研究,除非有人开工资才行,但作为业余爱好,每天都可能会去思考可行的解决方案。

这就涉及到一个很重要的问题,那就是必须拥有足够的财力物力才能引导社会的走向,比如投入几十亿进行人工智能相关的研发,而这是政府才有能力做的事情,这正是权力的力量。

但是谁又能看清楚未来的走向呢?大部分努力不过是徒劳罢了,只有少数才能成功。也许人工智能是不可实现的,也许能源解决方案受到理论物理的制约。生活在1900年左右的人们预料不到100年后芯片对我们社会的影响,我们也很难预测100年后该有什么技术或者事物形态出现,只能把自己的时间精力花到看似可能性最大的事物上,尽管是徒劳,但总要去选择。

现在炒的比较热的,更现实具体一些的几个方向:移动互联网,无人机飞行器,智能穿戴/家居设备……大部分看起来竞争激烈并且不太靠谱,但是,除了这些更好的选择似乎不太多,当找不到更好的目标的时候,总要做些努力。

最近想买辆车,相关的东西大致都看或者了解了下,以前对机械相关的专业了解的不多,甚至有些偏见。机械是个成熟复杂的领域,积累了很多研究理论,大量的极具巧思的器件。单单是对这些相关的器件的理解,足以对大脑的思考模式产生重大影响。

举一个简单的例子,汽车在行进当中进行转弯的话,内侧和外侧的轮子的速度是不同的,这时候发动机的输出就要对不同的轮子进行适当调整,如何动态的做到?方法有很多种,最简单的方法,只用一个轮子作为驱动轮,这样其他轮子就只在地上滚动了,早期汽车用的就是这种方法,这种方法其实是在逃避问题,一个轮子驱动有很多弊端。现在的汽车都使用一种叫做差速器的简单装置,可以巧妙的处理这个问题,具体细节用文字解释起来比较麻烦,感兴趣的话可以到youtube上看相关的视频解说。

现代的发动机是个复杂的装置,通过厂商鼓吹的一些技术特点,比如涡轮增压,可变气门正时,缸内直喷等,我们就可以猜测它里面的复杂性了,要通过经年累月的技术积累,不断的调整演化,才能成为一项成熟的产品技术,这也是国产发动机跟国外有很大的技术差距的原因。

我们创造的任何事物和技术都处在不断的长期演变进化当中,其中有一些已经趋于稳定,比如剪刀,钳子,它们拥有简单的结构,材料结构的调整已基本最优,更多的变化空间已不大,但是我们仍然有各种针对特殊需求的剪刀设计出来,他们并没有停滞,只是稳定下来了而已。另一些还处于剧烈的变革当中,比如电视机,手机,一方面由于它们本身的复杂度导致更多的可能,另一方面因为它们还不是很完备,需要不断的技术改进,电视机经历了黑白,彩色,阴极射线管,液晶等一代又一代的技术演进,现在仍然不能说成熟稳定,还有很多调整空间。手机同样也经过的很多代,他们都仍处于演化当中。

汽车的发动机也是在不断的进化,一个很好的类比是人类的心脏,经过了亿万年的进化,现在的人类心脏是个复杂而且高效的器官,它在历史当中必定有过不同的形式,通过自然选择的不断调整,最终趋于稳定。作为一种用金属构造的充满各种孔洞机构的燃烧装置,发动机经历了若干代的调整变革,不断的提升燃油利用效率,提高输出功率,跟大自然的进化类似.

如果我们仔细的考察一些就会发现,生物的进化跟技术的演进是何等的相似!生物通过调整改变以适应自然环境,我们创造改进技术来迎合市场需求。抽去形式概念,二者本质没有差别。

在各项技术产品中,汽车是跟生物最为类似且我认为最有进化潜力的一项东西。因为它可以在地球表面移动,这正是动物最重要的特性。

如果远古的地表拥有我们现在道路的形式,我想会有生物进化出轮子的结构,这样的行进方式最节省能量。但是崎岖不平的地表,导致腿成为现今动物界的主导。

我们认为动物之所以为动物,最主要的特征就是动物可以自由的行走移动,避开障碍,而不是具有高级思维能力。

汽车必须靠人来驾驶,但是为了便利,我们逐渐开发除了各种技术减轻人的疲劳。手动档变成自动档,简化了操作流程,定速巡航可以把脚从油门移开,自动泊车系统可以以检测周围空间把车自动倒进狭小的空间里,自适应巡航甚至可以根据前面车的距离自动调整车速跟车。这些辅助性的装置似乎都朝着一个目标,那就是自动驾驶。

想象一下,一辆汽车可以在无人的状态下自动前进,检测避开障碍,自动去加油。我们可以通过无线网络远程把车召唤到眼前,这不是不可企及的想象,未来几年极有可能实现。比如google对自动驾驶投入了很多资金进行研发,并且它的自动驾驶汽车已经安全无事故的行驶了几十万公里。

我们尝试去构造机器人,只是作为兴趣和研究,并没有强大的市场需求。同样也不会为了百分之几的性能优势去花大量时间精力去改进它的某一个部件,但是对于成熟且庞大的汽车市场就是很不同的景象了。就像语音识别随着智能手机的兴盛突然变得炙手可热起来一样,人们愿意为此去投入大量财力精力去研发。

当汽车的自动驾驶成为可能,我们就会考虑如何添加更多的自主性进去了。模式识别(比如现在一些高档车配备的交通路牌识别技术),语音识别,更高级的智能等,都会随之而来。

我可以大胆的预测,将来机器人和人工智能等技术,一定是因为汽车而发展起来,汽车本来就是一个很好的机器人。

为什么是汽车而不是手机或者电视机呢?在我们可以预见的未来,以及事物发展的趋势,我们可以清晰的看到他们各自朝前发展的脉络,以及人们对这些事物功能的期望。电视机被赋予了更轻薄便利色彩真实的期许,手机也是操作反应的功能性需求,而汽车,人类更希望下放更多的权利和自主性过去,通过自动化为生活提供便利。可以说,汽车已经被选定了一条自动化的道路,一条导致智能化自动机器的前进途径。

动物和汽车,器官和部件,形成绝佳的对应类比:心脏和发动机,轮子和脚,关节和离合器差速器,食物和燃油……零件的不断调整改进就是进化。也许有一天,就像变形金刚里,我们会引入汽车人这个称谓。