龙芯爱好者的日常!
返回

天行健,国产CPU当自强不息

2021-05-17 959 0

  CPU大致可分为嵌入式和通用型,通常意义上的“电脑”,如笔记本、台式机、服务器使用的都是设计难度更高的通用型CPU。当前国内设计通用CPU的企业不少,从技术路线上看,有购买IP(硅知识产权,例如完整的CPU设计)的,有购买架构(指令集)授权的,也有从指令集到芯片电路都自己设计的。购买IP显然是难度最低的方式,无论是技术难度还是市场推广的难度,都与完全自主的路线不可同日而语。既然有轻松的方式,为何龙芯和申威还非要选择完全自主的困难模式呢?因为信息技术产业要想不受钳制,国产CPU就必须实现自主,要实现自主就只能如龙芯和申威那样自强不息。

  • 核心技术买不到,只买IP与技术自主相悖

  有的人认为购买技术的路线更加国际化,而自主发展技术是闭门造车的落后体现。对于这个观点,首先需要说明的是:在龙芯起步的时候,除了教科书上的基础知识和公开论文上一鳞半爪的描述之外,中国是买不到高性能通用CPU的设计资料的。直到龙芯CPU在行业应用中展现出了发展壮大的潜力、申威CPU在超算上取得了瞩目成就,境外的CPU企业才开始向国内企业出售比同期的自主CPU性能略高的通用CPU的IP。IP可分为“软核”与“硬核”,以我的理解,大约就相当于电路原理图与实际电路版图的区别。软核就相当于电路原理图,是CPU的逻辑设计,还需要完成元器件的选型以及布局和布线,才能变成可以实际生产的电路版图,版图也就相当于硬核,就是物理设计,也称为后端设计。


软核和硬核对应的CPU设计阶段


  从历史上看,我们自主发展的高技术只要取得初步成果,都能直接或间接地促成与境外企业的技术合作,别人提供的产品资料虽然已经淘汰,但仍比自主技术先进,那么自主技术也就没有继续发展的必要。然后一旦自主技术失去生存的土壤,被排挤,被放弃,境外企业的技术合作也就告一段落,不会持续。如果自主技术没有死亡,仍在坚难地缓缓发展,那么倒是反而能促使那些与境外合作的产品得到不断的技术支援,直到使用自主技术的产品达到了对进口产品有威胁的水平,技术合作才会戛然而止。在这如同自然法则一般的运行规律中,龙芯和申威一直都是国内其它企业与境外CPU企业维持技术合作的幕后推手,可以说对依赖购买IP来设计产品的国内CPU企业功不可没。

  软核的设计水平决定了CPU的IPC,IPC可以看作1GHz的频率下Spec2006/2017的测试成绩。软核的晶体管规模决定了CPU制程的下限,越陈旧的制程能够在单芯片上承载的晶体管数量越少,也就是说受限于热量、功耗、成品率等原因,晶体管越多的设计就越需要先进的生产工艺。从软核到硬核的过程称为物理设计,这也是CPU设计流程中非常重要的环节,物理设计的水平决定了能否达到设计时预计的功耗和主频等指标。根据授权许可的不同,软核可能允许购买者修改,只是技术水平如果低于原设计者,往往只能加加缓存堆堆核心,最核心的设计根本改不了。而硬核由于布局布线都已经完成,也不提供原始设计文档,也就无法自行修改设计。CPU无论逻辑设计还是物理设计都可以委托给其它公司,但在当前国际形势下,委托设计难以保障安全。比如飞腾被美国加入制裁名单后,台湾世芯就立即中止了给飞腾提供设计服务,尽管2020年飞腾为其贡献了39%的营收,中止给飞腾的设计服务后2021预计会损失25%的收益,世芯也在所不惜。世芯2020全年营收70.79亿台币,39%就是约6.4亿人民币。申威与飞腾同一时间被加入制裁名单,但因为申威对CPU所有的设计流程都不假手于人,坚持自力更生,且和龙芯一样紧守境内CPU生产工艺的上限,因此即使被制裁,也没有太大的风险。


