龙芯LoongArch架构的生存和对抗

  通用CPU要想在主流市场上有生存和对抗的能力,有两个必须跨越的门槛,一是产品性能,二是软件生态。在桌面计算机和服务器领域,x86架构(指令集)已经称霸了几十年,使人们产生了一种错觉:CPU的竞争只是Intel和AMD的CPU产品的性能竞争。直到近些年,随着智能手机的蓬勃发展,大家才发觉原来还有一种架构(指令集)叫ARM。因为软件生态相互独立,x86进军移动领域铩羽而归,ARM想在桌面和服务器市场上有所建树也困难重重。

  完全由国内科研人员自主设计的龙芯CPU,如今最新型号3A5000的性能已迈进了主流的门槛,但是它使用的架构(指令集)既不是x86也不是arm,而是自主设计的LoongArch,软件生态又怎样满足各行各业形式多样的需求呢?龙芯以前基于MIPS架构(指令集)扩展了LoongISA,以此为基础发展自主生态,在与国计民生相关的行业中有广泛的应用,今年4月15日又发布了完全自主设计的LoongArch架构,龙芯要让LoongArch生存壮大、并有与其它架构对抗的能力,软件生态的门槛也必须跨越过去。

龙芯3A5000 (北京卫视画面截图)

  通用计算机发展以来,基于不同的设计思想,诞生过许多各有特色的CPU架构。“架构”在大多数时候与“指令集”是同义词,它专指CPU指令系统的行为规范,也约定了软件调用CPU物理电路功能时使用的控制信号。而CPU核心的电路设计称为“微架构”或“微结构”,只是这些词语被许多企业和媒体有意无意地混淆了。龙芯曾与MIPS有很深的纠葛,从起步开始,就一直在基于MIPS架构设计自己的CPU,以前使用的LoongISA架构也是以MIPS为基础扩展而来。现在由于各种原因,MIPS架构成为龙芯进一步发展的制约因素,因此龙芯决然把全线产品转向自主的LoongArch架构。看到龙芯为保障LoongArch架构成功而实施的种种举措,我觉得龙芯可能细致研究过MIPS的兴衰历程,以史为鉴,兴利除弊。对于MIPS的历史,我认为可以用十六个字来简述:“始于微末,成于天时,衰于割裂,亡于自囚”。

