Grundlagenartikel Prozessor Testberichte

AMD UEFI Inside: Was verbirgt sich wirklich hinter AGESA, dem PSP (Platform Security Processor) und vor allem auch ComboPI?

Da es immer wieder Nachfragen gibt und auch so Einiges gern durcheinander gebracht wird, gibt es heute mal ein paar Einblicke ins AMD-UEFI, also das, was man umgangssprachlich gern auch als „das BIOS“ bezeichnet (obwohl es mittlerweile ja so gar nicht mehr korrekt ist). Ich habe das Folgende auch extrem heruntergebrochen, um möglichst einfach und verständlich zu bleiben. Trotzdem ist das, was da beim PC-Start passiert, das klassische Henne-Ei-Problem, über das man einfach mal reden muss. Software startet Hardware, wobei Hardware ohne Software nicht eigentlich funktioniert und Software ohne Hardware gar nichts kann. Und jetzt?

Der geheimnisvolle Bootloader und die AGESA

Um diesen Knoten zu durchbrechen (Hardware funktioniert nun mal nicht ohne Software) braucht man einen Bootloader. Auch und vor allem im Hinblick auf die Sicherheit hat sich AMD dann 2013 unter anderem dafür entschieden, einen zusätzlichen Mikroprozessor zu verbauen, den sogenannten PSP (Platform Security Processor). Diesen PSP kann man ganz gut mit Intels Management Engine für CPUs vergleichen, weil es am Ende aufs Gleiche hinausläuft. Und wo steckt jetzt dieser geheimnisvolle PSP? Auf dem Motherboard wird man ihn nicht finden, das wäre dann doch zu einfach. Nein, der PSP selbst ist ein simpler ARM-Cortex-Prozessorkern, der direkt im dem CPU-Die integriert ist und auch nach der Hardware Initialisierung im Hintergrund weiterläuft und genutzt werden kann. In einer AMD-CPU, die so einen PSP enthält, startet der Boot-Prozess also nur, wenn sich der x86-Rest in einem angehaltenen Zustand befindet und nur dem PSP die Ausführung gewährt wird. Das merken wir uns mal.

Doch zurück zur CPU und dem eigentlichen Bootvorgang. Und wir kommen an dieser Stelle auch schon zum ersten Begriff, der immer wieder auftaucht, wenn es um AMD CPUs geht (Stabilität, Kompatibilität, Performance), der AGESA, AMDs Generic Encapsulated Software Architecture. Wir wissen ja, die CPU ist beim Einschalten des PCs ja bekanntermaßen das Erste, was initialisiert wird und sie enthält genau dafür ja auch den sogenannten On-Chip Bootloader. 

Der PSP beginnt die Ausführung in seinem Boot-ROM (Nur-Lese-Speicher, der bei der Herstellung programmiert wurde), das einen einfachen Code enthält, der den im SPI-Flash befindlichen Off-Chip-PSP-Bootloader verifiziert und dann lädt. Dieser AGESA Bootloader (ABL) führt danach in weiteren Schritten die eigentliche Hardware-Initialisierung durch, aber darauf komme ich gleich noch einmal zurück. Der Bootloader liest und authentifiziert allerdings zunächst den ersten Block des BIOS-Codes und nur bei Erfolg gibt er den Prozessor aus seinem angehaltenen Zustand frei. An diesem Punkt nimmt der x86-Prozessor die Ausführung parallel zum PSP auf  Man spricht also vom sogenannten Hardware Validated Boot, AMDs Erweiterung von Secure Boot, bei der der PSP als Hardware Root of Trust fungiert.

Wer es jetzt ganz genau wissen will: Das Boot-ROM beginnt mit der Suche nach dem magischen Wert 0x55AA55AA, der wiederum Teil der FIRMWARE_ENTRY_TABLE-Struktur ist. Diese Struktur, auch als ROMSIG bekannt, befindet sich an einer vordefinierten Stelle innerhalb des SPI-Flash. Diese Struktur teilt dem Boot-ROM mit, wo das PSP-Verzeichnis zu finden ist. Danach lädt das Boot-ROM einen hartkodierten Entschlüsselungs-Code („Chip-Schlüssel“) in den kryptografischen Coprozessor des PSP, auch als CCP bekannt. Der CCP bewahrt diesen Schlüssel in seinem Schlüssel-Speicherblock auf, aus dem er das Auslesen des Schlüssels nicht zulässt. Von diesem Zeitpunkt an darf der Schlüssel nur noch für Ver- und Entschlüsselungsvorgänge verwendet werden. Die Boot-ROM-Firmware liest und entschlüsselt dann den jetzt verschlüsselten PSP-Bootloader aus dem BIOS-Image, das sich im SPI-Flash befindet, und führt ihn dann aus.

