Red Hat, MIR JIT derleyicisini geliştirdi

Red Hat'ta gelişme sürüyor yeni hafif JIT derleyicisi MIRDaha önce bir ara gösterim MIR'ye (Orta İç Temsil, başka bir ara gösterimle karıştırılmamalıdır) dönüştürülmüş kodun yürütülmesini sağlayan MIR (orta düzey IR), Rust derleyicisinde kullanılır). Proje, hızlı ve kompakt tercümanların ve JIT'in uygulanması için bir çerçeve sağlamayı amaçlamaktadır. Proje kodu C dilinde yazılmıştır ve tarafından dağıtıldı MIT lisansı altında.

Mevcut geliştirme aşamasında, MIR'in ara temsiline yönelik çevirmenler hazırlanmaktadır. C dili ve bit kodu LLVM (Bitcode), ancak gelecekte WebAssembly için MIR, Java bayt kodu oluşturma yeteneğinin uygulanması planlanmaktadır. CIL (Ortak Orta Dil), Rust ve C++. Proje, JIT motoru geliştiricilerinden biri tarafından geliştiriliyor MJIT, Ruby'de kullanılır. Öncelikle MIR tabanlı JIT'in uygulanması planlanıyor. CRuby и MRuby. Gelecekte GCC'yi MIR kullanacak şekilde taşımak da mümkün.

Red Hat, MIR JIT derleyicisini geliştirdi

Ara MIR kodu ikili ve metin (okunabilir) biçimde sunulabilir. Bu kod bir yorumlayıcıda çalıştırılabilir ve buna dayalı olarak makine kodu oluşturulabilir (x86_64, ARM64, PPC64 ve MIPS64 planlarında). MIR'den CIL'ye, Java bayt koduna, WebAssembly'ye ve C koduna ters dönüşüm gerçekleştirmek de mümkündür.

MIR'ın özellikleri arasında katı yazım, modül ve işlevler için destek, tür dönüşümü için bir dizi talimat sağlanması, karşılaştırma, aritmetik ve mantıksal işlemler, dallanma vb. öne çıkıyor. MIR formatına dönüştürülmüş bir dizi işlevi içeren modüller, kitaplıklar biçiminde yüklenebilir ve ayrıca harici C kodunu da yükleyebilir.

Red Hat, MIR JIT derleyicisini geliştirdiRed Hat, MIR JIT derleyicisini geliştirdi

Yerel yürütülebilir dosyalar halinde derlemek yerine ara kodu JIT'te yürütmenin temel avantajı, farklı donanım mimarilerinde (x86, ARM, PPC, MIPS) yeniden oluşturma gerekmeden yürütülebilecek kompakt dosyalar oluşturma yeteneğidir. Desteklenmeyen mimariler için, MIR durumunda JIT'den 6-10 kat daha yavaş olan bir yorumlama modu mevcuttur.

Mevcut JIT derleyicilerinin dezavantajları
GCC ve LLVM'nin aşırı derecede şişirildiği, derleme hızının düşük olduğu ve farklı programlama dilleri için birleşik optimizasyonların uygulanmasının zor olduğu söyleniyor. MIR geliştiricileri bunları çözmeye çalıştı
Sorunlar ve hedefler belirleyin:

  • MIR'deki derleme, GCC'dekinden en az 100 kat daha hızlı olmalıdır;
  • MIR yürütmesi için JIT çok kompakt olmalı ve yaklaşık 15 bin satır kod içermelidir;
  • JIT kullanarak MIR'yi yürütmek, GCC'deki aynı C kodundan derlenen ("-O30" optimizasyonlarıyla) bir yürütülebilir dosyanın performansından %2'dan daha yavaş olmamalıdır;
  • Gerçek yürütme başlamadan önceki başlatma aşamaları 100 kat daha az zaman alacaktır;
  • JIT'in MIR temsili, GCC'de derlenen yürütülebilir dosyadan 100 kat daha küçük olmalıdır.

Mevcut haliyle, MIR uygulaması birçok açıdan başlangıçta belirlenen hedeflerin ilerisindedir: testler, MIR'deki derleme performansının "GCC -O2"den 178 kat daha hızlı olduğunu, yürütme performansının yerel kodun %6 gerisinde olduğunu, kod boyutunun ise %144 olduğunu göstermiştir. 16 kat daha küçük olan MIR uygulaması JIT, XNUMX bin kod satırıdır.

Red Hat, MIR JIT derleyicisini geliştirdi

Kaynak: opennet.ru

Yorum ekle