台湾世芯宣讲与飞腾的合作情况


  请其它公司代为设计肯定没法提高自己的设计水平,那么购买现成的设计,能否增强自己的设计能力呢?如果购买软核是以推出产品为目的,恐怕根本不会有学习和理解的动力,就像用开源库做软件的同仁们,谁有时间和精力去通读开源库的代码,还要细细揣摩每行代码的作用呢?如果购买的是硬核,那就相当于软件开发中使用闭源的二进制库文件,自己从头开发一遍都要比反编译所有代码更加轻松,根本不可能作为学习的材料。如果从来没有从0开始设计过产品级CPU,从最基础的问题入门,以当今CPU的复杂程度,集成几十亿到几百亿的晶体管,我难以相信有人通过阅读电路图就能掌握CPU的设计能力。龙芯和申威都是从0开始设计CPU的,其中龙芯更像一家CPU技术培训学校,最初项目组的十来个人在实践中掌握了一定水平的CPU设计能力,然后就可以指导新进的员工的学习,进行技术和经验的传承扩散,老师再与学生共同研究探讨迭代成长,培养更多的人才把技术散播四方。比如创建了“寒武纪”的陈云霁就是胡伟武的学生之一,25岁就担纲8核龙芯3号(3B1500)主架构师,之后把AI芯片作为主要的研究方向。只有自己成功解决了各种问题,设计过程中产生的奇思妙想能在产品中应用,才能形成正向的反馈,不断提高设计的能力。

  连古人都知道,纸上得来终觉浅,绝知此事要躬行,可现在仍有一些团体为了各种目的而自欺欺人。使用x86指令集的国产通用CPU都是购买的IP,海光从AMD购买了Zen微架构的设计,兆芯的CPU核心来自VIA旗下的美国公司Centaur。虽然兆芯在宣传中总是说它的CPU是本土团队设计,但《2020网信自主创新调研报告》、《中国信创产业发展白皮书(2021)》等权威的专业报告显然并不认可这些宣传。基于ARM指令集的CPU情况要好一些,虽然手机CPU无一例外都是购买的IP做集成,但桌面和服务器的CPU则不是这样。ARM架构授权费用高昂,在购买指令集授权时还会附带参考的IP,但我不确定国内的ARM桌面和服务器CPU是否是在参考IP上进行的修改,虽然有华为工程师自曝鲲鹏920是基于A72改进,也有人说飞腾的CPU是修改的A53/A57的核心,但并没有权威的证明。不过即使真是修改而来,只要能在修改的过程中掌握设计能力,实现自主迭代,那对于国内的CPU技术和人才积累也能有所裨益。


《中国信创产业发展白皮书(2021)》中对国产CPU的分类


  技术需要积累,专利也需要积累。在国外先行者把各种有用没用的专利都申请了一个遍的情况下,探索出实现某种功能的新方法就更不容易。那么通过收购专利所有权的方式可以形成专利围栏、增强竞争能力吗?CPU设计是技术门槛极高的行业,只有对CPU技术有深入研究的企业才可能产生有价值的专利技术,也就是说拥有高价值专利的企业本身就有较强的竞争力。即便忽略以美国为首的国家对我国实施高技术禁运的问题,在整个行业中也只存在强势企业收购弱势企业的专利来完善自身专利池的情况,而不可能把核心专利的所有权出售给弱势企业,削弱自己来增强潜在对手的实力。CPU行业中技术水平较低的企业往往需要购买IP,那么拥有较强设计能力的CPU企业面对金主客户购买专利的请求时,也就只会抛出无用的边角料,而不可能卖掉会下金蛋的鸡。例如兆芯热衷于用国家拨款向VIA和Centaur购买专利等各种知识产权,既然美国不阻止,也就说明其没有太大价值。与兆芯相比,中资想要购买濒临倒闭的MIPS,美国却执意把MIPS指令集和相关专利剥离,宁可烂在手里。龙芯购买MIPS指令集使用权后又等了十年,却直到拥有MIPS所有权的公司破产也没能满足心愿。因此通过购买专利所有权来完成专利布局是不可能的,只有自己潜心研究,通过深入的设计实践才能诞生出大量真正有价值的专利,以此增强自我保护和与国际巨头对抗的能力。申威由于CPU用途的原因,专利注册较少,龙芯的主要市场是桌面、工业计算机和服务器,注册专利的避讳更少,已经拥有七百余项国内外高质量专利,以及一百余项软件著作权登记。专利的意义在于技术创新,有些企业把无用的发明通过更改描述信息的方式反复注册来提高专利数量,根本没有任何实质的意义。

  国产CPU的设计能力与Intel/AMD这样的顶级水平还有不小的差距,境内的芯片生产技术方面落后的也不只是光刻机。“弯道超车”本身就是悖论,在同一条道路上行驶,无论直道还是弯道,超车要么得别人开得更慢,要么得自己技术高车也好。“技高车好”的条件我们目前还达不到,虽然说起来很丢脸,但自主CPU的性能逐渐接近进口产品的主要原因,确实是因为硅基CPU的复杂度和集成度越来越接近物理极限,前进的道路越来越陡峭,无法再像“摩尔定律”描述的那样每18个月就性能翻倍了。特别是最近几年,主流CPU的单核性能提升缓慢,发展方向更倾向于堆砌更多的核心提高整体性能。而我国自主CPU则可以学习消化现代CPU的设计思想,以更高的速度进步,缩小性能方面的绝对差距。从CPU核心设计能力来看,国内与Intel/AMD最接近的是龙芯,但是受限于生产工艺(包含通过反复流片修改与工产工艺达到较高的契合度),性能仍然难以与进口产品持平。


