Red Hat Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ MIR

Π’ компанията Red Hat ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π½ΠΎΠ² Π»Π΅ΠΊ JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ MIR, осигуряващ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½ Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ прСдставянС MIR (Medium Internal Representation, Π΄Π° Π½Π΅ сС Π±ΡŠΡ€ΠΊΠ° с Π΄Ρ€ΡƒΠ³ΠΎ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ прСдставянС MIR (mid-level IR), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Rust). ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ насочСн към прСдоставянС Π½Π° основа Π·Π° рСализация Π½Π° Π±ΡŠΡ€Π·ΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ JIT. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ написан Π½Π° Π΅Π·ΠΈΠΊΠ° C ΠΈ сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π· MIT.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° трансляторитС Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ прСдставянС MIR са ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π·Π° Π΅Π·ΠΈΠΊΠ° C ΠΈ Π±ΠΈΡ‚ΠΊΠΎΠ΄ LLVM (Bitcode), Π½ΠΎ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ сС ΠΏΠ»Π°Π½ΠΈΡ€Π° рСализация Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° MIR Π·Π° WebAssembly, Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Π½Π° Java, CIL (Common Intermediate Language), Rust ΠΈ C++. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ сС Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΎΡ‚ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° JIT двигатСля MJIT, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² Ruby. Най-Π½Π°ΠΏΡ€Π΅Π΄ JIT Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° MIR сС ΠΏΡ€Π΅Π΄Π²ΠΈΠΆΠ΄Π° Π΄Π° бъдС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π·Π° CRuby ΠΈ MRuby. Π’ Π±ΡŠΠ΄Π΅Ρ‰Π΅ ΡΡŠΡ‰ΠΎ Π½Π΅ сС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° GCC Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° MIR.

Red Hat Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ MIR

ΠœΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄ MIR ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС прСдставСн Π² Π±ΠΈΠ½Π°Ρ€Π΅Π½ ΠΈ тСкстов (Ρ‡ΠΈΡ‚Π°Π΅ΠΌ) Π²ΠΈΠ΄. Π’ΠΎΠ·ΠΈ ΠΊΠΎΠ΄ Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС изпълняван Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° машинСн ΠΊΠΎΠ΄ (x86_64, с ΠΏΠ»Π°Π½ΠΎΠ²Π΅ Π·Π° ARM64, PPC64 ΠΈ MIPS64). Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ β€” ΠΎΡ‚ MIR Π² CIL, Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Π½Π° Java, WebAssembly ΠΈ ΠΊΠΎΠ΄ Π½Π° Π΅Π·ΠΈΠΊΠ° C.

Π‘Ρ€Π΅Π΄ характСристикитС Π½Π° MIR сС откроява строга типизация, ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, прСдоставянС Π½Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ инструкции Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅, сравнСния, Π°Ρ€ΠΈΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‡Π½ΠΈ ΠΈ логичСски ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, разклонСния ΠΈ Ρ‚.Π½. ΠœΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ΠΈ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½ΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ MIR, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½ΠΈ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π΄Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‚ външСн ΠΊΠΎΠ΄ Π½Π° Π΅Π·ΠΈΠΊΠ° C.

Red Hat Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ MIRRed Hat Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ MIR

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΎΡ‚ΠΎ прСдимство Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° мСТдинния ΠΊΠΎΠ΄ Π² JIT вмСсто компилация Π² Π½Π°Ρ‚ΠΈΠ²Π½ΠΈ изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ (x86, ARM, PPC, MIPS). Π—Π° Π½Π΅ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° интСрпрСтация, ΠΊΠΎΠΉΡ‚ΠΎ Π² случай Π½Π° MIR Ρ€Π°Π±ΠΎΡ‚ΠΈ 6-10 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ ΠΎΡ‚ JIT.

Π‘Ρ€Π΅Π΄ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈΡ‚Π΅ Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ
GCC ΠΈ LLVM Π΅ тяхната ΠΏΡ€Π΅ΠΊΠ°Π»Π΅Π½Π° бройност, ниска скорост Π½Π° компилация ΠΈ трудност ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΅Π·ΠΈΡ†ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° MIR сС ΠΎΠΏΠΈΡ‚Π°Ρ…Π° Π΄Π° Ρ€Π΅ΡˆΠ°Ρ‚ Ρ‚Π΅Π·ΠΈ
ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ си поставиха Ρ†Π΅Π»ΠΈ:

  • ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡΡ‚Π° Π² MIR трябва Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΠΎΠ½Π΅ 100 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π² GCC;
  • JIT Π·Π° изпълнСниС Π½Π° MIR трябва Π΄Π° бъдС ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½ ΠΈ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΎΠΊΠΎΠ»ΠΎ 15 хиляди Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄;
  • Π˜Π·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° MIR с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° JIT Π½Π΅ Π±ΠΈΠ²Π° Π΄Π° Π΅ с ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 30% ΠΏΠΎ-Π±Π°Π²Π½ΠΎ ΠΎΡ‚ производитСлността Π½Π° изпълнявания Ρ„Π°ΠΉΠ», ΡΡŠΠ±Ρ€Π°Π½ Π½Π° Π±Π°Π·Π° ΡΡŠΡ‰ΠΈΡ C ΠΊΠΎΠ΄ Π² GCC (с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ β€ž-O2β€œ);
  • Π‘Ρ‚Π°Π΄ΠΈΠΈ Π½Π° инициализация ΠΏΡ€Π΅Π΄ΠΈ Π·Π°ΠΏΠΎΡ‡Π²Π°Π½Π΅ Π½Π° дСйствитСлното изпълнСниС трябва Π΄Π° ΠΎΡ‚Π½Π΅ΠΌΠ°Ρ‚ 100 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅;
  • MIR прСдставянСто Π·Π° JIT трябва Π΄Π° Π΅ 100 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ Π² GCC изпълняван Ρ„Π°ΠΉΠ».

Π’ настоящия си Π²ΠΈΠ΄ рСализацията Π½Π° MIR Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π°Π΄ΠΌΠΈΠ½Π°Π²Π° ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ поставСнитС Ρ†Π΅Π»ΠΈ: ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ‚Π΅ тСстовС ΠΏΠΎΠΊΠ°Π·Π°Ρ…Π°, Ρ‡Π΅ производитСлността Π½Π° компилацията Π² MIR Π΅ 178 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·Π° ΠΎΡ‚ β€žGCC -O2β€œ, производитСлността Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ изостава ΠΎΡ‚ нативния ΠΊΠΎΠ΄ с 6%, Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° ΠΊΠΎΠ΄Π° Π΅ ΠΏΠΎ-малък с 144 ΠΏΡŠΡ‚ΠΈ, Π° рСализацията Π½Π° MIR JIT сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ 16 хиляди Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄.

Red Hat Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ MIR

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster