20年毫无作为?龙芯发展远超想象!
“如果把人类国家的历史发展比作赛马的话,以一千年为一圈,有一匹马在前面几圈一直跑在最前面,领先世界,只是到最近几百年才落后,并且最近是几十年,这匹马已经飞快地追了上来。如果是你,你会不会在这匹马上押注呢?”
这段话是胡伟武所说,当时他在中科院计算所做一个 CPU 设计的讲座,我坐在台下听讲。
讲座的具体细节我早已忘记,但这段话让年轻的我听得“热血沸腾”,觉得中国真是大有前途。
后来只有 J20 横空出世的时候才再一次有类似的冲动:要找机会,为国效力!
可见胡伟武不但技术很牛,还是一个特别善于鼓舞人心的领导。
当时龙芯刚起步,33 岁的胡伟武带着一帮年轻人没日没夜地干,终于做出了龙芯一号(小名狗剩),想了解详情的同学可以去搜一下《我们的 CPU》。
一晃 20 年过去了,胡伟武老师已经满头白发,当年的狗剩已经长大成人,最新的龙芯 3A5000,主频 2.3GHz-2.5GHz,包含 4 个处理器核心。
根据国内第三方测试机构的测试结果:
“龙芯 3A5000 处理器在 GCC 编译环境下运行 SPEC CPU2006 的定点、浮点单核 Base 分值均达到 26 分以上,四核分值达到 80 分以上。基于国产操作系统的龙芯 3A5000 桌面系统的 Unixbench 单线程分值达 1700 分以上,四线程分值达到 4200 分以上。上述测试分值已经逼近市场主流桌面 CPU 水平,在国内桌面 CPU 中处于领先地位。”
虽然新闻报道中经常会提到龙芯被用到网安、能源、交通、金融、物联网、工控、超算、北斗卫星等领域,可是我们身边并没有看到有多少龙芯电脑。
这是因为龙芯走了一条最难走的路,国产 CPU 当中,有这么几个流派:
①合资+x86 授权派
如天津海光和兆芯,他们获得了 AMD 和威盛的授权,可以设计制造 x86CPU,可以利用现有的软件生态。
但是美国商务部已经把它们拉上了“黑名单”,无法获取最新的技术架构了,发展路径被堵死。
②ARM 指令集授权
如华为海思和飞腾,市场广阔,软件生态也好,但指令集控制在别人手中,如果被制裁,也是死路一条。
③指令集授权+自研指令集
典型代表就是龙芯,最早用 MIPS 指令集,后来干脆买断,在此基础上发展出了完全自主可控的 LoongISA 指令集。
龙芯虽然有着最为远大的志向:要建立和 Intel / ARM 并列的生态系统。但背后也有一个大坑:没有软件支持。
LoongISA 指令集和别人都不一样,第一步必须得找个操作系统支持,把它移植过来。
感谢开源的 Linux,这一步并不是很艰难。
有了 Linux 是不是就完事无忧了,不!编译器必须得移植过来:
很多软件运行在虚拟机/解释器当中,它们也必须得移植:
再把 OpenOffice,Firefox 等办公应用软件移植过来,一个基本可用的系统就出现了。
但是这样的 Linux 这样的系统,开发人员能用,党政军“被迫”也能用,普通消费者用不了。
因为没有微信、QQ、支付宝、Photoshop、PR、AE、各种游戏..... 这才是 x86 生态最厉害,最吸引人的地方。
当然可以把这些软件一个个移植过来,前提是厂商得愿意,得有动力(利益)才行,要不然,哼哧哼哧移植过来,没人用,投入的人力物力都浪费了。
还有一种办法是不做移植,采用翻译的办法,把 x86 程序的二进制代码翻译成 LoongISA 指令集。
翻译的方式有三种:
①软件翻译
相当于搞了一个模拟器,以纯软件的方式构建了一个虚拟的主机环境。如 qemu、苹果的罗塞塔、以及微软 Windows 在 x86 上模拟 arm 的技术等等。
这种方式的有点是极其灵活,指令集升级只需要更新软件即可。缺点是效率比较低。
②硬件翻译
Linus 早期加入的 Transmeta CPU 就是这个思路,它会把 x86 指令转换自己的指令来执行。
虽然能直接运行 x86 上的程序,但是却受制于 Intel 和微软,虽然 Transmeta 在和 Intel 的诉讼中获胜,在市场上却黯然落败
③软硬结合翻译
龙芯本质是软件翻译,但是在指令集中专门提供了硬件指令来加速翻译过程,既有软件翻译的灵活性,又有硬件的效率。
在运行 Windows(x86)程序时,由于龙芯的 Linux 系统并不支持 Windows 系统的 API(例如 CreateProcess),需要一个 Wine 软件做中间层,把 Windows API 转化成 Linux API(例如 fork)。
最终,龙芯的翻译情况是这样的:
看起来非常复杂,但是没有办法,IT 产业现状就是如此:不但要自主,还要兼容。
龙芯为了达到这个目标,需要具备“2+3+3+2”共十个能力:
- 其中,第一个“2”是指两大核心软件:BIOS、操作系统内核(含驱动和虚拟化)
- 第二个“3”则是三大编译器,GCC、LLVM、GOLANG
- 第三个“3”则是三大虚拟机:Java、JavaScript、.NET
- 第四个“2”则是两大二进制翻译系统:X86、ARM
龙芯要自建生态,如果是之前,我是绝对不看好的。因为我觉得旧的生态一旦形成垄断,后来者再无机会。
桌面生态被 Windows+Intel 占据,移动被 Android+ARM 垄断,后来者想从它们的饭碗中抢饭吃,要走的路非常之长,长到几乎难以看到尽头。
与其如此,还不如努力探索、抓住下一波浪潮。
但是这几年,我们看到特朗普搞起贸易战,以举国之力打压华为,断掉华为芯片供应,把一大批中国的公司拉入实体名单,再看看最近以美国为首的西方世界对俄罗斯的疯狂制裁,突然又看到了希望的曙光:这是逼着中国建立自主可控的生态体系啊!
之前生态市场被垄断,我们只能在一边看着,难以入局,现在存在着未知的被断供的风险,不发展自己的芯片、不去建立自己的生态体系,还能怎么办呢?
一旦被彻底断供,我们至少还有一套可以独立的,可以运转的 IT 系统。
希望龙芯及其生态能够发展起来!