一、教训:MIPS架构的兴衰史

  上世纪七八十年代,一些学者认为往CPU中不断添加各种指令是在错误的方向上越陷越深,每一条新指令都需要大量的晶体管去实现功能,许多指令的功能有重合的部分,也使编译器和程序员在选择指令时无所适从。他们提出了一种新的思路,最主要的特征是:

  1. 把各种指令功能尽可能的拆解为最小单元,把相同的单元合并为一条指令,所有的复杂功能都可以使用这些简单指令组合实现;
  2. 固定指令长度,统一指令编码格式,只有加载、存储指令可以读写内存;
  3. 进一步分解指令执行的每一个步骤,便于实现指令流水线设计,尽量使每一条指令都只消耗一个时钟周期,而传统指令系统无法实现流水线。

  基于这些思路设计的指令系统都被称为“精简指令集(RISC)”,传统的指令系统就自然地得到了“复杂指令集(CISC)”名称。RISC的每一项重要特点都与传统的指令系统背道而驰,以至于没有哪家公司愿意进行实践,而一些学术项目也没能成功展现RISC的优点。直到斯坦福大学的几名老师带着研究生们成立了MIPS项目组,完成了基于RISC设计思想的MIPS指令集设计,并完成了用于验证的CPU设计和流片,然后在1983年的ISSCC大会上引起了业界哗然。这款CPU的主频只有同期主流商业CPU的一半,晶体管数量也只有几分之一,但却把来自工业界的对手完全击败,展现了RISC设计思想的非凡优势。

  在当时集成电路中晶体管的单位成本还很高,MIPS架构指令少,就意味着设计成本和生产成本都能减少,但又能实现比传统架构更高的性能,因此迅速获得了学术界和工业界的广泛关注,也成为了被写进教科书的经典设计。1984年MIPS公司成立,但只是一家很小的创业公司,它无力自己生产芯片,只能通过把设计授权给其它半导体企业来获利。那时候把CPU核心设计成独立IP(作为功能模块存在的芯片核心设计)的技术还不成熟,出售的要么是难以修改的完整CPU设计,要么是非常宽松的架构授权。MIPS允许其它公司基于MIPS架构自行设计CPU,并允许以ASE(应用特定指令集扩展)和UDI(用户定义接口)这两种方式扩展指令集。由于MIPS表现出的性能和成本优势,DEC和SGI等公司均大量地使用基于MIPS架构的CPU产品,MIPS在市场竞争中呈良好的上升势头。

  随着MIPS授权企业的增加,在发展的过程中,几乎每个获得架构授权的公司都会在CPU中加入自己的独特设计以提高在某些应用中的性能,配套的板卡更是五花八门,操作系统和应用软件的兼容性受到了挑战。而Intel与微软的联盟则依靠良好的向前兼容性特性迅速积累了大量的应用软件,整体上看MIPS的CPU市场占有率仍在上升,但MIPS的业务软件却进入了衰退期。

  在1991年大约20个公司成立了ACE联盟,希望定义统一的规范和标准,使操作系统和应用软件能够运行在它们的任何一款计算机上。可是MIPS公司自身的实力不足以主导规范定义,每家企业都希望采用自己的标准,在大家的争吵中规范定义的工作进展缓慢。没有主导者的联盟,除了吵架似乎没有什么其它事可以干,直到MIPS彻底倒闭,这个联盟也没有完成规范的制定。目前受到关注的RISC-V我觉得与MIPS有许多相似之处,拥有授权的各家企业都在UDI中扩展自己的指令,但谁都不愿意让步致使大家都不能并入主线,RISC-V的设计者曾经也设计了MIPS,大概是对MIPS执念太深,仍然保留了这个深坑。

  那时老牌的半导体企业们基于RISC思想设计的CPU和架构,也纷纷投入了使用,ARM也开始崭露头角,给MIPS公司来了巨大的压力。在DEC决定抛弃MIPS架构,未来转用自己的Alpha处理器之后,MIPS公司的处境更是雪上加霜。之后SGI成为了MIPS的最大客户,为了拯救MIPS而在1992年完成了对MIPS公司的收购,成为它的CPU设计小组,这是MIPS公司第一次易手,之后MIPS就进入了颠沛流离的模式。

  九十年代中期,Intel在P6的设计中采用了RISC的思路,CPU后端使用类RISC流水线的设计,在CISC指令集解码的阶段转换为RISC类的指令,并引入了乱序多发射技术,多管齐下使CPU性能与MIPS当时的旗舰R10000相比不再有明显的劣势。随着先进的微结构和物理设计、工艺实现带来的改进,指令集的劣势被逐渐掩盖,加上Intel在软件生态方面的优势,市场占有率逐年上涨。SGI在与Intel的竞争中业务下降,因营收减少而削减了MIPS新CPU的研发资金。1998年SGI面临现金流问题,于是决定裁掉CPU设计小组,将它恢复为独立的MIPS Technologies公司。壮士断腕的同时,SGI又作了一个更加错误的决定,就是宣布今后使用Intel的IA-64体系结构。

