发布时间:2021-05-27 已阅读:次
在近期举办的以应用迁移为主题的第六届龙芯生态培训中,龙芯讲师分享了龙芯cpu技术、应用迁移技术、二进制翻译技术以及优化技术,其中二进制翻译技术引起了广大学员的关注,诸多学员围绕二进制翻译技术提出了各类问题。为此,龙芯生态培训工组特别邀请了龙芯实验室主任张福新博士为本次学员答疑。
1- 二进制翻译是软件技术还是芯片之上的过渡技术?
答:简单的说二进制翻译技术是一种用软件实现的技术。之前都是使用软件来模拟一个cpu,在软件中通过使用各种技术把指令进行翻译,达到能够在目标机器上运行的效果。
严格的说二进制翻译并不完全是软件翻译技术,比如龙芯就在芯片内部做了一些配合工作,在龙芯cpu内部有一部分指令是用于二进制翻译的,所以可以说二进制翻译是一种软硬件结合的技术。
2- arm 架构可以利用二进制翻译吗?
答:理论上来讲都能够实现从一个架构到另一个架构的翻译。只不过是每一种架构之间的翻译难易程度、复杂程度和开发工作量不同。
3- 3a4000平台很多老打印机没驱动,有办法在麒麟、统信上解决吗?
答:目前已经有了一些3118云顶集团的解决方案,并应用在了一些用户的办公场景中,现在方案正在产品化的过程中。
4- 龙芯上二进制翻译跑程序需要事先转译吗?
答:二进制翻译有很多种方法,事先转译是一种做法,但是事先转译有一定的局限性,它不能保证所有的指令能够安全无误地翻译,所以一般也都是需要事先转译和动态转译结合的手段来进行。现在的商业系统包括苹果的rosetta基本都是这样,都是事先转译加动态转译,如果这个程序从来没跑过,那么第一次跑的时候会慢一点,要先花时间转译,但是也可以一边转译一边跑,等到跑过一遍(也就是翻译过一遍)再次跑就速度就会变快,一般都是这样的一个策略。
5- 国产操作系统内置二进制翻译了吗?
答:目前还没有。目前我们也都在跟操作系统厂商密切沟通和配合,随着我们产品发布之后,二进制翻译系统也会跟着国产操作系统出来。
6- 龙芯的二进制翻译和苹果的 rosetta 有什么异同?
答:龙芯目前做了好几种二进制翻译系统,就应用层面二进制翻译系统来说,跟rosetta系统的做法是非常类似的,这也是主流商用的一般做法。因为应用级别的二进制翻译系统的执行效率相对较高。当然,不同的地方也有很多,比如rosetta是一种闭源的内部系统,我们也是内部系统,大家在具体实现的很多细节上也都有所不同,他们是做的从x86到arm的翻译,我们自己是从x86到loongarch的翻译。
7-avx/sse 加速模块怎么解决的?
答:现在有很多软件为了提高性能,使用多媒体加速指令来实现,比如在intel平台上有avx和sse,在源代码里都可以使用编写汇编代码的方式来实现,再有就是用软件移植的方式。当然我们自己也有相应的解决方法,我们的二进制翻译有专门针对avx和sse的指令来模拟替代这种技术,实现的效率比较高。
8-依赖分析怎么做的?人为去看还是有工具?
答:如果是做翻译里面的依赖分析,实际上在二进制翻译做到里面的优化模块跟编译器是非常相似的,每条指令翻译出几条指令来,如果仅仅是这样的话效率肯定是比较差的,可以一片指令一片指令的翻译,然后再尽量优化掉一些冗余的指令,这样就能够做到几乎一对一的翻译,这里面也涉及很多编译的分析技术,大部分都是算法做的,而算法本身是人为设计的。
9-龙芯服务器上部署 web 程序比如 war 包,一般是 x86编译还是需要在龙芯电脑编译?
答:这个问题其实跟二进制翻译技术关系不大,web大部分技术都是跨平台的,war包应该是java程序相关的包,龙芯平台的jdk也是很成熟的,基本上跟x86是可以通用的,也就是说在龙芯平台上编译和在x86上编都是可以的。
10- 浏览器的 ocx 插件能二进制翻译吗?
答:从技术上来说是没有问题的,对插件的支持和普通应用的支持稍微有些不同,这些问题我们这边也有相应的考虑。
龙芯中科面向3类人群(用户、技术人员以及高校师生),组织涵盖3个级别(lca、lcp、lce)、5个方向(电脑应用、运维、应用开发/迁移、安全和cpu原理)的生态培训,参与培训并通过考核可获得由龙芯中科联合工信人才颁发的证书,现培训已成功举办6期,第7期培训即将开展,欢迎各位咨询报名!
培训咨询:郑瑶 17611253691(微信:464718387)
了解更多
往期回顾: https://mp.weixin.qq.com/s/vbgcsswtngfoetwmrsyzmq
校园培训: https://mp.weixin.qq.com/s/dk28eqwaryzzg7rggot5wg