Red Hat tsim MIR JIT compiler

Hauv Red Hat kev txhim kho tab tom ua tshiab lub teeb yuag JIT compiler HLUA, uas ua kom muaj kev ua tiav ntawm cov lej uas yav dhau los tau hloov pauv mus rau tus sawv cev nruab nrab MIR (Medium Internal Representation, tsis txhob tsis meej pem nrog lwm tus sawv cev nruab nrab. HLUA (ib nrab-theem IR), siv nyob rau hauv Rust compiler). Lub hom phiaj yog los muab lub hauv paus rau kev siv ceev ceev thiab cov neeg txhais lus thiab JIT. Qhov project code yog sau rau hauv C thiab faib los ntawm nyob rau hauv MIT daim ntawv tso cai.

Nyob rau theem tam sim no ntawm kev txhim kho, cov neeg txhais lus rau hauv nruab nrab sawv cev ntawm MIR tau npaj rau C lus thiab bitcode LLVM (Bitcode), tab sis yav tom ntej nws tau npaj los siv lub peev xwm los tsim MIR rau WebAssembly, Java bytecode, CIL (Common Intermediate Language), Rust thiab C++. Qhov project yog tsim los ntawm ib qho ntawm JIT engine developers MJIT, siv hauv Ruby. Ua ntej tshaj plaws, JIT raws li MIR tau npaj los ua kom tiav Cruby ΠΈ Mruby. Nyob rau hauv lub neej yav tom ntej, nws kuj tseem tuaj yeem xa mus rau GCC siv MIR.

Red Hat tsim MIR JIT compiler

Qhov nruab nrab MIR code tuaj yeem nthuav tawm hauv binary thiab ntawv nyeem (nyeem tau) daim ntawv. Cov lej no tuaj yeem ua tiav hauv tus neeg txhais lus thiab lub tshuab code tuaj yeem tsim tawm raws li nws (x86_64, hauv ARM64, PPC64 thiab MIPS64 cov phiaj xwm). Nws tseem tuaj yeem ua qhov rov qab hloov dua siab tshiab - los ntawm MIR rau CIL, Java bytecode, WebAssembly thiab C code.

Ntawm cov yam ntxwv ntawm MIR, kev ntaus ntawv nruj, kev txhawb nqa rau cov qauv thiab kev ua haujlwm, kev muab cov lus qhia rau kev hloov pauv hom, kev sib piv, lej lej thiab kev ua haujlwm, kev sib txuas, thiab lwm yam sawv ntsug. Modules, uas suav nrog cov txheej txheem ntawm kev hloov pauv mus rau MIR hom, tuaj yeem thauj khoom hauv cov tsev qiv ntawv, thiab tuaj yeem thauj khoom sab nraud C code.

Red Hat tsim MIR JIT compilerRed Hat tsim MIR JIT compiler

Qhov txiaj ntsig tseem ceeb ntawm kev ua tiav cov lej nruab nrab hauv JIT es tsis txhob muab tso ua ke rau hauv cov ntaub ntawv ua tiav ib txwm muaj yog lub peev xwm los tsim cov ntaub ntawv compact uas tuaj yeem ua tiav yam tsis tau rov tsim kho ntawm cov khoom siv sib txawv (x86, ARM, PPC, MIPS). Rau cov qauv uas tsis muaj kev txhawb nqa, muaj kev txhais lus hom, uas nyob rau hauv rooj plaub ntawm MIR yog 6-10 npaug qeeb dua JIT.

Qhov tsis zoo ntawm JIT compilers uas twb muaj lawm
GCC thiab LLVM tau hais tias yog khaus dhau, muaj kev sib sau ua ke tsawg, thiab nyuaj rau kev siv cov kev sib xyaw ua ke rau cov lus sib txawv. MIR developers sim daws cov no
teeb meem thiab teeb lub hom phiaj:

  • Muab tso ua ke hauv MIR yuav tsum muaj tsawg kawg yog 100 npaug sai dua hauv GCC;
  • Lub JIT rau MIR kev ua tiav yuav tsum yog qhov sib zog heev thiab suav nrog kwv yees li 15 txhiab kab ntawm txoj cai;
  • Kev ua tiav MIR siv JIT yuav tsum tsis pub ntau tshaj 30% qeeb dua qhov kev ua tau zoo ntawm kev ua tiav suav nrog los ntawm tib C code hauv GCC (nrog "-O2" optimizations);
  • Cov theem pib ua ntej pib ua tiav yuav tsum siv sijhawm tsawg dua 100 zaug;
  • Tus sawv cev MIR rau JIT yuav tsum yog 100 npaug me dua li qhov kev ua tiav tau muab tso ua ke hauv GCC.

Nyob rau hauv nws daim ntawv tam sim no, MIR kev siv yog nyob rau hauv ntau txoj hauv kev ua ntej ntawm lub hom phiaj pib: cov kev ntsuam xyuas tau pom tias kev sib sau ua ke hauv MIR yog 2 lub sij hawm sai dua "GCC -O178", kev ua tiav yog 6% tom qab haiv neeg, cov lej loj. yog 144 lub sij hawm me me, MIR kev siv JIT yog 16 txhiab kab ntawm txoj cai.

Red Hat tsim MIR JIT compiler

Tau qhov twg los: opennet.ru

Ntxiv ib saib