CPU最高单核性能随年份变化的图表


  即使别人进步速度变慢,我们如果驻足不前,差距也仍然会越来越远,何况越往后越难走,我们必须坚持追赶才能尽量齐头并进,只有充分地准备,才能在时机成熟时完成超越的目标。如果没有自主设计CPU的能力,也没有形成自己的专利布局,当由于国际形势变化或者企业自身的原因,而不能购买性能更高的IP时,那么就会失去更新和迭代产品的能力。只有像龙芯和申威这样坚持自主创新,用最头铁的方式在国内外同行的堵截中仍然坚持自主,才能保证技术及经验的积累和传承,保障国产CPU能够持续发展。

  • 基于强势的国外指令集设计CPU,难以与进口产品竞争

  CPU必须与配套的硬件和软件结合才能体现出价值,x86指令集能够在桌面平台屹立不倒,是因为它拥有最丰富的桌面软件。当用户需要的软件只有x86版本时,选择基于x86指令集的CPU就是必然。即使软件有多种指令集版本,但由于优化程度的不同,在同等性能不同指令集的CPU上也会有不同使用体验。ARM指令集在移动平台风生水起,也是因为它在移动平台上积累了丰富的应用软件。扎根于CPU指令集的软件生态,使CPU指令集产生了“不可替代”的属性,由于ARM与x86指令集互不兼容,它们进军对方的领域时,都由于软件匮乏而进展缓慢。当指令集在某个领域的软件生态发展到非常完善的程度,使其它指令集进入相同市场难以生存时,这就是一种强势的指令集。

  无论是x86还是ARM,指令集的掌控者都不允许指令集出现互不兼容的分支版本,这样所有基于x86和ARM设计CPU的企业才能形成合力共同推动生态发展,各种CPU只有性能差异而没有生态差异,才能相互代替。下游企业和用户更换CPU和配套硬件时不会增加软件成本,在某家CPU企业出现变故时,也能切换到其它供应商,不会威胁到核心硬件的供应链安全。国产x86指令集CPU依附于现有生态的思路,也是基于可以直接替换的“优点”,然而国产CPU按照这样的路线是饮鸠止渴,是用短期的投机断送未来的发展。

  在Intel的限制条款下,x86指令集授权不能扩散,不能转移。美国商务部的文件上写的是Intel把对VIA的x86指令集和相关专利授权延期至2018年,也不知道兆芯怎么就洗成了可以无限期使用,只是限制为截至2018年的版本。海光购买了AMD淘汰的IP,但只能基于IP做集成,而没有修改的权力,IP的修改权属于AMD控股的合资公司。兆芯与之类似,只有在与VIA合资的条件下才能使用VIA获得授权的指令集和专利,即使兆芯能够不依赖Centaur而自己设计CPU,指令集的状态也已经被封印,这还决定于VIA的合作意愿。也就是说国产x86的CPU本身并不能自主发展,即使这种合作关系永远不被打破,国产CPU也不可能对x86指令集发展有发言权。Intel甚至不需要把国产的x86 CPU当作对手,只需要正常地升级指令集,时不时地增加几条新指令,无论是Windows还是Linux内核都肯定会跟进。然而国内CPU企业如果未经授权就跟随Intel升级,就会失去合法性。国产x86 CPU的性能本就与Intel/AMD相去甚远,而在若干年后由于指令集陈旧,不但性能差距会更大,兼容性的问题也会更加凸显,如果不能兼容Windows和Linux的最新版本,依附于x86生态来发展CPU就根本不可能。到时候使用国产x86 CPU的用户何去何从?是放弃对CPU性能的追求,并坚持软件系统永不升级,还是更换成Intel/AMD的CPU呢?


