
Gli appassionati sono riusciti a estrarre e disassemblare con successo il microcodice del processore Intel 80386, che era considerato un «cubo nero» a causa della mancanza di documentazione. L'immagine binaria del microcodice è stata ricreata utilizzando l'AI a partire da fotografie dell chip ad alta risoluzione, e la logica operativa è stata analizzata attraverso la tracciatura delle connessioni sul chip. Gradualmente sono state identificate la struttura delle microistruzioni (μ-ops), i campi, l'ordine di esecuzione e i marker di fine istruzione. I progressi del progetto pubblicati sono disponibili su GitHub come patrimonio pubblico.
È stato scoperto che nel CPU 80386 ciascuna istruzione viene eseguita completamente tramite microcodice, mentre nei processori 8086 e moderni parte delle istruzioni è elaborata direttamente. Inoltre, a differenza dei processori 8086, nel 80386 il microcodice non implementa direttamente gli algoritmi, ma configura principalmente gli acceleratori hardware (moltiplicatori, divisori, shift veloce, PTU (Unità di Test di Protezione)).
Durante la ricerca è stato anche scoperto un possibile problema di sicurezza nella gestione della mappa dei permessi di input/output (bitmap dei permessi IO): per l'accesso a 4 byte alle porte, si controllavano solo i permessi per i primi 3 byte e non per il 4° byte, il che teoricamente permetteva l'accesso a registri hardware che avrebbero dovuto essere vietati.
Basato sul microcodice pubblicato sviluppato CPU open-source z386, realizzato in SystemVerilog e funzionante su FPGA. Invece di implementare ogni istruzione come un singolo RTL (wikipedia.org) (Register-transfer level), nel z386 sono state implementate strutture hardware gestite dal microcodice originale. Le prestazioni della realizzazione preparata corrispondono a un veloce PC 386 (~70MHz). Sotto il controllo di z386 è stato possibile avviare con successo DOS 6/7, DOS/4GW, DOS/32A e giochi come Doom e Cannon Fodder.
Fonte: linux.org.ru
