Red Hat yana haɓaka MIR JIT compiler

A Red Hat ci gaban da ake yi sabon mai haɗa JIT mai sauƙi NI, wanda ke tabbatar da aiwatar da lambar da aka canza a baya zuwa matsakaicin matsakaici MIR (Matsakaicin Wakilin Cikin Gida, kada a rikita batun tare da wani matsakaicin wakilci. NI (IR-tsakiyar matakin), ana amfani da shi a cikin Rust compiler). Aikin yana nufin samar da tsari don aiwatar da sauri da ƙananan masu fassarar da JIT. An rubuta lambar aikin a cikin C da rarraba ta karkashin lasisin MIT.

A halin yanzu na ci gaba, ana shirya masu fassara a cikin tsaka-tsakin wakilci na MIR C harshe da kuma bitcode LLVM (Bitcode), amma a nan gaba an shirya aiwatar da ikon samar da MIR don WebAssembly, Java bytecode, CIL (Yaren Matsakaici na gama gari), Tsatsa da C++. Ɗaya daga cikin masu haɓaka injin JIT ne ke haɓaka aikin MJIT, ana amfani dashi a cikin Ruby. Da farko dai, ana shirin aiwatar da JIT bisa ga MIR CRUBY и MRuby. A nan gaba, kuma yana yiwuwa a yi amfani da tashar jiragen ruwa na GCC don amfani da MIR.

Red Hat yana haɓaka MIR JIT compiler

Matsakaicin lambar MIR za a iya gabatar da shi a cikin binary da rubutu (wanda za a iya karantawa). Ana iya aiwatar da wannan lambar a cikin mai fassara kuma ana iya samar da lambar injin bisa ta (x86_64, a cikin ARM64, PPC64 da tsare-tsaren MIPS64). Hakanan yana yiwuwa a yi jujjuyawar juzu'i - daga MIR zuwa CIL, Java bytecode, WebAssembly da lambar C.

Daga cikin fasalulluka na MIR, matsananciyar buga rubutu, tallafi ga kayayyaki da ayyuka, samar da saitin umarni don nau'in juzu'i, kwatancen, ƙididdiga da ayyukan ma'ana, reshe, da sauransu. Modules, waɗanda suka haɗa da saitin ayyuka waɗanda aka canza zuwa tsarin MIR, ana iya loda su ta hanyar ɗakin karatu, kuma suna iya loda lambar C na waje.

Red Hat yana haɓaka MIR JIT compilerRed Hat yana haɓaka MIR JIT compiler

Babban fa'idar aiwatar da lambar tsaka-tsaki a cikin JIT maimakon haɗawa cikin fayilolin aiwatarwa na asali shine ikon samar da ƙaramin fayiloli waɗanda za'a iya aiwatarwa ba tare da sake gina gine-ginen kayan masarufi daban-daban ba (x86, ARM, PPC, MIPS). Don gine-ginen da ba a tallafawa ba, ana samun yanayin fassarar, wanda a cikin yanayin MIR ya kasance sau 6-10 a hankali fiye da JIT.

Rashin lahani na masu tarawa JIT
GCC da LLVM an ce suna da kumbura fiye da kima, suna da ƙarancin saurin tattarawa, kuma suna da wahala a aiwatar da ingantaccen haɓakawa ga harsunan shirye-shirye daban-daban. Masu haɓaka MIR sun yi ƙoƙarin warware waɗannan
matsaloli da kafa maƙasudai:

  • Tarin a cikin MIR yakamata ya zama aƙalla sau 100 cikin sauri fiye da na GCC;
  • JIT don aiwatar da MIR dole ne ya kasance mai ƙarfi sosai kuma ya haɗa da kusan layin lamba 15;
  • Aiwatar da MIR ta amfani da JIT bai kamata ya zama ƙasa da 30% a hankali ba fiye da aikin aiwatarwa wanda aka tattara daga lambar C iri ɗaya a cikin GCC (tare da ingantawa "-O2");
  • Matakan farawa kafin a fara aiwatar da aiwatarwa yakamata su ɗauki sau 100 ƙasa da lokaci;
  • Wakilin MIR na JIT dole ne ya zama ƙasa da sau 100 fiye da wanda aka haɗa a cikin GCC.

A cikin tsari na yanzu, aiwatar da MIR yana cikin hanyoyi da yawa gaba da manufofin da aka tsara na farko: gwaje-gwaje sun nuna cewa aikin tattarawa a cikin MIR yana da sauri sau 2 fiye da "GCC -O178", aiwatar da aiwatarwa shine 6% a bayan lambar asali, girman lambar. shine sau 144 karami, aiwatar da MIR JIT shine layin lamba 16 dubu.

Red Hat yana haɓaka MIR JIT compiler

source: budenet.ru

Add a comment