Red Hat MIR JIT kompilyatorunu hazırlayır

Red Hat-da inkişafı davam edir yeni yüngül JIT tərtibçisi MIR, əvvəllər aralıq təmsilçiliyə çevrilmiş kodun icrasını təmin edən MIR (Medium Internal Representation, başqa ara təmsilçiliklə qarışdırılmamalıdır) MIR (orta səviyyəli IR), Rust kompilyatorunda istifadə olunur). Layihənin məqsədi sürətli və yığcam tərcüməçilərin və JIT-in tətbiqi üçün çərçivə təmin etməkdir. Layihə kodu C və dilində yazılmışdır yayılır MIT lisenziyası altında.

Hazırkı inkişaf mərhələsində MIR-in aralıq nümayəndəliyinə tərcüməçilər hazırlanır C dili və bitkod LLVM (Bitcode), lakin gələcəkdə WebAssembly, Java bayt kodu üçün MIR yaratmaq qabiliyyətinin həyata keçirilməsi planlaşdırılır. CIL (Ümumi Orta Dil), Rust və C++. Layihə JIT mühərrik tərtibatçılarından biri tərəfindən hazırlanır MJIT, Ruby-də istifadə olunur. İlk növbədə MIR əsasında JIT-in həyata keçirilməsi planlaşdırılır CRuby и MRuby. Gələcəkdə MIR-dən istifadə etmək üçün GCC portu da mümkündür.

Red Hat MIR JIT kompilyatorunu hazırlayır

Aralıq MIR kodu ikili və mətn (oxunan) formada təqdim edilə bilər. Bu kod tərcüməçidə icra oluna bilər və onun əsasında maşın kodu yaradıla bilər (x86_64, ARM64, PPC64 və MIPS64 planlarında). Ters çevrilməni də həyata keçirmək mümkündür - MIR-dən CIL-ə, Java bayt koduna, WebAssembly və C koduna.

MİR-in xüsusiyyətləri arasında ciddi şəkildə yazım, modul və funksiyaların dəstəklənməsi, tipin dəyişdirilməsi, müqayisəsi, hesab və məntiqi əməliyyatlar, budaqlanma və s. MIR formatına çevrilmiş bir sıra funksiyaları ehtiva edən modullar kitabxanalar şəklində yüklənə bilər və həmçinin xarici C kodunu yükləyə bilər.

Red Hat MIR JIT kompilyatorunu hazırlayırRed Hat MIR JIT kompilyatorunu hazırlayır

Doğma icra edilə bilən fayllara tərtib etmək əvəzinə JIT-də aralıq kodun icrasının əsas üstünlüyü müxtəlif aparat arxitekturalarında (x86, ARM, PPC, MIPS) yenidən qurulmadan icra oluna bilən kompakt fayllar yaratmaq imkanıdır. Dəstəklənməyən arxitekturalar üçün MIR vəziyyətində JIT-dən 6-10 dəfə yavaş olan şərh rejimi mövcuddur.

Mövcud JIT kompilyatorlarının çatışmazlıqları
GCC və LLVM-nin həddən artıq şişkin olduğu, aşağı tərtib sürətinə malik olduğu və müxtəlif proqramlaşdırma dilləri üçün birləşdirilmiş optimallaşdırmaların həyata keçirilməsinin çətin olduğu deyilir. MIR tərtibatçıları bunları həll etməyə çalışdılar
problemlər və müəyyən məqsədlər:

  • MIR-də tərtib GCC-dən ən azı 100 dəfə daha sürətli olmalıdır;
  • MIR-in icrası üçün JIT çox yığcam olmalıdır və təxminən 15 min sətir kod ehtiva etməlidir;
  • JIT-dən istifadə edərək MIR-in icrası GCC-də eyni C kodundan tərtib edilmiş icra olunanın performansından 30%-dən çox yavaş olmamalıdır (“-O2” optimallaşdırmaları ilə);
  • Faktiki icraya başlamazdan əvvəl başlatma mərhələləri 100 dəfə az vaxt aparmalıdır;
  • JIT üçün MIR təqdimatı GCC-də tərtib edilmiş icra olunandan 100 dəfə kiçik olmalıdır.

Hazırkı formada MIR tətbiqi bir çox cəhətdən ilkin qarşıya qoyulan məqsədləri qabaqlayır: sınaqlar göstərdi ki, MIR-də tərtibetmə performansı “GCC -O2” ilə müqayisədə 178 dəfə sürətlidir, icra performansı yerli koddan 6% geri qalır, kod ölçüsü 144 dəfə kiçikdir, MIR tətbiqi JIT 16 min sətir koddur.

Red Hat MIR JIT kompilyatorunu hazırlayır

Mənbə: opennet.ru

Добавить комментарий