国内做芯片,与做软件一样,是比较艰难的。主要是“洋货质量好”的观念在很多人的心中根深蒂固。
芯片行业,层出不穷无技术能力的的骗补假芯片公司,加上国产芯片在一般人关注的CPU主频方面,少有亮点;加上价格方面,也没有降下来,我身边很少有人买国产芯片的电脑。
但芯片不止用于高性能的电脑,像无线路由器等产品,也需要芯片,国产芯片仍有很多商机。
即使在家用电脑领域,由于现在电脑性能过剩,仍有大量的人在购买价格低廉的电脑,800元不到的 惠普800G1 旧电脑也有人在买。
即使国产芯片的主频短时间内提不上来,仍大有可为。
2022/01/13 新闻,三大系统、数百产品捧场 龙芯LoongArch自主指令集免费开放,https://www.cnbeta.com/articles/tech/1225539.htm, 里面提到:
值得一提的是,龙芯中科还在积极推动在上游开源社区建立LoongArch分支,与x86、ARM等并列,之后将随社区自动演进LoongArch生态,丰富支持LoongArch的软件版本,大幅减少软件迁移适配工作。
具体说到某件事,比如龙芯公司做 .net core 软件适配,其实要分几个方面来看:
第一,做这件事正确与否。
第二,这件事该不该由我来做。
第三,这件事我现在做,还是以后做。
在 oschina 上,大多数人考虑的只有第一点。
我在 2021年9月评论新闻说“龙芯公司现在做 .net core 软件适配不好、应该把精力投入到其他地方”,会被很多人批,其实我能理解。
龙芯公司 2022 年 1月在新闻中说,以后减少软件适配、投入更多精力去与上游开源社区沟通,这我也能理解,毕竟这正是我之前所谈到的。
哪些仍在说“龙芯公司做 .net core 软件适配是正确的,说不同意见的人要么是坏心眼、要么是民科”,这个我就不太理解了。
不过也无所谓,世上有很多事情/很多人,不是我们一般人能理解的。
我逐个来分析这件事。
“做这件事正确与否”,自然是正确的。
.net core 适配龙芯,然后用 .net(C#) 写的软件,可以运行在有龙芯芯片的电脑上,对龙芯芯片所属公司,是一个好消息。
但龙芯目前主要与国产 Linux 搭配,这种环境,net(C#) 编程占据多少百分比,也值得怀疑。
“这件事该不该由我来做”,这个值得讨论。
打个比方来说,我们日常都需要吃盐,可以买盐,也可以去海边晒盐。一般人都选择买盐,是因为这样对自己来说,最有利:我把时间节省起来,做别的事情。
因为我不去晒盐,或者我劝我家人不要去晒盐,网友们就开始骂我:每个人都要吃盐的,你怎么能劝别人不要去晒盐呢?这是说不过去的。
芯片公司,对于更改某个软件以适应自己的芯片,一般是怎么做的呢?
一般是与操作系统软件/软件开发工具/编译器合作,在操作系统/编译器运行到某些地方,加入自己芯片的分支代码。
操作系统软件/软件开发工具/编译器,对应的有开源免费的组织,比如 Linux, 也有商用的公司,比如微软、Ubuntu。我们分开说。
开源免费的操作系统,一般对这件事是持开放的态度:你想加、请随意。
一来,多支持一种 CPU 芯片,对我的操作系统来说,是一个值得夸耀的事情:我支持的 CPU 很多。
二来,就算你加的分支代码有些小问题,也不影响其它 CPU 分支代码、不影响与 CPU 无关的代码。
正因为这种态度,龙芯可以很容易支持 debian 操作系统(一种 Linux 发行版)、及 Linux core.
商用的操作系统软件公司,对这种事情,则比较谨慎。
主要是如果操作系统软件增加一个 CPU 芯片的支持,则需要准备对应的技术支持人员。如果相关的市场比较小,则不值得去安排技术人员。如果技术人员的规模不够大,客户问起某个问题来,技术团队搞不定,很丢公司的脸面。
比方来说,开源免费的 Debian 官方支持 amd64/arm64/armel/armhf/i386/mipsel/mips64el/ppc64el/s390x(https://www.debian.org/ports/),正在移植的超过20种:alpha/arm/AVR32/hppa/hurd-i386/ia64/kfreebsd-amd64/kfreebsd-i386/m32/m68k/mips/netbsd-i386/netbsd-alpha/or1k/powerpc/powerpcspe/riscv64/s390/sparc/sparc64/sh4/x32。此页面清单并不包含龙芯芯片。
而基于 Debian 修改而来的 商业 Ubuntu 系统,则将 CPU 支持列表简化成 intel/amd(https://ubuntu.com/cpu-compatibility)。
Windows 则支持 amd/intel/Qualcomm/Broadcom/NXP/Hygon 芯片(https://docs.microsoft.com/zh-cn/windows-hardware/design/minimum/windows-processor-requirements)。
新建的CPU芯片厂商,与商用操作系统公司,比较难合作。人家花时间做软件适配某个CPU,需要投入人力、金钱,也得考虑是否能盈利。所以,只有芯片达到一定销量,才可以去谈。
但与 debian/linux 这类开源的操作系统合作,则比较容易。
为何龙芯应该去和 debian/linux 合作,而不是自己开发操作系统呢?这就好比之前国内很多公司都有自家的食堂、甚至医院,后来都陆续剥离了出来一样。
术业有专攻,行业有分工,同时做几个行业,分散精力,可能都做不好。有可能食堂没做好、亏很多,影响整体公司盈利。
龙芯与debian/linux 合作,也可以吸引其他人参与。如果龙芯芯片相关代码,加入了 debian 主线,以后debian每次发行新版,龙芯公司什么都不做,它的代码也会跟着新版 debian 发行,且debian的宣传册上,也一直有龙芯芯片的名字。
可以借力,这也是管理者应该考虑的因素。
我们可以看到,intel 公司不停地向 linux core 提交代码,在某个特殊场景下让自己的 CPU 芯片表现强劲、超过竞争对手。哪怕 Linus 动不动就骂 intel 的代码就是屎,intel 也不动摇,继续提交代码。
是因为 intel 不会做操作系统吗?也不是,intel 也有自己的 Linux 发行版,只不过一般人不知道。 intel 公司向 linux core 提交代码,符合自己的利益最大化,这才是动机。
目前龙芯芯片只与国产 Linux 发行版合作,未提交代码到上游 debian 系统中,仍是失策。
同理,对于开发工具类软件,龙芯公司也应该参照以上操作系统软件方面的策略:
a. 对于开源组织,自己主动去示好、必要时自己去添加点代码,但还是以别人为主。
b. 对于商业组织,定期去游说,同时提高自己的销量、增强话语权。
会有其他人做 .net core 与龙芯适配的事情吗?会有,以前国内还有人嫌打印机厂商的驱动程序差劲、自己写打印机驱动程序的事情。
微软、Ubuntu 还对树莓派定做操作系统、开发工具。也就是说,龙芯芯片的销量,如果达到树莓派的数量级,也会有商业的操作系统/软件开发工具公司,主动过来支持的。
以目前国产政策扶植,龙芯的销量达到树莓派的量级还是有希望的。
“这件事我现在做,还是以后做”,在芯片厂商的量还没有扩大之前,先找准细分市场、宣传中突出自己的卖点、提高产品质量水平,这些都很重要。龙芯芯片支持 MIPS、自己的指令集、兼容 x86, 有某款 c++ 编译器可支持,已经可以开始想办法提高产量了。
基于各类新闻中,我觉得龙芯公司在找准细分市场、宣传中突出自己的卖点、提高产品质量水平,这些方面都需要加强,而且这些事情重要性,远远超过去做 “.net core 适配(龙芯芯片)”。
看到网上网点的龙芯电脑介绍,我都没有看出来他的卖点是什么。很糟糕的商品介绍,没有竞争力的价格,怎么卖?
最终买家不中意龙芯电脑,你龙芯芯片公司去添加 .net core 支持,对销量有提升的效果么?我看到的现象是:叫好的多、愿意掏出真金白银的人少。
所以,我的看法是,“改.net core 适配龙芯CPU”,这件事应该向后推。或者把这件事改成,以社区为主、龙芯为辅。
毕竟,c/c++ 之外的各类 runtime/sdk, 其实大多数也是用 c/c++ 写的,而 .net core/java 可以编译成 CPU 无关的中间字节码,相关的 CPU 移植工作量也较小。这种事情特别适合交给开源社区去做。
更何况,.net 也有开源项目(https://github.com/dotnet/core)。
那龙芯公司自己什么时候做这类事情(龙芯芯片适配.net core)呢?
应该销量很高、基于营销的需要做一些炫技的时候。
比如,五粮液推出小批量的酱香型白酒,意思就是说:
酱香型白酒没多大技术含量,我也能做,我的技术不比茅台差,只不过基于我的品味、我的思维逻辑,我不太乐意大批量地做。
这时候只是在卖弄,顺便出点风头。这种炫技,赚不赚钱、赚多少钱,都无所谓了。
如同 intel 弄 c++ 编译器,高兴时露两手,大多数时候没动静。