左:Centaur设计的CPU; 右:兆芯的CPU


  有人说可以像苹果那样,基于x86指令集发展自主生态,以此来应对x86指令集升级的问题。甚至像AMD那样,在计算机从32位过渡到64位的关键时间点,设计出兼容32位x86指令集的AMD64,来获得与Intel对等的权力。但我觉得这实在是异想天开,苹果是卖的整机产品,它依靠的是与众不同的操作系统和大量爱好者,只要它的笔记本和台式机能够满足1%的电脑用户,就是成功的商品。而我们需要做到的是保障全行业的信息、技术、生产、经营的安全,在软件需求方面不是一个数量级,少数人的“奢侈品”和全行业的“大路货”永远是对立的关系,即使能完全复制苹果的成功,也完成不了保障产业安全的目标。至于像AMD那样获得与Intel对等的地位,前置条件是有足够的市场占有率,有足够的市场号召力,以及微软等大量世界级软件企业的支持,然后还需要拥有绝对优势的新指令集设计,新设计的指令集还必须完全兼容以前的软件生态,我觉得这比苹果模式更加困难一些。否则的话,软件企业的产品既然可以兼容所有的x86指令集CPU,那就不可能违背市场规律,为了支持国产CPU而只与国产CPU捆绑,故意禁止自己的产品在Intel/AMD的CPU上运行。即使少数的国产软件有这样的决心,对于整个软件生态来说也是杯水车薪,用户仍然会选择Intel/AMD的产品。因此在国产CPU还不够强大的时候必须要制造壁垒,使国产CPU与进口CPU产生一定程度的生态隔离,甚至是像AMD64那样单向的兼容,才能保障自己生存的权力。

  如果说使用x86指令集的国产CPU在一段时间内依赖生态优势,在低端桌面市场还能有所表现,那么使用ARM指令集的国产CPU在桌面和服务器平台上则需要面对出生入死的困境。ARM软件生态只在移动平台有强势地位,而在服务器和桌面以及行业应用等等生产力环境中几乎是一块白板。国产ARM指令集CPU必须为ARM开疆拓土,补全ARM在生产力环境中的生态缺失,才能使CPU产品得到应用和推广。当国内企业为ARM建设的软件生态初具成效时,美国一纸禁令就可以让这些使用新工艺的CPU无法生产。国内企业建设ARM生态的成果就只会被进口的ARM产品窃取,国产CPU企业享受到的实利远远低于投入时的预期。

  国内使用ARM指令集的CPU企业当然也可以像龙芯和申威那样,比照国内芯片生产工艺的上限完全自主设计CPU,也不需要参考ARM提供的IP,但这样也就会在性能上失去竞争力。龙芯只是在CPU的通用计算性能方面的技术积累和设计经验比申威更加丰富,同时期同制程的CPU产品的通用计算性能就比申威高出许多,申威专用于超算的CPU浮点性能超群绝伦,但并不适用于桌面和服务器。其它企业如果使用相同的陈旧工艺并自主设计,那就会桌面和超算两不讨好,即使不与进口产品竞争,只与龙芯和申威相比,性能也难以具有竞争力。更何况ARMv9已经发布,国产的ARM CPU比x86 CPU更早面对了指令集升级的问题。如果不跟随ARM的脚步,那么必然会被主流生态淘汰,跟随的话若干年后又要再面对一次升级。购买新版指令集的价格相对于CPU的整体研发成本还可接受,关键是ARM在生产力环境中的软件生态本就匮乏,国产ARM CPU企业为了丰富桌面和服务器及行业应用中的软件生态,甚至还需要从生态本就羸弱但多年深耕行业应用的龙芯平台移植软件,花费自己的资金和人力帮助ARM指令集完善生态扩张市场,劳心劳力却得不到ARM另眼相看。



  受到工艺制程、设计能力、指令集版本、IP购买渠道等因素制约,国产的x86/ARM CPU极易完全被截断发展,丧失市场。这些强势指令集的掌控者却不会因此产生任何损失,反而可以获得更大的利益。因为基于x86/ARM的国产CPU所开拓的市场,本质上成为了这些指令集生态的市场,所以进口CPU可以完全兼容,甚至是单向兼容,随时可以代替国产的CPU产品。感觉用卸磨杀驴和兔死狗烹都不足以形容这种状况,本想说“包衣奴才”但又觉不够尊重,或许“为虎作伥”稍能贴切几分?

  • 国产CPU可以把弱势指令集发展成强势指令集

  如MIPS这样曾经与x86正面战斗过的指令集,由于经营策略的问题而导致生态分散,最终被x86从桌面和服务器驱离。Power/Alpha/SPARC等等指令集的桌面生态几近于无,RISC-V也仅在不依赖生态统一的嵌入式物联网有一些应用场景,申威的SW64和龙芯的LoongArch出生较晚,原生生态也显得相对稚嫩,这些都是弱势的指令集。

  龙芯起步选择了兼容MIPS,主要因为MIPS有较为完善的基础生态,对指令集的态度也相对开放,允许设计者自行扩展指令集。当时MIPS在服务器和通信设备中有大量应用,龙芯可以从这些方面切入市场,允许自行扩展指令集虽然致使生态支离破碎,但从另一方面来说在龙芯弱小的时候也可以据此保护自己。自己设计一套指令集当然更有利于自我保护,凡是自己攻下的市场,发展的生态,其它CPU的软件就难以兼容,无法轻易替代。设计指令集没有难度,难点是推广和应用——龙芯课题组当时的一帮新嫩确实是这么想的,和许许多多对CPU设计一知半解的爱好者想法一样。只是短短几年之后,龙芯的胡伟武就对MIPS指令集的一些精妙之处击节赞叹,打了自己的脸。就像外行说把四个轮子和发动机装在架子上就是一辆车,这么说也没错,找根皮带把发动机和车轴连上肯定能跑得起来,但如果真这么简单的话,国产汽车发展几十年了为何仍在中低端游荡?作为一名国产CPU爱好者,我必须庆幸龙芯在有了近二十年的CPU设计经验,以及对指令集的深入思考和大量实验之后,才开始设计全新的LoongArch指令集。申威的SW64目前仅539条指令就已经出现了“可用操作码数量日益紧张”的问题,应该就是因为当初设计时缺少经验,目前正在尝试进行改进,但却无法解决基础结构的缺陷。而LoongArch已有了两千余条指令还仍然预留了大量的指令槽,并且相同的源码编译为LoongArch和MIPS进行对比测试,仅指令集本身就能带来百分之十以上的效率提升。


