Π Red Hat
ΠΠ° Π½Π°ΡΡΠΎΡΡΠΈΡ Π΅ΡΠ°ΠΏ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ ΠΏΡΠ΅Π²ΠΎΠ΄Π°ΡΠΈ Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° MIR
ΠΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈΡΡ MIR ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π² Π΄Π²ΠΎΠΈΡΠ½Π° ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²Π° (ΡΠ΅ΡΠΈΠΌΠ°) ΡΠΎΡΠΌΠ°. Π’ΠΎΠ·ΠΈ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ (x86_64, Π² ΠΏΠ»Π°Π½ΠΎΠ²Π΅ ARM64, PPC64 ΠΈ MIPS64). ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ - ΠΎΡ MIR ΠΊΡΠΌ CIL, Java bytecode, WebAssembly ΠΈ C ΠΊΠΎΠ΄.
Π‘ΡΠ΅Π΄ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° MIR ΡΠ΅ ΠΎΡΠΊΡΠΎΡΠ²Π°Ρ ΡΡΡΠΈΠΊΡΠ½ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½Π΅, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅, Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ½ΠΈ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Π½Π΅ ΠΈ Π΄Ρ. ΠΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π½Π°Π±ΠΎΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ MIR, ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°ΡΠ΅Π΄Π΅Π½ΠΈ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΌΠΎΠ³Π°Ρ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Ρ Π²ΡΠ½ΡΠ΅Π½ C ΠΊΠΎΠ΄.
ΠΠ»ΡΡΠΎΠ²ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ Π² 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 Π΅ 2 ΠΏΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ·Π° ΠΎΡ βGCC -O178β, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π΅ 6% Π·Π°Π΄ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈΡ ΠΊΠΎΠ΄, ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΊΠΎΠ΄Π° Π΅ 144 ΠΏΡΡΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΡΠΊ, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° MIR JIT Π΅ 16 Ρ ΠΈΠ»ΡΠ΄ΠΈ ΡΠ΅Π΄Π° ΠΊΠΎΠ΄.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru