Red Hat hutengeneza mkusanyaji wa MIR JIT

Kwenye Red Hat maendeleo yanaendelea mkusanyaji mpya mwepesi wa JIT MIR, ambayo inahakikisha utekelezaji wa kanuni ambazo hapo awali zimebadilishwa kuwa uwakilishi wa kati MIR (Uwakilishi wa Ndani wa Kati, usichanganywe na uwakilishi mwingine wa kati. MIR (IR ya kiwango cha kati), inayotumika katika mkusanyiko wa kutu). Mradi unalenga kutoa mfumo wa utekelezaji wa wakalimani wa haraka na wa pamoja na JIT. Nambari ya mradi imeandikwa katika C na kusambazwa na chini ya leseni ya MIT.

Katika hatua ya sasa ya maendeleo, watafsiri katika uwakilishi wa kati wa MIR wameandaliwa C lugha na bitcode 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 huo unaendelezwa na mmoja wa watengenezaji injini wa JIT MJIT, kutumika katika Ruby. Kwanza kabisa, JIT kulingana na MIR imepangwa kutekelezwa kwa CRuby ΠΈ MRuby. Katika siku zijazo, inawezekana pia kusafirisha GCC kutumia MIR.

Red Hat hutengeneza mkusanyaji wa MIR JIT

Nambari ya kati ya MIR inaweza kuwasilishwa kwa njia ya binary na maandishi (yanayoweza kusomeka). Msimbo huu unaweza kutekelezwa katika mkalimani na msimbo wa mashine unaweza kuzalishwa kulingana nayo (x86_64, katika mipango ya ARM64, PPC64 na MIPS64). Inawezekana pia kufanya ubadilishaji wa nyuma - kutoka MIR hadi CIL, Java bytecode, WebAssembly na C code.

Miongoni mwa vipengele vya MIR, uchapaji mkali, usaidizi wa moduli na kazi, utoaji wa seti ya maagizo ya uongofu wa aina, kulinganisha, shughuli za hesabu na mantiki, matawi, nk. Moduli, ambazo ni pamoja na seti ya kazi zilizobadilishwa kuwa umbizo la MIR, zinaweza kupakiwa katika mfumo wa maktaba, na pia zinaweza kupakia msimbo wa C wa nje.

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

Faida muhimu ya kutekeleza msimbo wa kati katika JIT badala ya kukusanya katika faili za asili zinazoweza kutekelezwa ni uwezo wa kutoa faili fupi ambazo zinaweza kutekelezwa bila kujenga upya kwenye usanifu tofauti wa maunzi (x86, ARM, PPC, MIPS). Kwa usanifu usioungwa mkono, hali ya kutafsiri inapatikana, ambayo katika kesi ya MIR ni mara 6-10 polepole kuliko JIT.

Hasara za wakusanyaji wa JIT zilizopo
GCC na LLVM zinasemekana kuwa na uvimbe kupita kiasi, zina kasi ya chini ya utungaji, na ni vigumu kutekeleza uboreshaji wa pamoja wa lugha tofauti za programu. Watengenezaji wa MIR walijaribu kutatua haya
matatizo na kuweka malengo:

  • Mkusanyiko katika MIR unapaswa kuwa angalau mara 100 haraka kuliko katika GCC;
  • JIT ya utekelezaji wa MIR lazima iwe thabiti sana na ijumuishe takriban mistari elfu 15 ya msimbo;
  • Utekelezaji wa MIR kwa kutumia JIT unapaswa kuwa polepole zaidi ya 30% kuliko utendakazi wa kitekelezo kilichokusanywa kutoka kwa msimbo sawa wa C katika GCC (pamoja 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 hali yake ya sasa, utekelezaji wa MIR uko kwa njia nyingi mbele ya malengo yaliyowekwa hapo awali: vipimo vimeonyesha kuwa utendaji wa mkusanyiko katika MIR ni mara 2 haraka kuliko "GCC -O178", utendaji wa utekelezaji ni 6% nyuma ya nambari asilia, saizi ya nambari. ni ndogo mara 144, utekelezaji wa MIR JIT ni mistari elfu 16 ya kanuni.

Red Hat hutengeneza mkusanyaji wa MIR JIT

Chanzo: opennet.ru

Kuongeza maoni