terminology - the - ¿Simulador o emulador? ¿Cuál es la diferencia?
what are emulators (20)
Si bien entiendo lo que significan simulación y emulación en general, casi siempre me confundo. Supongamos que creo una pieza de software que imita el hardware / software existente, ¿cómo debería llamarlo? ¿Un simulador o un emulador?
¿Alguien podría explicar la diferencia en términos de programación?
Bonificación: ¿Cuál es la diferencia en inglés entre estos dos términos? (Lo siento, no soy un hablante nativo :))
Ambos son modelos de un objeto del que tiene algún medio para controlar entradas y observar salidas.
La diferencia clave es que:
- Con un emulador , desea que la salida coincida exactamente con lo que produciría el objeto que está emulando.
- Con un simulador , desea que ciertas propiedades de su salida sean similares a lo que produciría el objeto.
Déjeme dar un ejemplo: suponga que desea hacer algunas pruebas del sistema para ver cómo la adición de un nuevo sensor (como un termómetro) a un sistema afectaría al sistema. Usted sabe que el termómetro envía un mensaje 8 veces por segundo que contiene su medida.
Simulación: si aún no tiene el termómetro, pero quiere probar que esta tasa de mensajes no sobrecargará su sistema, puede simular el sensor adjuntando una unidad que envía un número aleatorio 8 veces por segundo. Puede ejecutar cualquier prueba que no se base en el valor real que envía el sensor.
Emulación: suponga que tiene un termómetro muy costoso que mide a 0,001 C, y quiere ver si puede conseguirlo con un termómetro más barato que solo mide al 0,5 C más cercano. Puede emular el termómetro más barato usando un termómetro costoso y luego redondee la lectura al 0,5 C más cercano y realice pruebas que se basan en los valores de temperatura.
Tenga en cuenta que las simulaciones también se pueden utilizar para pronosticar o predecir el comportamiento. Las simulaciones de análisis de elementos finitos se utilizan en muchas aplicaciones, incluida la predicción del tiempo y los túneles de viento virtuales.
Las definiciones de los términos:
- emulación - superar o igualar exactamente
- simular - imitar en apariencia o carácter
Emulador:
Considera una situación que solo sabes inglés y estás en China. Para interactuar con una persona china necesitas un traductor. Ahora, el papel del traductor es que buscará su opinión en inglés y se convertirá a chino y le dará esa información a la persona china y obtendrá la respuesta de la persona china y se convertirá a inglés y le dará la salida en inglés. Ahora ese traductor y persona china es el emulador. Ambas combinadas proporcionarán una funcionalidad similar, como si se estuviera comunicando con la persona en inglés. Así que el hardware puede ser diferente pero la funcionalidad será la misma.
Simulador:
No puedo dar mejor ejemplo que SPICE o simulador de vuelo. Ambos reemplazarán el comportamiento de los componentes de hardware con el software o modelo matemático que se comportará de manera similar al hardware.
Al final, depende del contexto al que la solución se adapte mejor a las necesidades del proyecto.
En informática, tanto una simulación como una emulación producen las mismas salidas, desde las mismas entradas, que el sistema original; Sin embargo, una emulación también utiliza los mismos procesos para lograrlo y está hecha de los mismos materiales . Una simulación utiliza diferentes procesos del sistema original. También vale la pena mencionar el término replicación, que es el intermedio de los dos: usar los mismos procesos pero estar hecho de un material diferente.
Entonces, si quiero ejecutar mi antiguo juego de Super Mario Bros en mi PC, uso un emulador de SNES, ya que utiliza el mismo código de computadora (procesos) o uno similar para ejecutar el juego, y uso el mismo material o similar (chip de silicona) . Sin embargo, si quiero volar un Boeing 747 jet en mi PC, uso un simulador de vuelo porque usa procesos completamente diferentes al original (¡no hay alas reales, elevaciones ni aerodinámica involucradas!).
Aquí están las definiciones exactas tomadas de un glosario de informática:
Una simulación es un modelo de un sistema que captura las conexiones funcionales entre las entradas y las salidas del sistema, pero sin estar necesariamente basado en procesos que sean iguales o similares a los del sistema en sí.
Una réplica es un modelo de un sistema que captura las conexiones funcionales entre las entradas y salidas del sistema y se basa en procesos que son iguales o similares a los del sistema en sí.
Una emulación es un modelo de algún sistema que captura las conexiones funcionales entre las entradas y salidas del sistema, en función de los procesos que son iguales o similares a los de ese sistema y que están construidos con los mismos materiales que el sistema. .
Referencia: The Open University, M366 Glosario 1.1, 2007
En un lenguaje más o menos normal: si su software puede hacer todo lo que puede hacer el sistema imitado, es un emulador. Si solo se aproxima a los resultados de un sistema (IT o de otro tipo), es un simulador.
Es una diferencia en el enfoque. Los emuladores 1 centran en recrear el comportamiento de un sistema, sin tener en cuenta cómo funciona el sistema internamente. Los simuladores 2 centran en el modelado de los componentes de un sistema. Usas un emulador cuando te preocupas principalmente por lo que hace un sistema, y un simulador cuando te importa cómo lo hace.
En cuanto a sus significados generales en inglés, la emulación es "el esfuerzo por igualar o superar a otros en cualidades o acciones ", mientras que la simulación es " modelar , replicar, duplicar el comportamiento, la apariencia o las propiedades de". No mucha diferencia. La emulación proviene de æmulus , "esforzarse, rivalizar" y está relacionada con "imitar" e "imagen", lo que sugiere un parecido con la palanca de la superficie. "Simulación" proviene de similis "me gusta", al igual que la palabra "similar", que quizás sugiere una congruencia más profunda.
Referencias:
- Wikipedia: 1
- Wikipedia: 2
- Wikcionario: emulation
- Wikcionario: simulation
- Etimología online: emulation
- Etimología online: simulation
Esta pregunta es probablemente mejor respondida echando un vistazo a la práctica histórica.
En el pasado, he visto emuladores de consola de juegos en PC para PlayStation y SEGA.
Los simuladores son comunes cuando se refiere a un software que intenta imitar acciones de la vida real, como conducir o volar. Gran Turismo y Microsoft Flight Simulator vienen a la mente como ejemplos clásicos de simuladores.
En cuanto a la diferencia lingüística, la emulación generalmente se refiere a la acción de copiar las características o comportamientos dignos de elogio de alguien (o algo). La emulación es distinta de la imitación, en la cual una persona es copiada con el propósito de burlarse.
El significado lingüístico del verbo ''simulación'' es esencialmente pretender o imitar a alguien o algo.
Explicación simple.
Si desea convertir su PC (ejecutando Windows) a Mac, puede hacer cualquiera de estas acciones:
(1) Simplemente puede instalar un tema de Mac en su Windows. Entonces, su PC se parece más a Mac, pero en realidad no puede ejecutar ningún programa Mac.
(SIMULATION)
(o)
(2) Puede programar su PC para que funcione como Mac (no estoy seguro si esto es posible: P). Ahora incluso puede ejecutar programas Mac con éxito y esperar la misma salida que en Mac.
(EMULATION)
En el primer caso, puede experimentar Mac, pero no puede esperar la misma salida que en Mac.
En el segundo caso, puede esperar la misma salida que en Mac, pero el hecho es que solo es una PC.
Hace algunos años se me ocurrió un adagio muy corto que, creo, capta muy bien la esencia de la diferencia:
Un simulador es un emulador en una misión.
Con eso quiero decir que usas un emulador cuando no puedes usar la cosa real, y usas un simulador cuando no puedes usar la cosa real y quieres descubrir algo al respecto .
La distinción entre los dos términos es un poco borrosa. Procedentes de un mundo en el que los "emuladores" son piezas de hardware que le permiten depurar sistemas integrados. Y recuerde que los productos que le permitieron tener capacidades de ICE (Emulación de circuito) para depurar una plataforma de PC, me parece que el uso del término "Emulación" es un nombre poco apropiado para el software que SIMULA el comportamiento de una pieza de hardware.
Mi justificación para el uso actual del término es Emulación es que puede "aumentar" la funcionalidad, y solo se refiere a una aproximación "razonable" del comportamiento del sistema.
HIELO: (En circuito de emulación) Una pieza de hardware que se conecta a una placa en lugar del procesador real. Le permite ejecutar el sistema como si el procesador real estuviera presente. Por lo general, estos tienen una variante del procesador para ejecutar el software con lógica de cola para permitir al usuario interrumpir la ejecución y un solo paso bajo el control del hardware. Algunos también proporcionarían capacidad de registro. La mayoría de los sistemas de desarrollo de procesadores modernos han reemplazado la emulación de tipo ICE con JTAG Emulation, donde JTAG solo habla con el procesador a través de un enlace serial de propósito especial y toda la ejecución la realiza el procesador montado en la placa.
EMULADOR de software: a un emulador 0x86 solo le preocupa poder ejecutar el lenguaje ensamblador 0x86, no proporcionar un modelo de ciclo preciso por ciclo de un procesador ESPECÍFICO 0x86. Bochs es un ejemplo de esto. QEMU hace esto, pero también permite la "virtualización" utilizando módulos especiales del kernel.
SIMULADOR: Texas Instruments proporciona un modelo de comportamiento SEGURO DE CICLO de los procesadores para el desarrollo de software que pretende ser una SIMULACIÓN precisa del comportamiento de los núcleos del procesador ESPECÍFICO para que los desarrolladores la utilicen antes de tener hardware en funcionamiento.
Funcionalidad de aumento del EMULADOR de software: BLEEM no solo le permitió ejecutar el software de Playstation, sino que también permitió que la pantalla saliera con una resolución más alta de lo que la Playstation podía ofrecer, y también aprovechó las capacidades más avanzadas de las GPU disponibles. (Es decir, mejor mezcla y suavizado de texturas).
La emulación es el proceso de imitar el comportamiento observable para coincidir con un objetivo existente. El estado interno del mecanismo de emulación no tiene que reflejar con precisión el estado interno del objetivo que está emulando.
La simulación, por otro lado, implica modelar el estado subyacente del objetivo. El resultado final de una buena simulación es que el modelo de simulación emulará el objetivo que simula.
Idealmente, debería poder observar la simulación y observar las propiedades que también vería si observara el objetivo original. En la práctica, puede haber algunos atajos a la simulación por razones de rendimiento, es decir, algunos aspectos internos de la simulación pueden ser en realidad una emulación.
MAME es un emulador de juegos de arcade; Hyperterm es un emulador de terminal (no muy bueno). No es necesario modelar la máquina arcade o un terminal en detalle para obtener el comportamiento emulado deseado.
Flight Simulator es un simulador; SPICE es un simulador de electrónica. Modelan lo más posible cada detalle del objetivo para representar lo que el objetivo hace en realidad.
EDITAR: Otras respuestas han señalado que el objetivo de una emulación es poder sustituir el objeto que está emulando. Ese es un punto importante. El foco de una simulación es más en el modelado del estado interno del objetivo, y la simulación no necesariamente lleva a la emulación. En particular, una simulación puede ser mucho más lenta que el tiempo real. SPICE, por ejemplo, no puede sustituir un circuito electrónico real (incluso si se supone que existe algún tipo de dispositivo mágico que conecta perfectamente los circuitos eléctricos con una simulación de SPICE). Una simulación de simulación no siempre conduce a la emulación:
Las definiciones de las palabras describen mejor la diferencia. Una búsqueda en google da las siguientes definiciones de simular y emular:
Simular imitar la apariencia o el carácter de.
emular igualar o superar (una persona o logro), típicamente por imitación.
Una simulación imita un sistema. Una emulación simula un sistema tan bien que podría reemplazarlo o incluso superarlo.
En computación, una emulación sería una caída en reemplazo del sistema que está emulando. Muchas veces incluso superará al sistema que está imitando. Por ejemplo, los emuladores de la consola de juegos suelen realizar mejoras, como una mayor compatibilidad de hardware, un mejor rendimiento y una mejor calidad de audio / video.
Las simulaciones, por otro lado, están limitadas por ser modelos. Son un mejor intento de imitar un sistema, pero no reemplazos para él. Hay emuladores de hardware porque el hardware puede ser imitado y sería difícil notar la diferencia. No hay un emulador de agricultura porque no hay una emulación que pueda reemplazar la agricultura real. Solo podemos simular un modelo de agricultura para obtener información sobre cómo cultivar mejor.
No creo que el emulador y el simulador puedan compararse. Ambos imitan algo, pero no son parte del mismo alcance de razonamiento, no se usan en el mismo contexto.
En resumen: un emulador está diseñado para copiar algunas características del material original e incluso puede reemplazarlo en el entorno real. Un simulador no está diseñado para copiar las características del original, sino solo para que parezca similar al original a los seres humanos. Sin las características del original, el simulador no puede reemplazarlo en el entorno real.
Un emulador es un dispositivo que imita algo lo suficientemente cerca como para que pueda ser sustituido por algo real . Por ejemplo, desea que un circuito funcione como un circuito ROM (memoria de solo lectura), pero también desea ajustar el contenido hasta que sea lo que usted desea. Utilizará un emulador de ROM, una caja negra (probablemente basada en la CPU) con interfaces físicas y eléctricas compatibles con la ROM que desea emular. El emulador se conectará al dispositivo en lugar de la ROM real. La placa base no verá ninguna diferencia cuando trabaje, pero podrá cambiar fácilmente el contenido de la ROM emulada. Dicho de otro modo, el emulador actuará exactamente como lo que realmente existe en el contexto de su placa base (quizás un poco más lento debido al modelo interno real), pero habrá funciones adicionales (como reescritura) visibles solo para el diseñador, fuera del contexto de la placa base . Por lo tanto, la definición del emulador sería: algo que imita al original, tiene todas sus características funcionales, puede reemplazarlo en cierta medida en el mundo real y puede tener características adicionales que no son visibles en el contexto normal.
Un simulador se usa en otro contexto de pensamiento, por ejemplo, un simulador de avión, un simulador de automóvil, etc. La simulación se ocupará solo de algún aspecto de la cosa real, generalmente aquellos relacionados con cómo un ser humano lo percibirá y controlará . El simulador no realizará las funciones de las cosas reales, y no puede ser sustituido por él. El simulador de avión no volará ni transportará a alguien, no es su propósito en absoluto. El simulador no tiene la intención de funcionar, sino de parecerle al piloto algo parecido a lo real para otros fines que no sean los normales, por ejemplo, para permitir el entrenamiento en tierra (incluso en situaciones inusuales como la falla de todos los motores). Así que la definición del simulador sería: algo que puede parecer humano, en cierta medida, como el original, pero no puede reemplazarlo para su uso real. Además el piloto sabrá que el simulador es un simulador.
No creo que veamos ningún simulador de ROM, porque la ROM no está interactuando con seres humanos, ni veremos ningún emulador de avión, porque los aviones no pueden tener un reemplazo que realice las mismas funciones en el mundo real.
En mi opinión, el modelo dentro de un emulador o un simulador puede ser cualquier cosa, y no tiene que ser similar al modelo del original. Es probable que un modelo de emulador de ROM sea software en lugar de hardware, MS Flight Simulator no puede ser más software de lo que es.
Esta comparación de ambos términos contradecirá la respuesta actualmente seleccionada (de Toybuilder) que pone la diferencia en el modelo interno, mientras que mi sugerencia es que la diferencia es si la falsificación puede o no puede usarse para realizar la función real en el mundo real ( hasta cierto punto aceptado, en efecto).
Tenga en cuenta que el simulador de plano también tendrá que simular la tierra, el sol, el viento, etc., que no forman parte del plano, por lo que un simulador de plano deberá imitar algunos aspectos del plano, así como el entorno del avión. Plano porque no se usa en este entorno real, sino en una sala de entrenamiento.
Esta es una gran diferencia con el emulador que emula solo el original, y su propósito es ser utilizado en el entorno del original sin necesidad de emularlo. De vuelta al contexto del avión ... ¿qué podría ser un emulador de avión? Tal vez un tren que conecte dos aeropuertos, en realidad dos pasos de avión, con pasajeros, con azafatas a bordo, con el interior del automóvil como una cabina de avión real, y con el capitán diciendo "señoras y señores, nuestra altitud es actualmente de 10 km y la temperatura en nuestro destino es 24 ° C ". Su beneficio es difícil de ver, hum ...
Como conclusión, el emulador es una cosa real destinada a funcionar, el simulador es una falsa intención de engañar al usuario.
Para comprender la diferencia entre un simulador y un emulador, tenga en cuenta que un simulador intenta imitar el comportamiento de un dispositivo real. Por ejemplo, en el caso del simulador de iOS, simula el comportamiento real de un dispositivo iPhone / iPad real. Sin embargo, el simulador utiliza las distintas bibliotecas instaladas en Mac (como QuickTime) para realizar su renderización de modo que el efecto se vea igual que un iPhone real. Además, las aplicaciones probadas en el simulador se compilan en código x86, que es el código byte que entiende el simulador. Un dispositivo iPhone real, por el contrario, utiliza código basado en ARM.
En contraste, un emulador emula el funcionamiento de un dispositivo real. Las aplicaciones probadas en un emulador se compilan en el código de bytes real utilizado por el dispositivo real. El emulador ejecuta la aplicación traduciendo el código de bytes a una forma que puede ser ejecutada por la computadora host que ejecuta el emulador.
Para comprender la sutil diferencia entre simulación y emulación, imagine que está tratando de convencer a un niño de que jugar con cuchillos es peligroso. Para simular esto, pretendes cortarte con un cuchillo y gemir de dolor. Para emular esto, realmente te cortaste.
Simulación = para análisis y estudio.
Emulación = Para usar como sustituto
Un simulador es un entorno que modela, pero un emulador es uno que replica el uso en el dispositivo o sistema original.
El simulador imita la actividad de algo que está simulando. "Aparece" (mucho puede ir con este "aparece", dependiendo del contexto) para ser lo mismo que lo que se está simulando. Por ejemplo, el simulador de vuelo "parece" ser un vuelo real para el usuario, aunque lo transporta de un lugar a otro.
El emulador, por otro lado, en realidad " hace " lo que hace la cosa que se emula, y al hacerlo también " parece estar haciendo lo mismo ". Un emulador puede usar un conjunto diferente de protocolos para imitar lo que se está emulando, pero el resultado / resultado es siempre el mismo que el objeto original. Por ejemplo, EMU8086 emula el microprocesador 8086 en su computadora, que obviamente no se ejecuta en 8086 (= protocolos diferentes ), pero la salida que da es lo que daría un 8086 real.
Un emulador es un modelo de un sistema que aceptará cualquier entrada válida que el sistema emulado acepte, y producirá la misma salida o resultado. Por lo tanto, su software es un emulador, solo si reproduce el comportamiento del sistema emulado con precisión.
Un emulador es una alternativa al sistema real, pero se utiliza un simulador para optimizar, comprender y estimar el sistema real.
Un emulador puede reemplazar el original para un uso real .
Un simulador es un modelo para el análisis.
Si un simulador de vuelo pudiera transportarte de A a B, entonces sería un emulador de vuelo.
Una PC virtual emula una PC.
Un emulador siempre tendrá que operar casi en tiempo real. Para un simulador que no siempre es el caso. Una simulación geológica podría hacer 1000 años / segundo o más.
Una PC virtual intenta emular una computadora, desde el punto de vista de un programador PERO, al mismo tiempo, simula una computadora desde el punto de vista de un ingeniero eléctrico .
Una simulación es un sistema que se comporta de manera similar a otra cosa, pero se implementa de una manera completamente diferente. Proporciona el comportamiento básico de un sistema, pero no necesariamente cumple con todas las reglas del sistema que se simula. Está ahí para darle una idea de cómo funciona algo.
Una emulación es un sistema que se comporta exactamente como otra cosa, y cumple con todas las reglas del sistema que se emula. Es efectivamente una réplica completa de otro sistema, hasta que es compatible con los binarios de las entradas y salidas del sistema emulado, pero funciona en un entorno diferente al entorno del sistema emulado original. Las reglas son fijas y no se pueden cambiar o el sistema falla.
Simulador: es similar al intérprete. es decir, realmente ejecuta el código real en línea por línea para imitar el comportamiento
Emulador: es ejecutable similar. Es decir, toma código compilado y lo ejecuta.