Π‘ΠΎΡ„Ρ‚ΡƒΠ΅Ρ€ΡŠΡ‚ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° LVI Π½Π° Google ΠΏΠΎΠΊΠ°Π·Π° 14-ΠΊΡ€Π°Ρ‚Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° производитСлността

Zola Bridges ΠΎΡ‚ Google Π’ΠΎΠΉ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈ Π·Π° Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ LLVM, корСкция с внСдряванС Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° SESES (Speculative Execution Side Effect Suppression), която ΠΏΠΎΠΌΠ°Π³Π° Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Π°Ρ‚Π°ΠΊΠΈ срСщу ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° спСкулативно изпълнСниС Π² процСсоритС Π½Π° Intel, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€. ΠžΠ’Πš. ΠœΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ ΠΈ сС основава Π½Π° добавянС ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° машинСн ΠΊΠΎΠ΄ Π½Π° инструкции ΠžΠ“Π ΠΠ”Π, ΠΊΠΎΠΈΡ‚ΠΎ сС замСстват ΠΏΡ€Π΅Π΄ΠΈ всяка инструкция Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈΠ»ΠΈ запис Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π° ΡΡŠΡ‰ΠΎ ΠΈ ΠΏΡ€Π΅Π΄ΠΈ ΠΏΡŠΡ€Π²Π°Ρ‚Π° инструкция Π·Π° разклоняванС Π² Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° инструкции, която Π·Π°Π²ΡŠΡ€ΡˆΠ²Π° Π±Π»ΠΎΠΊΠ°.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡΡ‚Π° LFENCE ΠΈΠ·Ρ‡Π°ΠΊΠ²Π° всички ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ чСтСния Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½ΠΈ ΠΈ прСдотвратява ΠΏΡ€Π΅Π²Π°Π½Ρ‚ΠΈΠ²Π½ΠΎΡ‚ΠΎ изпълнСниС Π½Π° послСдващи инструкции слСд LFENCE, ΠΏΡ€Π΅Π΄ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΡŠΡ‚ Π΄Π° ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° LFENCE Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ намаляванС Π½Π° производитСлността, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π² СкстрСмни случаи Π·Π° особСно ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ ΠΊΠΎΠ΄. Π’ допълнСниС към ΠΏΡŠΠ»Π½Π°Ρ‚Π° Π·Π°Ρ‰ΠΈΡ‚Π°, корСкцията ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Ρ‚Ρ€ΠΈ Ρ„Π»Π°Π³Π°, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈ позволяват ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚Π΅Π»Π½ΠΎ Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Π½ΠΈΠ²Π° Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π°, Π·Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡ‚Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π½ΠΎΡ‚ΠΎ Π²ΡŠΠ·Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅ Π²ΡŠΡ€Ρ…Ρƒ производитСлността.

Π’ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ‚Π΅ тСстовС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° SESES Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° BoringSSL Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ намаляванС Π½Π° броя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½ΠΈ ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π² сСкунда с 14 ΠΏΡŠΡ‚ΠΈ - производитСлността Π½Π° вСрсията Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π° със Π·Π°Ρ‰ΠΈΡ‚Π°, сС ΠΎΠΊΠ°Π·Π° само 7.1% Π½Π° срСдно ΠΎΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° Π½Π΅Π·Π°Ρ‰ΠΈΡ‚Π΅Π½Π°Ρ‚Π° вСрсия (Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΡŠΡ‚ Π² зависимост ΠΎΡ‚ тСста Π΅ ΠΎΡ‚ 4% Π΄ΠΎ 23%).

Π—Π° сравнСниС, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΏΠΎ-Ρ€Π°Π½ΠΎ Π·Π° GNU Assembler, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° LFENCE замСстванС слСд всяка опСрация Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ ΠΏΡ€Π΅Π΄ΠΈ някои инструкции Π·Π° разклоняванС, ΠΏΠΎΠΊΠ°Π·Π° Π½Π°ΠΌΠ°Π»Π΅Π½ΠΈΠ΅ Π½Π° производитСлността ΠΎΡ‚ ΠΎΠΊΠΎΠ»ΠΎ 5 ΠΏΡŠΡ‚ΠΈ (22% ΠΎΡ‚ ΠΊΠΎΠ΄Π° Π±Π΅Π· Π·Π°Ρ‰ΠΈΡ‚Π°). ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΡΡŠΡ‰ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΈ изпълнСни ΠΎΡ‚ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈ Π½Π° Intel, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ тСстовСтС Π·Π° производитСлност Π·Π° Π½Π΅Π³ΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ са ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ изслСдоватСлитС, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ…Π° LVI Π°Ρ‚Π°ΠΊΠ°Ρ‚Π°, ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€Π°Ρ…Π° 2- Π΄ΠΎ 19-ΠΊΡ€Π°Ρ‚Π½ΠΎ намаляванС Π½Π° производитСлността ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° пълна Π·Π°Ρ‰ΠΈΡ‚Π°.

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€