现在中国大量的科技企业,天天做梦,希望像苹果一样做出完全封闭的生态,还赚大钱

【本文来自《科工力量:龙芯发布自主指令系统,彻底抛弃MIPS》评论区,标题为小编添加】

典型的偷换概念。

给人一个,只要别人升级了指令集版本,旧指令 CPU 瞬间原地爆炸无法使用的错误观念。

然而实际上,amd64 出了多少年了,操作系统和应用软件,大量的还是 x86_64 基本指令 + sse2 作为系统基本的指令集支持。而且 sse2 本身还是 32 位时代的产物。几乎可以说 amd64 指令体系,现在依然是仅仅是基本寄存器从 32 位变到 64 位而已。

而且文章里面的概念也非常是问题,把指令当作一个整体去看待,甚至可以说现在 x86 体系,按照这种文章思路,任何软件在 x86 下面用,就必须做一大堆不同指令版本的软件。

举例子就是,windows 10 ,按这个文章思路,就必须拆分成 sse2/sse3/sse4/sse4.2/avx/avx2/avx512/FMA4 这种不同的版本才能让大家用。可问题是,大家见过吗?

所以,要我说,文章从基本逻辑概念就是完全错误。从基本错误出发,导致一个错误推论。

这点来说,我建议先去看看 RISC-V 的设计。

模块化的指令集体系,除了基本指令外, 还有几个模块。附加的模块可以提供更好的计算性能和运行效率。

除了 RISC-V 基本的 32、64、128 位这种基础指令外。

还有 MAFDQC 这 6 个指令模块,提供不同的功能。

回到 x86 ,现在典型的,除了 amd64 现在已经严格需要 sse2 这个可以比 387 浮点计算更快的浮点计算指令体系外。

可以认为,其他的扩展指令,本身就是模块化的。

软件只需要依赖最基本的 x86_64 + sse2 指令体系,在需要更高性能的时候,通过软件库来调用 sse4 或者 AVX 尤其是 AVX512 这个已经明确属于专用领域才有需求的指令,来实现 CPU 的最大化运行效率。

而且,因为所有的 amd64 ,都支持 x86_64 + sse2 这个基础体系,软件完全可以基于这个体系构建自己的基本软件运行环境,从而实现绝对的兼容运行。

回到龙芯,请问他的设计是什么样的?

我不考虑实际龙芯的技术文章,单独就说这个文章。

典型的都不分指令分块考虑的问题,直接一堆塞进来全都算一种。

只有一种“龙芯指令集”,这种观念,连 sse2 时代都不如。甚至连 386 时代都不够,至少 386 时代,还有 387 浮点单元的事情,可以按需选择(当然最后还是合并了)。

如果真的考虑指令分块的问题,你就会发现一个很现实的问题。

就是基础指令,基本上现在已经无法提供和性能相关的东西了。

那么龙芯,重做这套指令集,意义又是什么?

除了不兼容 MIPS 外,其实找不到真正有意义的理由。

而且龙芯这套指令和自己的定位,全都不像 RISC-V ,要考虑物联网超低功耗超低成本的嵌入式需求。

所以,说白了,龙芯完全可以继续用 MIPS 指令体系,就如同 RISC-V 的基本指令,自己单独去做一个扩展指令。更何况龙芯之前就是这么做的。(其实即便如此,龙芯也非要和 MIPS 不绝对兼容)。

只要不引入过多的 MIPS 扩展指令机可。比如 MSA 就可以不要,自己单独做一个动态宽度指令体系替代。

甚至那些跳转和立即数,也都可以靠单独做一套新指令,放到扩展指令体系里面机可。

编译器编译时,如果允许使用新指令,那么直接用新指令替代旧指令就行了。

甚至 MIPS 遗留的,虽然硬件问题很多,但是并不是完全需要重建一套。

而且 MIPS 虽然现在已经没了下文了,但是 MIPS 在国际上依然有大量的留存。

x86 都没有放弃支持 i386 的兼容,ARM 甚至在重做了 armv8 时,还单独做了一个兼容旧版本 armv7 的 aarch32 体系。

龙芯居然能这么直截了当的重建新的生态。

说句难听的:现在中国大量的科技企业,天天做梦是苹果,梦想未来绝对实现一个苹果的那种完全封闭的生态还赚大钱。但是实际上,自己的那个封闭的垄断生态,也就是弄一堆看似可以被自己吸血的企业和用户。但是实际上苹果的技术,和对未来市场的前瞻,还有对下游企业的反哺,全都没有。结果不但不去正视自己的作为和梦想完全不搭界,还四处宣扬自己的未来绝对会实现,那些说不会实现的人,都是“友商”。

全部专栏