A lelkes fejlesztők sikeresen kinyerték és diszassemblerelték az Intel 80386 processzor mikrokódját, amelyet a dokumentáció hiánya miatt "fekete dobozként" tartottak számon. A mikrokód bináris képe mesterséges intelligencia segítségével készült a kristály magas felbontású fényképei alapján, és a működése a kristályon lévő kapcsolatok nyomkövetésével lett feltérképezve. Fokozatosan meghatározták a mikroparancsok (μ-ops) szerkezetét, a mezőket, a végrehajtás sorrendjét és az utasítások végső jelzőit. A projekt eredményeit a GitHub-on közzétették mint közkinccsé.

Megállapításra került, hogy a CPU 80386-ban minden utasítást teljes egészében a mikrokód hajt végre, míg a 8086 és a modern processzorok esetében az utasítások egy része közvetlenül is feldolgozásra kerül. Ezenkívül a 8086-os processzorokkal ellentétben az 80386-ban a mikrokód nem valósítja meg az algoritmusokat közvetlenül, hanem főként a hardveres gyorsítókat (szorzó, osztó, gyors eltolás, PTU (Protection Test Unit)) konfigurálja.
A kutatás során egy lehetséges biztonsági problémát is felfedeztek a bemeneti/kimeneti jogok bitképe (IO permission bitmap) feldolgozásával kapcsolatban: 4-bájtos porthozzáférés esetén a hozzáférési jogok bitjeit csak az első 3 bájt számára ellenőrizték, míg a 4. bájt hozzáférését nem ellenőrizték, ami elméletileg lehetővé tette volna az olyan hardverregiszterekhez való hozzáférést, amelyekhez hozzáférést pedig meg kellett volna tagadni.
A közzétett mikrokód alapján egy nyílt CPU z386 készült, amelyet a SystemVerilog nyelven valósítottak meg és FPGA-n keresztül működik. A z386-ban ahelyett, hogy minden utasítást külön RTL (Register-transfer level) formájában valósítanának meg, hardveres struktúrákat alkalmaznak, amelyeket az eredeti mikrokód irányít. Az elkészített megvalósítás teljesítménye megfelel egy gyors 386-os PC-nek (~70MHz). A z386 alatt sikerült sikeresen futtatni a DOS 6/7-et, DOS/4GW-t, DOS/32A-t, és játékokat, mint a Doom és a Cannon Fodder.
Forrás: opennet.ru