相同的源码,优秀的指令集目标代码更少


  龙芯之前基于MIPS指令集自主扩展了上千条新指令,构成了自主的LoongISA指令集,以LoongISA为基础深耕行业应用和党政办公,取得了很大的成效。龙芯CPU在事实上主导了MIPS指令集的桌面生态,特别是在行业应用中形成了局部市场优势,如果不是MIPS对中资宁死不卖,说不定龙芯仍然会继续在MIPS上打补丁。MIPS确实影响了龙芯的进一步发展,除了指令集陈旧,扩展指令槽用光等原因之外,我认为最重要的影响是龙芯不能把LoongISA向其它的半导体企业授权。龙芯面对的问题与国产的x86和ARM截然相反,龙芯是缺少可以替代自己的产品。如果基于LoongISA指令集的CPU只有龙芯一家,那么供应链可能会不安全,其它半导体企业也没有动力与龙芯共同推进生态发展。当年IBM为了保障CPU的供应,就要求Intel把x86指令集和CPU设计授权给了很多公司,IBM的初衷是防止因意外情况导致CPU断货,结果是所有设计和生产x86 CPU的公司为了多卖产品,而全力为x86指令集开拓市场,创造应用,成就了Intel的辉煌。龙芯要想进一步发展,也必须联合众多半导体企业的力量,相互竞争,百花齐放,共同推动软件和硬件生态的整体发展。

  龙芯的新指令集LoongArch大概在两年前立项,也就是2019年。2019年3月28日MIPS开源了全新设计的R6版,然后2019年11月14日又宣布取消开源,满打满算只开源了大半年,我怀疑MIPS是不是听到了什么风声,才这么惊慌失措。那么龙芯又为什么要坚持自主设计指令集,而不采用当时处于开源状态的MIPS R6,或者换成一直处于开源状态的RISC-V呢?从事后诸葛的角度分析,MIPS开源R6版本其实不怀好意,因为R6与以前的版本不兼容,软件生态基本为0,所以龙芯早就表明不会跟进。RISC-V也同样没有桌面生态,龙芯无论采用MIPS R6还是RISC-V都等同于放弃了十多年来的生态建设成果,在LoongISA中添加的上千条指令要转移到新指令集中也需要重新设计。既然必须重新设计指令集,那么何必还要以别人的指令集为基础呢?完全自主设计才拥有最高的自主权,不但可以综合各种主流指令集的优点,也便于以二进制翻译方式兼容以往的生态建设成果,对指令集的研究成果也可以更加完美地展现在新指令集中。更何况开源的MIPS R6和RISC-V本身几乎没有生态,何必非要在这样的开源项目中去追求虚无缥缈的主导地位?与其为受美国影响的指令集建设软件生态,还不如一开始就以自己为主导,以开放的态度吸引各方力量加入,才能避免美国霸权的干扰。使用自主的指令集也不需要担心别人的开源项目发生什么变故,像开源又闭源这样事情可以当成笑话来听。



  龙芯自主设计的LoongArch指令集最主要的特点是充分考虑了以二进制翻译方式兼容其它主流指令集的二进制程序,在操作系统的配合下,完整实现了LoongArch指令集的CPU可以直接运行x86/ARM的应用软件。也就是说即使在最极端的情况下,假如美国禁止了所有的CPU出口,龙芯的CPU也仍然能够保障各个行业的生产安全。虽然这种假设成立的可能性不高,但如果真出现这样的极端情况,用国产x86和ARM指令集的CPU来实现替换就只是空谈。因为在此之前,美国多半已经在“法律”的规则下收回了所有授权,那么同样在“法律”的规则下我们也不能无视知识产权。不怕流氓耍大刀,就怕流氓讲道理,指令集以及相关的其它知识产权是人家的,人家要收回去怎么都有道理。就像Intel当年挟着它推动的《半导体芯片保护法》收回了给日本企业的x86授权一样,官司都没法打,只能眼睁睁地看着日本企业为x86优化CPU设计和建设软硬件生态的成果被Intel无情收割。

  龙芯的LoongArch指令集正在进行严苛的知识产权分析,国内部分的知识产权调查已经完成,没有发现侵权的部分。国外部分的仍在进行但估计也不会出现问题。毕竟龙芯在指令集方面已经进行了十多年的研究,不但对规避各种专利有丰富的经验,自已的技术创新也注册了七百余项专利,只是仍然必须完成知识产权分析的流程,以避免意外造成的知识产权风险。目前LoongArch基础架构和LoongArch32精简版本的手册已经公开,在龙芯的官方网站可以随意下载,后续还会继续公开其余的部分。条件成熟时还会组建LoongArch技术联盟,把LoongArch免费开放,任何企业都可以设计基于LoongArch指令集的CPU。如果企业不愿意自己设计,龙芯还会免费开放部分CPU的IP,企业可以直接使用。这样就可以完全避免龙芯CPU没有可替换产品的问题,也可以合力建设基于LoongArch的软件和硬件生态。龙芯推出了LoongArch32的简化版本,只有约50条指令,简化版本与RISC-V相当,同样具有低门槛易实现的特点,主要是在高校推广用于教学和科研实验。