SGI使用MIPS处理器的服务器产品

  从MIPS被SGI抛弃以后,除了龙芯CPU之外,再也没有其它的高性能MIPS桌面/服务器CPU问世。

  2013年MIPS又被Imagination并购成为其子公司,当时仅花了6000万美元。同年,MIPS公司发布了MIPS R5版,次年又发布了与以往版本不兼容的MIPS R6版。

  2017年时一家中国公司Canyon Bridge收购了Imagination,但是美国政府反对MIPS被出售,因此MIPS被剥离后单独出售给了Tallwood,以6500万美元成交。这一次中资企业对MIPS收购失败,也令龙芯更加警惕。MIPS当时最有价值的是MIPS系列架构的所有权,至于MIPS手中的那些IP(芯片核心设计),性能已经落后于龙芯的自主设计,但只要这个线头可以牵制中国自主技术的发展,美国就会把它牢牢攥在手里。

  2018年MIPS又被Wave Computing收购,成为其独立经营的子公司。

  2019年3月底,为了扭转MIPS乏人问津的局面,MIPS开源了R6版,除了指令集,还有免费的IP和相关工具。可当时已经领导了MIPS桌面生态的龙芯却公开宣布不会跟进MIPS R6,给了MIPS最后一击,然后MIPS R6的开源计划仅持续了半年多点就草草取消。从时间推断,龙芯当时可能正在预备或已经开始LoongArch的设计,无论今后是继续发展LoongISA还是切换到LoongArch,削弱MIPS的影响力肯定符合龙芯自身的利益。

  2020年Wave Computing破产,然后重组后更名为MIPS,但以后将使用RISC-V架构,MIPS架构被它的所有权人彻底抛弃。

  其实,从SGI削减MIPS的研发投入开始,到后来被数次转卖,MIPS都一直缺少足够的研发投入,没有设计新的优秀CPU,也就没有机会诞生有价值的新专利,随着旧专利的过期,还剩下的也就一个MIPS系列架构的所有权,以及不多的仍在使用MIPS架构的客户而已。如果不是美国政府对MIPS的囚禁,MIPS架构本来应该有机会在中国获得新生。

二、抉择:龙芯也抛弃了MIPS架构

  龙芯CPU早已经是全世界性能最高的兼容MIPS指令集的通用CPU,当然这也有MIPS公司本身发展停滞的原因。仍在基于MIPS架构设计产品的客户已经罕有,而龙芯注册的CPU技术相关专利数量稳定增长,已经形成可以自我保护的知识产权围栏。龙芯基于MIPS扩展而来的LoongISA架构也有了大量的应用场景。龙芯软件生态也在逐渐完善,近10年来龙芯CPU在各种行业中的应用软件,绝大部分来自国内软件企业,以及龙芯自己移植和开发的基础环境,并不属于MIPS生态,龙芯同样是MIPS生态的割裂者之一。虽然发展良好,但在2019年的时候,龙芯仍然立项开始设计完全自主的新指令集,实现从指令系统到CPU设计都完全自主,也就是现在大家知道的LoongArch架构。龙芯设计LoongArch的原因,我推测主要有以下几点:

  1. MIPS R3/R5指令集已经跟不上时代的步伐,其最新的MIPS R6也是重新设计,不能兼容以往的应用程序。如果龙芯跟进MIPS R6,那么以往通过指令实验得到的成果可能就没有用武之地,龙芯注册的大量与指令和微架构相关的专利也可能难以用于MIPS R6指令集。既然自己有能力量身打造一套更加优秀的新指令集,那么就没有必要再去使用别人的设计,毕竟自己无法完全掌握MIPS的发展,完全自主的架构对于发展自主软件生态更有意义。
  2. 彻底解除MIPS在市场推广方面对龙芯的干扰。无论MIPS多么弱小,只要龙芯使用了它的指令集,总是或多或少地会受到牵制。由于没有MIPS架构的所有权,龙芯就不能把自己扩展的LoongISA架构授权给其它企业,甚至公开指令集手册也会涉嫌侵犯著作权,自主的LoongISA架构无法得到有效的推广,严重影响了龙芯的市场扩张。只有指令集也完全自主,才有开放和自由的权力,否则只要发展到了一定程度,如果别人无法嵌制,就可能通过种种手段恶心你。
  3. 中美关系有恶化趋势,美国对中国科技领域的打击逐渐加强。使用自主指令集,就消除了易受打击的隐患,因为美国的制裁只能针对使用美国技术的企业,或者通过其盟友施加影响,并没有任何理由限制完全自主的架构。即使遭受制裁,也不可能使龙芯陷入休克状态。龙芯CPU的架构和微架构均为自主设计,也可以增强合作企业的信心,对龙芯的发展有利无害。
  4. 加速自身和行业发展壮大,自主设计的LoongArch架构和相关IP可以向其它半导体企业广泛授权,共建自主生态。可以向高校广泛授权,培养设计人才。通过模块化的指令集设计,比MIPS更加适合嵌入式CPU使用,增强市场竞争能力。培养后备人才和加强嵌入式方向的推广合作,能够提高国内半导体行业的整体实力。IP免费授权可以使合作伙伴的研发成本显著降低,增强合作伙伴的产品竞争力,大家抱团也可以整体加强生存和对抗的能力。

