Ryzen: AMD nutzt PCI-Treiber zur Manipulation von CPU-Funktionen
Am Wochenende hatte Alex Ionescu über Twitter von einem unerwarteten Verhalten des PnP-PCI-Treibers von AMD für Systeme mit Ryzen-Prozessor berichtet, schnell stand der Vorwurf von verstecktem Leistungs-Tuning im Raum. Wie sich mittlerweile herausgestellt hat, ist das wohl nicht der Fall. Fragwürdig bleibt AMDs Ansatz trotzdem.
PnP-PCI-Treiber manipuliert die CPU
Wie Ionescu herausgefunden hat, hält der PCI-Treiber für Windows Ausschau nach 19 im Hash-Format abgespeicherten Prozessen (EXE-Dateien), die sich schnell als 19 Spiele herausgestellt haben. Entdeckt der Treiber eine der Anwendungen, schaltet er über das Model-Specific Register (MSR) der CPU bestimmte Funktionen ab. Bei Ryzen 1000 (Zen 1, daher vermutlich auch Ryzen 2000) seien bestimmte Funktionen im Cache für Instruktionen (Op-Cache), bei Ryzen 3000 (Zen 2) bestimmte Funktionen im L1- und L2-Cache betroffen. Auf Ryzen 5000 scheint es die Funktion hingegen nicht zu geben.
Ursprünglich war Ionescu davon ausgegangen, dass AMD hier für die Leistung vorteilhafte Funktionen, die zu Instabilität führen können, in diesen 19 Anwendungen aktiviert – über den PCI-Treiber also quasi versteckt Performance-Optimierung betrieben wird. Inzwischen hat er sich aber korrigiert: Der Treiber deaktiviert diese Funktionen, höchstwahrscheinlich um Stabilitätsprobleme zu vermeiden.
Der Ansatz bleibt fragwürdig
Fragwürdig bleibt AMDs Ansatz trotzdem: Weder das vom Treiber angepasste Bit im MSR, noch die Funktion im Treiber sei dokumentiert, so Ionescu. Dass der Treiber von Microsoft darüber hinaus das WHQL-Zertifikat erhalten hat, obwohl er neben seiner eigentlichen Funktion im Hintergrund noch ganz andere Aufgaben wahrnimmt, steht ebenfalls in der Kritik. Zwar dürfte der PCI-Treiber das mit WHQL verfolgte Ziel, die Systemstabilität zu erhöhen, sogar erreichen, Vertrauen in die Funktionsweise des Treibers schafft die versteckte Funktion aber nicht.
Ein weiteres Problem betrifft die Sicherheit: Über die ioctl-Schnittstelle des Treibers war es Ionescu möglich, den Rechner mit nur einer Zeile Code über die PowerShell zum Absturz zu bringen. Darüber hinaus sei es möglich die vom Treiber überwachte Liste an Prozessen zu manipulieren. AMD hat sich bisher nicht geäußert.