Ryzen FMA3 Anweisungen hängen fest Betriebssystem



Wie sich herausstellte, führt die Ausführung einiger spezifischer FMA3-Anweisungen auf einem AMD Ryzen-Prozessor zu einem kritischen Betriebssystemabsturz.

Anweisungen wie FMA3 (Fused-Multiply-Add) werden sowohl von Intel (in Haswell) als auch von AMD unterstützt. Dies sind Anweisungen wie d = round(a × b + c) , wobei d im selben Register wie a , b oder c sein muss . Im Vergleich dazu werden FMA4-Anweisungen nur von AMD (in Buldozer und späteren Prozessoren) unterstützt. Dort können sich a , b , c und d in verschiedenen Registern befinden.

In Flops Version 2 , einem einfachen und wenig bekannten Dienstprogramm zum Testen von CPUs, wurde ein Fehler im Prozessor entdeckt. Es ist zu beachten, dass der Entwickler dieses Dienstprogramms Alexander "Mystical" Yee (Alexander "Mystical" Yee) es als spezifisches Testdienstprogramm positioniert, das für die Mikroarchitektur von Prozessoren empfindlich ist. In anderen Benchmarks ist der Fehler nie aufgetreten.

Mit dem Dienstprogramm Flops Version 2 werden spezifische Binärdateien für alle wichtigen x64-Architekturen (Core2, Bulldozer, Sandy Bridge, Piledriver, Haswell, Skylake) bereitgestellt. Derzeit gibt es jedoch weder unter den Binärbaugruppen für Windows noch für Linux eine Version zum Testen von Zen. Daher verwendete Ryzen jetzt zum Testen Binärdateien anderer Architekturen, nämlich des nächstgelegenen Haswell. Der oben erwähnte Fehler mit den FMA3-Anweisungen wurde vor zwei Wochen vom Autor des Flops-Programms entdeckt, als er einen Test mit der Standardbinärdatei für Haswell auf einem Computer mit der folgenden Konfiguration durchführte:

  • Ryzen 7 1800X
  • Asus Prime B350M-A (BIOS 0502)
  • 4 x 8 GB Corsair CMK32GX4M4A2400C14 bei 2133 MHz
  • Windows 10 Anniversary Update

Plötzlich wurde festgestellt, dass das System normalerweise während des folgenden Vorgangs einfriert:

Single-Precision - 128-bit FMA3 - Fused Multiply Add:

Manchmal besteht der Test diese Operation erfolgreich, hängt aber auch in Zukunft von einer anderen Operation ab.

Der Entwickler erklärt, dass sein Test Open Source ist. Wenn Sie den Ergebnissen nicht vertrauen, können Sie die Binärdatei in Visual Studio selbst erstellen und kompilieren und die Ergebnisse überprüfen.

Alexander wusste, welche Aufmerksamkeit er auf sich ziehen würde, wenn er einen Fehler in einem beworbenen Prozessor meldete. Daher überprüfte er wiederholt die Ergebnisse. Der Prozessor hat das System bei allen Taktfrequenzen aufgehängt. Bei der Arbeit im Single-Threaded-Modus hat jeder Kern das System aufgehängt.

Es gab einige Wahrscheinlichkeiten, dass die Ursache des Fehlers immer noch nicht im Prozessor liegt, sondern in etwas anderem. Zum Beispiel in einem bestimmten Motherboard, in einem bestimmten BIOS, in einem bestimmten Betriebssystem ... Was könnte es sonst noch sein?

Der Entwickler teilte die Ergebnisse mit Kollegen, damit diese andere Zen-Versionen auf ihren Computern überprüfen konnten. Fehler wurden für andere Prozessoren auf verschiedenen Motherboards, unter verschiedenen Windows- und Linux-Versionen bestätigt.

In den ersten Tagen nach dem Anruf von Alex wurden Tests von fünf Besitzern von Ryzen-Prozessoren gestartet. Hier sind die Ergebnisse:

Bestätigte Fehler:
  • 1800X + Asus Prime B350M-A (BIOS 0502)
  • 1700 + Asus Prime B350M-A (BIOS ???)
  • 1700 + Asus Fadenkreuz VI Held
  • 1700 + Asus Crosshair VI Hero (BIOS 5803) (zwei G.Skill + Kingston-Speicherbanken)
  • 1800X + Asus Crosshair VI Hero (Windows 7) - nach bestandenem Test wiederholt fehlgeschlagen.

Bestätigter störungsfreier Betrieb:
  • Noch nicht

Der Benchmark-Entwickler überprüfte alle FMA-Varianten (128 Bit, 256 Bit, einfache Genauigkeit, doppelte Genauigkeit von Zahlen). In allen Fällen friert der Computer fest ein.

Er wurde nur durch ein Detail belästigt: Obwohl der Test korrekt geschrieben wurde, passte er aus irgendeinem Grund nicht in andere Benchmarks wie prime95 und y-cruncher, obwohl sie beim Testen auch FMA verwenden.

Es blieb also eine gewisse Unsicherheit bestehen.

Am 16. März erhielt ein AMD-Vertreter eine offizielle Nachricht, dass der Fehler im neuen AGESA- Code (AMD Generic Encapsulated Software Architecture) behoben wird, einem Protokoll, das unter anderem zur Initialisierung von AMD-Prozessorkernen verwendet wird. Mit anderen Worten, die Spezialisten des Unternehmens haben den Fehler überprüft und bestätigt. Später bestätigten AMD-Vertreter den Fehler offiziell in den Kommentaren für die Medien .

Glücklicherweise kann ein solcher Fehler behoben werden, ohne die Hardware auszutauschen, sondern lediglich den Mikrocode zu aktualisieren. Der Fehler ist unbedeutend, sodass er keine Prozessorüberprüfungen oder andere Probleme für das Unternehmen verursacht. In der realen Arbeitswelt kann kaum jemand auf diesen Fehler stoßen. Er wirkt sich weder auf den Computer noch auf die Prozessorleistung aus.

Die schlechte Nachricht ist, dass Angreifer es für DoS-Angriffe verwenden können. Das heißt, hauptsächlich ist dieser Fehler ein Problem der Informationssicherheit. Schließlich sollte ein gewöhnliches Benutzerprogramm, das im Benutzermodus und nicht auf Kernelebene des Betriebssystems ausgeführt wird, das System nicht fest hängen lassen. Aber das passiert gerade.

Die Tatsache, dass der Test auf einer Binärdatei für eine andere Architektur ausgeführt wurde, ist nicht so wichtig. Jeder Prozessor muss Tests aus einer beliebigen Binärdatei erfolgreich reproduzieren, wenn er die entsprechenden Anweisungen unterstützt, schreibt der Autor des Benchmarks. Aber selbst wenn Sie den Test mit inkompatiblen Anweisungen ausführen, sollte das Programm das System nicht fest hängen.

Die Gefahr einer Sicherheitslücke wird durch die Tatsache verstärkt, dass bösartiger Code sogar unter einer virtuellen Maschine ausgeführt werden kann und dennoch das gesamte System hängen bleibt. Ein Computer mit dem neuen Ryzen-Prozessor kann jede Malware aufhängen. Vielleicht sogar über einen Browser.

Wie bereits erwähnt, arbeitet AMD an der Aktualisierung des AGESA-Protokolls. Danach werden Patches für alle BIOS-Versionen auf allen Motherboards veröffentlicht.

Source: https://habr.com/ru/post/de402551/


All Articles