Entuziștii au reușit să extragă și să dezasembleze cu succes microcodul procesorului Intel 80386, care, din cauza lipsei de documentație, era considerat un „consumator de negru”. Imaginile binare ale microcodului au fost recreate prin intermediul AI, folosind fotografii cu cristale de înaltă definiție, iar logica de funcționare a fost dezvăluită prin urmărirea conexiunilor de pe cristal. Treptat, au fost definite structura micro-comenzilor (μ-ops), câmpurile, ordinea de execuție și marcajele de sfârșit al instrucțiunilor. Proiectul a fost publicat pe GitHub ca domeniu public.

S-a constatat că în CPU 80386 fiecare instrucțiune este complet executată prin microcod, în timp ce în 8086 și în procesoarele moderne, o parte a instrucțiunilor este procesată direct. În plus, spre deosebire de procesoarele 8086, în 80386 microcodul nu implementează algoritmi direct, ci configurează în principal acceleratoarele hardware (multiplicator, divizor, deplasare rapidă, PTU (Unitate de Testare a Protecției)).
În timpul cercetării a fost descoperită, de asemenea, o posibilă problemă de securitate în procesarea hărții de biți a permisiunilor de intrare/ieșire (bitmap de permisiune IO): la accesarea porturilor de 4 bytes, biții de permisiune erau verificați doar pentru primele 3 bytes, iar accesul la al 4-lea byte nu era verificat, ceea ce teoretic permitea accesul la registrele hardware la care accesul ar fi trebuit să fie interzis.
Pe baza microcodului publicat, a fost dezvoltat un CPU deschis z386, implementat în limbajul SystemVerilog și funcționând pe FPGA. În loc să implementeze fiecare instrucțiune sub formă de RTL (Register-transfer level) separat, z386 a implementat structuri hardware care sunt controlate de microcodul original. Performanța realizării pregătite corespunde unui PC rapid 386 (~70MHz). Sub controlul z386, au fost reușite cu succes să ruleze DOS 6/7, DOS/4GW, DOS/32A și jocuri precum Doom și Cannon Fodder.
Sursa: opennet.ro