三、新生:LoongArch的后发优势

  随着生产工艺进步,CPU中晶体管的单位成本降到极低,英特尔向x86架构中加入了大量的向量、加解密等专用指令,使应用性能数倍提高,证明了CISC并不像RISC的极端支持者所说的那样一无是处。而MIPS架构在发展过程中,也增加了各种功能的新指令,不再如诞生时那样精简,借鉴了CISC的思路。特别是2013年MIPS R5版中加入了SIMD指令,意味着CISC与RISC之争落下帷幕,两者殊途同归,熔为一炉。

  当前的主流指令集,无论ARM还是x86又或者MIPS,无一例外都是从几十条指令起步,逐渐扩充到了上千条指令的规模。因为计算机硬件和软件技术在迅速发展,计算机的应用范围也也快速扩大,CPU的指令集也就必须与时俱进。比如80年代电脑内存的常用单位是K,20年前的常用单位是M(1024K),10年前常用单位就变成了G(1024M)。在设计指令时无法预见到未来的变化,当时设计的部分指令就无法适应新的情况,就需要设计新的指令加入到指令集中。当人们开始使用计算机处理图像和声音信息时,就出现了“多媒体扩展指令”用于加速多媒体数据的处理,数据加密的应用流行后,指令集中又出现了加解密的专用指令。但林林总总的新指令被创造出来后,功能相似的旧指令也不能删除,因为需要保持软件兼容性。于是各种成熟指令集的历史包袱越来越沉重,为了能够摆脱历史包袱,Intel设计了不兼容x86的IA-64,MIPS设计了不兼容以前版本的MIPS R6,但都以失败告终。

  龙芯的LoongArch架构也遵循了RISC的基本设计思想,对CISC也没有成见,吸收了各种流行指令集设计思路的精华,与龙芯20年来对指令集的理解相结合,完全基于最前沿的CPU和操作系统技术及理论,重新规划了所有指令的功能构成,使LoongArch成为了当前最先进的指令集之一。龙芯总结了各种应用领域对CPU功能的需求,LoongArch架构的指令功能设计面面俱到,基础指令和各种扩展指令总计约2000条,整个指令集设计成熟度极高。因为是全新的设计,又一开始就设计得非常完善,所以未来很多年都不用担心出现历史包袱的问题,将会长时间地保持稳定状态。

  龙芯在多年的CPU设计实践中积累了大量的专利技术,专利数量在国内集成电路企业中名列前茅。并且,龙芯中科在指令系统和微结构设计方面的专利均属于保护龙芯核心技术且具备较高技术价值、市场价值和法律价值的专利。针对基于LoongArch打造的龙芯3A5000处理器,所布局的专利申请已达到几百项,已申请专利技术内容涉及指令系统、微结构设计、测试、验证等多个方面。在LoongArch指令系统的知识产权保护方面,除了针对指令系统相关技术进行专利布局外,龙芯中科还委托国内知名知识产权评估机构,将LoongArch与ALPHA、ARM、MIPS、POWER、RISC-V、X86等国际上主要指令系统有关资料和几万件专利进行深入对比分析,最终确认LoongArch基础架构对上述国际主要指令系统中国专利没有侵权风险。对LoongArch扩展指令以及国外的知识产权的评估还在进行中,应该也快要完成了。

