Problémy s transakční pamětí na procesorech Intel pokračují, nová aktualizace vypne plošně TSX

2. 7. 2021

Sdílet

 Autor: Cnews
Rozšíření TSX implementující transakční paměť na procesorech x86 je doslova prokleté.  Po dlouhé sérii problémů s korektností i bezpečností ho Intel teď aktualizací mikrokódu definitivně odstraní hned na několika generacích procesorů.

V posledních letech jsme si bohužel museli zvyknout na dříve moc nevídanou věc: s postupem času procesory dostávají různé firmwarové/mikrokódové aktualizace, které u nich snižují výkon. Z větší části je to kvůli různým zranitelnostem ve spekulativním vykonávání kódu, zatímco před rokem 2018 a průšvihem pojmenovaným Spectre toto nastávalo jen zřídkakdy, kvůli stabilitu ohrožujícím chybám v návrhu. Nyní zde máme další kolo takto způsobeného zpomalování: Intel byl nucen či se rozhodl kvůli bezpečnostním implikacím deaktivovat instrukce TSX u několika rodin procesorů.

Není to úplně poprvé. Rozšíření TSX, poprvé přidané v procesorech Haswell, trápily za celou jeho existenci problémy, kdy byly nacházeny slabiny způsobující nekorektní chování, takže první implementace v Haswellech a Broadwellech pak zase byla vypnutá novými BIOSy. Po Spectre se objevily i implikace pro side-channel útoky a bezpečnost (TAA, CacheOut), TSX mimo jiné například zkompromitovalo bezpečnostní rozšíření SGX.

Nyní Intel oznámil nové aktualizace mikrokódu, které deaktivují TSX u procesorů Core 6., 7., 8. a 9. generace, tedy Skylake, Kaby Lake, Coffee Lake (včetně Coffee Lake Refresh) a Whiskey Lake. Týkat se to bude i Xeonů D na bázi architektury Skylake (řada Xeon D-2100) a první generace Xeonů Scalable (tedy rodiny s „metalovými jmény“ Platinum, Gold a tak dále), tedy Skylake-SP z roku 2017 (a logicky by tedy asi také mělo být zasaženo Skylake-X, tedy Core 7. a 9. generace na platformě X299).

Intel Core 7. generace pro platformu X299, Skylake-X (Zdroj: Intel) Intel Core 7. generace pro platformu X299, Skylake-X (Zdroj: Intel)

V momentě, kdy těmto procesorům přes BIOS desky nebo přes aktualizační kanál Windows či Linuxu dorazí nový mikrokód s označením (verzi aktualizace Intel označuje IPU 2021.1), bude u nich ve výchozím stavu deaktivováno rozšíření TSX.

Intel aktualizací deaktivuje TSX na procesorech Skylake až Coffee Lake Intel aktualizací deaktivuje TSX na procesorech Skylake až Coffee Lake (Zdroj: Intel)

Zdá se, že to nebude provedeno přímo „zmizením“ tohoto rozšíření. Aktualizace způsobí, že všechny pokusy softwaru použít toto rozšíření budou procesorem automaticky hned zrušeny a efekt TSX zvyšující výkon tedy nebude dosažen. Toto se má stávat při použití funkce Restricted Transactional Memory (RTM). Není zmíněno, že by procesor takto automaticky sabotoval také použití funkce HLE (Hardware Lock Elision), což by dávalo naději, že tuto část TSX bude možné použít. Jenže vedle toho také Intel uvádí, že „TSX will be disabled by default“, což by implikovalo dekativaci celé této technologie.

Podporu by mělo být možné volitelně zapnout, ale na vlastní riziko

Bude nicméně možné se z této nucené deaktivace TSX volitelně vyvléknout – to je asi to, na co formulace s „defaultním vypnutím“ míní. Uživatelé by měli mít možnost si TSX zase zapnout, pokud jim nevadí, že je používání spojeno s riziky. Ta spočívají jednak v zranitelnosti TSX proti některým spekulativním útokům, kdy se může škodlivý kód dostat k citlivým datům podobně jako u útoků typu Spectre.

Ale toto není jediný problém, v dokumentech k této změně se uvádí, že TSX u těchto procesorů vyvolává i potenciální problémy s korektním řazením paměťových operací. A to je riziko, které by se nemělo odmávnout jako potenciální bezpečnostní zranitelnost. Zřejmě to může nastat jen za vzácných okolností, ale důsledkem takové chyby budou nekorektní data v paměti, takže se vám mohou potichu budou kazit data, aniž byste na to hned přišli. Z důvodu těchto potenciálních chyb se uvádí, že TSX by mělo být takto znovu zapnuto jen pro potřeby vývoje kódu (s cílem produkčního nasazení na platformách, kde TSX je normálně podporováno) a Intel takové počínání nepodporuje.

TSX v CPU architektuře Intel Haswell TSX v CPU architektuře Intel Haswell (Zdroj: Intel)

Vliv vypnutí TSX by se ve většině softwaru asi neměl projevit, ale pokud programy používaly knihovny a další komponenty, které TSX aplikovaly a přinášelo to výkonnostní zisky (měla by to snad být třeba i knihovna pthreads), tak se u takových aplikací projeví určité zpomalení. TSX je aplikovatelné v mnohovláknových zátěžích, takže jednovláknový výkon vám naštěstí nikde neutrpí. Celkově by neměly být „škody“ z deaktivace TSX nějak devastující, pravděpodobně se nestane, že by někde procesor, který dosud zvládal potřeby uživatele, přestal stačit. Určité problémy by mohly mít servery, kde běžela specifická zátěž výrazně z TSX profitující. Ačkoliv běžný uživatelský software asi TSX moc npoužívá, výjimkou je zdá se emulátor PlayStationu 3 RPCS3. Tam tedy asi uživatelé zaznamenají ztrátu výkonu.

bitcoin_skoleni

Na novějších procesorech, tedy zejména 10nm rodinách Ice Lake, Tiger Lake a odvozeném 14nm Rocket Lake, by TSX pořád mělo fungovat, stejně jako na aktualizovaných 14nm procesorech Xeon Cascade Lake.

Zdroje: Intel, Red Hat