Enthusiasten konnten erfolgreich den Mikrokode des Intel 80386 Prozessors extrahieren und disassemblieren, der aufgrund fehlender Dokumentation als „schwarze Box“ galt. Das binäre Abbild des Mikrokodes wurde mithilfe von KI anhand von hochauflösenden Bildern des Chips rekonstruiert, und die Arbeitslogik wurde durch die Verfolgung der Verbindungen auf dem Chip analysiert. Allmählich wurden die Struktur der Mikrooperationen (μ-ops), die Felder, die Ausführungsreihenfolge und die Endmarkierungen der Instruktionen identifiziert. Die Ergebnisse des Projekts wurden auf GitHub als Gemeingut veröffentlicht.

Es wurde festgestellt, dass im CPU 80386 jede Anweisung vollständig über Mikrokode ausgeführt wird, während im 8086 und in modernen Prozessoren ein Teil der Anweisungen direkt bearbeitet wird. Darüber hinaus implementiert der Mikrokode im 80386, im Gegensatz zu den 8086 Prozessoren, keine Algorithmen direkt, sondern konfiguriert hauptsächlich Hardwarebeschleuniger (Multiplikator, Divisor, schneller Shift, PTU (Protection Test Unit)).
Im Rahmen der Forschung wurde auch ein mögliches Sicherheitsproblem bei der Verarbeitung der Berechtigungsbitmap für Ein-/Ausgabe (IO Permission Bitmap) festgestellt: Bei 4-Byte-Zugriffen auf Ports wurden die Berechtigungsbits nur für die ersten 3 Bytes überprüft, während der Zugriff auf das 4. Byte nicht kontrolliert wurde. Theoretisch war dadurch ein Zugriff auf Hardwareregister möglich, dessen Zugriff eigentlich verboten sein sollte.
Auf der Grundlage des veröffentlichten Mikrocodes wurde eine offene CPU z386 entwickelt, die in SystemVerilog implementiert ist und mit FPGA arbeitet. Anstatt jede Instruktion als separates RTL (Register-Transfer-Level) zu implementieren, wurden im z386 Hardware-Strukturen realisiert, die vom ursprünglichen Mikrocodes gesteuert werden. Die Leistung der Implementierung entspricht der eines schnellen 386 PCs (~70 MHz). Mit der z386 gelang es, erfolgreich DOS 6/7, DOS/4GW, DOS/32A sowie Spiele wie Doom und Cannon Fodder zu starten.
Quelle: opennet.ru