龙芯的专利持续增加,至2020年底已通过700余项

  有些人认为CPU的指令集并不是指令越多越好,这种观点不能说是错误的,但却是不全面的。在不同的应用场景中,对指令集有不同的需求,对于桌面电脑和服务器来说,由于可能使用的软件类型复杂多样,需要CPU在各种应用中都有合理的性能表现,那么就必须存在大量的指令去满足各种需求。而在用途单一甚至不追求性能的场景中,可能成本和功耗才更加重要,这种时候CPU的指令越少,设计成本和生产成本也就也低。因此不同的领域对指令集有不同的要求,是不能一概而论的。

  为了满足各种应用环境的需要,LoongArch借鉴了RISC-V的模块化的设计方案,这种设计的优点是可以针对CPU的用途,对指令集进行剪裁。例如电子门锁、仪表等等嵌入式设备中,可以使用LoongArch精简版中最基础的50条指令就能构成完整的指令系统。指令数量少,CPU微结构中使用的晶体管就少,设计难度、研发成本、生产成本、产品功耗等都可以压制到极低的水平。与RISC-V不同的是,LoongArch的精简版是对完整指令集的剪裁,而RISC-V还需要继续添加各种扩展指令,才能成为成熟的指令集,目前的RISC-V还不能应用到复杂多变的桌面和服务器环境中。

LoongArch 的模块化设计

  IA-64和MIPS R6失败的主要原因是生态真空,MIPS是无力推动新的生态建设,而Intel则是因为无法承受破釜沉舟的代价,在x86如火如荼的时候,不可能全面转向到IA-64。LoongArch没有Intel的负担,也不像MIPS晚期那样孤立无助,全面转向LoongArch没有太大压力。何况龙芯还在LoongArch中设计了“二进制翻译指令扩展”,与操作系统结合可以完美地兼容运行以往的MIPS/LoongISA应用程序,完全避免了生态真空的窘境。

  更重要的一点是,龙芯的软件生态,除了操作系统等基础环境之外,各种常用软件实际上都来自于国内软件厂商。目前所知的情况是,很多软件正在进行或已经完成了向LoongArch架构的迁移,即使没有二进制翻译,当前的基于LoongArch的龙芯生态也和以前相差无几。最差的情况下,也可以把LoongArch的第一款桌面产品3A5000视为对3A4000的常规升级,转向新的指令集并没有影响到原本的软件生态规模,至少LoongArch架构和龙芯的生存不会出现任何问题。

