Red Hat inogadzira MIR JIT compiler

PaRed Hat budiriro iri kuitika itsva lightweight JIT compiler INI, iyo inovimbisa kuitwa kwekodhi iyo yakamboshandurwa kuita inomiririra yepakati MIR (Medium Internal Representation, kuti isavhiringike neimwe mumiriri wepakati. INI (yepakati-level IR), inoshandiswa muRust compiler). Chirongwa ichi chine chinangwa chekupa hurongwa hwekushandisa vaturikiri vanokurumidza uye vakakwana uye JIT. Iyo kodhi yeprojekiti yakanyorwa muC uye inoparadzirwa ne pasi peMIT rezinesi.

Padanho razvino rebudiriro, vashanduri vanomiririra yepakati MIR vanogadzirirwa C mutauro uye bitcode LLVM (Bitcode), asi mune ramangwana rakarongwa kuita kugona kugadzira MIR yeWebAssembly, Java bytecode, CIL (Common Intermediate Mutauro), Rust uye C ++. Iyo purojekiti iri kuvandudzwa neimwe yeJIT injini vanogadzira MJIT, rinoshandiswa muna Ruby. Chekutanga pane zvese, JIT yakavakirwa paMIR yakarongwa kuti ishandiswe CRuby ΠΈ MRuby. Mune ramangwana, zvinogoneka zvakare kutakura GCC kushandisa MIR.

Red Hat inogadzira MIR JIT compiler

Iyo yepakati MIR kodhi inogona kuratidzwa mune binary uye zvinyorwa (zvinoverengwa) fomu. Iyi kodhi inogona kuitwa mumuturikiri uye kodhi yemuchina inogona kugadzirwa zvichibva pairi (x86_64, muARM64, PPC64 neMIPS64 zvirongwa). Izvo zvakare zvinogoneka kuita reverse shanduko - kubva MIR kuenda kuCIL, Java bytecode, WebAssembly uye C kodhi.

Pakati pezvinhu zveMIR, kunyatso typing, tsigiro yemamodule uye mabasa, kupihwa kweseti yemirairo yemhando yekushandura, kuenzanisa, arithmetic uye zvine musoro mashandiro, branching, nezvimwe. Mamodule, ayo anosanganisira seti yemabasa akachinjirwa kuMIR fomati, anogona kutakurwa muchimiro chemaraibhurari, uye anogona zvakare kurodha ekunze C kodhi.

Red Hat inogadzira MIR JIT compilerRed Hat inogadzira MIR JIT compiler

Mukana wakakosha wekuita kodhi yepakati muJIT pachinzvimbo chekunyora mumafaira ekuzvarwa anogona kuburitsa mafaera akakwana anogona kuitwa pasina kuvaka patsva pane akasiyana madhizaini ekuvaka (x86, ARM, PPC, MIPS). Kune mavakirwo asina kutsigirwa, nzira yekududzira inowanikwa, iyo kana MIR iri 6-10 nguva inononoka kupfuura JIT.

Zvakaipa zvezviripo JIT compilers
GCC neLLVM dzinonzi dzakaputika zvakanyanya, dzine kumhanya kwakaderera, uye dzakaoma kuita zvakasanganiswa optimizations yemitauro yakasiyana yekuronga. Vagadziri veMIR vakaedza kugadzirisa izvi
matambudziko uye isa zvinangwa:

  • Kuunganidza muMIR kunofanirwa kunge kuri kukurumidza ka100 kupfuura muGCC;
  • Iyo JIT yeMIR kuuraya inofanirwa kuve yakanyanya compact uye inosanganisira ingangoita zviuru gumi neshanu mitsetse yekodhi;
  • Kuita MIR uchishandisa JIT hakufanirwe kunonoka kudarika 30% pane kuita kwechinhu chinogoneka chakaunganidzwa kubva kune imwecheteyo C kodhi muGCC (ine "-O2" optimizations);
  • Matanho ekutanga kuurayiwa chaiko kusati kwatanga kunofanirwa kutora ka100 nguva shoma;
  • Iyo MIR inomiririra yeJIT inofanira kunge iri diki ka100 pane inotevedzwa inounganidzwa muGCC.

Mune chimiro chayo chazvino, iyo MIR kuitiswa kuri munzira dzakawanda pamberi pezvinangwa zvakatarwa: bvunzo dzakaratidza kuti kuunganidza kuita muMIR kuri kukurumidza ka2 kupfuura "GCC -O178", kuita kwekuita kuri 6% kuseri kwekodhi yeko, saizi yekodhi. idiki ka144, iyo MIR yekumisikidza JIT iri zviuru gumi nematanhatu mitsara yekodhi.

Red Hat inogadzira MIR JIT compiler

Source: opennet.ru

Voeg