Uns entusiastas extraeron e desmontaron con éxito o microcódigo dun procesador Intel 80386, que se consideraba unha "caixa negra" debido á falta de documentación. Recreouse unha imaxe binaria do microcódigo mediante IA a partir de fotografías de alta resolución do chip, e a lóxica descifrábase mediante o cableado no chip. A estrutura das microoperacións, os campos, a orde de execución e os marcadores de fin de instrución determináronse gradualmente. Os resultados do proxecto publícanse en GitHub como dominio público.

Descubriuse que na CPU 80386, cada instrución se executa integramente mediante microcódigo, mentres que no 8086 e nos procesadores modernos, algunhas instrucións se procesan directamente. Ademais, a diferenza dos procesadores 8086, o microcódigo do 80386 non implementa algoritmos directamente, senón que configura principalmente aceleradores de hardware (multiplicador, divisor, desprazador rápido, PTU (Unidade de proba de protección)).
O estudo tamén descubriu un posible problema de seguridade no manexo do mapa de bits de permisos de E/S: ao acceder a portos de 4 bytes, só se comprobaban os bits de permiso para os primeiros 3 bytes e non se comprobaba o acceso ao cuarto byte, o que teoricamente permitía o acceso a rexistros de hardware que non deberían ser accesibles.
Baseándose no microcódigo publicado, desenvolveuse unha CPU z386 de código aberto, implementada en SystemVerilog e executada nunha FPGA. En lugar de implementar cada instrución como unha RTL (Register-Transfer Layer) separada, o z386 implementa estruturas de hardware controladas polo microcódigo orixinal. O rendemento da implementación resultante coincide co dun PC 386 rápido (~70 MHz). O z386 executou correctamente DOS 6/7, DOS/4GW, DOS/32A e xogos como Doom e Cannon Fodder.
Fonte: opennet.ru
