Hat Ryzen Probleme mit bestimmtem FMA3-Code? (Update)

Update 20.03.2017: Inzwischen hat heise eine offizielle Bestätigung zum mutmaßlichen FMA3-Bug in Ryzen von AMD erhalten (siehe Originalmeldung unten). Man habe den Fehler identifiziert und arbeite an einer Lösung, damit Mainboard-Hersteller so bald wie möglich ein BIOS-Update zur Verfügung stellen können:

"We are aware of select instances where FMA code can result in a system hang. We have identified the root cause and will soon release BIOS updates to motherboard vendors that will resolve the issue. Please watch for new BIOS updates from your motherboard vendor to incorporate these changes."

In der Zwischenzeit hatte Golem eigene Tests durchgeführt und dabei festgestellt, dass der Fehler ausschließlich unter Windows auftritt – und zwar sowohl mit dem fertigen Binary als auch mit selbst kompilierten Versionen und sogar solchen, die mit einem anderen Compiler erstellt worden sind, was einen Compiler-Bug ausschloss –, wohingegen der Fehler unter Linux nicht zum Vorschein kam. Da der Absturz zudem nur bei aktiviertem SMT beobachtet werden konnte, tippte Golem auf einen SMT-Fehler oder eine -Inkompatibilität in Windows 10 und nicht auf einen Bug in Ryzen. Das wäre nun mit der offziellen Bestätigung durch AMD hinfällig. Da es aber noch immer keinen Revision Guide gibt zu Summit Ridge, bleiben die genaueren Ursachen und die Maßnahmen zur Behebung weiter im Dunkeln.

Originalartikel vom 15.03.2017
Der Entwickler Alexander "Mysticial" Yee ist bei seinem selbst entwickelten Benchmark namens Flops auf einen Fehler gestoßen, der mit seinem AMD-Ryzen-System zum sofortigen Absturz des gesamten PCs führt. Dabei handelt es sich um hochoptimierten Code, der Single-Precision-128-bit-FMA3-Befehle verwendet. Nach seinem Posting bei HWBot haben einige User den Fehler nachgestellt, sodass man ausschließen kann, dass es ein individueller Defekt seines CPU-Exemplars oder ein Bug seines Mainboards ist. Nur ob der Absturz aufgrund eines Bugs im Ryzen-Prozessor geschieht oder aufgrund eines fehlerhaften Codes durch einen Bug im Compiler, ist noch nicht abschließend geklärt, da sich AMD laut Heise dazu noch nicht geäußert hat.

Wem nun ein Horrorszenario vom Schlage des Phenom-TLB-Bugs vor dem inneren Auge abläuft, der kann (vermutlich) beruhigt werden. Der TLB-Bug - oder besser gesagt der darauf folgende leistungsmindernde Workaround - bestrafte praktisch jegliche Software, da in einem modernen Betriebssystem mit virtueller Adressverwaltung jedes Programm von einem funktionierenden Translation-Lookaside-Buffer profitiert. Wenn hier ein Bug durch Deaktivieren von Features umschifft werden muss – wirklich fixen kann man einen Fehler ja nur mit einem neuen Stepping – so wirkt sich das natürlich negativ auf die Leistung aus.

Sollte sich wirklich ein Bug in die FMA3-Sektion der Ryzen-FPU geschlichen haben, der per AGESA-Microcode-Update umschifft werden müsste, so wäre das zwar ärgerlich für AMD, für den Anwender unter dem Strich aber nur wenig relevant, von der Tragweite her eher vergleichbar mit dem IDIV-Bug des Llano, als mit dem TLB-Bug des Phenom. Damals hatte AMD seiner K10-basierten APU Llano eine Hardware-IDIV-Einheit spendiert; die jedoch unter bestimmten Umständen fehlerhaft arbeitete. Daher musste AMD den neuen Pfad per BIOS-Update wieder deaktivieren, was die Leistung bei den äußerst selten vorkommenden Integer-Divisionen wieder auf K10-Niveau reduzierte. Ähnlich liegt der Fall bei Ryzen. Kaum eine Software nutzt FMA3-Code.

Verwunderlich wäre es dennoch – sollte es sich wirklich um einen Bug in Ryzens FMA3-Einheit handeln –, da Fused-Multiply-Add mit 3 Operanden nichts Neues ist bei AMD-Prozessoren, im Gegensatz zu IDIV bei Llano damals. Schon Bulldozer unterstützte Fused-Multiply-Add, und zwar nicht nur das simple FMA3, sondern sogar das vom eingestampften SSE5-Projekt abgeleitete FMA4. Seit Ryzen verzichtet AMD jedoch auf FMA4 und bescheidet sich wie Intel mit FMA3.

Dass komplexe Gebilde wie Prozessoren unzählige Fehler aufweisen, ist normal. Vom Intel Haswell zum Beispiel sind aktuell 172 Bugs dokumentiert, von Skylake 141. Zu AMDs Ryzen ist leider noch kein Revision Guide online. Ungewöhnlich ist eher, dass es so ein Bug tatsächlich auch mal reproduzierbar in die freie Wildbahn schafft. Normalerweise wird der Großteil davon bereits in der Testphase neutralisiert oder die Umstände sind so utopisch, dass sie in der Praxis so gut wie nie auftreten. Aber hier merkt man dann wohl doch die komplett taufrische Architektur.