四、基础:避免生态割裂的措施

  MIPS衰亡的主因,就是生态割裂。不同的CPU、不同的主板,操作系统和软件都可能不能通用,可能必须为每一款电脑单独做适配,每一家公司都在做自己的生态积累,无法形成合力。ARM也同样向其它公司授权架构和IP,但却没有出现应用软件兼容性的问题,是因为不允许其它公司修改和扩展它的指令集。只不过ARM也和MIPS一样没有定义统一的硬件规范,导致操作系统仍然必须针对不同的硬件进行适配,否则就不能正常使用。

  龙芯如果只是自己使用LoongArch指令集,那么肯定不会造成割裂,但能满足各种应用需求的庞大的软件生态需要群策群力,对于嵌入式CPU市场上与ARM和RISC-V的全面对抗,也超越了龙芯的能力。因此龙芯将联合产业链伙伴建立开放指令系统联盟,在联盟成员内免费共享LoongArch架构,并免费提供高性能的IP核。在开放的情况下,要如何避免生态割裂呢?龙芯总结了历史上的经验教训,计划并已经完成了多种举措:

  1. 保持指令集的统一。从龙芯LoongArch的相关资料上来看,龙芯没有设计类似MIPS的UDI那样的用户扩展部分。而是采用与ARM相似的方式,如果联盟的成员建议增加某些指令功能,那么就由大家协商是否加入下一版的指令集中。RISC-V的联盟早先与MIPS的ACE联盟相似,成员都希望自己的规范成为标准,而在Intel收购了SiFive之后,很可能出现一家独大的局面,其它成员丧失发言权。LoongArch联盟为了避免类似的情形,整个联盟的运作会接受有关部门的监管,保障联盟的决议和行动符合规范且有序进行。
  2. 制定硬件规范的标准。龙芯制定了自己的UEFI固件规范,凡是遵守规范设计的主板,就不会存在操作系统无法安装或启动的问题。龙芯LoongArch架构的中断模型已经得到ACPI支持,成为国际标准之一。ACPI支持的另外两种架构是x86和ARM64,LoongArch是第三种,而MIPS由于一直没有形成统一的规范,RISC-V也还不够成熟,ACPI的标准暂时与它们无关。今后凡是符合ACPI规范的硬件,在龙芯电脑上与电源管理相关的功能就可以正常使用,不需要操作系统单独添加支持。休眠唤醒、电池节能等都能有统一的控制方式,不必每种操作系统、每款主板都单独适配。
  3. 使用统一的Linux核心。龙芯已经为LoongArch架构向GNU组织注册了ELF machine,值为258,这意味着Linux主线和各种开源软件的上游都可以接受针对LoongArch的优化代码。而在以前,LoongISA因为缺少这个独立身份标识,如果提交的补丁与MIPS不兼容是会被拒绝的,只有龙芯和龙梦提供的Linux核心才有对LoongISA架构的优化,各种基础库以及编译器则只有龙芯官方提供的才有足够的优化。如果用户使用没有相关优化的软件,CPU的性能就无法发挥,无论软件使用体验还是性能测试成绩都和真实水平相差极大。今后不会再出现这种情况了,从上游开始就提供了对LoongArch的优化,龙芯不但可以自己维护基于LoongArch的Linux核心和基础环境,社区开发者也同样可以提交针对LoongArch的各种补丁程序,修改bug、优化性能。
  4. 不同用途的CPU使用不同的指令集版本。LoongArch是模块化设计,并分为三个版本,分别是LoongArch64、LoongArch32、LoongArcn32精简版。在追求超低功耗和成本的应用中,可以使用仅50条指令的精简版;对性能有一定要求的设备可以使用32位或64版,且可以只保留基础指令集,不需要实现向量、虚拟化、二进制翻译等扩展指令;桌面和服务器则使用完整的LoongArch64版本。看起来这样的设计与指令集统一背道而驰,实际上则不是这样,因为LoongArch64完全兼容LoongArch32及精简版的应用程序,LoongArch32也能完全兼容32位的精简版。也就是说桌面和服务器可以兼容其它设备的应用程序,而智能冰箱本身也不会有看电影跑虚拟机的需求,分层次的设计解决了成本和性能的冲突,又不会造成生态碎片化,是很聪明的折衷方案。

五、成长:完善生态和产品,加速向主流市场迈进

  龙芯使用的Linux核心和各种基础库一直是由龙芯自己维护,包括Java虚拟机、.net core、浏览器/JavaScript等支撑应用运行的基础环境,全都是由龙芯自己开发或移植。龙芯最初选择MIPS是因为它有基础的软件生态,但是没落的MIPS无力跟进软件技术的发展,迫使龙芯进化出了底层核心软件的开发和维护能力。因为掌握了能力,龙芯再把这些原本在LoongISA上进行的工作迁移到LoongArch也轻而易举,已经有上万个开源软件包完成了迁移。被龙芯称为“3+3”的三大编译器(GCC、LLVM、Golang)和三大虚拟机(Java、JS、.net)也完成了移植,正在持续进行性能优化。

  龙芯最初低估了国内软件厂商的热情,担心新推出的基于LoongArch的3A5000没有软件可用,就着力于提升翻译LoongISA软件的效率,如今看来似乎成了屠龙之技。因为基础环境和开源软件都完成了移植,成为了LoongArch的原生版本。而在行业应用方面,因为行业软件一般都是由国内的软件厂商开发,向LoongArch的移植工作也在有条不紊地进行,LoongArch的原生生态已经不输于原本的LoongISA,针对MIPS/LoongISA的二进制翻译能力提前结束了使命。

  对x86的Linux和Windows应用程序的二进制翻译,功能已经基本跑通,成功地在3A5000上运行了PhotoShop,这是一个里程碑似的成就。翻译运行的效率还需要持续地改进,目前只有30~70%,预计年底能够达到80%效率的预定目标。今后还会逐步增加对ARM和RISC-V应用程序的翻译运行功能,预计翻译效率达到90%左右。

  但是二进制翻译始终会存在性能损失,现有技术条件下也不可能完全解决兼容性问题,能带来最佳的用户体验的仍然是原生的应用软件。一种全新架构的推广和市场扩张,必然需要大量的应用软件支持,这能够为沉寂的桌面/服务器软件行业注入新的活力。CPU与软件相辅相成,两者彼此需要,一些全新开发的或用户较少的应用软件如果能在初期就在新的平台上站稳脚跟,随着新平台的用户规模扩大,甚至能使这些软件拥有挑战老牌同类软件的能力。比如WPS在国产系统中几乎成为了所有用户的首选,但在Windows系统中却仍然难以动摇Office的地位。国产CPU、国产操作系统、国产应用软件三者的紧密结合,能够推动国内整个IT行业共同进步。

