Bien que NEC V20 soit compatible avec Intel 8088, il possède des caractéristiques de microcode qui lui sont propres. [GloriousCow] tente de décoder le ROM de microcode présent sur l’image de la puce afin de créer une image ROM exploitable pour développer un émulateur précis au niveau des cycles. Comme la séparation manuelle des 29 928 bits de l’image aurait pris beaucoup de temps, l’automatisation a été utilisée. L’outil MaskRomTool de [Travis Goodspeed] n’a pas pu déterminer les bits de manière fiable en raison du faible contraste, mais il a détecté leurs emplacements et généré des fichiers PNG de 42×42 pixels pour chaque bit. Ensuite, un réseau neuronal convolutif (CNN) a été entraîné à partir de 1 000 images classées manuellement afin de distinguer les bits 0 et 1. Les quelques bits restés incertains ont été examinés visuellement. Le microcode obtenu est mis en correspondance avec l’architecture interne du V20. Le travail, qui n’est pas encore terminé, est publié sur GitHub. Le microcode était au cœur des procès historiques opposant NEC et Intel au sujet de la compatibilité des processeurs.
Pourquoi c’est important
Ce travail montre que la compatibilité avec Intel 8088 pourrait ne pas suffire à expliquer l’ensemble du comportement du NEC V20 ; la mise au jour du microcode propre au processeur vise à reproduire fidèlement, dans l’émulation, non seulement le jeu d’instructions, mais aussi le déroulement des cycles de traitement. L’utilisation du traitement d’image et d’un CNN fournit un exemple applicable aux méthodes de rétro-ingénierie, en faisant de l’examen d’une grande quantité de données issues d’images de puces à faible contraste un processus qui ne repose plus sur un travail manuel. Toutefois, la mise en correspondance du ROM avec l’architecture interne n’étant pas achevée, il n’est pas encore clair dans quelle mesure les données obtenues pourront être utilisées dans un émulateur. Les résultats pourraient également contribuer à la compréhension des débats techniques et juridiques historiques autour de la compatibilité du V20 avec Intel.