Red Hat компилятори MIR JIT-ро таҳия мекунад

Дар Red Hat тараккиёт давом дорад компилятори нави сабуки JIT МИР, ки иҷрои кодеро, ки қаблан ба намояндагии мобайнӣ табдил дода шуда буд, таъмин мекунад (Medium Internal Representation, набояд бо дигар намояндагии мобайнӣ омехта шавад. МИР (IR-сатҳи миёна), дар compiler Rust истифода мешавад). Ҳадафи лоиҳа фароҳам овардани чаҳорчӯба барои татбиқи тарҷумонҳои зуд ва паймон ва JIT мебошад. Рамзи лоиҳа дар C ва навишта шудааст паҳн мекунад таҳти иҷозатномаи MIT.

Дар марҳилаи кунунии рушд тарҷумонҳо ба намояндагии мобайнии MIR омодаанд Забони C ва биткод LLVM (Bitcode), аммо дар оянда ба нақша гирифта шудааст, ки қобилияти тавлиди MIR барои WebAssembly, Java bytecode, CIL (Забони мобайнии умумӣ), Rust ва C++. Лоиҳаро яке аз таҳиягарони муҳаррики JIT таҳия мекунад MJIT, дар Ruby истифода мешавад. Пеш аз ҳама, барои татбиқи JIT дар асоси MIR ба нақша гирифта шудааст CRuby и MRuby. Дар оянда, инчунин имконпазир аст, ки GCC-ро барои истифодаи MIR истифода баранд.

Red Hat компилятори MIR JIT-ро таҳия мекунад

Рамзи фосилавии MIR метавонад дар шакли дуӣ ва матнӣ (хондашаванда) пешниҳод карда шавад. Ин кодро метавон дар тарҷумон иҷро кард ва коди мошинро дар асоси он тавлид кардан мумкин аст (x86_64, дар нақшаҳои ARM64, PPC64 ва MIPS64). Инчунин имконпазир аст, ки табдили баръакс - аз MIR ба CIL, Java bytecode, WebAssembly ва C код.

Дар байни хусусиятҳои MIR чопкунии қатъӣ, дастгирии модулҳо ва функсияҳо, пешниҳоди маҷмӯи дастурҳо барои табдили намуд, муқоиса, амалҳои арифметикӣ ва мантиқӣ, шохасозӣ ва ғайра фарқ мекунанд. Модулҳое, ки маҷмӯи функсияҳои ба формати MIR табдилёфтаро дар бар мегиранд, метавонанд дар шакли китобхонаҳо бор карда шаванд ва инчунин метавонанд рамзи берунии C-ро бор кунанд.

Red Hat компилятори MIR JIT-ро таҳия мекунадRed Hat компилятори MIR JIT-ро таҳия мекунад

Бартарии калидии иҷро кардани коди фосилавӣ дар JIT ба ҷои тартиб додани файлҳои иҷрошавандаи ватанӣ қобилияти тавлиди файлҳои паймонест, ки онҳоро бе барқарорсозии сохторҳои сахтафзори гуногун (x86, ARM, PPC, MIPS) иҷро кардан мумкин аст. Барои меъмориҳои дастгирӣнашаванда, режими тафсир мавҷуд аст, ки дар ҳолати MIR нисбат ба JIT 6-10 маротиба сусттар аст.

Камбудиҳои таҳиякунандагони мавҷудаи JIT
Гуфта мешавад, ки GCC ва LLVM аз ҳад зиёд дабдабаноканд, суръати компиляция паст доранд ва татбиқи оптимизатсияи якҷоя барои забонҳои гуногуни барномасозӣ душвор аст. Таҳиягарони MIR кӯшиш карданд, ки онҳоро ҳал кунанд
мушкилот ва ҳадафҳои муқарраршуда:

  • Тартиб додан дар MIR бояд на камтар аз 100 маротиба тезтар аз GCC бошад;
  • JIT барои иҷрои MIR бояд хеле зич бошад ва тақрибан 15 ҳазор сатри кодро дар бар гирад;
  • Иҷрои MIR бо истифода аз JIT бояд на бештар аз 30% сусттар аз иҷрои файли иҷрошаванда аз ҳамон рамзи C дар GCC тартиб дода шавад (бо оптимизатсияи "-O2");
  • Марҳилаҳои оғозёбӣ то оғози иҷрои воқеӣ бояд 100 маротиба камтар вақтро дар бар гиранд;
  • Намоиши MIR барои JIT бояд аз файли иҷрошаванда дар GCC тартиб додашуда 100 маротиба хурдтар бошад.

Дар шакли ҳозираи худ, татбиқи MIR аз бисёр ҷиҳат аз ҳадафҳои дар аввал гузошташуда пеш аст: санҷишҳо нишон доданд, ки иҷрои компиляция дар MIR нисбат ба "GCC -O2 178 маротиба тезтар аст", иҷрои иҷроиш 6% пас аз рамзи аслӣ, андозаи код аст. 144 маротиба хурдтар, татбиқи MIR JIT 16 ҳазор сатри код аст.

Red Hat компилятори MIR JIT-ро таҳия мекунад

Манбаъ: opennet.ru

Илова Эзоҳ