¿Cuál es la diferencia entre emulación y simulación?


98

Duplicar posible:
Simulator or Emulator? What is the difference?

En términos comprensibles simples, ¿cuál es la diferencia entre los dos términos?

[Ya he mirado this, this y this]

295

(utilizando como ejemplo el primer enlace)

que desea duplicar el comportamiento de una vieja calculadora HP, hay dos opciones:

  1. usted escribe nueva programa que dibuja la pantalla y las teclas de la calculadora, y cuando el usuario hace clic en las teclas, sus programas hacen lo que hizo la calculadora antigua.Se trata de un simulador de

  2. Se obtiene un volcado del firmware de la calculadora, a continuación, escribir un programa que carga el firmware y lo interpreta de la misma manera que el microprocesador en la calculadora hizo. Se trata de un emulador

El simulador intenta duplicar el comportamiento del dispositivo.
El Emulador intenta duplicar el funcionamiento interno del dispositivo.

+20

Nunca he visto una explicación más simple ... Muchas gracias :) 27 feb. 102010-02-27 02:09:12

+1

Sí, esa es una excelente manera de resumir eso. ¡Gracias! 27 may. 102010-05-27 15:52:54

+9

Más específicamente, un emulador intenta duplicar el comportamiento completo de un dispositivo desde un punto de vista externo. Puede o no necesitar duplicar el funcionamiento interno de un dispositivo para lograr eso. Una simulación intenta duplicar un subconjunto específico del comportamiento de un dispositivo. 13 may. 112011-05-13 20:18:47

+6

No estoy de acuerdo con la respuesta dada aquí.Ambos ejemplos son simulación, solo en diferentes niveles. Si desenchufa el procesador de la calculadora, conecta una sonda, ejecuta la calculadora y obtiene las mismas respuestas, esa sonda es un emulador. Jay Elston, coxy y semiuseless dan mejores respuestas a continuación. 26 sep. 112011-09-26 17:53:00

+28