Der AGESA Bootloader lädt auch das UEFI Image in den Hauptspeicher und gibt nach der Hardware-Initialisierung später die Kontrolle an das UEFI ab, also das, was man immer noch gern (fast schon volkstümlich) als „das BIOS“ bezeichnet. Die AGESA-Firmware übernimmt danach die restliche Initialisierung und das Starten der x86 Kerne sowie die Initialisierung der Hauptspeichers (DDR4 Training). 

Da das UEFI aber unmöglich über alle hardwarespezifische Interna verfügen kann und die Spezifikation auch das Übertakten eines Prozessors nicht vorsieht, ist es die Aufgabe des jeweiligen Boardpartners, das UEFI zu erweitern und die nötige Firmware zum Ansprechen der Hardware mitzuliefern. Dafür stellt AMD unter anderem eine Schnittstelle zu Verfügung, die ebenfalls im AGESA-Code (UEFI drivers) enthalten ist und es zum Beispiel Entwickler ermöglicht, die Kernspannung des Prozessor zu ändern. Die hierfür benötigte Firmware und die Dokumentationen zur Implementierung des Ganzes, wird dann an die UEFI Hersteller wie AMI oder Phoenix verteilt.

Und was ist jetzt eigentlich Combo PI?

Das Combo bedeutet am Ende nichts anderes, als das mehrere SoCs (mit eigener Firmware) unterstützt werden und das PI steht für Platform Initialization. Man darf diese Version allerdings nicht mit der AGESA-Version in einen Topf schmeißen, denn Combo PI ist quasi der übergeordnete Container (ABL, PSP, SMU, VBIOS für APUs usw.), der eben auch die AGESA-Daten enthält. Wobei – man sollte es wohl besser als einen großen Ordner betrachten, in den der Quellcode für die Treiber (drivers) und die Binaries (Firmware) der ganzen SoCs liegen. Das wird dann an die BIOS-Hersteller geschickt und die machen daraus nach den Maßgaben von AMD das eigentliche UEFI Image. PI ohne Zusatz von Combo, dafür mit vorangestellem SoC-Namen gibt es auch. Diese Versionen funktionieren dann nur exklusiv als Naples PI, Rome PI oder für Summit Ridge.

Und nun könnt Ihr Euch auch sicher denken, warum z.B. ein Ryzen der ersten Generation auf vielen aktuellen Motherboards gar nicht mehr läuft: die Firmware ist durch die vielen Einträge mit zig Prozessor-Varianten schlichtweg zu groß geworden und man musste anfangen, die Einträge wieder zu reduzieren. Neben der kaufmännischen Absicht, etwas Neues zu verkaufen, scheitert es auch schlicht und ergreifend an der finalen Größe der Datei. Natürlich kann man auch den Flash-Speicher vergrößern, aber viele Kunden jammern ja heute schon über die langen Boot-Zeiten bis zum Post-Screen.

Genau deshalb hat AMD auch, beginnend mit den neuen B550-Motherboards angefangen, das Ganze durch restriktiven Ausschluss von hinterlegten Produkten und dazu benötigtem Microcode wieder abzuspecken, um die Firmware schneller und mit weniger Aufwand laden zu können. Man lässt sich die Hintertür für z.B. Ryzen 2 bei den X570-Chipsätzen zwar noch offen, aber ich möchte wetten, spätestens bei der nächsten Generation ist Schluss mit aufgebläht und lustig.

Interessant ist hierbei der vermeintliche Nummern-Salat, der jedoch einem fest vorgegebenen Schema folgt. Das folgende Schema aus den AMD-Unterlagen gibt nun Aufschluss über die einzelnen Stellen:

Normalerweise wird man natürlich nur Dinge angeboten bekommen, bei denen die zweite und dritte Zahl jeweils eine Null sind. Alles andere wäre dann kein finaler Status und sollte, wenn überhaupt, mit der nötigen Vorsicht genossen werden. Damit wären wir dann auch schon durch und mal ehrlich: so kompliziert war es dann ja doch nicht, oder?

Danke für die Spende



Du fandest, der Beitrag war interessant und möchtest uns unterstützen? Klasse!

Hier erfährst Du, wie: Hier spenden.

Hier kannst Du per PayPal spenden.

About the author

Igor Wallossek

Chefredakteur und Namensgeber von igor'sLAB als inhaltlichem Nachfolger von Tom's Hardware Deutschland, deren Lizenz im Juni 2019 zurückgegeben wurde, um den qualitativen Ansprüchen der Webinhalte und Herausforderungen der neuen Medien wie z.B. YouTube mit einem eigenen Kanal besser gerecht werden zu können.

Computer-Nerd seit 1983, Audio-Freak seit 1979 und seit über 50 Jahren so ziemlich offen für alles, was einen Stecker oder einen Akku hat.

Folge Igor auf:
YouTube   Facebook    Instagram Twitter

Werbung

Werbung