Red Hat þróar MIR JIT þýðanda

Á Red Hat þróun í gangi nýr léttur JIT þýðanda ÉG, sem tryggir framkvæmd kóða sem áður hefur verið breytt í milliframsetningu MIR (Medium Internal Representation, má ekki rugla saman við aðra milliframsetningu ÉG (miðstig IR), notað í Rust þýðandanum). Verkefnið miðar að því að skapa ramma til að innleiða hraðvirka og þétta túlka og JIT. Verkefnakóði er skrifaður í C ​​og dreift af undir MIT leyfi.

Á núverandi þróunarstigi eru þýðendur í milliframsetningu MIR undirbúnir C tungumál og bitakóði LLVM (Bitcode), en í framtíðinni er fyrirhugað að innleiða getu til að búa til MIR fyrir WebAssembly, Java bytecode, CIL (Algengt millimál), Ryð og C++. Verkefnið er þróað af einum af JIT vélarframleiðendum MJIT, notað í Ruby. Í fyrsta lagi er fyrirhugað að innleiða JIT byggt á MIR CRuby и MRuby. Í framtíðinni er einnig hægt að flytja GCC til að nota MIR.

Red Hat þróar MIR JIT þýðanda

MIR-millikóðann er hægt að setja fram á tvíundar- og textaformi (læsilegt). Hægt er að keyra þennan kóða í túlki og hægt er að búa til vélkóða út frá honum (x86_64, í ARM64, PPC64 og MIPS64 áætlunum). Það er líka mögulegt að framkvæma andstæða umbreytingu - frá MIR til CIL, Java bætikóða, WebAssembly og C kóða.

Meðal eiginleika MIR, ströng vélritun, stuðningur við einingar og aðgerðir, útvegun leiðbeininga um tegundabreytingu, samanburð, reikni- og rökfræðilegar aðgerðir, greiningar o.s.frv. Einingar, sem innihalda mengi aðgerða sem breytt er í MIR sniðið, er hægt að hlaða í formi bókasöfn og geta einnig hlaðið utanaðkomandi C kóða.

Red Hat þróar MIR JIT þýðandaRed Hat þróar MIR JIT þýðanda

Helsti kosturinn við að keyra millikóða í JIT í stað þess að safna saman í innfæddar keyranlegar skrár er hæfileikinn til að búa til þéttar skrár sem hægt er að keyra án þess að endurbyggja á mismunandi vélbúnaðararkitektúr (x86, ARM, PPC, MIPS). Fyrir óstuddan arkitektúr er túlkunarhamur tiltækur, sem í tilfelli MIR er 6-10 sinnum hægari en JIT.

Ókostir núverandi JIT þýðenda
Sagt er að GCC og LLVM séu of uppblásin, hafi lágan safnhraða og erfitt sé að innleiða samsetta hagræðingu fyrir mismunandi forritunarmál. MIR verktaki reyndu að leysa þetta
vandamál og sett markmið:

  • Samantekt í MIR ætti að vera að minnsta kosti 100 sinnum hraðari en í GCC;
  • JIT fyrir MIR framkvæmd verður að vera mjög þéttur og innihalda um það bil 15 þúsund línur af kóða;
  • Framkvæmd MIR með JIT ætti ekki að vera meira en 30% hægari en frammistaða keyrslu sem er unnin úr sama C kóða í GCC (með "-O2" fínstillingum);
  • Frumstillingarstig áður en raunveruleg framkvæmd hefst ættu að taka 100 sinnum styttri tíma;
  • MIR framsetningin fyrir JIT verður að vera 100 sinnum minni en keyrsluefnið sem er safnað saman í GCC.

Í núverandi mynd er MIR innleiðingin að mörgu leyti á undan settum markmiðum í upphafi: prófanir hafa sýnt að samantektarafköst í MIR eru 2 sinnum hraðari en „GCC -O178“, frammistaða framkvæmdar er 6% á eftir innfæddum kóða, kóðastærð er 144 sinnum minni, MIR útfærslan JIT er 16 þúsund línur af kóða.

Red Hat þróar MIR JIT þýðanda

Heimild: opennet.ru

Bæta við athugasemd