龙芯LoongArch指令集的未来计划


  LoongArch技术联盟的特点是共商、共建、共享,充分统筹兼容和开放。这与Intel当年被迫扩散指令集和IP授权不同,也与ARM以盈利为目的出售指令集和IP授权不同,更与RISC-V混乱纷争的联盟不同,它是站在全局的高度从整体上推进国产CPU的进步,促进国产CPU生态的发展,并以“不要脸”的方式强行吞并x86和ARM的软件生态,而Intel/AMD/ARM又无法控制和干扰基于LoongArch的国产CPU进步和生态发展。如果LoongArch在一定范围内成为了像x86那样的强势指令集,龙芯是否会成为新的“恶龙”呢?Intel在发展壮大后就开始卸磨杀驴,把放出去的授权又一个一个收了回去,怎么保证龙芯不会学习这样的行为?这种担心是不必要的,因为LoongArch技术联盟就是龙芯为自己带上的枷锁。有一个很重要的设想,就是“联盟成员之间不发生指令集诉讼”,这个表述有点粗糙,肯定还需要与业界企业和上级主管部门研讨细则,但足以说明龙芯放弃了收回授权的权力,也放弃了像ARM那样通过升级指令集的方式,逼迫其它企业花钱购买新版指令集授权的权力。龙芯与其它企业是共生互助的关系,指令集的改版升级都会与联盟成员协商,并接受相关部门的监督,既能避免MIPS和RISC-V那样的乱局,也不会成为x86和ARM那样的一言堂。

  申威也正在筹划开放自主设计的SW64指令集,现在还在联合相关单位共同研究开放的方法和方式。只是申威相关的信息确实难以收集整理,我无法了解它当前的进展,可能还需要像龙芯这样完成知识产权分析,并且协调好先进技术研究院和申泰公司两个实体的权责关系之后,才能开放SW64指令集吧。申威因为之前没有重视桌面和服务器方向的发展,软件生态方面进展小一些,但申威的技术能力不可忽视,它和龙芯是我唯二可以确定的国内完全自主设计通用CPU的企业。除了通用CPU,在嵌入式CPU领域坚持自主设计的君正等等也是国产CPU的中坚力量。这些CPU企业都当得起自强不息的评价,龙芯和申威开放指令集,发展自主生态,促进整个信息技术产业的安全和进步,更是贯穿了我国企业厚德载物的文化思想。


