
Entusiastid suutsid edukalt välja võtta ja dekompileerida Intel 80386 protsessori mikrokoodi, mis dokumentatsiooni puudumise tõttu peeti "mustaks karbiks". Mikrokoodi binaarfail taastati AI abil, kasutades kõrgresolutsiooniga kraanipilte, ning töö logika uuriti läbi kristalli ühenduste jälgimise. Aja jooksul määratleti mikrokäskude (μ-ops) struktuur, väljad, täitmise järjestus ja käskude lõpp-märgid. Projekti arendustööd avaldatud on GitHub avaliku omandina.
On leitud, et CPU 80386 puhul täidetakse iga käsk täielikult mikrokoodi kaudu, samas kui 8086 ja kaasaegsetes protsessorites töödeldakse osa käskudest otseselt. Lisaks sellele, erinevalt 8086 protsessoritest, ei rakenda 80386 mikrokood algoritme otseselt, vaid peamiselt konfigureerib riistvaralisi kiirendajaid (korrutaja, jagaja, kiire nihke, PTU (Protection Test Unit)).
Uuringu käigus leiti võimalik turvaprobleem, mis oli seotud sisendi/väljundi õiguste bitikaardi töötlemisega (IO permission bitmap): 4-baidise juurdepääsuga portidele kontrolliti õiguste bitte ainult esimese 3 baidi jaoks, samas kui 4. baidi juurdepääsu ei kontrollitud, mis teoreetiliselt võimaldas juurdepääsu riistvararegistritele, millele juurdepääs pidi olema keelatud.
Avaldatud mikrokoodi põhjal on välja töötatud avatud CPU z386, mis on rakendatud SystemVerilogi keeles ja töötab FPGA-de kasutamisel. Iga käsu rakendamiseks eraldi RTL (wikipedia.org) (Register-transfer level) z386-s on rakendatud riistvarastruktuurid, mida juhib originaalmikrokood. Valmis rakenduse jõudlus vastab kiirele 386 PC-le (~70MHz). z386 korral õnnestus edukalt käivitada DOS 6/7, DOS/4GW, DOS/32A ning mänge nagu Doom ja Cannon Fodder.
Allikas: linux.org.ru
