Hat Ryzen Probleme mit bestimmtem FMA3-Code?
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.