
Entuziasti uspeli uspešno iztisniti in razstaviti mikrokod procesorja Intel 80386, ki je bil zaradi pomanjkanja dokumentacije obravnavan kot »črna škatla«. Binarna slika mikrokoda je bila ponovno ustvarjena s pomočjo AI iz fotografij kristala v visoki ločljivosti, logika delovanja pa je bila razčlenjena s sledenjem povezavam na kristalu. Postopoma so bila določena struktura mikrok Command (μ-ops), polja, vrstni red izvajanja in markerji konca navodil. Rezultati projekta so bili objavljeni na GitHubu kot javno dobro.
Ugotovljeno je bilo, da v CPU 80386 vsako navodilo popolnoma izvede mikrokod, medtem ko v 8086 in sodobnih procesorjih del navodil obdelujejo neposredno. Poleg tega mikrokod v 80386, za razliko od procesorjev 8086, ne izvaja algoritemov neposredno, temveč predvsem nastavlja strojne pospeševalnike (množitelj, delitelj, hiter premik, PTU (Protection Test Unit)).
V okviru raziskave je bila odkrita tudi možna varnostna težava pri obdelavi bitne karte pravic dostopa do vhodne/izhodne naprave (IO permission bitmap): pri 4-bajtni zahtevi za dostop do vrat so se preverjali bitalne pravice dostopa samo za prve 3 bite, dostop do 4. bajta pa ni bil preverjen, kar teoretično dovoljuje dostop do strojnih registrov, katerih dostop bi moral biti prepovedan.
Na podlagi objavljenega mikrokoda je bil razvit odprti CPU z386, implementiran v jeziku SystemVerilog in deluje z uporabo FPGA. Namesto da bi vsako navodilo realizirali kot ločeno RTL (wikipedia.org) (Register-transfer level), so v z386 implementirane strojne strukture, ki jih nadzoruje izvirni mikrokod. Učinkovitost pripravljene implementacije ustreza hitremu 386 PC (~70MHz). Pod nadzorom z386 je bilo uspešno zagnati DOS 6/7, DOS/4GW, DOS/32A in igre, kot sta Doom in Cannon Fodder.
Izvor: linux.org.ru