Es curioso, esta respuesta dice exactamente lo contrario a la respuesta dada a la [pregunta duplicada] (http://stackoverflow.com/q/1584617/485561). 01 mar. 122012-03-01 12:42:30

  0

Gran respuesta, pero IMO, sería correcto cambiar 'device' noun por' system', porque además de dispositivos tales como procesos, algún comportamiento directamente, etc. podrían implementarse también. 27 abr. 122012-04-27 11:13:09

+2

Parece haber una diferencia en la opinión de lo que significan las palabras en el contexto de la tecnología, como lo demuestra la respuesta diametralmente opuesta pero popular [http://stackoverflow.com/a/1584701/1257965] a una pregunta duplicada . Me pondré del lado de la respuesta de Carlos porque en mi opinión hay una distinción sobre en qué nivel se imita algo y creo que la distinción se hace correctamente en su respuesta. Véase también la opinión de Peter Hans van den Muijzenberg [esta página] (http://ed-thelen.org/comp-hist/emulation.html) sobre el dolor de estómago y la ingestión de manzanas inmaduras. 14 nov. 122012-11-14 12:23:45

  0

¿Eso significa que un simulador de vuelo es en realidad un emulador de vuelo? 02 sep. 152015-09-02 11:54:48

  0

Así que esa es la diferencia entre Xcode Simulator y Android Studio Emulator :) 17 sep. 162016-09-17 09:58:36

  0

Woah! Esta respuesta contradice la respuesta aceptada en su [posible duplicado] (http://stackoverflow.com/questions/1584617/simulator-or-emulator-what-is-the-difference). La respuesta duplicada no 'emula' * (lea duplicado) * ¡la respuesta original! : P 23 nov. 162016-11-23 17:26:50

  0

Esto es lo opuesto a mi comprensión de los dos términos diferentes. Como ejemplo, creo que un piano digital * emula * un piano analógico (en tiempo real, el mismo comportamiento externo observable), mientras que usted puede * simular * la colisión de dos galaxias en el software (no en tiempo real, y solo desea inspeccionar ciertos internos física de la colisión, no cómo se comportaría el sistema completo, por ejemplo, cómo se vería exactamente en el cielo). 02 dic. 172017-12-02 12:45:36


1

Un "emulador" es un término para un simulador de hardware basado en software, pero en general los dos son sinónimos.

+1

Realmente no sé nada, pero creo que a veces un simulador no emula realmente el hardware de bajo nivel real, sino que es un pedacito de software que simula las aplicaciones de plataforma de alto nivel. 01 feb. 102010-02-01 04:28:19

+1

Hay una distinción entre los dos. La "emulación" implica una duplicación de comportamientos más detallada que la "simulación". 27 dic. 112011-12-27 18:33:52


6

Ambos son modelos de un objeto que tiene algún medio para controlar entradas y observar salidas. Con un emulador, quiere que la salida sea exactamente lo que produciría el objeto que está emulando. Con un simulador, quiere que ciertas propiedades de su salida sean similares a las que produciría el objeto.

Permítanme dar un ejemplo: supongamos que quiere hacer algunas pruebas del sistema para ver cómo el agregar un nuevo sensor (como un termómetro) a un sistema afectaría el sistema. Usted sabe que el termómetro envía un mensaje 8 veces por segundo que contiene su medida.

Simulación: si todavía no tiene el termómetro pero desea comprobar que este mensaje no sobrecargará su sistema, puede simular el sensor conectando una unidad que envíe un número aleatorio 8 veces por segundo. Puede ejecutar cualquier prueba que no dependa del valor real que envía el sensor.

Emulación: supongamos que tiene un termómetro muy costoso que mide a 0.001 C, y desea ver si puede salir adelante con un termómetro más económico que solo mide al más cercano 0.5 C. Puede emular el termómetro más económico usando un termómetro caro redondeando la lectura al 0.5 C más cercano y ejecutando pruebas que dependen de los valores de temperatura.

  0

Verifique los enlaces, está hablando de la emulación de hardware 01 feb. 102010-02-01 04:57:25


3

No sé si esta es la opinión general, pero siempre he diferenciado los dos por lo que se utilizan. Se usa un emulador si realmente desea usar la máquina emulada para su salida. Un simulador, por otro lado, es para cuando quieres estudiar la máquina simulada o probar su comportamiento.

Por ejemplo, si desea escribir alguna lógica de máquina de estado en su aplicación (que se ejecuta en una CPU de propósito general), escriba un emulador de máquina de estado pequeño. Si desea estudiar la eficiencia o la viabilidad de una máquina de estado para un problema en particular, escriba un simulador.

+1

Eso también lo comprendo. Incluso acuñé una frase para esa distinción: "Un simulador es un emulador en una misión". 01 feb. 102010-02-01 08:33:26


1

Procedente del mundo del desarrollo de hardware. . .

Funcionalidad de las pruebas de simulación. 2 + 2 = 4 etc.

Emulación prueba la funcionalidad en el entorno específico (64-bit, 16-bit, dedos de manos y pies).

Aquí está un ejemplo de alimentos:

Tiene dos piezas de pan, un cuchillo, mantequilla de maní y jalea y se le dándoles a un jardín de niños. Escribes instrucciones sobre cómo hacer un sándwich.

En la simulación, que actuaría a cabo el proceso, pretender que abrió los frascos, pretenden difundir la mantequilla de maní, etc.

Si al final de las instrucciones de su quedamos con mantequilla de maní sólo se jalea y no, entonces usted falló la simulación y necesita corregir sus instrucciones. Por otro lado, si tiene un "emparedado" completo, las instrucciones deberían ser válidas

En la emulación, utilizaría representaciones cercanas de las partes reales (mismo pan, mantequilla de maní, etc.). ¿Qué pasa si le regalaste a tu niño de kindergarten un cuchillo de plástico barato y mantequilla de maní realmente espesa? El cuchillo se rompería en la emulación y las instrucciones necesitarían ser aclaradas o arregladas para acomodar este problema. En este caso, puede sugerir calentar la mantequilla de maní en el microondas.

En la práctica: Considere un sistema de 64 bits que está programando y un sistema de 32 bits que realmente ejecutará el código. Agrega dos números muy grandes e imprime el resultado. En la simulación, todo funciona (lograste obtener el código correcto para agregar dos números). Sin embargo, en la emulación encuentras que recibes una respuesta incorrecta. ¿Que pasó? La emulación del sistema de 32 bits no pudo manejar los números grandes. Este es un ejemplo de funcionalidad correcta (es decir, simulación) pero no soporte adecuado para su entorno de tiempo de ejecución (emulación)


12

Esta es una pregunta difícil de responder definitivamente porque los términos ya menudo se usan mal o se confunden.

A menudo, un emulador es una reimplementación completa de un dispositivo o plataforma en particular. El emulador actúa exactamente como lo haría el dispositivo real. Por ejemplo, un emulador de NES implementa la CPU, el chip de sonido, la salida de video, las señales del controlador, etc. El código no modificado de un castridge de NES puede descargarse y luego la imagen resultante puede cargarse en nuestro emulador y reproducirse.

Un simulador es una implementación parcial de un dispositivo/plataforma, hace lo suficiente para sus propios fines. Por ejemplo, el simulador de iPhone ejecuta una "aplicación de iPhone" que se ha compilado específicamente para apuntar a x86 y la API Cocoa en lugar de la CPU ARM del dispositivo real y la API Cocoa Touch. Sin embargo, el binario que ejecutamos en el simulador no funcionaría en el dispositivo real.


0

Por favor, perdónenme si me equivoco. Y tengo que admitir por adelantado que no he hecho ninguna investigación sobre estos 2 términos. De todos modos ...

La emulación es para imitar algo con resultados conocidos detallados, sean cuales sean los comportamientos internos en realidad. Solo tratamos de hacer las cosas y no nos importa mucho lo que sucede dentro.

Simulación, por otro lado, es imitar algo con algunos comportamientos conocidos para estudiar algo que aún no se conoce.

mis 2cents


0

Aquí hay un ejemplo: recientemente desarrollamos un modelo de simulación para medir el tiempo de respuesta de la transmisión remota de un sistema aún por desarrollar. Un análisis de emulación no nos hubiera dado la respuesta a tiempo para actualizar la capacidad de ancho de banda, por lo que la simulación fue nuestro enfoque. Como estábamos más que interesados ​​en determinar las necesidades de ancho de banda, nos preocupamos principalmente por el tamaño y el volumen de la transacción, no por el procesamiento del sistema. El modelo de simulación estaba en una pieza independiente de software que fue diseñada para modelar procesos de eventos discretos. Para resumir en respuesta a su pregunta, la emulación es un tipo de simulación. Pero, en este caso, la simulación NO era una emulación porque no representaba completamente el nuevo sistema, solo el tamaño y el volumen de las transacciones.


10

En general, pienso en esta gran pregunta en tres partes: simulación, estimulación, emulación y modelado.

La simulación es el uso del modelado para crear un soporte representativo y controlable en un sistema complejo. Las simulaciones son, por definición, siempre incompletas.

Estimulación es el uso de entradas ambientales artificiales a una interfaz bien definida para conducir, examinar y probar el comportamiento de un dispositivo real.

La emulación es la sustitución de un dispositivo del mundo real con un modelo en una interfaz bien definida con el fin de permitir respuestas controladas del dispositivo emulado del mundo real. La emulación es "completa" si todas las interfaces están presentes, y el comportamiento observado resultante coincide con el del dispositivo del mundo real.

El modelado es el uso de técnicas matemáticas, hardware especializado y juicio de ingeniería para crear un soporte representativo en un entorno, dispositivo, sistema o comportamiento real.

En "términos simples" esto significa que un emulador es algo que a través de una interfaz bien definida no se puede distinguir del equivalente en el mundo real (excepto en velocidad). Las emulaciones pueden ser completas o incompletas.

En "términos simples" una simulación es cualquier sistema que se puede controlar y examinar para una gama de comportamientos que son similares o análogos a un sistema del mundo real. Las simulaciones nunca son, por definición, completas.

+1

Eso es cuatro piezas 19 feb. 152015-02-19 04:50:19


0

Estaba confundido entre los dos procesos.He encontrado esta sencilla explicación sobre la diferencia entre los emuladores y simuladores

  1. Simulador:
    suponga que tiene el programa ensamblador escrito en un archivo y correspondiente archivo exe está listo. El simulador es el software de la PC que lee las instrucciones del exe y 'minmics' el funcionamiento del procesador.

  2. Emulador:
    Emulator es un (software para PC + un procesador). El procesador se puede conectar al TARGET BOARD cuando desee probar el software desarrollado en tiempo real para verificar los errores de tiempo de ejecución. Cuando no está en uso, puede desenchufarse. El procesador tendrá una interfaz paralela o JTAG con la PC para descargar el archivo exe para su ejecución.

Por lo tanto, mientras que el simulador es lento en su ejecución, emulador será capaz de dar comprobar en tiempo real el código desarrollado. En general, primero probará su código desarrollado en el simulador y luego irá al para verificar el emulador.

fuente: http://www.dsprelated.com/groups/c6x/show/148.php


3

Basado en el software y la experiencia de ingeniería de sistemas, me gustaría resumir la diferencia de la siguiente manera:

Simulación: para mí, esto es siempre en el software - todos los aspectos del sistema real es solo MODELADO por algún código y/o matemática. La simulación intenta reproducir con precisión el comportamiento (o predecirlo) del sistema real, pero solo lo aproxima.

Emulación: A diferencia de la simulación, NO APROXIMA el comportamiento del sistema real, COPIA el comportamiento del sistema real. Un emulador puede involucrar hardware. Pero también puede ser completamente en software. P.ej. obtienes estos emuladores de software para consolas de juegos antiguos como el Sega Genesis. Es un emulador porque COPIAS la funcionalidad de génesis real tanto que puedes ejecutar el código Genesis original en el emulador. Un simulador de genesis no podría ejecutar el código original, APROXIMARÍA su comportamiento solo, produciendo resultados similares, dependiendo de qué tan buenos eran los modelos del sistema original.

Un emulador de un componente del sistema se puede incluir en un sistema más grande, reemplazando por completo el componente que está emulando; un simulador no podría porque no es una representación lo suficientemente precisa del comportamiento del componente original.