Entusiaster har framgångsrikt extraherat och disassemblerat mikrokoden för Intel 80386, som på grund av bristen på dokumentation ansågs vara en "svart låda". Den binära bilden av mikrokoden återskapades med hjälp av AI genom högupplösta foton av kristallen, och logiken analyserades genom att spåra anslutningarna på kristallen. Successivt fastställdes strukturen för mikrokoder (μ-ops), fält, exekveringsordning och slutmarkörer för instruktioner. Projektets resultat har publicerats på GitHub som offentlig egendom.

Det har upptäckts att i CPU 80386 utförs varje instruktion helt via mikrokod, medan i 8086 och moderna processorer bearbetas en del av instruktionerna direkt. Dessutom, till skillnad från 8086-processorer, implementerar 80386:s mikrokod inte algoritmer direkt utan istället styrs hårdvaruacceleratorer (multiplikator, dividerare, snabb förskjutning, PTU (Protection Test Unit)).
Under studien upptäcktes också ett potentiellt säkerhetsproblem vid hantering av åtkomstkorts bitmap för in- och utdata (IO permission bitmap): vid en 4-byte åtkomst till portar kontrollerades åtkomsträttighetsbitarna endast för de första 3 byten och åtkomsten till den 4:e byten kontrollerades inte, vilket teoretiskt tillät åtkomst till hårdvaruregister som skulle ha varit förbjuden.
Baserat på den publicerade mikrokoden har en öppen CPU z386 utvecklats, implementerad i SystemVerilog och fungerande med FPGA. Istället för att implementera varje instruktion som en separat RTL (Register-transfer level) har z386 hårdvarustrukturer som styrs av den ursprungliga mikrokoden. Prestandan för den förberedda implementationen motsvarar en snabb 386-PC (~70MHz). Med z386 lyckades vi framgångsrikt köra DOS 6/7, DOS/4GW, DOS/32A och spel som Doom och Cannon Fodder.
Källa: opennet.ru
