也许是龙芯名称中的“龙”字,承载着太多国人的希望,自诞生之初就处于社会舆论的风口浪尖。有人说龙芯是骗经费的项目,也有人说龙芯的科研人员是为理想而奋斗的志士,还有人说龙芯的科研人员“太天真”,是土八路斗美械师,自寻死路。龙芯究竟怎么样?无数篇横看成岭侧成峰的报道给龙芯包裹上了层层迷雾。那么今天,就让我们一起揭开迷雾下的真相,洞察志士的艰辛与心血。
1、龙芯的诞生
回溯历史,中国也曾经拥有过自己的CPU和全自主的半导体产业。但因在上世纪80年代奉行“造不如买、买不如租”、“市场换技术”等方针路线,不仅没能拉近和国外的技术差距,反而把原本的家底败得精光,国内市场完全被外资占领。在中国失去独立研制高性能计算机的能力之后,美国要求中国把高价进口的高性能计算机放在透明玻璃房中,并提出了非常苛刻的要求——玻璃房门的钥匙在美国人手里,使用用途需要向美国人汇报,使用前都要经过美国人许可。
银河号事件、台海危机、中国驻南联盟大使馆被炸事件给中国政府敲响警钟,“落后就要挨打”。亡羊补牢,犹为未晚。中国于2000年前后重启了一大批军工科研项目,中科院计算机所也开始着手芯片设计研发。于是,龙芯开始了漫漫长征路。
龙芯课题组成立之初是着眼于解决国防和信息安全领域无芯可用的困境。课题组成立于2001年,成立的时候可以说用台词“七八号人,两三条枪”来形容再合适不过了。只有一间50-60平米的实验室,人员也是东拼西凑——有已经年近70,曾在上世纪70年代参与国产芯片研发的老研究院员,听说计算机所要设计龙芯,就主动带着几个学生过来,其中也有刚走出校门的青年学子。
课题组成立时,龙芯团队总计也就10来个人。到2006年,龙芯团队逐步发展为将近100人的研发设计团队。到2014年,龙芯中科公司有研发设计人员将近400人。
2、龙芯是国家的“亲儿子”?
龙芯的“龙”字会给国人一种错觉,认为龙芯是国家的“亲儿子”,是用举国体制输送资金和人才打造的国产芯片。但实际上,龙芯成立之初仅仅是中科院计算机所里的一个芯片研发课题组,国家对龙芯的扶持也非常有限。
在人才方面,在课题组成立时候才10来个人, 2006年才发展到100余人,2014年才400人,可以说龙芯团队的骨干人才都是自己培养的,不少设计师都是胡伟武亲自带出来的博士生。与之形成鲜明对比的是兆芯和宏芯的亲儿子待遇——2013年4月成立的兆芯,到2015年已有员工已扩充至1000人;而在2014年成立的宏芯,国家则直接从计算机所抽调人才,停薪留职去支援宏芯。
在资金方面,自2001年成立以来,从国家863计划、核高基专项中累计获得项目经费5亿人民币。龙芯中科公司成立后,获得北京市政府2亿人民币的股权投资。也就是说龙芯成立至今共从国家获得资金7亿元。平均下来,每年获得国家补助为几千万元。对比紫光、兆芯和宏芯获得的补助可谓少得可怜——
2014年紫光获得国家集成电路大基金400亿元人民币;宏芯成立时获6亿注册资本,从2014年至今,获得补助不少于20亿元人民币;兆芯成立时上海市政府出资12亿元,从2013年成立至今,获得补助不少于70亿元人民币。
另外,芯片研发对资金需求极大,国家对龙芯的补助无异于杯水车薪。举个列子,俄罗斯贝尔加电子的Baikal-T1处理器研发成本折算为人民币是1.85亿元,该芯片是购买MIPS Warrior P5600微结构集成双核CPU,主频1.2G,用于路由器、打印机、复印机等产品。如果贝尔加电子自主研发微结构的话,成本会更高。
换言之,贝尔加电子研发一枚路由器芯片的研发成本(而且还不是自己研发微结构)相当于国家对龙芯的总投入的四分之一。若以国外巨头作参照,则差距更大,2014年Intel研发经费超过100亿美元,员工达10万余人。
3、龙芯经营现状
自2010年龙芯市场化运营以后,龙芯选择了走主动挖掘民用市场、提升造血能力的道路,将过去的向国家要经费转变为从市场赚收入,没有再向国家要过一分钱。2014年,龙芯在纯商业行为的收入占总收入的比重从0上升到1/3,国家安全市场的比重占2/3,实现了自主经营、自负盈亏、收支平衡。
4、龙芯科研队伍两个特点
一是用毛泽东思想武装科研队伍
龙芯中科研发团队继承了老一代无产阶级革命家的革命精神,在技术研发走独立自主的发展道路,不依附于国外技术体系(例如Wintel、AA)。在工作中践行艰苦奋斗,自强不息的拼搏精神,每周6天班,每天加班到深夜,不少研究员以实验室为家。当为解决客户的问题之时,一周平均每天只睡3小时更是常态。虽然工资待遇很一般,工作强度非常大,但骨干研发队伍异常稳定。在龙芯公司化后,除少数研究员因计算机所科研需要外,龙芯团队的大部分科研人员以破釜沉舟的勇气和决心脱离体制下海,接受市场的检验。
二是骨干研发人员全部自己培养
龙芯科研骨干基本来自国内顶级学府,有的是所在市、县高考状元,有的是是科大少年班的天才少年。比如龙芯总裁胡伟武,就曾是浙江永康高考状元,师从著名计算机系统结构专家夏培肃院士,博士论文曾获“中科院院长奖学金特别奖”、首届“全国百篇优秀博士论文”,获得了公费出国奖励,受夏培肃院士教诲,胡伟武决定留在国内做科研。再比如入选MIT2015年TR35杰出青年创新人物的陈云霁,也是胡伟武的学生,他就来自科大少年班。
5、指令集
指令集就是一个编码集合。它是用一些代码表达读、写等操作,命令计算机做各种运算的一套命令标准。指令集可分为复杂指令CISC、精简指令RISC、超长指令集VLIW。CISC指令集的每个指令可执行若干低阶操作。诸如从内存读取、储存、和计算操作,全部集于单一指令之中,指令数目多而复杂,指令编码格式混乱,导致编码器复杂,流水线设计较为困难,指令不定长也带来指令对齐方面的额外挑战,因此付出了性能的代价。CISC指令集经典代表:X86。
RISC指令集对指令数目和寻址方式都做了精简,固定指令长度,统一指令编码格式,加速常用指令,流水线设计更容易,因此效率也更高。有一段时间,因为RISC的高效率,Intel在发展CISC产品线的同时,也不得不研发了RISC处理器。RISC指令集典型代表:Alpha、Mips。
CISC和RISC与在竞争的过程中相互学习、取长补短,CISC指令集在解码阶段上实现向RISC类指令的转化,将后端流水线转换成类RISC的形式。而随着技术发展,RISC指令集也达到数百条甚至上千条(loongISA有1907条),在指令集上殊途同归了。
超长指令集(VLIW)使用非常长的指令组合,把许多条指令连在一起,以能并行执行。因为和CISC和RISC软件生态不兼容的原因已经很罕见了,Intel的安腾,英伟达的丹佛都是其代表。
龙芯选择兼容Mips,一方面是因为课题组当时只有10余名成员,人力财力精力有限。另一方面,龙芯自己定义一套指令集技术上没有难度,但是无法兼容现有的计算机体系。
举例来说,你既可以用“+”、“-”、“*”、“/”来定义加、减、乘、除和也可以用 “-”、“+”、“/”、“*”来定义加、减、乘、除,既可以用大写汉字来“壹”来表示1,也可以用“一”来表示1。
1+1=2,这种表述方式全世界都看得懂。但是壹+壹=贰,就只有中国人才看得懂了。而你若将“-”定义为加,那么壹-壹=贰,就只有你自己看得懂了——因为你无法让全世界的人跟着你的指挥棒走,让全世界人民在日常数学运算中用“-”来表示加,无法让全世界学校的教科书中用“-”来表示加,无法让已经被证明的数学公式和定理中用“-”来表示加。
因此,重新定义指令集技术上难度近乎于零,美国也一度禁止将单独的指令集申请为专利,只有当指令集与实现方法相结合的时候才被允许申请专利。研发兼容Mips指令集的CPU,就如同我们在数学上放弃了传统的汉字而使用阿拉伯数字去证明数学定理,Mips指令集和阿拉伯数字只是知识的载体而非知识本身,真正具有价值的是指令集的实现方法和被证明的数学定理。
ARM于2012年购买了498条Mips指令专利,但这并不会对ARM的自主知识产权造成影响。同理,龙芯使用兼容Mips指令并不会对自主知识产权构成影响。而真正对龙芯自主可控路线产生影响的是指令集的发展权——是否有资格自主扩展指令,是否能让软件生态跟着你的指挥棒走。
6、龙芯的指令集
龙芯走兼容MIPS指令集发展路线,在2008年金融危机后,以比较低的价格购买了MIPS指令的永久授权,在十几年的发展中对指令集进行了相当大的扩展,逐渐发展出了自己的指令集loongISA。
loongISA指令集共1907条指令。源自mips:
216条mips基础指令,获得永久授权。
311条DSP指令,获得永久授权。
自主指令:
mips基础指令扩展——148条loongEXT,
虚拟机扩展——5条loongVM指令,
二进制翻译扩展——213条loongBT,
向量指令扩展——1014条loongSIMD
龙芯在MIPS的指令系统的创新方面已经远远超过了MIPS公司,之所以购买Mips指令永久授权主要是减少市场化过程中的麻烦。举例来说,Transmeta公司曾经市场前景良好,但Intel起诉它,打了两年官司。虽然最终Intel输了,但两年过程中没有人敢跟Transmeta做生意, Transmeta被官司拖垮了。
MIPS公司破产后,所拥有的技术专利分的比较散。虽然MIPS被英国Imagination公司收购,但Imagination的主营业务是GPU,在CPU设计方面技术底蕴不足,它既没有能力,也没有意志扛起MIPS阵营的大旗,指令集扩展和微结构研发都不如龙芯。
而龙芯只要保持现有的发展势头,使应用软件跟着龙芯走,构建并壮大自己的产业联盟,那么龙芯对Mips的扩展就是行之有效的,而且有机会夺取Mips阵营的主导权。
7、编译器
程序员在编程的时候写的是编程语言,但是计算机运行的时候是机器语言,编译器就是将程序员的编程语言翻译成机器语言的工具,而编译器的好坏也非常影响一款计算机的整机性能,比如SUN就曾经依靠对编译器的优化使CPU的spec跑分提升了50%,大幅提升了整机性能和用户体验。
国际上使用最为广泛的编译器是GCC,该编译器对X86、ARM、MIPS、Alpha等指令集的CPU优化各不相同,对市场占有率高的X86和ARM优化得较好,版本也比较新(GCC部分代码就是Intel提供的),但对龙芯、申威的优化比较差,版本也比较老旧。
因此,龙芯自主研发了LCC以提高编译器的效率,虽然LCC诞生的时间还很短,对自家CPU的优化能力无法与Intel公司的ICC编译器相比较,以GS464E的spec2000跑分为例,使用LCC比使用GCC4.8整数提升7%,浮点提升36.8%。毕竟万丈高楼平地起,期待龙芯能不断提升LCC编译效率。
8、微结构和主频
CPU性能(单核)=主频*IPC(这个公式必须是同指令集才能成立,不同指令集不可比较)。主频就是CPU工作的时钟频率,同一款CPU在一个时钟周期内完成的指令数量是固定的,因此主频越高,完成一个时钟周期所消耗的时间越短,CPU的运行速度就越快。
IPC是单位时间内调用的指令集数量,微结构设计得越好,单位时间内能调用的指令集数量越多,CPU的性能就越好。微结构好坏取决于前端设计水平,主频的高低一方面受微结构流水线级数的影响,但更多的是取决于后端的设计水平。再往细的方面说,前端设计主要指芯片的执行结构、数字逻辑层设计、执行状态仿真等方面,后端设计主要指物理层电路的具体优化,包括单元布局、时序优化等方面。
微结构研发不仅技术门槛高,而且费时费钱,一个微结构从研发到产品一般需要3年,而所需资金更是难以计数。龙芯自2001年以来,共研发GS132、GS232、GS264、GS464、GS464V、GS464E共6个微结构,以龙芯及其有限的人力和财力,实现了以平均2.33年更新一个微结构的发展速度,相较于国家非常有限的扶持,龙芯拿出了远远超过投入的产出。
龙芯在2015年8月发布的GS464E微结构测试参数非常亮眼。根据中电集团的测试报告,GS464E的SPEC2000使用GCC4.8编译器跑分为:整数768/G、浮点1153/G,使用LCC编译器跑分为:整数828/G、浮点1578/G,微结构的效率在整数性能方面基本追平了AMD目前最好的微结构,在浮点性能方面接近Intel在2013年发布的Ivy,分支预测和访存带宽更是能直接与Ivy比肩(Intel公司2013年的Ivy和2015年的Skylake差距很小)。
现在,龙芯和国外巨头在微结构方面的差距已经比较小了,差距主要在主频方面和制程工艺方面。在主频方面,2015年发布的龙芯3A2000的主频只有1G,而代码已冻结,即将流片的龙芯3A3000的也只有1.6-1.8G的主频。相比之下,Intel的CPU主频大多在3G以上,部分CPU主频接近4G;在制程工艺方面,受限于中芯国际的代工水平,龙芯能使用的最好的制程为28nm,而市面上出售的Intel芯片制程大多为22nm,Intel最新的产品普遍采用14nm制程工艺。
9、龙芯产品
目前,龙芯有龙芯1、龙芯2、龙芯3三个系列。武汉数字工程研究院研发了基于龙芯1A的可信移动终端。龙芯1B多用于工业应用,有工业以太网交换机、网络税控机、北斗车载终端和嵌入式数据采集器等产品。龙芯1C是针对民用市场定义的芯片,被用于智能指纹锁、3d打印机、开源主板、考务终端、考勤/门禁等产品。龙芯1D、1E、1F是直接根据特地客户提出的需求定制的,龙芯1D是超声波热表、水表和气表测量专用芯片;龙芯1E和1F是宇航级芯片,被用于北斗卫星。
龙芯2系列芯片的微结构为GS264,龙芯2F被用于上网本和一体机等产品。中国兵器工业集团研发了基于龙芯2F+1A的四余度火控计算机系统。龙芯2H被用于上网本、防火墙、交换机、车载计算机平台等产品。龙芯2K是工控芯片,用于数控机床。龙芯2J是按军方需求定制,该芯片被用户单位总师评价为,“已知范围内性能最高,设计最复杂的军品CPU。”龙芯3A1000微结构为GS464被用于笔记本。
龙芯3B1000和3B1500微结构是GS464V,3B1000被用于高性能计算机KD-90和超算曙光6000,KD-90集成了10片3B1000处理器,理论峰值计算能力达到每秒1万亿次。曙光6000超算使用了2500片3B1000,另外曙光还出品了3B1500的服务器和堡垒机。
中电十四所用GS464V微结构研发了华睿2号(DSP),华睿2号能将雷达信号处理算法提炼成FFT、FIR、相关、矩阵求逆等17种基本计算构件,较好地解决了雷达系统大带宽、高吞吐的应用需求。龙芯3A2000和龙芯3B2000的微结构是GS464E,龙芯3A2000有台式机和笔记本产品,龙芯3B2000将被用于服务器。
10、BIOS、操作系统和软件生态
在BIOS方面,龙芯联合中电科技集团开发的全中文龙芯安全bios----昆仑固件。昆仑固件支持龙芯、飞腾、申威等国产芯片。在操作系统方面,龙芯在2015年8月发布基于linux的社区版操作系统loongnix。此外,龙芯还支持国产中标麒麟操作系统以及Reworks嵌入式操作系统。在软件方面,龙芯支持金山WPS文字处理,JAVA和Flash,火狐浏览器和Chrome浏览器,达梦、金仓、神州通用数据库,东方通、金蝶、中创中间件,中软政务处理系统等,主要针对有信息安全要求的党、政、军、国企、事业单位办公电脑和服务器市场。在软件中有很多核心代码,针对X86和ARM的芯片都是用汇编优化过的,而针对其它结构是用C语言写的普通功能性代码,有着很大的优化提升空间。
例如某单位的指挥系统刚移植到龙芯CPU时,开机就需要50分钟,但经过两个月的磨合优化,开机时间降低到了30秒。又如有一个数据库,刚开始启动需要10分钟,后来降到10秒。因此,龙芯目前软件生态的重点是对编译器、C库、JAVA、数据库、中间件进行优化,以及对一些专业应用,比如军用的GIS应用加速、网络安全的协议栈等。
对于普通消费者常用的软件,因龙芯电脑的市场占有率过于渺小,加上龙芯人力、物力、财力都非常有限,在这方面实在是心有余而力不足,这也是民用PC市场基本看不到龙芯电脑的主要原因。
11、龙芯产业联盟构建
龙芯想要市场化运营就离不开一个强大的产业联盟的支持。目前,龙芯的合作伙伴主要有中国电子科技集团、中航工业集团、中国核工业集团、中船重工、中国船舶工业集团、中国航天科技集团、中国核建、中国工业兵器集团、曙光、浪潮、中科梦兰、锐捷网络、东软集团、神州数码、研华科技、中兴、西安华芯、清华同方、众达精电等。到2014年底,龙芯下游已有两三百家合作伙伴企业,下游里仅仅是围绕龙芯做研发的技术人员已有上万人。
12、Tick—Tock发展战略
龙芯将设计团队一分为二,一个团队负责前端设计,任务是提升微结构,一个团队负责后端设计,任务是提升主频。龙芯2015年发布的3A2000是Tock,是微结构的提高,明年发布的3A3000是Tick,提升主频和制程工艺。两只设计团队交替进行,犹如钟表“滴答滴答”(Tick—Tock原意是钟表声“滴答”)。采用Tick—Tock发展战略,不仅降低了科研人员的工作强度,还使产品更新频率也从原来的2.3年一次更新缩短到18个月一次更新,提升了产品研发的效率。
13、 龙芯的名誉
龙芯的名誉毁于媒体和网络。可能是国内部分传统媒体的记者们因缺乏基本的硬件知识,无法理解设计师的话语,导致写出来的文章不仅空洞无物,还词不达意。八股式报道模式总是一副赶英超美的科技大跃进的口吻,将龙芯高高捧起,而现实却无情的一次又一次的打脸,当宣传和现实多次冲突后,造成很多不明真相的群众感觉龙芯就是一个大忽悠。
而国内很多网媒,总是喜欢取非常耸人听闻的标题,一副语不惊人死不休的模样。一会儿龙芯“秒天秒地秒月球”,一会儿又把龙芯黑成奥巴马,而一些连龙芯和汉芯都分不清的网民又参与其中,人人一副我比政治局更聪明的样子,大言不惭地指点江山,在彼此间的网络互动中把原本应该理性、祥和的网络环境变得充斥着虐气,使真正理性的声音淹没在嘈杂的奇谈怪论中。
14、龙芯的性能
根据中电集团的测试报告:GS464E的SPEC2000使用GCC4.8编译器跑分为:整数768/G、浮点1153/G,使用LCC编译器跑分为:整数828/G、浮点1578/G,用Intel的芯片对标的话,以即将流片,也是龙芯目前性能最强的3A3000为例。它的整数性能相当于Q8200,浮点性能相接近主频降到1.6-1.8G的3代I5。
事实上,单纯比较CPU的性能对我们普通消费者而言意义不大。因为影响用户使用体验的是整机性能,CPU性能仅仅是整机性能的一方面。CPU、编译器、操作系统与CPU的磨合,应用软件针对CPU的优化都会对整机性能和用户体验产生很大的影响,而后者才是龙芯目前的短板。因此,龙芯把越来越多的资源向软件倾斜。
15、龙芯的定位
龙芯课题组成立之初是着眼于解决国防和信息安全领域无芯可用的困境。所有工作都是围绕着国防和信息安全需要开展,开发嵌入式芯片也是为了从民用市场中赚钱,有了稳定的资金来源后更好的支持用于国防和信息安全领域的高性能芯片研发。
对于目前的龙芯来说,PC和服务器产品在整机性能上和国外产品的差距依然很大。对于在家用PC市场和国外产品竞争,龙芯电脑在整机性能、价格、软件生态方面处于绝对劣势。以龙芯及其产业联盟的实力要在商业上打败微软和Intel构建的体系确实是痴人说梦。
未来5年内,龙芯在PC市场的目标仅仅是在硬件性能稳步提升的同时,通过不断加强编译器的优化、软件和硬件的磨合,使龙芯电脑和服务器的整机性能和软件生态能够满足党政机关的办公需求。至于国内家用PC市场,只有等龙芯的软件生态足够丰富、产业联盟足够强大之后,龙芯的产品才会有竞争力。
16、关于自主可控
自主,顾名思义,是自主知识产权,不需要给国外缴纳专利费,可以自由选择发展方向和技术路线。
以龙芯为例,龙芯可以自由扩展指令集,比如龙芯扩展了1014条向量指令,使龙芯微结构的浮点性能大幅提升,以至于都能客串DSP;
从国外购买指令集授权的话,不仅要支付一笔授权费,而且授权到期要再购买一次,外商每一次更新指令集还要再购买一次。另外,还会受到很多限制,比如不具备发展权,不能扩展指令集,只能按照国外巨头的划定路线图走,跟在身后亦步亦趋。
可控,指的是芯片安全可控。无论是自主指令集还是购买国外指令集,只要是独立自主设计微结构,就不存在安全问题。
但如果是购买国外微结构授权或者仿制国外CPU则存在安全隐患。因为买到的微结构若不是开源的,对于国内厂商来说就是一个黑箱;即使是开源的,光指令系统里的源码至少一两千万行,在完全吃透技术以前,根本没法保证里面没有安全隐患;仿制国外CPU很容易陷入知其然,不知其所以然的情况,无法识别CPU里的到底有没有后门电路。
因此,要做到真正自主可控就至少要有自己的指令集和微结构,目前国内符合条件的只有龙芯和申威。购买国外厂商指令集授权,比如ARM指令授权,自己设计微结构,虽然无法自主选择发展路线,但是在硬件方面安全可控,而且依附于AA体系后,虽然会造成受制于人的情况。但可以不需要研发自己的编译器,可以兼容AA体系的软件生态,大幅降低研发的技术门槛、时间成本和资金成本。在没有自己的体系可以依托或没有资本和技术自建体系的情况下,依附于国外体系,有利于市场化运营。
购买国外微结构,比如ARM的A53或A57,集成自己的SOC,这种做法虽然能依附于AA体系,有利于市场化运营,能赚快钱,但既不自主,也不可控,而且在利润方面也被外商控制。因为在购买微结构要支付授权费,每生产一片芯片还要支付专利费。
而且每个环节做什么,有多少利润,在AA体系中已经形成潜规则,国内IC设计公司依附于AA体系基本上沦为外商的马仔,这也是国内ARM阵营IC设计公司虽然营业收入不低,但利润普遍不高的原因之一。
即使是国内IC设计公司营业收入排行第一的海思,在有母公司输血的情况下也曾经连年亏损,利润主要依靠华为搭载海思芯片产品的高溢价,而非在市场上直接出售芯片。
17、总结
龙芯课题组成立14年来,忍受着社会上的冷嘲热讽,用少得可怜的人力和财力研发了自己的loongISA,设计了6个微结构,研发了自己的LCC编译器,开发了自己的社区操作系统loongnix。推出了几十款产品,涵盖军用芯片、宇航级芯片、服务器芯片,桌面芯片,嵌入式芯片以及这些芯片配套的软件生态。构建了一个涵盖两三百家企业,上万名技术人员的产业联盟。而这一切都是一支只有400余人的研发团队完成的。
相对于国内依附于Wintel体系、AA体系的IC设计公司在技术上和利润上都受制于人。龙芯可以自主扩展指令集,在发展方向上可以自主选择;在安全可控方面,可以实现从软件和硬件上同时实现安全可控;在利润方面,可以实现所有利润都留在龙芯构建的产业联盟内,国外厂商除非加入龙芯的产业联盟,给龙芯当马仔,否则无法分走一分一毫利润。
下一步,龙芯将以“loongISA+LCC+GS464E等自主研发的微结构+社区操作系统loongnix+软件生态+产业联盟”为基础,力争打造自己的体系。若能成功构建自己的体系,该体系将成为继Wintel体系,arm+安卓体系之后的第三极,虽然弱小,但星星之火,可以燎原。