无忧启动论坛

标题: 龙芯二进制翻译技术答疑 [打印本页]

作者: 不点    时间: 2021-5-31 16:24
标题: 龙芯二进制翻译技术答疑
龙芯二进制翻译技术专家答疑
龙阿七   2021-05-31 https://baijiahao.baidu.com/s?id=1701248379419715702

龙芯为了兼容 x86 和 ARM 应用程序,对二进制翻译技术进行了多年的研究和实验,并把成果整合在了自主设计的 LoongArch 架构中,即将发布的 3A5000 是首款支持 LoongArch 指令集的桌面 CPU。由于龙芯支持二进制翻译的产品尚未上市,许多开发者和用户对此存在一些疑问,最近龙芯生态培训工作组特别邀请了龙芯实验室主任张福新博士,为参加生态应用迁移培训的学员们答疑,主要内容如下:

二进制翻译是软件技术还是芯片之上的过渡技术?

答:简单的说二进制翻译技术是一种用软件实现的技术。之前都是使用软件来模拟一个 CPU,在软件中通过使用各种技术把指令进行翻译,达到能够在目标机器上运行的效果。严格的说二进制翻译并不完全是软件翻译技术,比如龙芯就在芯片内部做了一些配合工作,在龙芯 CPU 内部有一部分指令是用于二进制翻译的,所以可以说二进制翻译是一种软硬件结合的技术。

ARM 架构可以利用二进制翻译吗?

答:理论上来讲都能够实现从一个架构到另一个架构的翻译。只不过是每一种架构之间的翻译难易程度、复杂程度和开发工作量不同。

3A4000平台很多老打印机没驱动,有办法在麒麟、统信上解决吗?

答:目前已经有了一些解决方案,并应用在了一些用户的办公场景中,现在方案正在产品化的过程中。

龙芯上二进制翻译跑程序需要事先转译吗?

答:二进制翻译有很多种方法,事先转译是一种做法,但是事先转译有一定的局限性,它不能保证所有的指令能够安全无误地翻译,所以一般也都是需要事先转译和动态转译结合的手段来进行。现在的商业系统包括苹果的 Rosetta 基本都是这样,都是事先转译加动态转译,如果这个程序从来没跑过,那么第一次跑的时候会慢一点,要先花时间转译,但是也可以一边转译一边跑,等到跑过一遍(也就是翻译过一遍)再次跑就速度就会变快,一般都是这样的一个策略。

国产操作系统内置二进制翻译了吗?

答:目前还没有。目前我们也都在跟操作系统厂商密切沟通和配合,随着我们产品发布之后,二进制翻译系统也会跟着国产操作系统出来。

龙芯的二进制翻译和苹果的 Rosetta 有什么异同?

答:龙芯目前做了好几种二进制翻译系统,就应用层面二进制翻译系统来说,跟 Rosetta 系统的做法是非常类似的,这也是主流商用的一般做法。因为应用级别的二进制翻译系统的执行效率相对较高。当然,不同的地方也有很多,比如 Rosetta 是一种闭源的内部系统,我们也是内部系统,大家在具体实现的很多细节上也都有所不同,他们是做的从 X86 到 ARM 的翻译,我们自己是从 X86 到 LoongArch 的翻译。

AVX/SSE 加速模块怎么解决的?

答:现在有很多软件为了提高性能,使用多媒体加速指令来实现,比如在 Intel 平台上有 AVX 和 SSE,在源代码里都可以使用编写汇编代码的方式来实现,再有就是用软件移植的方式。当然我们自己也有相应的解决方法,我们的二进制翻译有专门针对 AVX 和 SSE 的指令来模拟替代这种技术,实现的效率比较高。

依赖分析怎么做的?人为去看还是有工具?

答:如果是做翻译里面的依赖分析,实际上在二进制翻译做到里面的优化模块跟编译器是非常相似的,每条指令翻译出几条指令来,如果仅仅是这样的话效率肯定是比较差的,可以一片指令一片指令的翻译,然后再尽量优化掉一些冗余的指令,这样就能够做到几乎一对一的翻译,这里面也涉及很多编译的分析技术,大部分都是算法做的,而算法本身是人为设计的。

龙芯服务器上部署 Web 程序比如 war 包,
一般是 x86 编译还是需要在龙芯电脑编译?

答:这个问题其实跟二进制翻译技术关系不大,web 大部分技术都是跨平台的,war 包应该是 java 程序相关的包,龙芯平台的 JDK 也是很成熟的,基本上跟 x86 是可以通用的,也就是说在龙芯平台上编译和在 X86 上编都是可以的。

浏览器的 OCX 插件能二进制翻译吗?

答:从技术上来说是没有问题的,对插件的支持和普通应用的支持稍微有些不同,这些问题我们这边也有相应的考虑。



作者: sizhou    时间: 2021-5-31 16:58
等待6月龙芯发布5000,应该会介绍2进制翻译技术。
作者: 不点    时间: 2021-5-31 17:43
sizhou 发表于 2021-5-31 16:58
等待6月龙芯发布5000,应该会介绍2进制翻译技术。



就是不知道 “发布” 二字的具体含义。

仅仅发布一条消息,没有产品出现,也是 “发布”。

发布少量的 CPU 样品,不公开售卖,也是 “发布”。

出售少量的 CPU 给个别 “合作伙伴”,也是 “发布”。

不限量、不限制任何购买者、公开出售 CPU 产品,也是 “发布”。

不仅出售 CPU,同时也出售电脑桌面台式机、服务器、笔记本,等等,也是 “发布”。

作者: sizhou    时间: 2021-5-31 17:50
不点 发表于 2021-5-31 17:43
就是不知道 “发布” 二字的具体含义。

仅仅发布一条消息,没有产品出现,也是 “发布”。

发布,肯定有产品给大家的,对外公开销售,当然价格贵点,量产少成本高。
5000的功率不高,不是太热,笔记本会比4000代进步很多,
服务器可能还需要等E5000L   64核,至少也要等C5000,16核的,
作者: wintoflash    时间: 2021-5-31 17:59
目前 github 上已经可以找到 LoongArch64 移植的部分软件了,包括 grub, qt, systemd 等。
https://github.com/loongarch64
作者: loveyouluobin    时间: 2021-6-1 16:17
问题是为什么要替代?有好东西不用非得重复造轮子





欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3