UOS 龙芯版中的软件(部分)

  龙芯中科是一家CPU设计企业,建设软件生态是推广自主CPU的手段,设计出性能更高、自主程度更高的CPU及配套的硬件产品才是目的。

  CPU方面,龙芯产品实现了从嵌入式到桌面/服务器的全方位覆盖,还包括多种特种芯片。最新的桌面CPU型号是3A5000,使用境内的12nm工艺生产,集成4个核心,主频2.5GHz。依靠优秀的核心设计能力,其单核性能在国产CPU中达到了最高,整体性能大致有Intel/AMD当前的低压版4核CPU的水平。另外还有16核的3C5000及3C5000L服务器CPU,因成本原因暂不适合作为桌面CPU销售,估计实际性能与当前主流的8核i7接近。今年下半年还会完成64核的产品,性能可以对标Intel当前服务器CPU的中端型号。龙芯的CPU支持多路互联,整机可以达到256个核心,可以部分代替Intel的服务器产品。

3C5000L 四路服务器主板(央视画面截图)

  与CPU配套的芯片组产品,除了自主设计的7A1000之外,升级版本7A2000也即将完成。7A2000支持DDR4 3200,集成了GPU,对于办公主机和非游戏/设计用途可以省下显卡的成本。7A2000芯片组很有可能与3A5000 CPU同时发布,3A5000的整机成本也很可能低于上一代3A4000整机,进一步接近市场主流价位。仍然在设计中的3A6000系列CPU将成为龙芯正式进军主流市场的产品,龙芯还在试验中的独立显卡将来也会成为国产GPU产品的一员。

  除了国内,龙芯的产品也在跟随一带一路向国外推广,目前进展尚未公开,但肯定已经有了一定的销量。再过几天3A5000就会正式发布,这款产品的市场表现应该能超过上一代3A4000。除了信创市场和行业应用之外,也一定会有规模更大的普通市场试水,以及面向国外的出货量。

