Intel zrušil opravy Spectre pro starší procesory. Core 2 a (některé) Nehalemy mají smůlu

4. 4. 2018

Sdílet

 Autor: Intel

Chyby Meltdown a Spectre v procesorech, odhalené na začátku roku, stále ještě nejsou kompletně za námi, byť už jsou to tři měsíce, co se o nich ví. Intel proti chybě Spectre vyvinul protiopatření, která pomocí kontrolních registrů upravují fungování prediktoru větvení, aby se zabránilo jeho zneužití variantou 2 této chyby („Branch Target Injection“, CVE-2017-5715). Před nějakou dobou jsme zde měli dobrou zprávu, že tyto aktualizace budou dostupné i pro dnes již hodně staré – ale leckde asi stále používané – procesory. Bohužel se zdá, že takové štěstí nakonec mít nebudeme a tento plán skončil pod stolem.

Z dokumentů, které byly dostupné v únoru, vyplývalo, že Intel plánuje opravené verze mikrokódů pro procesory s architekturou Nehalem (z let 2008–2010) a navíc ještě pro čipy Core 2. U těch sice nešlo o všechny, jen o jejich 45nm druhou generaci „Penryn“ z roku 2007, ale i tak to bylo hodně příjemné. I v pozdějších verzích dokumentu ukazujícího stav vývoje oprav tato CPU nadále vystupovala. V aktuálně dostupné dubnové verzi to tak ale již bohužel není. Intel těmto čipům mikrokódové funkce proti Spectre nedodá a nechá je být. První generací procesorů, která opravy dostane, bude tudíž s určitými výjimkami až architektura Sandy Bridge z roku 2011.

Stav oprav je nyní už pro všechny procesory Intelu, které je dostanou, ve stavu „Production“ (jen několik, jako například nově vydaná Coffee Lake s grafikou Iris Plus, jsou zatím jen „Production Candidate“). To znamená, že práce na mikrokódu jsou hotové a už jen zbývá ho dostat do BIOSů a/nebo operačních systémů. Ovšem u Nehalemu a Core 2 se stav opravy změnil na „Stopped“, což značí, že mikrokód proti Spectre už nedostanou. Kromě nich podobný osud stihl ještě procesor Atom SoFIA 3GR (což byl čínský Atom vyvinutý s Rockchipem).

spectre-text

Některé Nehalemy mají smůlu, některé ne

Core 2 budou bez opravy všechna, u Nehalemu je to však komplikovanější. Nás asi nejvíce zajímající procesory jako Core i7-920/940/965 atd. pro socket LGA 1366, které mají kódové označení Bloomfield, mají smůlu včetně odvozených Xeonů. Také šestijádrové Gulftowny i7-970/980/990X nebudou opraveny. Naopak již 32nm procesory Lynnfield pro socket LGA 1156 jako Core i5-750 nebo i7-870 a dvoujádra Clarkdale (například i5-860, i3-530, Pentium G6950) mají štěstí opravu dostanou. Xeony Nehalem EX a Westemere EX/EP opravu mikrokódu také mají.

45nm desktopové Nehalemy pro socket LGA 1366 katualizaci mikrokódu nedostanou Například 45nm desktopové Nehalemy pro socket LGA 1366 aktualizaci mikrokódu nedostanou

Architektura jader nemusela opravy umožňovat

Toto rozhodnutí moc nepotěší, ale je možné, že je způsobeno objektivními příčinami. Mechanismy zahazování stavu prediktoru větvení nebo izolace jednotlivých vláken (funkce IBPB, STIBP a IBRS) nejsou asi úplně triviální věcí a nemusí být snadné je v rámci CPU implementovat jen pomocí mikrokódu za chodu – s čímž se původně nepočítalo. Jak ukázala šlamastika s nestabilitou první verze těchto aktualizací, mohou tyto snahy o úpravu fungování vnitřností přinést problémy. Je tedy možné, že starší architektury jednoduše zpětné implementování těchto funkcí neumožnily a nepovedlo se najít řešení, jak je zprovoznit. Případně mělo u těchto architektur zasahování do prediktoru tak velký výkonnostní dopad, že to nebylo považováno za akceptovatelné.

Něco takového naznačuje i legenda k tabulce, ovšem dost vágně, takže reálný důvod zůstává nejistý. Podle Intelu „Stopped“ znamená, že po prozkoumání možností dané architektury a toho, čeho u ní lze úpravami mikrokódu dosáhnout, došla firma k rozhodnutí, že opravu pro ně vydávat nebude. Důvody pro tento krok mohou být dle Intelu různé a jmenuje z nich tři.

bitcoin_skoleni

  • Vlastnosti mikroarchitektury neumožňují praktickou implementaci funkcí chránících před chybou.
  • Produkty už mají jen omezenou komerční podporu.
  • Na základě komunikace se zákazníky je většina těchto produktů v „uzavřených systémech“, kde je nižší pravděpodobnost, že budou zranitelností ohrožené.

Co byl ale hlavní faktor a zda ony technické překážky byly neřešitelné, to těžko říct. Podle Intelu mohla být příčina v „jednom nebo více z nich“, případně ale i v dalších, zde nejmenovaných. Je samozřejmě možné i to, že někdo prostě rozhodl o tom, že vynakládat úsilí na dávno neprodávané produkty není v zájmu firmy. Onen třetí důvod totiž naznačuje, že staré architektury jako Core 2 a Nehalem by případně byly opravovány jen kvůli embedded verzím těchto čipů. Ty mají velmi dlouhé životní cykly a jsou zřejmě jediné z těchto rodin CPU, se kterými je ještě Intel vázán nějakou formou záruky nebo podpory. Protože ale takové systémy neotvírají cizí webové stránky nebo nespouštějí nedůvěryhodný kód, zřejmě jejich uživatelé opravy nepotřebovali (nebo nebyli ochotní zaplatit, pokud šlo o nějakou formu placené podpory).

intel-core2-quad-q6600Procesory používané v PC nebo serverech takto dlouhou produktovou životnost oficiálně nemají, tudíž k jejich přetrvávajícím uživatelům už na rozdíl od embedded klientů dost možná přihlíženo nebylo. Ovšem realisticky vzato - i pokud byl toto jediný důvod, tak se asi stále nemůžeme zas nějak moc zlobit. I Sandy Bridge je nyní šest let stará architektura (i když se pravda některé modely se vyráběly ještě v roce 2015), a některé jiné firmy by nejspíš podporu zastavily ještě dřív. Tak to v byznysu holt chodí.