Entuzijasti su uspješno izdvojili i rastavili mikrokod Intel 80386 procesora, koji se zbog nedostatka dokumentacije smatrao "crnom kutijom". Binarna slika mikrokoda ponovno je stvorena pomoću umjetne inteligencije iz fotografija visoke rezolucije čipa, a logika je dešifrirana pomoću ožičenja na čipu. Postupno su određeni struktura mikrooperacija, polja, redoslijed izvršavanja i oznake kraja instrukcija. Nalazi projekta objavljeni su na GitHubu kao javna domena.

Otkriveno je da se u CPU-u 80386 svaka instrukcija izvršava u potpunosti putem mikrokoda, dok se u 8086 i modernim procesorima neke instrukcije obrađuju izravno. Nadalje, za razliku od procesora 8086, mikrokod u 80386 ne implementira izravno algoritme, već prvenstveno konfigurira hardverske akceleratore (množitelj, djelitelj, brzi pomak, PTU (Protection Test Unit)).
Studija je također otkrila potencijalni sigurnosni problem u rukovanju bitmapom IO dozvola: prilikom pristupanja 4-bajtnim portovima provjeravani su samo bitovi dozvola za prva 3 bajta, a pristup 4. bajtu nije provjeravan, što je teoretski omogućavalo pristup hardverskim registrima koji ne bi trebali biti dostupni.
Na temelju objavljenog mikrokoda, razvijen je CPU otvorenog koda z386, implementiran u SystemVerilogu i pokrenut na FPGA-u. Umjesto implementacije svake instrukcije kao zasebnog RTL-a (Register-Transfer Layer), z386 implementira hardverske strukture kontrolirane originalnim mikrokodom. Performanse rezultirajuće implementacije podudaraju se s onima brzog 386 računala (~70 MHz). z386 je uspješno pokretao DOS 6/7, DOS/4GW, DOS/32A i igre poput Dooma i Cannon Foddera.
Izvor: opennet.ru
