Red Hat imapanga compiler ya MIR JIT

Pa Red Hat chitukuko chikuchitika new lightweight JIT compiler INE, zomwe zimatsimikizira kukhazikitsidwa kwa code yomwe idasinthidwa kale kukhala choyimira chapakati MIR (Medium Internal Representation, kuti isasokonezedwe ndi choyimira china chapakati INE (pakati-level IR), yogwiritsidwa ntchito mu Rust compiler). Ntchitoyi ikufuna kupereka dongosolo lothandizira omasulira achangu komanso omveka bwino komanso JIT. Khodi ya polojekitiyi yalembedwa mu C ndi wogawidwa ndi pansi pa layisensi ya MIT.

Pakali pano, omasulira oyimira pakati pa MIR akonzekera C chinenero ndi bitcode Zithunzi za LLVM (Bitcode), koma mtsogolomo zikukonzekera kukhazikitsa kuthekera kopanga MIR kwa WebAssembly, Java bytecode, CIL (Common Intermediate Language), Rust ndi C ++. Ntchitoyi ikupangidwa ndi m'modzi mwa opanga injini ya JIT MJIT, amagwiritsidwa ntchito mu Ruby. Choyamba, JIT yochokera ku MIR ikukonzekera kukhazikitsidwa Cruby ΠΈ MRuby. M'tsogolomu, ndizothekanso kuyika GCC kugwiritsa ntchito MIR.

Red Hat imapanga compiler ya MIR JIT

Khodi yapakatikati ya MIR imatha kuperekedwa mu mawonekedwe a binary ndi zolemba (zowerengeka). Khodi iyi ikhoza kuchitidwa motanthauzira ndipo makina amakina amatha kupangidwa motengera (x86_64, mu mapulani a ARM64, PPC64 ndi MIPS64). Ndizothekanso kutembenuzanso - kuchokera ku MIR kupita ku CIL, Java bytecode, WebAssembly ndi C code.

Zina mwa zinthu za MIR, kulemba mosamalitsa, kuthandizira ma modules ndi ntchito, kupereka malangizo a kutembenuka kwa mtundu, kuyerekezera, masamu ndi ntchito zomveka, nthambi, ndi zina zotero. Ma modules, omwe amaphatikizapo ntchito zosinthidwa kukhala mawonekedwe a MIR, amatha kuikidwa ngati malaibulale, komanso amathanso kuyika C code yakunja.

Red Hat imapanga compiler ya MIR JITRed Hat imapanga compiler ya MIR JIT

Ubwino waukulu wogwiritsa ntchito nambala yapakatikati mu JIT m'malo mophatikiza mafayilo omwe angakwaniritsidwe ndikutha kupanga mafayilo ophatikizika omwe amatha kupangidwa popanda kumangidwanso pamapangidwe osiyanasiyana a hardware (x86, ARM, PPC, MIPS). Kwa zomangamanga zosagwiritsidwa ntchito, njira yomasulira ikupezeka, yomwe pa MIR ndi 6-10 nthawi pang'onopang'ono kuposa JIT.

Zoyipa za opanga ma JIT omwe alipo
GCC ndi LLVM akuti ndi otupa kwambiri, ali ndi liwiro lochepa lophatikizira, ndipo ndizovuta kukhazikitsa kukhathamiritsa kophatikizana kwa zilankhulo zosiyanasiyana zamapulogalamu. Opanga MIR anayesa kuthetsa izi
mavuto ndi kupanga zolinga:

  • Kuphatikizika mu MIR kuyenera kukhala mwachangu nthawi 100 kuposa ku GCC;
  • JIT ya kuphedwa kwa MIR iyenera kukhala yaying'ono kwambiri ndikuphatikiza mizere pafupifupi 15 zikwi;
  • Kugwiritsa ntchito MIR pogwiritsa ntchito JIT kuyenera kusachepera 30% pang'onopang'ono kuposa momwe angagwiritsire ntchito omwe adapangidwa kuchokera ku code C yomweyi mu GCC (yokhala ndi "-O2" kukhathamiritsa);
  • Magawo oyambira asanayambe kuphedwa kwenikweni ayenera kutenga nthawi yocheperako nthawi 100;
  • Kuyimilira kwa MIR kwa JIT kuyenera kukhala kocheperako ka 100 kuposa komwe kungaphatikizidwe mu GCC.

M'mawonekedwe ake apano, kukhazikitsidwa kwa MIR kuli patsogolo m'njira zambiri patsogolo pazifukwa zomwe zidakhazikitsidwa poyamba: mayeso awonetsa kuti kuphatikizika kwa MIR kumathamanga nthawi 2 kuposa "GCC-O178", magwiridwe antchito ndi 6% kuseri kwa ma code, kukula kwa code. ndi yaying'ono nthawi 144, kukhazikitsa kwa MIR JIT ndi mizere 16 zikwi za code.

Red Hat imapanga compiler ya MIR JIT

Source: opennet.ru

Kuwonjezera ndemanga