申威SW64指令集的未来计划


  • 自主生态建设正在加速,基础软件逐渐完善

  在我国迅速崛起的时候,我国信息技术产业的安全也在经受着考验,许多高校、科研院所、超算中心、半导体企业等等都在被美国制裁的行列,许多基础软件被禁止使用,严重影响科技发展。即使各行各业使用的非科研类软件,只要联网也都可以被随时停止服务。按照常规的理解,停止服务只是意味着软件不再改进和更新,已经购买的和本身免费的都可以继续使用,然而美国企业显然不这样认为。比如为了推广HTML5,而强行停止了Flash插件的运行,毫不在意大量构筑在Web上且使用了Flash的业务系统能不能继续运行,它们也肯定不会承担这些庞大的业务系统修改和重构需要的开发成本及时间成本,对经营造成的损失也只能各家企业和机构自己承担。甚至连Windows系统都可以强制升级和停止运行,谁能保证某日不会因为某个“事故”导致国内的电脑大面积瘫痪?早些年微软对盗版的纵容,以及我国相关部门为了计算机应用普及也对盗版睁只眼闭只眼,使许多电脑用户养成了“白嫖”的习惯,造成的后果是国内软件行业畸形发展。基础软件因为开发成本高、难度大、用户少,在全民盗版的环境下没法赚钱而难以发展,而各类与生产力无关的软件却伴随着弹窗广告空前繁荣。目前这些情况也到了需要纠正的时候,需要一个新的利润点引导软件企业们调整开发重心,补齐各行各业基础软件的短板,使信息技术产业更加健康地发展。

  因此我国有足够的理由和决心发展自主软件生态,推广国产操作系统和应用软件,并以国产CPU等国产硬件来承载自主生态,为所有与国计民生相关的行业,保障信息、技术、生产、经营的安全。建设自主软件生态的第一阶段是用开源软件和国产软件满足各行业的基本需求,同时完成部分国产外部设备的驱动程序向国产操作系统和CPU移植。随着生态完善和用户群体的扩大必然进入第二个阶段,从行政导向过渡到市场导向,继续以国产软硬件为主导,吸引全世界的软件开发商主动进行软件适配和迁移,完善自主生态建设,形成良性循环。成长为与当前主流生态共存的另一个主流生态,国产的硬件和软件才能有与国外同类正面竞争的资本。

  目前各种国产操作系统都是基于Linux进行二次开发,和Android基于Linux、iOS基于BSD没有什么不同。开源软件与开源指令集不同,指令集需要由CPU来承载,指令集一旦变化就必须重新设计CPU,产品用户也需要更换硬件,成本难以承受。指令集开源但相关的专利可能需单独授权,又从另一方面制造了知识产权绑架。而开源软件本身就可以直接使用,更新也只限于软件,相比硬件更新成本可以忽略,且只要遵守开源协议就不会有知识产权风险。龙芯和申威使用的编译器也是基于开源项目修改,使开源编译器支持自主的指令集。除了GCC、LLVM、Golang等编译器的支持,为了完善各类应用的基础运行环境,龙芯还自主开发了基于LoongISA的Java虚拟机,并移植到了最新的LoongArch指令集上继续优化兼容性和性能。还移植和完善了Qt、VScode、Electron、NodeJS、Eclipse等开发工具,以及.net core、JavaScript解释器、浏览器、虚幻4等运行环境。如ffmpeg、x264、openH264、mplayer、zlib、GIMP等等开源库和软件的移植和优化更是不胜枚举,目前向LoongArch完成移植的软件包已经超过20000个,基础的开源生态环境已经形成。

  龙芯的LoongArch已经向GNU组织申请到ELF Machine编号(258号),有了自己的“户口”,不再像以前的LoongISA那样使用MIPS的ELF Machine编号。这样今后的Linux内核就有了正式的LoongArch分支,各种开源软件的上游也可以接受针对LoongArch的补丁和优化代码。而在以前,开源项目的MIPS分支往往不接受使用了龙芯扩展指令的代码,GCC等编译器也没有正式的龙芯分支,致使各种龙芯软件的性能优化难以达到最佳。龙芯LoongArch的ACPI中断模型也写入了ACPI国际标准,成为继x86、ARM64之后第三种ACPI规范支持的CPU架构。ACPI是高级配置与电源接口(Advanced Configuration and Power Interface),普通用户接触最多的是电脑休眠唤醒这样的操作,实际上它包含了计算机电源管理的各个方面,例如低负载时降低CPU频率、单独调整某些功能部件的供电、笔记本电池管理等等。ACPI规范将从6.5版开始支持龙芯中断模型,今后支持ACPI规范的UEFI固件、Linux内核、各种硬件都可以与龙芯CPU更加完美地配合,这也是自主生态建设的重大成果。

  开源软件只能提供最基础的软件生态环境,各行各业的专用软件就需要国产软件开发商填补空缺。这是一个极大的市场,为软件行业注入了新的活力,不用再只盯着短视频应用和游戏,所有公司都去竞争相同利润点对整个行业是不健康的。常用的软件如WPS、中望CAD、永中Office、福昕ODF、360全系列、各种电子签章软件、QQ微信等已经完成了向国产操作系统和国产CPU的移植,国产的数据库、中间件等等行业应用中的基础软件,以及大量的打印机、扫描仪、制卡机、高拍仪等外部设备也完成了与国产操作系统和国产CPU的适配。许多软件都支持龙芯和申威的CPU,也有x86和ARM的版本。仅在UOS的官网上查询登记完成的适配列表,光是与龙芯CPU完成适配的应用软件和硬件驱动,就达到了6500个。龙芯还利用二进制翻译技术,实现了在龙芯的系统上正常使用只有Windows驱动程序的打印机。这些都还只是初步的生态建设成果,随着用户规模的快速扩大,进行移植适配以及在国产平台上从头开发的应用软件必然会更多。

  申威的桌面生态起步较晚,但随着国产操作系统和国产电脑设备的推广,也在快速发展。目前申威CPU也已经能够满足基本的办公应用,其嵌入式CPU的应用也在稳步推进。申威和龙芯都完成了CPU虚拟化的硬件和软件功能,未来可以凭借多核CPU向云服务器发展。基于申威和龙芯的云平台都已经有了一定范围的应用,随着CPU单核性能的继续提升,以及众核CPU的快速迭代,它们都会有更加广阔的应用场景。


