
Entuziștii au reușit să extragă și să dezassembleze cu succes microcodul procesorului Intel 80386, considerat un „negru cutie” din cauza lipsei documentației. Imaginea binară a microcodului a fost recreată cu ajutorul AI pe baza fotografiilor cu cristalul în rezoluție mare, iar logica de funcționare a fost analizată prin urmărirea conexiunilor pe cristal. Treptat, au fost identificate structura microcomenzilor (μ-ops), câmpurile, ordinea de execuție și markerii de finalizare a instrucțiunilor. Proiectul sunt publicate 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 procesoarele moderne o parte din instrucțiuni 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, îmbunătățirea rapidă, PTU (Unitatea de Testare a Protecției)).
În timpul cercetării s-a descoperit, de asemenea, o posibilă problemă de securitate în procesarea hărții de permisiuni de intrare/ieșire (bitmap de permisiune IO): în cazul unei accesări de 4 octeți la porturi, biții de permisiune erau verificați doar pentru primii 3 octeți, iar accesul la al 4-lea octet nu era verificat, ceea ce teoretic permitea accesarea registrelor hardware la care accesul ar fi trebuit să fie interzis.
Pe baza microcodului publicat a fost dezvoltat CPU-ul deschis z386, implementat în limbajul SystemVerilog și funcționând pe baza FPGA. În loc să implementeze fiecare instrucțiune sub formă de RTL (wikipedia.org) (nivelul transferului de registre) în z386 sunt implementate structuri hardware gestionate de microcodul original. Performanța implementării pregătite corespunde unui PC 386 rapid (~70MHz). Sub controlul z386 a fost posibil să se pornească cu succes DOS 6/7, DOS/4GW, DOS/32A și jocuri precum Doom și Cannon Fodder.
Sursa: linux.org.ru
