A Linux 7.3 KCFI-optimalizációval gyorsítja a régebbi Intel CPU-kat

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

Az Intelnél dolgozó Peter Zijlstra egy KCFI-fejlesztésen dolgozott azokhoz a régebbi platformokhoz, amelyek nem támogatják a FineIBT-t. Peter a készülő javítócsomagról ezt írta:

„Ahogy a 85a2d4a890dc („x86,ibt: Use UDB instead of 0xEA”) commit is megjegyzi, a Jcc utasításról azt kell feltételezni, hogy nem ugrik, a szokásos KCFI (ABI) viszont a következő sorozatot generálja:

FineIBT / CET Indirect Branch Tracking (IBT) funkcióval az Intel Core 11. generációs „Tiger Lake” CPU-któl felfelé érhető el.

movl $(-hash), %r10d

addl -15(%r11), %r10d

je 1f

ud2

1: cs call __x86_indirect_thunk_r11

(ha a -mretpoline-external-thunk opcióval együtt használjuk).

Figyelemre méltó, hogy itt a Jcc mindig ugrik, ami a kelleténél alacsonyabb áteresztőképességet eredményez. Indításkor cseréljük le a következő sorozatra:

movl $(-hash), %r10d

addl -15(%r11), %r10d

jne . + 3

test $0xd6, %al

cs call __x86_indirect_thunk_r11

Ez a test utasításban azonnali bájtként használt UDB utasításra ugrik. A test módosítja az eflags regisztert, de ez nem számít, mert az előtte lévő addl már megváltoztatja az eflags-t.

Az Intel a FineIBT szekvenciát javasolja az IBT-t támogató platformokon; a régebbi platformokat azonban még mindig széles körben használják, és ezek is profitálnának ebből.”

Az Intel mérnöke, Scott Constable korábbi benchmarkokat futtatott a javítócsomag egy korábbi változatával, hogy felmérje a CFI-optimalizáció előnyeit.

A javítócsomag már bekerült a tip/tip.Git x86/core Git branchébe. Mivel a kód most már egy TIP branchben van, várhatóan benyújtják a közelgő Linux 7.3 merge windowra.