Enthusiasten haben den Microcode i386 disassembliert und einen offenen CPU z386 erstellt

Enthusiasten konnten erfolgreich den Mikrocode des Intel 80386-Prozessors extrahieren und disassemblieren, der aufgrund fehlender Dokumentation als „Schwarze Box“ galt. Das binäre Abbild des Mikrocodes wurde mit Hilfe von KI anhand von hochauflösenden Bildern des Chips rekonstruiert, während die Arbeitslogik durch das Nachverfolgen der Verbindungen auf dem Chip analysiert wurde. Allmählich wurden die Struktur der Mikrobefehle (μ-ops), die Felder, der Ausführungsreihenfolge und die Endmarker von Instruktionen identifiziert. Die Ergebnisse des Projekts veröffentlicht sind auf GitHub als Public Domain verfügbar.


Es wurde festgestellt, dass im CPU 80386 jeder Befehl vollständig über Mikrocode ausgeführt wird, während im 8086 und modernen Prozessoren ein Teil der Befehle direkt verarbeitet wird. Darüber hinaus implementiert der Mikrocode im 80386, im Gegensatz zu den 8086-Prozessoren, die Algorithmen nicht direkt, sondern konfiguriert hauptsächlich Hardwarebeschleuniger (Multiplikator, Divider, schneller Shift, PTU (Protection Test Unit)).

Im Verlauf der Untersuchung wurde auch ein potenzielles Sicherheitsproblem beim Umgang mit der Berechtigungskarte für Ein-/Ausgabe (IO permission bitmap) entdeckt: Bei einem 4-Byte-Zugriff auf die Ports wurden die Berechtigungsbits nur für die ersten 3 Bytes überprüft, während der Zugang zum 4. Byte nicht überprüft wurde, was theoretisch den Zugriff auf Hardwareregister erlaubte, auf die der Zugang verweigert werden sollte.

Basierend auf dem veröffentlichten Mikrocode wurde eine offene CPU z386, umgesetzt in SystemVerilog und betrieben mit FPGA. Anstatt jede Anweisung als separaten RTL (wikipedia.org) (Register-Transfer-Level) zu implementieren, werden in z386 Hardwarestrukturen verwendet, die vom Originalmikrocode gesteuert werden. Die Leistung der implementierten Version entspricht einem schnellen 386-PC (~70MHz). Unter z386 konnten erfolgreich DOS 6/7, DOS/4GW, DOS/32A und Spiele wie Doom und Cannon Fodder gestartet werden.

Quelle: linux.org.ru

60GB SSD 8Gb DDR4