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

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

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

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

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

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

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

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΎΡ‚ΠΎ прСдимство Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ Π² 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 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-малък, Π° JIT имплСмСнтацията Π½Π° MIR Π΅ 16 000 Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄.

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

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

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