A method and an apparatus allows complete and efficient verification of
cross-architecture ISA emulation. A random verification framework runs
concurrently on two different computer architectures. The framework
operates without regard to existing native applications and relies instead
on binary instructions in a native ISA. The framework determines emulation
errors at a machine instruction level. A random code generator generates
one or more sequences of native machine instructions and corresponding
initial machine states in a pseudo-random fashion. The native instructions
are generated from an entire set of the native ISA. The instructions and
the state information are provided to initialize a native computer
architecture. The same instructions and state information are provided
using standard machine-to-machine languages, such as TCP/IP, for example,
to a target computer architecture. A binary emulator then translates the
native instructions so that the instructions may be executed on the target
computer. Alternatively, the binary emulator may be embodied as a software
routine operating on a simulator, which in turn operates on the native
computer architecture. The final states of the native and the target
computer architectures are gathered, and a verification engine compares
the results. Any differences may indicate an emulation error or failure.
The random verification framework may be run continuously to test
emulation of the complete set of instructions from the native ISA after
the testing continues for an infinite length of time.
Un método y un aparato permite la verificación completa y eficiente de la emulación de la cruz-arquitectura ISA. Un marco al azar de la verificación funciona concurrentemente en dos diversas arquitecturas de computadora. El marco funciona sin consideración alguna hacia usos nativos existentes y confía en lugar de otro en instrucciones binarias en un ISA nativo. El marco determina errores de la emulación en un nivel de la instrucción de máquina. Un generador de código al azar genera unas o más secuencias los estados iniciales de máquina de la máquina nativa de las instrucciones y el corresponder en una manera pseudo-random. Las instrucciones nativas se generan de un sistema entero del ISA nativo. Las instrucciones y la información del estado se proporcionan para inicializar una arquitectura de computadora nativa. Las mismas instrucciones e información del estado se proporcionan usando idiomas estándares de la ma'quina-a-ma'quina, tales como TCP/IP, por ejemplo, a una arquitectura de computadora de la blanco. Un emulador binario entonces traduce las instrucciones nativas para poder ejecutarse las instrucciones en la computadora de la blanco. Alternativomente, el emulador binario se puede incorporar como rutina del software que funciona encendido un simulador, que alternadamente funciona encendido la arquitectura de computadora nativa. Los estados finales del natural y las arquitecturas de computadora de la blanco se recolectan, y un motor de la verificación compara los resultados. Cualquier diferencia puede indicar un error o una falta de la emulación. El marco al azar de la verificación se puede funcionar continuamente para probar la emulación del sistema completo de instrucciones del ISA nativo después de que la prueba continúe para una longitud del tiempo infinita.