El NEC V20 es un procesador compatible con el Intel 8088 que emplea microcódigo, aunque con características propias. Esto hace necesario utilizar el mismo microcódigo si el objetivo es crear un emulador ciclo-exacto de este procesador, tal como busca [GloriousCow]. Ante esto, surge la tarea de decodificar la ROM de microcódigo mediante fotografías del die de esta CPU, con el fin de generar una imagen de ROM utilizable.

Como ocurre con cualquier ROM fabricada, técnicamente se puede realizar de forma manual; sin embargo, la sección de ROM en la imagen del die contenía 29.928 bits, los cuales, incluso a un ritmo bastante ágil, requerirían una cantidad considerable de tiempo para procesar. Aquí, uno puede aplicar la técnica de dividir y vencer, delegando partes de la ROM a colaboradores, o bien utilizar la automatización y visión artificial para obtener una respuesta tan pronto como se termine de desarrollar y probar la herramienta.

Para visualizar la complejidad del proceso, a continuación se observa una muestra del detalle necesario para la identificación de bits en el hardware original.

Primer plano de algunos bits del microcódigo.
Primer plano de algunos bits del microcódigo.

La imagen anterior ilustra la dificultad de identificar individualmente los estados lógicos presentes en el silicio. Aunque existe la herramienta MaskRomTool de [Travis Goodspeed] diseñada específicamente para automatizar la detección de bits, se descubrió que no había suficiente contraste en la imagen del die para que funcionara de manera fiable. Lo que sí proporcionó fueron las ubicaciones de los bits y, a partir de ello, archivos PNG de 42×42 píxeles de cada unidad.

Posteriormente, se entrenó una red neuronal convolucional (CNN) para determinar la diferencia entre un bit 0 y un 1. Esto aún requirió la clasificación manual de 1.000 imágenes, pero funcionó bastante bien. Aunque algunos bits fueron marcados como ambiguos, resultó más sencillo utilizar el criterio humano para clasificar ese puñado de imágenes que ajustar el modelo de CNN.

Con este microcódigo obtenido, fue posible compararlo con la arquitectura interna del V20 para determinar completamente la función de cada parte. Aunque el trabajo aún no está terminado, existe un repositorio de GitHub que contiene el progreso realizado hasta la fecha.

El microcódigo del V20 ha sido el punto focal de mucha disputa legal en la época en que NEC e Intel se enfrentaban por los límites de la compatibilidad de procesadores frente a la competencia. Vía Hackaday.