Bidh Red Hat a’ leasachadh inneal-cruinneachaidh MIR JIT

Aig Red Hat leasachadh a’ dol air adhart inneal-cruinneachaidh JIT aotrom ùr ME, a nì cinnteach gun tèid còd a chur an gnìomh a chaidh a thionndadh roimhe gu riochdachadh eadar-mheadhanach MIR (Riochdachadh Meadhanach Taobh a-staigh, gun a bhith air a mheasgadh le riochdachadh eadar-mheadhanach eile ME (IR meadhan-ìre), air a chleachdadh anns an inneal-cruinneachaidh Rust). Tha am pròiseact ag amas air frèam a sholarachadh airson eadar-mhìnearan luath is teann agus JIT. Tha còd a’ phròiseict sgrìobhte ann an C agus air a sgaoileadh le fo chead MIT.

Aig an ìre leasachaidh làithreach, thathar ag ullachadh airson eadar-theangairean gu riochdachadh eadar-mheadhanach MIR C cànan agus bitcode LLVM (Bitcode), ach san àm ri teachd thathar an dùil an comas MIR a ghineadh airson WebAssembly, Java bytecode, a chuir an gnìomh. CIL (Cànan Meadhanach Coitcheann), Rust agus C ++. Tha am pròiseact ga leasachadh le fear de luchd-leasachaidh einnsean JIT MJIT, air a chleachdadh ann an Ruby. An toiseach, thathar an dùil JIT stèidhichte air MIR a bhuileachadh CRubaidh и MRUbaidh. Anns an àm ri teachd, tha e comasach cuideachd port GCC a chleachdadh MIR.

Bidh Red Hat a’ leasachadh inneal-cruinneachaidh MIR JIT

Faodar an còd MIR eadar-mheadhanach a thaisbeanadh ann an cruth dà-chànanach agus teacsa (leughaidh). Faodar an còd seo a chuir gu bàs ann an eadar-theangair agus faodar còd inneal a chruthachadh stèidhichte air (x86_64, ann am planaichean ARM64, PPC64 agus MIPS64). Tha e comasach cuideachd an tionndadh air ais a dhèanamh - bho MIR gu CIL, Java bytecode, WebAssembly agus còd C.

Am measg feartan MIR, tha clò-sgrìobhadh teann, taic airson modalan agus gnìomhan, solarachadh seata de stiùiridhean airson tionndadh seòrsa, coimeas, obair àireamhachd agus loidsigeach, branching, msaa. Faodar modalan, a tha a’ toirt a-steach seata de ghnìomhan air an atharrachadh gu cruth MIR, a luchdachadh ann an cruth leabharlannan, agus faodaidh iad còd C taobh a-muigh a luchdachadh cuideachd.

Bidh Red Hat a’ leasachadh inneal-cruinneachaidh MIR JITBidh Red Hat a’ leasachadh inneal-cruinneachaidh MIR JIT

Is e am prìomh bhuannachd a bhith a’ cur an gnìomh còd eadar-mheadhanach ann an JIT an àite a bhith a’ cur ri chèile ann am faidhlichean so-ghnìomhaichte dùthchasach an comas faidhlichean teann a ghineadh a ghabhas cur an gnìomh gun a bhith ag ath-thogail air diofar ailtireachd bathar-cruaidh (x86, ARM, PPC, MIPS). Airson ailtireachd gun taic, tha modh eadar-mhìneachaidh ri fhaighinn, a tha ann an cùis MIR 6-10 tursan nas slaodaiche na JIT.

Eas-bhuannachdan bho luchd-cruinneachaidh JIT a tha ann mar-thà
Thathas ag ràdh gu bheil GCC agus LLVM ro shèideadh, gu bheil astar cruinneachaidh ìosal aca, agus gu bheil iad duilich optimizations aonaichte a chuir an gnìomh airson diofar chànanan prògramaidh. Dh'fheuch luchd-leasachaidh MIR ri fuasgladh fhaighinn orra sin
duilgheadasan agus amasan a shuidheachadh:

  • Bu chòir cruinneachadh ann am MIR a bhith co-dhiù 100 uair nas luaithe na ann an GCC;
  • Feumaidh an JIT airson coileanadh MIR a bhith gu math toinnte agus a bhith a’ toirt a-steach timcheall air 15 mìle loidhne de chòd;
  • Cha bu chòir coileanadh MIR a’ cleachdadh JIT a bhith nas fhaide na 30% nas slaodaiche na coileanadh gnìomh a chaidh a chuir ri chèile bhon aon chòd C ann an GCC (le optimizations “-O2”);
  • Bu chòir na h-ìrean tòiseachaidh mus tòisich an gnìomh gu bàs a bhith 100 uair nas lugha de ùine;
  • Feumaidh an riochdachadh MIR airson JIT a bhith 100 uair nas lugha na an coileanadh a chaidh a chur ri chèile ann an GCC.

Mar a tha e an-dràsta, tha buileachadh MIR ann an iomadh dòigh air thoiseach air na h-amasan a chaidh a shuidheachadh an toiseach: tha deuchainnean air sealltainn gu bheil coileanadh cruinneachaidh ann am MIR 2 uair nas luaithe na “GCC -O178”, tha coileanadh cur gu bàs 6% air cùl còd dùthchasach, meud a’ chòd 144 tursan nas lugha, tha buileachadh MIR JIT 16 mìle loidhne de chòd.

Bidh Red Hat a’ leasachadh inneal-cruinneachaidh MIR JIT

Source: fosgailtenet.ru

Cuir beachd ann