https://zhuanlan.zhihu.com/p/99807721
一、MIPS和ARM授权的异同
MIPS授权和ARM授权都分为处理器核授权(Core License)和架构授权(Architecture License)两类,核授权也称为IP授权,这又分为两类,即软核和硬核。可以把软核看作是电路原理图,硬核除了原理图之外,还有设计好的电路板和各元件的详细参数。比如最简单的照明电路就是由电源、导线、开关、电灯组成,这样一个电路图就像是软核,而室内装修安装电线、电灯等时,电线的直径、长度、走线的路径,电灯的种类、功率、安装的位置等等,就属于物理设计,也就是硬核。有了物理设计之后,才可以进行生产,CPU的生产过程被称为流片。
软核授权一般是指VHDL形式的IP(加密版),获得授权后需要自己做物理设计,再去流片测试,最后量产。厂商可以进一步对微架构进行强化,但不得二次销售最佳化完成的处理器IP,但是可以任意营销其最终制品(包含芯片、开发样版、完整系统等等)。
硬核授权则可以取得CPU核心的闸极电路图,并且也会一并提供抽象模拟测试以及相关的测试程序,获得授权后几乎可以直接生产和测试。
架构授权就是指令集授权,指令集是CPU硬件与软件之间的接口描述,比如加法指令需要使用到哪些寄存器、支持哪些寻址模式、如何传入加数、从哪里得到结果,以及指令的各种格式对应的二进制操作码等。CPU核设计就是要自己设计电路按照指令集的规范去实现各个指令的功能。获得指令集授权后,需要自己完成后续的所有工作,难度最大。因为难度大,所以一般指令集授权还包含技术支持、各种测试程序、检测验证等工具。通过架构授权自行设计的IP,MIPS允许设计者二次销售,ARM不允许,设计者只能销售最终制成品。虽然MIPS和ARM公司都在出售自己的IP,但MIPS创始人是学院派,因此规矩比较宽松,而ARM则不能容忍使用自己指令集的其它公司抢自己的生意。
定义指令集对专业人士没有技术难度,但由于指令是软件与硬件之间的接口规范,规范不同就会导致不同指令集的CPU不能相互兼容,因此存世的指令集并不多。比如老师发出“起立”这一个指令,所有学生都会站起来,就是因为大家都知道“起立”的意思,如果老师与学生语言不通,那指令就无法理解了。针对不同指令集编译的软件,也就只有对应的CPU可以正确执行。比如Windows系统以前只有x86版,就不能在其它指令集的CPU上运行,后来增加了ARM版Windows 10,但各种软件都还是x86指令集的,在ARM CPU的Windows上也不能直接运行。这说明购买指令集授权,本质是购买兼容此指令集的软件的运行权,也就是获得软件生态。指令集的价值体现在软件生态上,而不是指令集本身。
MIPS的定价策略是核授权很贵,而架构授权很便宜。有能力的公司都可以使用MIPS指令集开发自己的CPU,并且可以对指令集进行扩展,而不受限制。这种模式在短期内造成了百花齐放的效果,但从长期而言,由于允许自行扩充指令,导致生态碎片化,相互不兼容,从而影响了开发者和使用者的热情,这是MIPS没落的主要原因。
与MIPS相反,ARM则是核授权很便宜,架构授权很贵(据说大约每5年1亿美元),以及每颗芯片卖出后的版税(约售价的1~2%)。这样即使没有能力自己开发CPU核的公司,也能通过购买核授权来快速推出CPU产品,即使有研发能力的公司,使用现成的 ARM IP 来集成CPU,也可以大幅度降低产品开发成本和缩短开发周期。ARM 的商业模式渐渐驱逐了MIPS,并开辟和占领了更多市场,毕竟低成本的快速的产品方案可以提高市场竞争力,MIPS因此举步维艰。
由于MIPS生态碎片化的前车之鉴,ARM为了避免重蹈覆辙,对架构授权的限制就很严格,合作伙伴可以参于指令集的制定,但禁止私下修改。也就是可以向 ARM 贡献自己设计的新指令,但是否能添加到指令集中则由重要合作伙伴们及ARM协商决定,新增的指令会成为ARM指令集的一部分。某些企业宣称可以扩展ARM指令集,其实这话没问题,毕竟只要满足了扩展的条件,自然就可以扩展。或者私下添加了新指令,但只供专用的系统使用,不影响ARM生态,大概也是可以的。
二、龙芯是 MIPS 生态的守卫者
龙芯最初只是中科院计算所的一个课题组,研究目标是设计一款能用的CPU。当时如果自己设计一套指令集,将会面对没有编译器、没有操作系统、没有软件可用的局面,全部都需要自己开发。由于资金和人员等条件有限,小小的课题组无法支撑这么大的工程量,从现实考虑,就只能在现有的指令集中选择一种。尽管目标很小,但也要梦想一下万一发展壮大了,可能面临的知识产权风险。无法获得授权的x86直接排除,ARM当时比MIPS更加弱小且架构授权昂贵,MIPS架构授权容易获得且当时软硬件生态比ARM丰富,于是成为了最佳选择。龙芯开始时只是进行CPU设计,目的是验证设计能力而不是为了上市场销售,加之课题组本身没有大额资金的支配权,就没有购买MIPS架构授权(我国法律规定“以教学和科研为目的使用他人专利不涉及侵权”),这也为未来埋下了隐患。后来龙芯CPU少量试产和销售时,通过意法半导体流片,使用意法半导体获得的MIPS架构授权来规避了自己没有得到授权的法律问题,但MIPS公司宣称龙芯“抄袭”MIPS指令集——在没有获得授权的情况下使用确实可以称为“抄袭”;还认为龙芯可能侵犯了MIPS公司4条专利——然而当时的龙芯CPU并没有去实现这4条专利相关的指令。但国内一些媒体和读者脑补成了龙芯抄袭了MIPS的CPU设计,且当时汉芯事件结束不久,顿时引起“龙芯造假”、“龙芯和汉芯是同一伙人”、“龙芯骗补”、“龙芯不是自主设计”等各种谣言,直至今日仍然没有消除余波。2009年,中科院购买了MIPS架构授权,龙芯才得以光明正大地宣称自己兼容MIPS指令集。
因汉芯事件导致全国上下普遍对国内自主研发能力存疑,国家对各家芯片研究机构均缩减了支持。境外各CPU企业趁机尝试通过技术授权、合资等方式进一步控制中国市场。2010年,因资金匮乏致使龙芯的研究难以为继,于是课题组从中科院集体辞职,放弃体制内身份,组建了龙芯中科公司,试图通过市场化和产业化获取研究资金。2011年,也就是龙芯自立后不久,龙芯中科公司独立购买了MIPS架构授权,因为如果继续使用中科院获得的授权,可能引起与MIPS公司的知识产权纠纷。龙芯从MIPS获得的是终生授权,每5年续费一次(每5年40万美元),双方不需要重新谈判,协议不能中止,除非双方破产。若MIPS主体不复存在则龙芯不需继续付费,可以一直兼容MIPS架构——传闻MIPS历经多次拆分转卖,现在已经没有收钱的人了。其实MIPS的架构授权费用不应该低到这个程度,每月大约5万人民币,仅相当于二三个工程师的工资而已。主要原因是龙芯剥离了MIPS的技术支持服务和各种工具软件,购买的是“纯净版”指令集授权,才能把价格压至最低。龙芯的发展过程中,起初是打算借用MIPS已有的软硬件生态,这与使用ARM授权的国内同行们一样。但没有想到MIPS会逐渐淡出主流市场,然而这种出乎意料的发展,反而给了龙芯留下了更大的舞台。由于MIPS架构授权允许自行添加指令,且架构授权费用较低,使得有能力的公司纷纷推出自己的MIPS CPU,扩大了MIPS的市场占有率。然而此举也导致生态碎片化加剧,没任何一家公司可以主导MIPS软硬件生态,各公司出于成本的考虑,最后纷纷转投ARM阵营。龙芯则丝毫没有转向ARM的想法,一是因为多多少少已经有了一些合作单位,绝不能放弃好不容易得到的合作项目;二是因为龙芯以MIPS架构为基础构建了自己的扩展指令体系,这些成果无法转移到封闭的ARM指令集体系中;三是因为龙芯很穷,付不起ARM的架构授权费。龙芯成为了MIPS生态的坚定的守卫者,许多开源项目的MIPS分支都逐渐把龙芯作为编译平台,龙芯也为MIPS的生态贡献了大量成果,比如前段时间报道的龙芯对JAVA虚拟机的贡献度排名全球第五,而它前面的几家公司就是甲骨文、谷歌这样的巨无霸。
三、龙芯做了什么
在MIPS逐渐没落的阶段,龙芯在为把CPU销售出去而努力,进行了各种软件和底层库的适配和开发,对Linux和很多开源项目的MIPS分支做出了大量贡献,甚至成为某些开源项目的实际上的维护者。同时通过与国内部分软件厂商的合作,使WPS、QQ等一大批国产软件早早地支持了Linux。也许当时龙芯并没有意识到这就是在建设自有软件生态,目的纯粹是为了让龙芯CPU能够在更多的设备和场景中使用,能扩大市场多卖几块CPU而已。
龙芯为了能把CPU销售出去而进行的努力还是有回报的,毕竟苦心人天不负。比如2006年时,863计划有一项“低成本先进计算机(单机)”的项目,要求销售成本价不超过1000元人民币,要用Linux系统、有Web浏览器、Java虚拟机、电子邮件客户端、文字处理软件、媒体播放器等。龙芯承接了这个项目,然后在2010-2011年左右销售了十多万台单价不超过1000元的一体机,用于农村及边远地区学校的信息化教学。期间完成的软件生态建设已经基本满足在中小学教学、常规文档办公等方面的应用。之后2011年,有关部门在广东云浮开始推动国产化替代试点,拟定使用Linux系统、国产软件、国产CPU、国产外部设备等。2013年进行第一期试点时,少量的龙芯3A1000的电脑在办公环境中和x86电脑一起使用。2015年第二期试点时,龙芯电脑的可用性就已经提高了很多,此时兆芯大概也加入了试点项目,飞腾和申威的情况不清楚。2016年为了300台龙芯3A2000电脑能在办公环境正常使用,龙芯专门派出靳国杰博士带领技术团队驻扎云浮,解决使用过程中遇到的各种软件问题和硬件兼容性问题(随时随地修改系统、软件、驱动),让博士带领一群研究生做300台电脑的售后服务团队,也是旷古绝今了。2017年底,经过龙芯及合作的国产整机和外设生产商及软件厂商们的共同努力,龙芯电脑基本可以无障碍应用于办公环境了。2018年在云浮布署了2000台3A3000,由于CPU性能大幅度提升,终于得到了当地工作人员的广泛认可。期间其它省市也陆续进行了国产化替代试点,龙芯、兆芯、申威、飞腾由用户自由选择,因此龙芯3A3000的累计销售量才能超过30万颗,在所有国产CPU中占据了超过70%的份额。大概在这个过程中,龙芯意识到了软硬件生态的重要性,CPU不仅是CPU,它是承载软硬件生态的基础,只有良好的生态才能体现出CPU的价值。
由于十几年来,龙芯承担了国家各部门推进的许多项目,某些“业内人士”便说龙芯自称只拿了国家5亿补贴,但实际上还有大量补贴是通过定向采购给的,都没算进去——龙芯就是端起碗吃饭,放下碗骂娘。然而实际上可能除了抗辐照芯片等少量国防级项目属于内定,其它项目大多是在国家各个部门的网站上公开招标投标的。比如上面说的低成本电脑项目在科技部官网上有招标文件,10年前售价不到1000元的一体机,恐怕生态完善的Intel都做不出来,里面成本最高的应该是液晶屏而不是CPU,配套厂家努力压制成本也功不可没,为边远中小学的信息化教育作出了巨大贡献。如果1000元的一体机算是定向采购,那么这种“定向”获得的收入也太少了(配套商龙梦实际上是在亏钱做推广)。 各地的国产化替代试点项目,龙芯、兆芯、申威、飞腾都在参与,多家有竞争关系的单位参与同一个项目,又怎么可能是“定向”?。再比如“全军武器装备采购信息网”上从多年前开始,每年都有龙芯、飞腾等一些半导体企业,以及各个研究所中标的科研和采购项目。《解放军报》上2017年刊发的一篇文章提到:“生产CPU的龙芯中科曾接过一项芯片大单(科研项目)。当时,面对军队采购方提出的产品指标,有同行给出了2亿元的报价,龙芯中科却表示只需2000万元”,仅2016年龙芯就中标了军队8项公开的科研和采购项目。可能因为龙芯有能力把成本做低,既能给国家省钱又能夺得项目,才引起了某些人嫉妒的情绪吧。
事实上,龙芯更多的收入是来自于各种行业中使用的嵌入式CPU和特种芯片,以及对其它公司IP授权获得的收益。嵌入式CPU主要是行业应用,比如路由器、防火墙、工控设备、智能交通、民航铁路、核电控制、自动柜员机、智能仪表、指纹锁等。公开的详细资料不多,特种芯片的消息反而丰富一些,毕竟实实在在地打破了国外封锁和垄断。比如用于卫星的抗辐照处理器(1J / 1E / 1F / 1E300 / 1F300),是国内唯一自研内核的宇航级CPU,国内同行大多是基于已有30年历史的Sparc V8架构的开源设计。2015年3月31日龙芯1E/1F进行搭载上天实验,从2016年开始龙芯正式成为北斗卫星主控CPU,替代进口及国产同类抗辐照CPU,《<经济半小时>20170404 中国芯生存状态调查:龙芯还活着吗?》专题对此有报道。宇航级芯片工作环境恶劣(高速粒子/高温/低温),工艺限制和设计难度导致非自研内核极难提升性能,于是龙芯抗辐照CPU(1E300@200Mhz,单核)的性能在国内是第二名的2倍(有比龙芯性能高的是DSP,而不是CPU),在世界是领先水平。视国外同行的进度,龙芯明后年的新型号(1E1000@1000MHz,双核,预计是1E300的10倍性能)宇航芯片有可能会暂居世界第一(可能有误,资料不好找),而抗辐照能力也是世界领先水平,毕竟龙芯从2005年就开始研究,到正式上天已经有了10年的技术积累。龙芯研制了用于石油钻探设备的耐高温芯片(1H),也是打破国外技术封锁的研究成果,中石油、中石化等都在大量使用。某些武器装备也使用了龙芯CPU,消息确定的只有某火控系统使用龙芯,这方面保密太严。IP授权方面,2015年海信使用龙芯IP开发了画质引擎芯片用于自家电视机,仅2016年海信销售的机顶盒等产品就使用了300万颗内含龙芯IP的芯片;还有国科微使用龙芯IP研制了固态硬盘主控芯片;还有一些因为报道较少,而无法确定详情的授权合作。
由于龙芯只做芯片,不做板卡和成套设备,从而带动了一大批配套企业加入龙芯的产业链共同发展,龙芯则依靠小芯片赚的钱来补贴桌面CPU的研发。历经磨难,2015年才艰难地实现了收支平衡。龙芯通过带动产业链的整体发展,认实到只依附于现有生态就始终是给地主种地的长工,只有主导了生态,开垦出自己的土地,才能够真正地发展壮大,国家的信息化建设才能不受制于人,由此更加坚定了建设自主软硬件生态体系的决心和信心。
四、龙芯是MIPS生态的收割者
龙芯从只注重CPU研发,逐渐步入重视软硬件生态建设的路线。由于MIPS生态本身的衰落,龙芯多年来已经成为了兼容MIPS的唯一的桌面和服务器CPU设计者,在设计兼容MIPS的CPU的公司中,是唯一的桌面和服务器软硬件生态的建设者。这种尴尬的“领导者”身份使龙芯可以心无旁骛地发展自己的生态,向CPU中添加各种新的指令来提升性能和扩展功能,而不必操心与其它MIPS CPU的兼容性问题。龙芯3A4000以MIPS R5为基础,自行扩展了1380条指令(从2F开始积累扩展指令),发展出了自己的指令集体系——LoongsonISA。LoongsonISA要比MIPS (216条基础指令+311条DSP指令)庞大得多,MIPS 只是它的一个子集。上一代龙芯CPU只兼容MIPS R3,如今兼容R5大概是准备收割MIPS最后的遗产了。MIPS原本的生态绝大部分已经是历史,龙芯如今的软件生态主要是来自龙芯自己维护的各种开源项目,以及国内各家软件开发商对产品的移植,本质上已经不能再称为MIPS软件生态。即使MIPS R6以指令集免费、IP核开源等方式来吸引其它公司参与,希望唤起MIPS的第二春,龙芯也仍然坚持自己的路线不动摇,因为龙芯不需要再跟进MIPS的版本更新。可以说龙芯实际上成为了MIPS生态的收割者,已经走出了一条摆脱MIPS影响的道路。在龙芯3A4000发布前夕,MIPS又取消了R6版IP核的开源,不知是否与龙芯拒绝跟进有相关性。MIPS R5 之后,再无 MIPS。
反观使用ARM的各家国内公司,即使是获得了某一版本的架构授权,也仍然无法摆脱ARM的钳制。首先添加新指令不自由,需要得到ARM的允许。其次强大的同行太多,为了不被淘汰,当ARM推出新版本的指令集时,就必须再次购买授权。如果不继续购买授权,那么当同类CPU的其它公司都升级之后,各家软件开发商也不会死守在老版本的指令集上不动摇,即使软件有兼容机制可以在老版指令集的CPU上运行,但新版的指令集肯定有加速某些计算的新指令,这样即使CPU核心设计水平相当,也无法抵消巨大的性能差距,继续使用老版本指令集就必然会落后于市场。ARM的阵营唯一特例是苹果,因为它牢牢掌控了自己的操作系统。假如苹果把IOS授权给其它厂商,或者苹果手机也用安卓系统,那么它就会立即失去生态独立的优势,泯然于众人。造成这种困境的原因就是,ARM指令集的主导权不在自己手里,ARM软件生态只会跟随主导者,在同类产品中,绝大多数用户选择的原则,永远都是“更新型更先进”。再讨论国内的ARM CPU的另一种生存模式,就是建设出国外同行暂时放弃或无力插手的ARM桌面和服务器生态,发展使用ARM指令集的桌面及服务器CPU。付出巨大的努力之后,也许能够在公开市场上部分替代Intel和AMD,然而由于使用ARM指令集,那么国外同行也能很快设计出用于桌面和服务器的ARM CPU,然后以性能和价格的优势把国产ARM CPU从公开市场中彻底驱逐出去,窃取胜利的果实,只留下一些受政策保护的小众市场。驱虎吞狼,又或兔死狗烹。
而龙芯没有这样的风险,因为龙芯是自己建设的软硬件生态的领导者,也是MIPS原生态的破坏者。MIPS已经穷途末路,在可以预见的未来不可能再干涉到龙芯的发展。运行于龙芯的系统和软件一旦使用了龙芯的扩展指令集,就不能在其它的MIPS兼容CPU上直接运行,这也是对自己生态的保护措施。龙芯3A4000同频性能已经与AMD 2017年的Zen架构相当,之后两三年持续改进内核并更换工艺提升频率就能进一步接近AMD水平,即使逆天的出现其它更高性能的MIPS兼容CPU,也能保证龙芯不会被轻易取代。而使用ARM授权的CPU,无论是IP授权,还是架构授权,都无法做到这一点,因为ARM把生态统一性守得太紧,生态碎片化是不被允许的。
五、总结
要想实现商业上完全的自主可控,对于CPU指令集和操作系统这两样东西,总要牢牢掌控住其中一种才行。比如 Intel 通过指令集升级、知识产权诉讼、技术路线改变等手段消灭了几乎所有对手,AMD通过反垄断苟延残喘的时候,又凭借自己设计出的AMD64架构在微软支持下复兴,成功倒逼Intel交叉授权。微软、谷歌凭借对操作系统的把持而分别统治了桌面和移动生态。苹果通过对操作系统的封闭,依靠差异化竞争牢牢地在桌面和移动设备中占据了一席之地。而国家要想实现信息化建设的自主可控,那么指令集和操作系统都必须掌握在自己手里。 龙芯如AMD那般发展出了自己的指令集体系,且在国内软硬件厂商支持下,成功构筑了基本满足办公和日常使用的生态,MIPS的影响力却已经可以忽略不计。尽管由于资源不足,龙芯发展很艰难,但我认为只要路线是正确的,坚持下去就有收获的希望。
世事变迁造就了龙芯的现状,从研究CPU设计的课题组,转变为在市场上艰难求存且默默无闻的小公司,再发展成了自建生态并带动大批配套企业共同发展的核心企业。龙芯随着政策的变化而自立,随着MIPS的衰退而崛起,随着中美对抗明朗化而更加重要,随着20年技术积累而无所畏惧,也是时势造英雄吧。尽管龙芯体量还很小,但对自己的命运却能自主可控。
*本文可以随意转发、剪裁、修改……本人不保留任何权利。