申威CPU的软件生态正在完善


  由于欧美国家的先发优势,如Matlab、Mathematica、3DMAX、MAYA、PhotoShop、AfterEffects、AutoCAD、SolidWorks……这些复杂而又专业的软件早已占领了市场,在x86和Windows的生态中,国产的同类软件市场份额不足,利润对开发的回馈不足,发展非常缓慢。但在国产平台上却有机会形成新的竞争格局,我相信软件行业的从业者都能够看到这一点,只要科研单位及高校与软件企业合作,开发出功能与这些软件近似的产品并不困难。非常期待国内的软件企业不要再沉迷于制造网红脸,用这些图像处理的技术,开发类似PhotoShop这样的生产力工具才是更有意义的事情。娱乐性质的软件只能保持几个月的新鲜,对生产力工具相同的投入却能带来数十年的利润。比如国产EDA软件现在就被推上了风口浪尖,之前的低迷时的坚持得到了回报,近两年市场的变化使华大九天等EDA软件开发企业迅猛发展。Matlab也被美国用于展示霸权,越是基础的重要工具越能被用于打压我国科技进步,随着国家对此越来越重视,国内软件行业一定能向着更加健康的方向蓬勃发展。在自主生态成长过程中,所有的参与企业都能机会发掘潜力,展现价值,在某个行业、某个领域与进口同类产品对抗,成为新的领头羊。

  • 结语

  发展必然产生竞争,当不存在共同利益时不可能双赢。国产CPU与进口同类产品争夺的是同一个市场,国产CPU要么臣服,要么抗争,没有第三条共存的途径。我国有无比丰富的历史故事,人们对《三十六计》和《孙子兵法》耳熟能详,各家企业高管不可能看不透国外企业针对我国自主技术发展的伎俩,为了小集体的短期利益而引狼入室,只会沦为外来势力的爪牙和附庸,葬送自家企业自主发展的能力,断绝未来争雄世界的希望。发展自主技术不是闭门造车,而是追求自己为主的开放,任何个人和组织都可以加入我国的自主软硬件生态建设,就像加入x86/ARM的软硬件生态建设一样。没有任何人说坚持自主设计CPU的Intel/AMD是闭门造车,却总有那么一些人对内和对外的态度截然两样。国产CPU只有自强不息,积累技术培养人才,广泛传播技术成果,提升国内整体的半导体设计水平,再与软件生态建设相辅相成,才能使信息技术产业摆脱国外产品的挟制,帮助国家崛起、富强。

  天行健,君子以自强不息;地势坤,君子以厚德载物。我们的文化传承一向主张坚韧不屈、自立自强。只有坚持自我,才能包容万物,龙芯和申威坚持自主设计CPU,使用自主指令集,自主生态建设就可以来者不拒。LoongArch指令集与操作系统相互配合,还能对x86和ARM软件生态兼容并蓄,深刻领会了厚德载物的深层含义。

本页面的文字和图像允许在CC-BY-SA 3.0协议四和GNU自由文档许可证下修改和再使用。


顶部