Red Hat devlope du MIR JIT

Nan Red Hat devlopman sou pye nouvo konpilatè JIT ki lejè Mir, ki asire ekzekisyon kòd ki te deja konvèti nan yon reprezantasyon entèmedyè MIR (Mwayen reprezantasyon entèn, pa dwe konfonn ak yon lòt reprezantasyon entèmedyè). Mir (MI-nivo IR), yo itilize nan du Rust la). Pwojè a gen pou objaktif pou bay yon fondasyon pou mete ann aplikasyon entèprèt rapid ak kontra enfòmèl ant ak JIT. Kòd pwojè a ekri nan C ak distribiye pa anba lisans MIT.

Nan etap aktyèl la nan devlopman, tradiktè nan reprezantasyon entèmedyè MIR yo prepare pou lang C ak bitkod LLVM (Bitcode), men nan tan kap vini an li planifye pou aplike kapasite pou jenere MIR pou WebAssembly, Java bytecode, CIL (Komen Lang Entèmedyè), Rust ak C++. Pwojè a ap devlope pa youn nan devlopè motè JIT yo MJIT, yo itilize nan Ruby. Premye a tout, JIT ki baze sou MIR planifye pou aplike pou CRuby и MRuby. Nan tan kap vini an, li posib tou pou pò GCC pou itilize MIR.

Red Hat devlope du MIR JIT

Kòd MIR entèmedyè a ka prezante nan fòm binè ak tèks (lizib). Kòd sa a ka egzekite nan yon entèprèt epi kòd machin yo ka pwodwi ki baze sou li (x86_64, nan plan ARM64, PPC64 ak MIPS64). Li posib tou pou fè konvèsyon ranvèse - soti nan MIR nan CIL, Java bytecode, WebAssembly ak kòd C.

Pami karakteristik yo nan MIR, sezisman strik, sipò pou modil ak fonksyon, dispozisyon yon seri enstriksyon pou konvèsyon kalite, konparezon, operasyon aritmetik ak lojik, branch, elatriye. Modil, ki gen ladan yon seri fonksyon konvèti nan fòma MIR, yo ka chaje nan fòm bibliyotèk, epi yo ka chaje ekstèn kòd C.

Red Hat devlope du MIR JITRed Hat devlope du MIR JIT

Avantaj kle nan egzekite kòd entèmedyè nan JIT olye pou yo konpile nan dosye natif natal ègzèkutabl se kapasite nan jenere dosye kontra enfòmèl ant ki ka egzekite san yo pa rebati sou diferan achitekti pyès ki nan konpitè (x86, ARM, PPC, MIPS). Pou achitekti ki pa sipòte, yon mòd entèpretasyon ki disponib, ki nan ka MIR se 6-10 fwa pi dousman pase JIT.

Dezavantaj ki deja egziste konpilateur JIT
GCC ak LLVM yo di yo twò gonfle, gen vitès konpilasyon ki ba, epi yo difisil pou aplike optimize konbine pou diferan lang pwogramasyon. Devlopè MIR yo te eseye rezoud sa yo
pwoblèm ak fikse objektif:

  • Konpilasyon nan MIR ta dwe omwen 100 fwa pi vit pase nan GCC;
  • JIT pou ekzekisyon MIR dwe trè kontra e li dwe genyen apeprè 15 mil liy kòd;
  • Egzekite MIR lè l sèvi avèk JIT ta dwe pa plis pase 30% pi dousman pase pèfòmans nan yon ègzèkutabl konpile nan menm kòd C nan GCC (ak "-O2" optimize);
  • Etap inisyalizasyon yo anvan egzekisyon aktyèl la kòmanse ta dwe pran 100 fwa mwens tan;
  • Reprezantasyon MIR pou JIT dwe 100 fwa pi piti pase ègzekutabl konpile nan GCC.

Nan fòm li ye kounye a, aplikasyon MIR a se nan plizyè fason devan objektif yo okòmansman te fikse: tès yo te montre ke pèfòmans konpilasyon nan MIR se 2 fwa pi vit pase "GCC -O178", pèfòmans ekzekisyon se 6% dèyè kòd natif natal, gwosè kòd la. se 144 fwa pi piti, aplikasyon MIR JIT se 16 mil liy kòd.

Red Hat devlope du MIR JIT

Sous: opennet.ru

Add nouvo kòmantè