
Appassionati sono riusciti a estrarre e disassemblare con successo il microcodice del processore Intel 80386, che a causa della mancanza di documentazione era considerato un «black box». L'immagine binaria del microcodice è stata ricreata con l'ausilio dell'IA a partire da fotografie ad alta risoluzione del chip, e la logica operativa è stata analizzata tracciando le connessioni sul chip. Gradualmente sono state definite la struttura delle microistruzioni (μ-ops), i campi, l'ordine di esecuzione e i marcatori di fine istruzione. I risultati del progetto pubblicati sono disponibili su GitHub come dominio pubblico.
È stato rivelato che nel CPU 80386 ogni istruzione viene eseguita completamente tramite microcodice, mentre nei 8086 e nei processori moderni parte delle istruzioni viene elaborata direttamente. Inoltre, a differenza dei processori 8086, nel 80386 il microcodice non implementa direttamente gli algoritmi, ma configura principalmente gli acceleratori hardware (moltiplicatore, divisore, shift veloce, PTU (Unità di Test di Protezione)).
Durante la ricerca è stato inoltre individuato un potenziale problema di sicurezza nella gestione della bitmap dei diritti di accesso alle operazioni di input/output (IO permission bitmap): durante l'accesso a porte a 4 byte i bit dei diritti di accesso venivano controllati solo per i primi 3 byte, mentre l'accesso al quarto byte non veniva verificato, consentendo theoreticamente l'accesso ai registri hardware a cui doveva essere negato l'accesso.
Sulla base del microcodice pubblicato è stato sviluppato un CPU aperto z386, implementato in SystemVerilog e che funziona utilizzando FPGA. Invece di implementare ogni istruzione come una singola RTL (wikipedia.org) (livello di trasferimento registri) nel z386 sono state implementate strutture hardware gestite dal microcodice originale. Le prestazioni dell'implementazione realizzata corrispondono a quelle di un veloce PC 386 (~70MHz). Sotto il controllo dello z386 è stato possibile avviare con successo DOS 6/7, DOS/4GW, DOS/32A e giochi come Doom e Cannon Fodder.
Fonte: linux.org.ru
