很多关心龙芯发展的人都知道龙芯在大约两年前推出了LoongArch 架构,本该彻底地而实际上不彻底地跟MIPS分手了。本来这是一件大好事,MIPS本来就日落西山,到现在基本被大家都抛弃了,还在中美贸易战后通过芯联芯不断挑事。既然推出LoongArch架构,吸收了诸如RISC-V等的优点,那就该跟MIPS彻底一刀两断算了。
可是不知怎么的,龙芯好像就是放不下 MIPS 似的,在软硬件接口的ABI上耍小聪明,最后被人集体抵制,愣是搞出了一个“旧世界”和“新世界”的问题,给在 LoongArch 上开发软件的人挖个坑。这个问题就不再说了,反正龙芯现在也已经认识到错误了,老老实实搞“新世界”了。但这一番折腾就是很多人力和时间浪费了。
再说说这 LoongArch 指令集的事,作为一个后起的指令集,通过向前辈和优秀架构学习借鉴,吸取别人的教训,LoongArch 这点做的应该还好,至少某些部分值得表扬,学得好抄的好。 但不彻底的旧毛病又来了。就比如说LoongArch 的所谓向量指令,纯粹就是挂羊头卖狗肉,其实就是 SIMD。 在向量指令方面,RISC-V的先进经验真正的向量处理龙芯却不学习了。那这二者的差别在哪里呢?太专业的在这里就不说了,简单说就是真向量比假向量的SIMD 优越太多了,特别是从软件人员的角度来说。 第一就是指令数量会少,用户的学习负担减轻,我每次看到鼓吹什么“新增了成千上万的指令”的吹嘘时就想掐死处理器的设计者----你他娘的就是想累死给你写软件的吗? 第二呢,就是当硬件寄存器宽度加倍时,SIMD每次都得新增成千上万条新指令,那就意味着软件必须至少重新编译才能提升性能,而RISC-V用的真向量软件不用任何修改就能利用硬件实现性能提升,从软件人员的角度来看太幸福了。 第三呢,这个向量技术还有个最大的好处,不用考虑知识产权,随便用随便抄,因为那是上世纪70年代的,不论是20年专利还是50年著作权全部过期了,就是你直接一字不漏抄别人的手册也没事,当然结合现在技术实现如果做出创新,知识产权属于自己。
那有人会问英特尔等等大家这些年不都搞的SIMD吗?不错,好像还真是从RISC-V才又在除了特定领域内重新提起了传统的向量。这其实有些就是历史包袱问题。但 LoongArch 产生在 RISC-V之后,本该没什么历史包袱的,可偏偏因为龙芯曾经在MIPS 时代搞了些SIMD之类的包袱,舍不得丢掉一直拖到了 LoongArch 之中。 不过现在龙芯不公开它的SIMD指令集资料,也许是它意识到了这个问题;假如龙芯一直不公开其SIMD相关指令集,最后直接发布给出一个真正的RISC-V类似的真向量指令那就太好了。在SIMD和向量指令上,龙芯又一次摇摆了(确切说是站SIMD的贼船了)。
最后再说说龙芯LoongArch这指令集的设计思想好像还停留在MIPS刚出来时或者之前那个年代。那个年代处理器指令怎么设计,完全是硬件人员自己说了算,从来不考虑软件人员的感受。软件人员呢,硬件处理器有什么指令就用什么指令,硬件没有的指令只能通过软件人员的各种花式操作自己克服。软件人员对于处理器该有什么指令几乎没有发言权。龙芯的指令设计几乎看不出有考虑软件方面的创新,一些新指令的增加基本就是跟风和攀比,或许加上一些拍脑袋。要不要增加新指令/增加什么新指令,真的需要好好考虑一下软件的需求。盲目增加一堆甚至成千上万条新指令,除了增加软件人员的负担看不出有别的用处。过度增加软件人员负担的后果就是没人陪你玩,只能自己开发所有软件了。
总之,龙芯在新架构LoongArch上总还是不愿摆脱之前的包袱,许多方面老是想耍点小聪明偷懒,结果最后可能不得不从头老老实实做起。
--
FROM 218.16.203.*