01.22 红帽工程师开发可用于物联网设备的轻量级JIT编译器MIR

红帽的软件开发工程师Vladimir Makarov在开发者博客提到,他现在正开发一个轻量级JIT编译器(MIR,Medium Internal Representation),编译速度与启动速度将比GCC或LLVM快100倍,作为现有MJIT编译器的补充,或是在现有JIT编译器无法作用时,成为替代方案。

红帽工程师开发可用于物联网设备的轻量级JIT编译器MIR

Vladimir Makarov提到,过去社群花费了大量的时间,对GCC和LLVM进行优化,除了改善可靠度,同时也创建了许多工作基础,因此其他人可以使用这些成果,快速地以GCC或LLVM接口来实例JIT,他们也以这些现有的编译器,开发了CRuby JIT。

不过,这其中存在了许多缺点,其中一大缺点,便是以GCC或LLVM作为基础的JIT程序通常很大,CRuby 2.6本身超过150万行程序代码,而庞大的程序代码量对于云计算、物联网和移动设备上的应用,目前仍是很大的问题。

红帽工程师开发可用于物联网设备的轻量级JIT编译器MIR

而且GCC和LLVM的编译速度也很慢,虽然在英特尔的高端CPU只要花费20毫秒,但对于物联网设备使用的较低端CPU,可能需要花上半秒钟,另外,现有GCC和LLVM JIT,难以使用不同程序语言开发的程序代码,实例组合优化,Vladimir Makarov提到,内联函数是一个提高JIT性能最重要的优化,因为方法的调用成本很高,而且内联也允许更大范围的优化,但是现在要将用C编写的方法,内联到以Ruby撰写的方法中仍是一个问题。

轻量级JIT可以解决这些问题,Vladimir Makarov认为,轻量级编译器应该是MRuby JIT更好的解决方案,也有助于将Ruby的使用范围,从服务器市场扩展到移动设备和物联网市场。这个轻量级JIT称为MIR,概念上是一种明确定义的中介语言。

MIR要成为比GCC或LLVM所提供的JIT接口,还要轻量的JIT编译器,Vladimir Makarov的目标是,编译速度和启动速度要比经优化的GCC还要快100倍,程序代码也要小100倍,因此实例程序代码要少于1万行C程序代码。MIR的初期目标是先满足CRuby或MRuby的JIT需求。

MIR具有强类型的特性,用户可以通过LLVM IR作为使用MIR的途径,未来Vladimir Makarov希望除了LLVM IR,WebAssembly、Java字节码、CIL甚至是其他中介语言与中介码,都可以作为MIR的输入,最终是要让MIR可以使用所有流行的机器码,并也能回传C、WebAssembly、Java字节码,Vladimir Makarov提到,MIR目标与LLVM IR目标相似,但是输入与输出有许多差异。

MIR是一个庞大的项目,Vladimir Makarov决定以开源的方式进行,有兴趣的开发者已经可以在GitHub上关注项目进度,或是加入开发的行列,MIR仍在初期阶段,但很快的就会先用在CRuby和MRuby的JIT实例上。


分享到:


相關文章: