- 主题:龙芯最近在认真搞二进制翻译
转一篇贴吧的文章:
看着龙芯与mips彻底分道扬镳,感情多少有些复杂。说实话我个人对mips多少还是有些感情的,毕竟学生时代看着Hennessy大神的量化研究方法带来的震撼终身难忘,还有以mips为代表的极简风格的指令系统所包含的“Soft is all”的理念——当然这一切都如同本人的青春一般随风而逝了。
关于LoongArch,只能说龙芯选了充满矛盾而又最难走的一条路
充满矛盾:你们似乎都没意识到一件事,现在否定mips ISA的任何理由,都是在质疑20年前龙芯;你们如今把mips说的一无是处,那当初胡伟武为什么选一个一无是处的指令体系?
不可控,指令槽有限缺乏扩展能力,软件生态萎缩,专利风险——这些问题20年前看不到吗?就算二十年前看不到十年前呢?如果说如今的行为是拨乱反正,之前的二十年是积累试错,那在IC设计这个日新月异而又竞争残酷的行业一家以十年为单位试错的公司/设计团队的能力在商业领域没有存在的价值,也就是在军工/政府这样封闭的市场才能苟延残喘!所以即使龙芯要独树一帜也请对mips口下留情。
最难走:从龙芯的ppt上来看,以后的龙芯是打算抛开mips完全独立自主了。这样的好处就是可以完全甩开mips的历史包袱轻装上阵,真是可喜可贺!因为mips的历史留下来坑说是天坑都是抬举它,接触过得人应该都能理解。
而且目前mips大量基础软件由于没有优化,老旧不堪性能底下。如今正好LoongArch发布,所谓新官三把火,龙芯的团队正好把这些基础库/包用LoongArch一举更新,在客户哪里直接宣传“旧mips的费拉不堪,新LoongArch武德充沛”,到时候客户纷纷转投就LoongArch门下顺带采购一批新硬件,龙芯的销售额节节攀升。
双喜临门,欧耶!
但不识抬举的我只有三个小问题:
一:旧的不支持LoongArch的龙芯硬件还会不会有人继续维护,相关软件会不会继续优化更新?
二:当初mips的时候龙芯没能力更新mips的基础软件,如今换成LoongArch就能变出生产力?
三:如今你可以抛弃MIPS,顺带否定二十年前的选择。那LoongArch的生命周期又是多少年?能有二十年吗?
综上,对于一家致力于打造商业体系/软件生态公司而言ISA的稳定性/连续性即是它的生命线,又代表它的商誉。有些事可以卖力的做不能大张旗鼓的说。
既然百分之百兼容mips,那继续在mips上添加扩展就好了,我看不出独立门户对龙芯如今眼前的困境有什么直接帮助,反而是在给自己制造困难。
当然这条路如果真的龙芯有能力走通,那收益也是极大的,祝龙芯一路顺风吧!
然后是关于二进制翻译,就公开的信息而言二进制翻译部分的原理也没什么新意,就是当年全美达那一套思路——硬件TLB物理查表加速翻译+专用硬件处理地址映射,只是比当年全美达和俄罗斯那个少了VLIW。
VLIW目前实践来看效果并不好,但龙芯得超标量乱序流水线也不见得在二进制翻译里效率会很高,因为只要翻译查找表和地址映射部分出现miss,这个流水线的都要状态受影响,性能损失会非常大,arm可能还好一些,而x86那么复杂的指令体系那么多的寻址方式,硬件加速部分设计难度非常大。
很多人再提苹果和windows桌面应用的二进制翻译。其实我之前那个帖子也说了,二进制翻译最难处理的是复杂的硬件驱动和被涉及深度优化的代码下程序的稳定运行。如果对稳定要求不高,对效率也要求不高的桌面级应用,比如日常的办公环境,其实二进制翻译在这块问题确实不大。
但你们到龙芯官网上看看龙芯的产品线多复杂,从嵌入式但多路服务器,而服务器上涉及的外设品种远超普通pc。苹果那么封闭的生态系统搞二进制翻译可比龙芯作为CPU供应商做支持简单多了。
而且更无解的是商业问题,如果要用ARM和x86,人家为什么要选龙芯?
--
FROM 59.109.150.*
关于最近所谓龙芯架构的一点看法
开宗明义:不看好所谓的“LoongArch”的发展。
ISA作为处理器功能的抽象,与处理器的性能无关。如果不考虑微电子制造的限制,ISA定义来自对需求侧应用环境与CPU对自身的定位。所以除非是真的有对需求独到的理解,否则重复MIPS已有的功能建一套所谓“自己”的ISA没什么意义,低水平的重复造轮子而已。
龙芯的做法其实在重复神威CPU在Alpha ISA基础上独立发展的路径,但又无法与神威相提并论。因为神威CPU的定位和应用非常明确就是HPC,而龙芯的定位是通用计算,结果就是两者的生态系统的复杂度不在一个数量级(当然是龙芯比神威复杂的多)。所以神威的CPU怎么定义/开不开放其实都无所谓,反正科学计算就那么几个常用的计算库/并行计算工具链。
而你龙芯不行,mips确实是半死不活,但也不能说对龙芯完全没有帮助。mips撑不起完整的生态,你自己独树一帜就能建起来?举个例子,debain社区官网上有mips port ,未来会有LoongArch port吗?就如今国内企业对开源社区的影响力,我不抱有希望。
除非龙芯有苹果的实力或只想关起门来自己玩,一个开放生态应该尽可能的“求同”而非“存异”,之前一直的MIPS r2+各种自己扩展的路线我觉得就可以了,强行给自己改名还从mips独立出去,除了大张旗鼓宣传以外我没看到有什么积极意义。
(这里再次吐槽一下龙芯的文档,龙芯内部工作都在参考mips和r4000相关的文档,这叫mips对龙芯没有帮助?你要独立门户,能不能先把基础夯牢了,就这一边看着人家的文档,一边大肆分裂社区,这是什么精神啊)
就目前LoongArch公开的信息,重点在x86/arm二进制翻译,这又是一个天坑,我实在想不明白龙芯为什么要在这个方向下这么大力气。(希望是因为我个人能力/水平有限)
二进制翻译又不是什么新鲜事物,九十年代全美达搞过,intel也搞过,最后都是一地鸡毛。现在你龙芯就能在这个方向上有重大突破,我实在不抱希望
而且,从市场角度考虑,如果用x86,为什么客户不用兆芯?兆芯的背景可比你中科院计算所强多了。如果用arm,客户必然选华为,华为的财力/公关销售能力是你龙芯能比的?鸡肋一样的二进制翻译居然是LoongArch的重点,匪夷所思。
最后,CPU的性能提升来自对流水线整体和各级微架构的优化,如今通用类CPU性能优化的重点在如何尽可能减少缓存延迟,提级各种缓存效率,减少miss,提升流水线的效率。而不是折腾作为软硬件接口的ISA,ISA应该以稳定/连续/必要(“除有必要,勿增实体”)为原则少改/慎改,而不是想如今这样大作新闻
--
FROM 59.109.150.*
我再来谈谈二进制翻译相关的问题,水平有限,如有错误欢迎斧正。
我真的很惊讶居然,都0202年了还有这么多人热衷二进制翻译,在我看来之前的二进制翻译技术是存在不可避免的重大缺陷的。
二进制翻译最大的问题是可以兼容原体系的二进制文件但做不到100% “0 bug”的兼容原体系二进制文件——兼容不绝对就是绝对不兼容,十几万几十万条机器码只要有一条无法正确翻译,那其余的都正常翻译没有任何意义。其中原因我认为有三点
1)原体系结构过于复杂
x86经过快50年的发展,已经是个庞然大物了。你们自己去intel官网上看看intel x86/x64的手册都是五六千页的,要是再把各种扩展指令集/应用手册加上两三万页都只有低估。你能在看看作为精简指令集的Arm,现在哪还有“精简”的影子,光ARM V7的指令手册就2736页,arm v8差不多这个两倍。
你怎么保证对这么复杂的体系结构软件模拟做完备测试?有这精力为什么不去优化自身的流水线/物理设计?简直舍本逐末!
2)原体系处理器微架构设计黑盒
二进制翻译就原理来看,就是分析原体系结构特征针对性的设计一些特征行为指令/物理查表指令/缓存结构以尽可能加速翻译过程,简单来说就是实现通过软件实现x86 cpu前端取指/pre-译码过程,龙芯的机器码就相当于x86流水线里的uop。
这就涉及一个致命问题,任何商业处理器厂商都不会公布自己微架构设计细节,导致指令的手册只是指令的行为描述,对其他人来说处理器实际上是个黑盒。这一点对于一般的算数/逻辑/甚至SIMD指令来说无关紧要,但对于特权指令/catch/TLB/原子操作/中断这些直接操作流水线的指令简直就是灾难。
为什么二进制翻译的bug总是会发生在底层驱动和深度优化的代码中?就是因为底层驱动会频繁使用中断和特权指令,而运算密集性代码的深度优化的几乎一定是在catch 预取上做手脚,而多核/多线程应用的加速会大量使用原子操作。在没有流水线操作具体细节情况下,你根本不能遍历流水线在这些操作下转换状态。偏偏这些指令又是影响性能的关键指令,这就是如今二进制翻译技术的技术瓶颈。
3)专利风险
一个东西,远看像鸭子,近看像鸭子,叫声像鸭子,烤熟了味道也像鸭子,哪它就一定是只鸭子。
ISA本身没有专利,专利是对ISA代表的行为及行为实现。就算你龙芯本事逆天,完美还原intel 处理器流水线状态机,那你极大可能已经落到intel的专利陷阱。别忘了当年intel和全美达的官司可是压垮全美达最后一根稻草。
综上除非龙芯能彻底颠覆之前的二进制翻译机理,我非常不看好这条技术路径。
--
FROM 59.109.150.*
其实从PPT看,翻译X86 Linux程序只有44%的效率,Windows程序还没实现,只能更低,只有翻译MIPS效率高(因为本来就是MIPS指令集小改),主要还是摆脱MIPS授权这个不够自主的帽子,目标在体制内市场,实用性倒是其次,不用指望几年内能真的用来跑X86 arm 程序
【 在 jasper2000 的大作中提到: 】
: 写得挺好的,很有道理
:
--
FROM 59.109.150.*
指令集卡起来不太容易,就算特朗普下令不让用MIPS X86,国内厂家还是可以做出来CPU,卡脖子主要是流片环节,所以指令集的花样意义并不大
【 在 jashen 的大作中提到: 】
: 除了ppt的路子 还有什么办法能不被卡脖子吗
: - 来自「最水木 for iPhone 7 Plus」
--
FROM 59.109.150.*
太天真了,真能这样,Intel AMD早就有竞争对手了,这些大公司的专利布局不可能让你钻这种空子,或者技术上就不可行
【 在 Xaoyao 的大作中提到: 】
: 没看到最后
: 明确说了指令集免费吗?
: 真是功德无量啊
: ...................
--
FROM 59.109.150.*
谁说党政军就要买龙芯? 飞腾 华为鲲鹏 兆芯 海光 申威一大堆呢
【 在 beanpole 的大作中提到: 】
: 最后那个问题,因为党政军企都要买,可以养得起一个联想,肯定养得起一个龙芯,而且养得好
--
FROM 59.109.150.*