新闻中心

EEPW首页 > 嵌入式系统 > 业界动态 > 从Intel和ARM双雄争霸读懂芯片的前世今生

从Intel和ARM双雄争霸读懂芯片的前世今生

作者: 时间:2018-04-24 来源:新智元 收藏
编者按:做芯片很难,做核心芯片更难,做需要生态系统的CPU芯片,比大家想象得都要难;当年,绕得过Intel,跨不过微软。如今,绕得过Arm,做不出安卓,“生态之根”已被控制。

  渗透

本文引用地址:https://www.eepw.com.cn/article/201804/378885.htm

  2011年1月,微软在CES宣布要为架构开发Windows 8 RT操作系统。在2012年年底,几乎和芯手机上市的同时,包括微软自家的Surface RT在内的一大批二合一平板设备上市了。Windows 8 RT不支持所有之前为x86平台开发的应用程序,这成为它最大的软肋,相关的产品慢慢销声匿迹了。渗透桌面市场的第一次尝试失败了。

  最近微软和高通所推出的芯的Windows 10,吸取了教训,用Eumlation的机制来支持旧有的x86桌面程序。这次尝试能否成功,我们拭目以待。

  2009年,ARM推出了Cortex A9处理器,并且用40nm的工艺制造了双核的样片,跑到了2GHz。这是ARM第一次推出乱序超标量的处理器核,而乱序超标量是实现高性能的关键技术,这是非常振奋人心的消息。2010年,Marvell推出了1.6GHz的4核A9的服务器芯片Armada XP。2013年,这款芯片被部署在百度的存储服务器上,这是ARM服务器第一次大规模商用。但Marvell并未继续推出新的服务器芯片。2011年,一家创业公司Calxeda采用Cortex A9,推出了共有480个CPU核的ARM服务器。但它的成就还不如Armada XP,2013年公司就倒闭了。

  2012年,AMD收购了一家做高密度服务器的厂商SeaMicro,准备把它所采用的CPU核由的Atom换成ARM架构的CPU。但直到2014年AMD才推出8核Cortex A57的服务器芯片Opteron A1100,之后从来也没有认真卖过它。2015年AMD就放弃了SeaMicro这个子品牌,不再做高密度服务器了。

  ARM进攻服务器市场的第一次尝试失败了。Marvell和Calxeda都采用的是32位的ARM核,先天不足;AMD则三心二意,毕竟自己还有x86 Server的生意。另外服务器市场对于单核单线程的运算能力也有很高的要求,仅仅有低功耗和高通量(high throughput)是不够的。

  在ARMv8这一64位指令集发布之后,Cavium和AppliedMicro这两家老牌网络芯片厂商不约而同地将自己原先芯片中的架构换成了ARMv8。因为产品的需要,Cavium和AppliedMicro都有自行设计处理器微架构的能力,前者做MIPS处理器,后者做PowerPC处理器。它们两家做ARMv8处理器时,也都采用了只授权指令集,微架构自研的模式。Cavium共推出过两代基于ARM的产品(2014、2016年),AppliedMicro推出过三代(2013、2015、2017年)。随着产品性能逐渐接近Intel的Xeon E5,它们渐渐不再满足于原先的网络领域,开始觊觎服务器市场。

  最让人期待的还是高通的Centriq芯片,2015年年底量产24核版本,2016年年底量产升级48核版本,还得到了微软的强力支持。考虑到高通还和贵州成立了合资公司华芯通,Centriq很可能成为在国内大规模商用的第一款ARM服务器芯片。

  另外具有国防背景的天津飞腾公司,也有ARM服务器芯片的产品,只是不知道这些产品何时能在通用市场上铺货。

  其他确定在研发ARM Server芯片的大厂还包括Broadcom和华为,进度上要略慢一些。

  ARM阵营对服务器发起的第二波冲击,阵容要强大得多豪华得多。因此ARM才敢于宣称,在2021年拿下25%的服务器市场份额。

  要做好Server CPU,ARM架构还有些功课要一点一点补。多Socket服务器所需要的一致性协议,业界刚刚取得共识准备采用CCIX,但还没有具体的产品出来。做云端虚拟机所必备的虚拟化支持,ARM还有些性能问题。x86处理器提升Throughput的利器超线程技术,ARM阵营尚不能支持。Intel芯片近年来陆续增加的安全特性,也够ARM追赶一阵子的。但目前看来,ARM已经没有致命的短板,蚕食掉Intel的服务器市场份额是板上钉钉的事情,唯一的悬念是究竟多少份额?

  未来ISA将不那么重要

  从长远看,半导体厂商对建立于ISA之上的生态系统的掌控力会变弱,而ISA本身,会变得越来越不重要。这是软件技术发展的趋势决定的,如前所述,这些技术在90年代末就已经初有小成了。

  第一是Web技术。网页开发领域,有一个大家视若无睹的奇迹:最后居然只有Javascript一种开发语言屹立至今。要知道在服务器端和移动App领域,开发语言多如过江之卿。其中原因我也分析不出。反正js的挑战者(微软的VBScript和谷歌的Dart)都失败了。网页开发领域面临的主要问题是浏览器差异大,API不太兼容。这个问题慢慢在缓解中,一来浏览器战争大局已定,Android和PC上的Chrome,以及iPhone和Mac上的safari是胜者;二来很多网页应用是跑在App里面的,例如微信和支付宝里,这种场景下Javascript的API已经被特定厂商规范过了。

  由于开发语言和API的高度统一,H5(HTML5+Javascript)已经成了兼容所有硬件的最通用的软件开发平台。曾经有人鼓吹H5会赶走移动端和PC端的原生程序,后来被打脸了。但是移动端和PC端的原生App中,越来越多的界面是用H5生成的了,微信、支付宝、京东、淘宝、爱奇艺、有道词典……统统都是这样。

  Javascript吞噬一切的进程还在持续。2007年,Stack Overflow的联合创始人Jeff Atwood曾经提出过一条Atwood定律:任何能够用JavaScript实现的应用系统,最终都必将用JavaScript实现。十年过去了,此定律基本奏效。把Javascript的一个子集当作汇编语言的asm.js及其后续的WebAssembly,更加使得网页应用有媲美原生应用的潜力,在浏览器里跑Unity3D的游戏都不是问题。

  独立的应用程序仍然会是移动和桌面端的主流,因为没有独立程序,不方便做弹窗广告,不方便启动后台进程收集用户信息,不方便引诱用户安装其它独立程序。但Web的能力的确在快速提升,Web Component技术实现了类似GUI库的Widget复用,如今在浏览器里实现Office和IDE的功能都毫无问题(office365.com、docs.google.com、editor.construct.net、腾讯文档);而WebGL已经能支持Unity3D这种大型游戏框架。

  照此趋势发展下去,独立应用程序仅仅会作为一个包装而存在,开发者写一套H5,加上不同的包装,就成了PC、Mac、Android、iOS上的独立应用程序,不加包装,就是网站。微软去年开源的ReactXP,就是为了实现这一目标。

  这意味着什么?不但底层的CPU被OTT了,操作系统也被OTT了。因为移植一个应用程序到各个平台上,几乎没有什么难度。谁将是生态系统的掌控者?若干个超级App,像微信、QQ、支付宝这样的。它们不但包装自家的应用,其它开发者也可以把自己的应用放在这个包装里面,借重超级App的广泛覆盖度,抵达最终用户。前文提到了,如果微信小程序获得成功,腾讯必然会重拾Q+的野心,把QQ变成桌面上各种H5应用的App Store。

  如果真的会这样,微软岂不是会比Intel还着急?拜托,微软已经不是二十年前主要靠卖Windows和Office的光盘赚钱的那家公司了,未来它会专注于云计算。但Intel还和二十年前一样在卖芯片。

  第二是编译技术尤其是虚拟机的发展。如今的编程语言太多了,80年代那种搞定C语言编译器就OK的好日子早已过去。任何一个新CPU架构要想在移动、桌面、服务器市场站稳脚跟,都得搞定无数的编译器(包括虚拟机用的JIT编译器),这是个坏消息。但好消息是,搞定这些编译器基本就差不多了,不用劝说开发者重写汇编代码。

  老一代程序员对x86处理器架构和汇编都非常熟悉。求伯君当年开发WPS时,手写几十万行汇编;雷军读本科时,是系里20多年来拿过《汇编语言程序设计》满分成绩的两个学生之一;梁肇新开发超级解霸时,把MMX汇编玩得出神入化。感兴趣的读者可以看看梁的《编程高手箴言》,那里面,描绘了一个对现在的程序员而言,完全陌生的世界。在那个世界里,你开发的PC应用程序想要移植到Mac平台上,几乎要完全重写。

  如今高层次的编程语言接管了一切,汇编语言从很多学校的本科课程里消失了,入门教材也从C改成了Java,甚至是Javascript或Python。程序员完全不熟悉底层的CPU。即使是真的需要拼性能的场合,编译器也在很大程度上代替了手写汇编。ARM的工程师告诉我说,ARM在开发开源的Compute Library过程中,主要依靠在C源码中加入标注来指导编译器生成SIMD指令,而不是像梁肇新那样手写。

  在这种情况下,软件平台厂商就变得非常强势,因为他们知道,应用开发商只需付出重新编译一遍的代价。比如苹果,就要求所有的App都改为64位的。这样,未来苹果在手机CPU里放弃对32位应用的支持时,甚至都不会有人感觉得到。这对于x86生态系统而言,简直是天方夜谭,显然微软对此非常眼馋,并且尝试在Windows 10 S中复制这种掌控力。

  至于谷歌,Android把所有应用都跑在虚拟机上的尝试虽然失败了,但如果未来它再针对AR/VR、AI或机器人发布一个什么软件平台的话,就很有可能完全禁止原生程序。

  而Oracle,正在努力开发可以支持所有编程语言、能把所有CPU给OTT掉的全新VM:GraalVM。我们拭目以待。

  第三是Emulation技术的发展。虽然眼下ARM阵营中靠Emulation进攻Intel的先锋是高通,但最可怕的选手其实是NVidia。NVidia拥有最厉害的Emulation技术,而且江湖传言Denver处理器的初衷就是针对x86的。当初NVidia的Tegra处理器曾被拿来做Windows 8 RT的二合一平板。如今Denver处理器跑Windows 10绝不会让人意外,那么它会怎么跑呢?肯定是直接在底层硬件上做x86的Emulation,而不是在Emulate出来的ARM指令集上再做一层Eumulation。

  Denver处理器前些年没有跳出来抢Intel的饭碗,很大程度上是因为NVidia还在做Intel平台的主板芯片组,另外NVidia还没有那么强大。如今NVidia也不做芯片组生意了,还借AI的东风,股价扶摇直上。说不定哪天,NVidia就会放出Denver处理器的x86 Emulator,做到单线程性能不输Xeon,强攻服务器市场。想想看,在单芯片上集成GPU和x86版的Denver,云计算厂商能不动心?

  如果未来Emulation技术进一步发展并且被越来越多的厂商掌握,很可能会出现这种情况:CPU本身是某种外界不了解的指令集,官方发布时,只能Emulate某种开放的指令集,例如RISCV;但是用户可以给它安装不同的Emulator,让它变成x86-64处理器,或者ARM64处理器。在软件定义一切的时代,这并不是多么疯狂的想象。

  总之,CPU依然不可或缺,但CPU用谁家的,是什么指令集,会越来越不重要。软件的发展,会在用户和底层的CPU之间加入足够大的缓冲带,CPU的差异,越来越难以被用户察觉到。

  展望:让CPU不再难

  此文在最后修改之时,看到了梁宁的文章《一段关于国产芯片和操作系统的往事》,里面写到:

  就像10多年前一样,只要搞定知识产权问题,选择技术路线,找会干的人,投入干,CPU/芯片就能够做出来。搞不定的依然是操作系统。差距大的依然是生态。

  当年,绕得过Intel,跨不过微软。如今,绕得过Arm,做不出安卓。

  我也曾在北大参与过国产CPU的研发,生态之难体会颇深,真的,只是烧钱做芯片,无论烧多少都无法挑战Intel和ARM,何况过去二十年真的没烧多少。

  但我并没有梁宁那么悲观,毕竟技术的潮流无法抗拒,借用马化腾的一句名言“可能你什么错都没有,最后就是错在自己太老了”。

  Intel和ARM如此强大而且极少犯错,我们如此弱小就算它们犯错也无法利用——但我们可以欺负它们的“老”。

  在此借新智元的宝地,向小马哥呼吁一声:

  请借助腾讯的强大生态,把CPU和OS这两个老大难问题给OTT掉吧!

  做法非常简单,把Q+桌面再重新搞起来,做一款完全使用Javascript&Webassembly编程的操作系统,里面用腾讯文档来替代Office,各种微信小程序都支持起来,适当支持游戏(但要加入家长监控系统)。补贴芯片厂,让它们使用ARM或RISC-V外加国产Imagination gpu做SoC,生产类似Surface这样的二合一平板。底层CPU使用的ISA完全不可见,上层编程完全用H5。这样,就帮祖国把CPU和OS这两个陈年大洞都补上了。

  芯片要下苦功,别凡事都指望模式创新。这不假。但偏偏CPU真的面临一个十倍速变革的机会,真的有靠模式创新而胜出的机会,为什么不试试呢?如果腾讯不去尝试一下,谁还有资格呢?促进祖国的微电子发展功德无量,相信这次不会有人说腾讯垄断之类的闲话。


上一页 1 2 3 4 下一页

关键词: Intel ARM

评论


相关推荐

技术专区

关闭