Un emulador duplica (proporciona una emulación de) las funciones de un sistema usar un diverso sistema, de modo que el segundo sistema se comporte como (y aparece ser) el primer sistema. Este foco en la reproducción exacta del comportamiento externo está en contraste con algunas otras formas de la simulación de computadora, que pueden referirse a un modelo abstracto del sistema que es simulado.
Un emulador del hardware del es un emulador que toma la forma de un dispositivo de hardware. Los ejemplos incluyen emuladores de la impresora dentro de la ROM de la impresora, y el FPGA - emuladores basados del hardware
En un sentido teórico, la tesis de la Iglesia-Turing implica que cualquier condiciones se puede emular dentro de cualquier otra. Sin embargo, en la práctica, puede ser absolutamente difícil, particularmente cuando el comportamiento exacto del sistema que se emulará no se documenta y tiene que ser deducido con la ingeniería reversa . También no dice nada sobre apremios de la sincronización; si el emulador no se realiza tan rápidamente como el hardware original, el software emulado puede funcionar mucho más lentamente que tendría en el hardware original, accionando posiblemente tiempo interrumpe para alterar funcionamiento.
En muchos casos, la meta de la emulación en nuevo arte de los medios es preservar un medio digital para poderlo ser ahorrado indefinidamente y reproducirse sin error, de modo que no haya confianza en el hardware que envejece y llega a ser obsoleto. La paradoja es que la emulación y el emulador tienen que ser hechos para trabajar en las computadoras futuras.
Mientras que podría la emulación, si estuvo llevada el extremo, ir abajo al nivel atómico, basando su salida en una simulación del trazado de circuito real de una fuente de energía virtual, esto sería una solución alto inusual. Los emuladores paran típicamente en una simulación de las especificaciones documentadas del hardware y de la lógica digital. La suficiente emulación de algunas plataformas de hardware requiere exactitud extrema, abajo al nivel de ciclos de reloj individuales, de características indocumentadas, de elementos análogos imprevisibles, y de insectos de la puesta en práctica. Éste es particularmente el caso con los ordenadores personales clásicos tales como el comodoro 64, cuyo depende software a menudo encendido alto - los trucos programados bajos sofisticados inventados por los programadores y el Demoscene del juego.
En cambio, algunas otras plataformas han tenido muy poco uso de la dirección directa del hardware. En estos casos, una capa simple de la compatibilidad puede ser suficiente. Esto traduce las llamadas de sistema para el sistema emulado a las llamadas de sistema para el sistema huesped.
Los reveladores del software para los sistemas encajados o el diseño de las consolas del juego video su software en especialmente emuladores exactos llamaron a menudo los simuladores antes de intentarlo en el hardware verdadero. Esto es para poder ser producido y probar el software antes de que el hardware final exista en granes cantidades, para poderlo probar sin tardar la época de copiar el programa que se eliminará errores en un bajo sin la introducción de los efectos secundarios de una depuración . En muchos casos, el simulador es producido realmente por la compañía que proporciona el hardware, que aumenta teóricamente su exactitud.
Los autobuses no se emulan a menudo, por razones de funcionamiento o simplicidad, y los periférico virtuales comunican directo con la CPU o el subsistema de la memoria.
Éste es claramente el caso siempre que el hardware emulado permita memoria avanzada gerencia (en este caso, la lógica MMU se puede encajar en el emulador de la memoria, hacer un módulo sus los propios, o integrar a veces en el simulador de la CPU).
Incluso si la computadora emulada no ofrece un MMU, aunque, hay generalmente otros factores que rompen la equivalencia entre la memoria lógica y física: mucho (si no el de la oferta de la mayoría) de la arquitectura Memoria-trazó la entrada-salida ; incluso los que no tienen casi invariable un bloque de memoria lógica trazaron a ROM, así que a ella significan que memoria-poner en orden el módulo debe ser desechado si se va la naturaleza inalterable de la ROM a ser emulada. Las características tales como conmutación de banco o segmentación pueden también complicar la emulación de la memoria.
Consecuentemente, la mayoría de los emuladores ejecutan por lo menos dos procedimientos para escribir a y leer en memoria lógica, y es deber de estos procedimientos para trazar cada acceso a la localización correcta del objeto correcto.
En un Base-límite que trata el sistema de donde está memoria de acceso único en la lectura la memoria del 0 de la dirección tratar el ROMSIZE, mientras que el resto es RAM, algo a lo largo de la línea de los procedimientos siguientes sería típico: ¡ lang=" del
lang=" del
La forma más simple de un simulador de la CPU es un intérprete, que sigue el flujo de la ejecución del código emulado del programa y, porque cada instrucción del código automático encontrada, ejecuta las operaciones en el procesador de anfitrión que son semántico equivalente a las instrucciones originales.
Esto es hecha posible asignando a un variable a cada registro y a la bandera de la CPU simulada. La lógica de la CPU simulada puede entonces ser traducido más o menos directo a los algoritmos del software, creando una re-puesta en práctica del software que refleja básicamente la puesta en práctica de hardware original.
El ejemplo siguiente ilustra cómo la simulación de la CPU se puede lograr por un intérprete. En este caso, las interrupciones están comprobar-para antes de cada instrucción ejecutada, aunque este comportamiento es raro en los emuladores verdaderos por razones de funcionamiento. lang=" del
Sin embargo, la pena de la velocidad inherente en la interpretación puede ser un problema al emular a las computadoras cuya velocidad de procesador está en la misma orden de la magnitud que el ordenador central. Hasta no hace muchos anos, la emulación en tales situaciones era considerada totalmente impráctica por muchos.
Qué permitió el romperse con esta restricción eran los avances en técnicas dinámicas de la recompilación . La traducción a priori del simple de código emulado del programa en el código runnable en la arquitectura del anfitrión es generalmente imposible debido a varias razones:
el código puede ser modificado mientras que en el RAM, incluso si es modificado solamente por el sistema operativo emulado al cargar el código (por ejemplo de disco)
puede no haber una manera de distinguir confiablemente los datos (que no deben ser traducidos) del código ejecutable .
Las varias formas de recompilación dinámica, incluyendo la técnica popular del recopilador apenas a tiempo (JIT), intentan evitar estos problemas esperando hasta que el flujo de control del procesador salte en una localización que contiene código sin traducir, y solamente entonces (" apenas en time") traduce un bloque del código al código del anfitrión que puede ser ejecutado. El código traducido se mantiene un escondrijo del código del, y el código original no se pierde ni se afecta; esta manera, incluso segmentos de datos puede (sin setido) ser traducida por el recompiler, dando por resultado no más que una pérdida de tiempo de la traducción.
Los emuladores de la CPU son populares entre algunos gamers. Algunos juegos de ordenador se diseñan para computadoras más lentas y no trabajarán correctamente en computadoras más nuevas, más rápidas. Algunos emuladores de la CPU, tales como Mo'Slo, pueden retrasar la CPU, o un proceso de un programa, permitiendo que trabaje correctamente.
Algunos más viejos juegos no fueron diseñados con la velocidad de computadoras más rápidas en mente. Un juego diseñado para una PC de 30 megaciclos con un contador de tiempo llano de 300 segundos del juego pudo solamente dar al jugador 30 segundos en una PC de 300 megaciclos. Otros programas, tales como algunos programas del DOS, pueden incluso no funcionar en computadoras más rápidas.
Esto puede dar lugar a una ventaja del funcionamiento, puesto que cada módulo de la entrada-salida se puede adaptar a las características del dispositivo emulado; los diseños basados en un estándar, el unificado API de la entrada-salida pueden sin embargo rivalizar tales modelos más simples, si está bien thought-out, y tienen la ventaja adicional del " automatically" proporcionando un servicio enchufable con el cual los dispositivos virtuales de tercera persona se pueden utilizar dentro del emulador.
Una entrada-salida unificada API puede no reflejar necesario la estructura del autobús verdadero del hardware: ¡el diseño del autobús es limitado por varios apremios eléctricos y una necesidad de la concurrencia del hardware gerencia que puede ser no hecha caso sobre todo en una puesta en práctica del software.
Incluso en los emuladores que tratan cada dispositivo como caso especial, hay generalmente una infraestructura básica común para:
el de manejo interrumpe por medio de un procedimiento que fije banderas legibles por el simulador de la CPU siempre que se levante una interrupción, permitiendo la CPU virtual al " encuesta para el interrupts" (virtual);
escribiendo a y leyendo en memoria física, por medio de dos procedimientos similares a los que está que se ocupan de memoria lógica (aunque, contrariamente a estes 3ultimo, el anterior se puede dejar a menudo hacia fuera, y referencias directas a la memoria ponen en orden se emplee en lugar de otro)
.
| Random links: | Condado de Copenhague | Manuel Chaves González | Complejo de la prisión estatal de Arizona - Safford | Juan Lescroart | hinchazón Neutrón-inducida |