Red Hat သည် MIR JIT compiler ကို ဖန်တီးသည်။

Red Hat မှာ ဖွံ့ဖြိုးတိုးတက်မှုဆောင်ရွက်ဆဲ ပေါ့ပါးသော JIT compiler အသစ် ငါယခင်က အလယ်အလတ်ကိုယ်စားပြု MIR (အလယ်အလတ်ကိုယ်စားပြုမှုအဖြစ်သို့ ပြောင်းလဲခဲ့သော ကုဒ်၏လုပ်ဆောင်မှုကို သေချာစေသည်၊ ၎င်းသည် အခြားအလယ်အလတ်ကိုယ်စားပြုမှုဖြင့် မရောထွေးစေဘဲ၊ ငါ (အလယ်အလတ်အဆင့် IR)၊ Rust compiler တွင်သုံးသည်။ ပရောဂျက်သည် လျင်မြန်ပြီး ကျစ်လစ်သော စကားပြန်များနှင့် JIT ကို အကောင်အထည်ဖော်ရန်အတွက် မူဘောင်တစ်ခု ပံ့ပိုးပေးရန် ရည်ရွယ်ပါသည်။ ပရောဂျက်ကုဒ်ကို C နဲ့ရေးထားတယ်။ ဖြန့်ဝေသည် MIT လိုင်စင်အောက်တွင်။

လက်ရှိ ဖွံ့ဖြိုးတိုးတက်မှု အဆင့်တွင်၊ MIR ၏ အလယ်အလတ် ကိုယ်စားပြုခြင်းသို့ ဘာသာပြန်သူများ အတွက် ပြင်ဆင်ထားပါသည်။ C ဘာသာစကား နှင့် bitcode LLVM (Bitcode)၊ သို့သော် အနာဂတ်တွင် WebAssembly၊ Java bytecode အတွက် MIR ထုတ်ပေးနိုင်စွမ်းကို အကောင်အထည်ဖော်ရန် စီစဉ်ထားသည်။ CIL (ဘုံအလယ်အလတ်ဘာသာစကား)၊ Rust နှင့် C++။ အဆိုပါပရောဂျက်ကို JIT အင်ဂျင်တီထွင်သူတစ်ဦးမှတီထွင်လျက်ရှိသည်။ MJITRuby မှာသုံးတယ်။ ပထမဦးစွာ၊ MIR ကိုအခြေခံသည့် JIT ကိုအကောင်အထည်ဖော်ရန်စီစဉ်ထားသည်။ ခရူဘီ и MRuby. အနာဂတ်တွင်၊ MIR ကိုအသုံးပြုရန် GCC ကိုလည်း ပို့နိုင်သည်။

Red Hat သည် MIR JIT compiler ကို ဖန်တီးသည်။

အလယ်အလတ် MIR ကုဒ်ကို binary နှင့် text (ဖတ်နိုင်သော) ပုံစံဖြင့် တင်ပြနိုင်သည်။ ဤကုဒ်ကို စကားပြန်ဖြင့် လုပ်ဆောင်နိုင်ပြီး ၎င်းကို အခြေခံ၍ စက်ကုဒ်ကို ထုတ်ပေးနိုင်သည် (x86_64၊ ARM64၊ PPC64 နှင့် MIPS64 အစီအစဉ်များတွင်)။ MIR မှ CIL၊ Java bytecode၊ WebAssembly နှင့် C ကုဒ်သို့ ပြောင်းပြန်ပြောင်းလဲခြင်းကိုလည်း လုပ်ဆောင်နိုင်သည်။

MIR ၏အင်္ဂါရပ်များထဲတွင်၊ တင်းကျပ်သောစာရိုက်ခြင်း၊ မော်ဂျူးများနှင့်လုပ်ဆောင်ချက်များအတွက် ပံ့ပိုးမှု၊ အမျိုးအစားပြောင်းလဲခြင်းအတွက် ညွှန်ကြားချက်အစုံအလင်ကို ပံ့ပိုးပေးခြင်း၊ နှိုင်းယှဉ်ခြင်း၊ ဂဏန်းသင်္ချာနှင့် ယုတ္တိဗေဒဆိုင်ရာလုပ်ဆောင်မှုများ၊ အကိုင်းအခက်များ စသဖြင့် ထင်ရှားပါသည်။ MIR ဖော်မတ်သို့ ပြောင်းထားသော လုပ်ဆောင်ချက်အစုံပါရှိသော မော်ဂျူးများကို စာကြည့်တိုက်ပုံစံဖြင့် တင်နိုင်သည့်အပြင် ပြင်ပ C ကုဒ်ကိုလည်း တင်နိုင်သည်။

Red Hat သည် MIR JIT compiler ကို ဖန်တီးသည်။Red Hat သည် MIR JIT compiler ကို ဖန်တီးသည်။

မူရင်း executable ဖိုင်များတွင် စုစည်းခြင်းအစား JIT တွင် အလယ်အလတ်ကုဒ်ကို လုပ်ဆောင်ခြင်း၏ အဓိကအားသာချက်မှာ မတူညီသော ဟာ့ဒ်ဝဲဗိသုကာများ (x86၊ ARM၊ PPC၊ MIPS) တွင် ပြန်လည်တည်ဆောက်ခြင်းမပြုဘဲ လုပ်ဆောင်နိုင်သော ကျစ်လစ်သောဖိုင်များကို ထုတ်လုပ်နိုင်ခြင်းဖြစ်သည်။ ပံ့ပိုးမထားသော ဗိသုကာလက်ရာများအတွက်၊ MIR ၏အခြေအနေတွင် JIT ထက် 6-10 ဆ ပိုနှေးကွေးသော အဓိပ္ပာယ်ဖွင့်ဆိုချက်မုဒ်ကို ရရှိနိုင်သည်။

လက်ရှိ JIT compilers များ၏ အားနည်းချက်များ
GCC နှင့် LLVM တို့သည် အလွန်ဖောင်းပွနေပြီး၊ စုစည်းမှုနှုန်းနည်းပါးပြီး မတူညီသော ပရိုဂရမ်ဘာသာစကားများအတွက် ပေါင်းစပ် optimizations များကို အကောင်အထည်ဖော်ရန် ခက်ခဲသည်ဟု ဆိုသည်။ MIR developer များသည် ယင်းတို့ကို ဖြေရှင်းရန် ကြိုးစားခဲ့ကြသည်။
ပြဿနာများနှင့် ပန်းတိုင်များ သတ်မှတ်ပါ-

  • MIR တွင် စုစည်းမှုသည် GCC ထက် အနည်းဆုံး အဆ 100 ပိုမြန်သင့်သည်။
  • MIR လုပ်ဆောင်မှုအတွက် JIT သည် အလွန်ကျစ်လျစ်ပြီး ကုဒ်လိုင်းပေါင်း 15 ခန့် ပါဝင်ရပါမည်။
  • JIT ကို အသုံးပြု၍ MIR ကို အကောင်အထည်ဖော်ခြင်းသည် GCC ရှိ တူညီသော C ကုဒ်မှ စုစည်းထားသော လုပ်ဆောင်ချက်ထက် 30% ထက် မပိုသင့်ပါ။
  • အမှန်တကယ် အကောင်အထည်ဖော်မှုမစတင်မီ ကနဦးအဆင့်များသည် အဆ 100 ပိုနည်းသင့်သည်။
  • JIT အတွက် MIR ကိုယ်စားပြုမှုသည် GCC တွင် ပြုစုထားသော လုပ်ဆောင်နိုင်သော လုပ်ဆောင်ချက်ထက် အဆ 100 သေးငယ်ရပါမည်။

၎င်း၏လက်ရှိပုံစံတွင်၊ MIR အကောင်အထည်ဖော်မှုသည် ကနဦးသတ်မှတ်ထားသောပန်းတိုင်များထက် များပြားသည်- စမ်းသပ်မှုများက MIR တွင်စုစည်းမှုစွမ်းဆောင်ရည်သည် "GCC -O2" ထက် 178 ဆပိုမိုမြန်ဆန်ကြောင်း၊ စီမံဆောင်ရွက်မှုစွမ်းဆောင်ရည်သည် မူလကုဒ်နောက်တွင် 6%၊ ကုဒ်အရွယ်အစား၊ 144 ဆ သေးငယ်သည်၊ MIR အကောင်အထည်ဖော်မှု JIT သည် ကုဒ်လိုင်းပေါင်း 16 ဖြစ်သည်။

Red Hat သည် MIR JIT compiler ကို ဖန်တီးသည်။

source: opennet.ru

မှတ်ချက် Add