六、培养:龙芯LoongArch面向校园和社会的推广

  20年前中科院计算所打算研发CPU时,找不到有现代CPU设计经验的人。让胡伟武担纲Godson-1的设计任务,我猜可能是因为他在上大学时解锁了手搓CPU的成就,用分离元件焊出了一块与8086(Intel早期的16位CPU产品)等效的电路板。因为起步时人才匮乏、资料匮乏,龙芯就特别注重CPU设计人才的培养。20年来不但龙芯自身向国内各大半导体企业输送了大量的芯片设计人才,还特别注重与高校合作培养后备力量。

  龙芯编写了面向本科和研究生的《计算机体系结构》教材,并设计了多款用于CPU实验的教学及实验工具,积极推动高校计算机教学从“用”到“造”的转变。龙芯已连续举办多届以CPU设计为主的“龙芯杯”大赛,引导学生们学习和实践CPU设计。近日公开的由中科院牵头的基于RISC-V架构的“香山”开源CPU,其设计人员就有部分是“龙芯杯”历届获奖选手。在LoongArch推出后,龙芯为进一步加强对高校计算机体系结构教学和实验的支持,已经启动了“LoongArch高校开源计划”以及“百城千校”计划。“高校开源”侧重于CPU设计,“百城千校”主要是培养软件人才。

  RISC-V之所以在一些高校受到宠爱,主要是因为它的最小集指令数量很少,学生学习难度小、进行CPU设计实践的门槛较低,因而很大程度上替代了传统的MIPS和ARM。龙芯的LoongArch32精简版也有同样的特点,仅50条指令就能构成完整的指令系统,非常适合教学和实验。为了让学生对CPU设计有直观的了解,龙芯还提供了开源IP供学生学习和参考,并提供了CPU测试和验证工具包,学生可以方便地检验CPU设计的正确性,降低了找寻设计错误的难度和时间开销。

  为了改变中小学的计算机课成为Windows应用培训的现状,龙芯编写出版了面向中小学的信息课教材,邀请中小学校长参观龙芯总部,了解龙芯CPU在各行业中的应用。还面向中小学教师开展国产操作系统的使用培训,并推广龙芯的数字化教学系统。与厂商合作开发基于龙芯嵌入式CPU的智能机器人玩具,吸引孩子们从小关注国产CPU。

  面向软件企业的技术培训也一直在分期分批地进行,主动去全国各大城轮流开展基于国产计算机平台的软件开发和移植技术讲座,并解答各种技术问题,取得了很大的成效。现在龙芯平台来自国内软件厂商开发和移植的应用软件已能基本满足许多行业的应用需求,软件的数量和类型也在迅速扩充。

与龙芯相关的部分书籍

七、未来:彻底打破指令集藩篱

  现在流行的指令集不算多,但对软件开发人员和用户已经造成了很大的困扰。本来Java和.net的目标是为了解决软件跨架构的问题,但并不是所有平台都有足够完善的Java和.net虚拟机支持,并且软件虚拟机始终难以满足对效率有苛刻要求的应用程序,因此实际上大多数软件项目仍然离不开编译型的开发语言和工具。对于开发人员而言,当开发环境和运行环境不是相同的平台时,软件的测试和调试就会比较繁琐。每次修改代码后,编译完成还需要导出甚至安装,会严重降低开发效率。购置与运行环境相同架构的设备用于测试,也提高了跨平台应用开发的门槛和成本。甚至当交叉配置的环境无法成功配置的时候,还必须把运行环境配置成开发环境,在真机上进行开发和调试,又进一步增加了开发工作的复杂程度。

  龙芯有一个设想,就是在龙芯电脑上进行任何架构的应用软件的开发及调试,在龙芯电脑上也可以运行任何架构的应用软件。龙芯的二进制翻译技术令这个设想具有了成为现实的可能,虽然现在距离实现这个目标还有比较遥远的路程。我个人认为这个目标是完全可以实现的,只要龙芯电脑成为软件开发者的宠儿,龙芯的软件生态问题就会得到彻底的解决。我作为一名软件开发者,对此保持重度期待!

  如果能够实现在龙芯电脑上高效而简单地运行任何架构的应用程序,对于电脑用户来说,也不必再区分下载的是安卓的APK,还是Windows的EXE,Linux软件也不需要再区分CPU架构。那时用户对于架构的概念,又会像桌面电脑只有x86可选时那样变得模糊。现在有些产品已经有了这样的雏形,未来的计算机可能真会发展成这种形态。

  对未来可以无限畅想,现实情况是龙芯只要在常规市场上大量铺开,就必然出现与进口同类产品对抗的局面。对抗不是消灭对手,而是在保障自己生存的情况下与对手共存,为市场增加一个新的选项。龙芯消灭不了x86和ARM,国外企业也消灭不了龙芯,但是龙芯想要进一步发展,产品就必须走出信创市场。龙芯为推广自主CPU和自主架构脚踏实地步步为营,在研发投入不到主流CPU零头的情况下努力提升产品性能,在销量与主流产品相差甚远时尽力降低成本,这都是为必然出现的高烈度市场搏杀做出的准备。按照龙芯现在的发展势头,我相信再过一两年,龙芯的性能和成本就能与市场主流产品持平,然后成为部分个人用户的新选择。

转载请注明:《龙芯LoongArch架构的生存和对抗

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注