Enthusiasten gelang es, den Mikrocode eines Intel 80386-Prozessors zu extrahieren und zu disassemblieren, der aufgrund mangelnder Dokumentation als „Black Box“ galt. Mithilfe von KI wurde aus hochauflösenden Fotos des Chips ein Binärabbild des Mikrocodes erstellt und die Logik anhand der Chipverdrahtung entschlüsselt. So konnten die Mikrooperationsstruktur, die Felder, die Ausführungsreihenfolge und die Befehlsende-Markierungen schrittweise ermittelt werden. Die Ergebnisse des Projekts sind auf GitHub als Public Domain veröffentlicht.

Es wurde festgestellt, dass im 80386-Prozessor jede Anweisung vollständig über Mikrocode ausgeführt wird, während im 8086 und modernen Prozessoren einige Anweisungen direkt verarbeitet werden. Im Gegensatz zu 8086-Prozessoren implementiert der Mikrocode im 80386 keine Algorithmen direkt, sondern konfiguriert primär Hardwarebeschleuniger (Multiplizierer, Dividierer, schneller Schieber, PTU (Protection Test Unit)).
Die Studie deckte außerdem ein potenzielles Sicherheitsproblem bei der Handhabung der IO-Berechtigungs-Bitmap auf: Beim Zugriff auf 4-Byte-Ports wurden nur die Berechtigungsbits für die ersten 3 Bytes überprüft, der Zugriff auf das 4. Byte wurde jedoch nicht überprüft, was theoretisch den Zugriff auf Hardware-Register ermöglichte, die eigentlich nicht zugänglich sein sollten.
Basierend auf veröffentlichtem Mikrocode wurde eine Open-Source-Z386-CPU entwickelt, in SystemVerilog implementiert und auf einem FPGA ausgeführt. Anstatt jede Anweisung als separate Registertransferschicht (RTL) zu implementieren, nutzt die Z386 Hardwarestrukturen, die vom ursprünglichen Mikrocode gesteuert werden. Die Leistung der resultierenden Implementierung entspricht der eines schnellen 386-PCs (~70 MHz). Die Z386 führte erfolgreich DOS 6/7, DOS/4GW, DOS/32A sowie Spiele wie Doom und Cannon Fodder aus.
Source: opennet.ru
