Red Hat hutengeneza mkusanyaji wa MIR JIT

Katika Kofia Nyekundu maendeleo yanaendelea mkusanyiko mpya mwepesi wa JIT MIR, ambayo inahakikisha utekelezaji wa msimbo uliobadilishwa hapo awali kuwa uwakilishi wa kati MIR (Uwakilishi wa Ndani wa Kati, usichanganyike na uwakilishi mwingine wa kati MIR (IR ya kiwango cha kati) inayotumika katika kikusanyaji cha Rust). Mradi huu unalenga kutoa mfumo wa kutekeleza wakalimani na JIT za haraka na ndogo. Msimbo wa mradi umeandikwa kwa C na kusambazwa na chini ya leseni ya MIT.

Katika hatua ya sasa ya maendeleo, watafsiri wa MIR ya uwakilishi wa kati wameandaliwa kwa ajili ya C lugha na msimbo wa biti LLVM (Bitcode), lakini katika siku zijazo imepangwa kutekeleza uwezo wa kutengeneza MIR kwa WebAssembly, Java bytecode, CIL (Lugha ya Kawaida ya Kati), Rust, na C++. Mradi huu unatengenezwa na mmoja wa watengenezaji wa injini za JIT. MJIT, inayotumika katika Ruby. JIT yenye msingi wa MIR imepangwa kutekelezwa hasa kwa ajili ya CRuby и MRubyKatika siku zijazo, uwezekano wa kuhamisha GCC kutumia MIR pia haujatengwa.

Red Hat hutengeneza mkusanyaji wa MIR JIT

Msimbo wa kati wa MIR unaweza kuwakilishwa katika umbo la jozi na maandishi (yanayosomeka). Msimbo huu unaweza kutekelezwa katika mkalimani, na kutoa msimbo wa mashine kutoka kwake (x86_64, ukiwa na mipango ya ARM64, PPC64, na MIPS64). Ubadilishaji kinyume pia unawezekana—kutoka MIR hadi CIL, msimbo wa byte wa Java, WebAssembly, na msimbo wa C.

Vipengele muhimu vya MIR ni pamoja na uandishi thabiti, usaidizi wa moduli na vitendaji, na seti ya maagizo ya ubadilishaji wa aina, ulinganisho, shughuli za hesabu na kimantiki, matawi, na zaidi. Moduli, ambazo zinajumuisha seti ya vitendaji vilivyobadilishwa kuwa umbizo la MIR, zinaweza kupakiwa kama maktaba, na pia kupakia msimbo wa C wa nje.

Red Hat hutengeneza mkusanyaji wa MIR JITRed Hat hutengeneza mkusanyaji wa MIR JIT

Faida kuu ya kutekeleza msimbo wa kati katika JIT badala ya kuukusanya katika vitendaji asilia ni uwezo wa kutoa faili ndogo ambazo zinaweza kutekelezwa bila kukusanywa tena kwenye usanifu tofauti wa vifaa (x86, ARM, PPC, MIPS). Kwa usanifu usioungwa mkono, hali iliyotafsiriwa inapatikana, ambayo, katika kesi ya MIR, ni polepole mara 6-10 kuliko JIT.

Miongoni mwa mapungufu ya vikusanyaji vya JIT vilivyopo
GCC na LLVM zinakosolewa kwa wingi wao mwingi, kasi ya polepole ya mkusanyiko, na ugumu wa kutekeleza uboreshaji wa pamoja katika lugha tofauti za programu. Wasanidi programu wa MIR walijaribu kushughulikia masuala haya.
matatizo na kuweka malengo:

  • Mkusanyiko katika MIR unapaswa kuwa wa kasi zaidi ya mara 100 kuliko katika GCC;
  • JIT ya kutekeleza MIR lazima iwe ndogo sana na ijumuishe takriban mistari elfu 15 ya msimbo;
  • Utekelezaji wa MIR kwa kutumia JIT haupaswi kuwa wa polepole zaidi ya 30% kuliko utendaji wa faili inayoweza kutekelezwa iliyokusanywa kutoka kwa msimbo uleule wa C katika GCC (na uboreshaji wa "-O2");
  • Hatua za uanzishaji kabla ya utekelezaji halisi kuanza zinapaswa kuchukua muda mfupi mara 100;
  • Uwakilishi wa MIR kwa JIT lazima uwe mdogo mara 100 kuliko ule unaoweza kutekelezwa uliokusanywa katika GCC.

Katika umbo lake la sasa, utekelezaji wa MIR uko mbele zaidi ya malengo yake ya awali: majaribio yameonyesha kuwa utendaji wa mkusanyiko wa MIR ni wa kasi mara 178 kuliko GCC-O2, utendaji wa utekelezaji ni wa polepole kwa 6% kuliko msimbo asilia, ukubwa wa msimbo ni mdogo mara 144, na utekelezaji wa MIR JIT ni mistari 16 ya msimbo.

Red Hat hutengeneza mkusanyaji wa MIR JIT

Chanzo: opennet.ru

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS 🔥 Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster