Quelle est la différence entre l’émulation et la simulation?

Duplication possible:
Simulateur ou émulateur? Quelle est la différence?

En termes simples et compréhensibles, quelle est la différence entre les deux termes?

[J’ai déjà regardé ceci , ceci et cela ]

(En utilisant comme exemple votre premier lien)

Vous voulez dupliquer le comportement d’une ancienne calculasortingce HP, il y a deux options:

  1. Vous écrivez un nouveau programme qui dessine l’affichage et les clés de la calculasortingce, et lorsque l’utilisateur clique sur les touches, vos programmes font ce que faisait l’ancienne calculasortingce. Ceci est un simulateur

  2. Vous obtenez un vidage du microprogramme de la calculasortingce, puis vous écrivez un programme qui charge le microprogramme et l’interprète de la même manière que le microprocesseur de la calculasortingce. Ceci est un émulateur

Le simulateur essaie de dupliquer le comportement du périphérique.
L’ émulateur tente de dupliquer le fonctionnement interne de l’appareil.

C’est une question difficile à répondre définitivement parce que les termes sont souvent mal utilisés ou confus.

Souvent, un émulateur est une ré-implémentation complète d’un périphérique ou d’une plate-forme particulier. L’émulateur agit exactement comme le ferait le périphérique réel. Par exemple, un émulateur NES implémente le processeur, la puce audio, la sortie vidéo, les signaux du contrôleur, etc.

Un simulateur est une implémentation partielle d’un périphérique / plate-forme, il en fait juste assez pour ses propres besoins. Par exemple, le simulateur iPhone exécute une «application iPhone» spécialement compilée pour cibler x86 et l’API Cocoa, plutôt que le processeur ARM et l’API Cocoa Touch du périphérique réel. Cependant, le binary que nous exécutons dans le simulateur ne fonctionnerait pas sur le périphérique réel.

En général, je pense à cette question plus vaste en trois parties: simulation, stimulation, émulation et modélisation.

La simulation est l’utilisation de la modélisation pour créer un support représentatif contrôlable pour un système complexe. Les simulations sont, par définition, toujours incomplètes.

La stimulation est l’utilisation d’intrants environnementaux artificiels dans une interface bien définie pour piloter, examiner et tester le comportement d’un périphérique réel.

L’émulation est le remplacement d’un appareil du monde réel par un modèle à une interface bien définie dans le but de permettre des réponses contrôlées à partir du périphérique du monde réel émulé. L’émulation est “complète” si toutes les interfaces sont présentes, et le comportement observé résultant correspond à celui du périphérique réel.

La modélisation est l’utilisation de techniques mathématiques, de matériel spécialisé et d’un jugement technique pour créer un représentant représentatif d’un environnement, d’un dispositif, d’un système ou d’un comportement réel.

En “termes simples”, cela signifie qu’un émulateur est indissociable d’une interface bien définie par rapport à l’équivalent du monde réel (sauf en vitesse). Les émulations peuvent être complètes ou incomplètes.

En termes simples, une simulation est un système qui peut être contrôlé et examiné pour une gamme de comportements similaires ou analogues à un système réel. Les simulations ne sont jamais, par définition, complètes.

Les deux sont des modèles d’un object que vous avez un moyen de contrôler les entrées et les sorties d’observation. Avec un émulateur, vous voulez que la sortie soit exactement ce que produirait l’object que vous émulez. Avec un simulateur, vous voulez que certaines propriétés de votre sortie soient similaires à ce que l’object produirait.

Laissez-moi vous donner un exemple – supposons que vous vouliez effectuer des tests du système pour voir comment l’ajout d’un nouveau capteur (comme un thermomètre) à un système affecterait le système. Vous savez que le thermomètre envoie un message 8 fois par seconde contenant sa mesure.

Simulation – si vous ne possédez pas encore de thermomètre, mais que vous souhaitez vérifier que ce taux ne surchargera pas votre système, vous pouvez simuler le capteur en connectant une unité qui envoie un nombre aléatoire 8 fois par seconde. Vous pouvez exécuter n’importe quel test qui ne dépend pas de la valeur réelle envoyée par le capteur.

Emulation – supposons que vous ayez un thermomètre très coûteux qui mesure 0,001 C, et vous voulez voir si vous pouvez vous en sortir avec un thermomètre moins cher qui ne mesure que 0,5 °. Vous pouvez émuler le thermomètre moins cher en utilisant un thermomètre coûteux. arrondir la lecture au 0,5 C près et exécuter des tests qui reposent sur les valeurs de température.

Je ne sais pas si c’est l’opinion générale, mais j’ai toujours différencié les deux en fonction de leur utilisation. Un émulateur est utilisé si vous souhaitez réellement utiliser la machine émulée pour sa sortie. Un simulateur, par contre, est utilisé lorsque vous souhaitez étudier la machine simulée ou tester son comportement.

Par exemple, si vous souhaitez écrire une logique de machine à états dans votre application (qui s’exécute sur une CPU à usage général), vous écrivez un petit émulateur de machine à états. Si vous voulez étudier l’efficacité ou la viabilité d’une machine à états pour un problème particulier, vous écrivez un simulateur.

Sur la base de l’expérience de l’ingénierie des logiciels et des systèmes, je résumerais la différence comme suit:

Simulation: pour moi, c’est toujours dans le logiciel – chaque aspect du système réel est modélisé par certains codes et / ou mathématiques. La simulation tente de reproduire avec précision le comportement (ou le prédire) du système réel, mais ne l’approche que de manière approximative.

Emulation: Contrairement à la simulation, elle n’approuve pas le comportement du système réel, il COPIE le comportement du système réel. Un émulateur peut impliquer du matériel. Mais cela peut aussi être entièrement dans le logiciel. Par exemple, vous obtenez ces logiciels émulateurs pour les anciennes consoles de jeux comme le Sega Genesis. C’est un émulateur car il copie la fonctionnalité de la véritable genèse, de sorte que vous pouvez exécuter le code Genesis original dans l’émulateur. Un simulateur de genèse ne serait pas en mesure d’exécuter le code d’origine, il ne ferait qu’APPROXIMER son comportement, produisant des résultats similaires, en fonction de la qualité des modèles du système d’origine.

Un émulateur d’un composant système peut être inclus dans un système plus grand, remplaçant complètement le composant qu’il émule – un simulateur ne pourrait pas le faire car il ne s’agit pas d’une représentation suffisamment précise du comportement du composant d’origine.

Un “émulateur” désigne un simulateur de matériel logiciel, mais en général, les deux sont synonymes.

Venant du monde du développement matériel. . .

Fonctionnalités des tests de simulation. 2 + 2 = 4 etc

L’émulation teste les fonctionnalités de l’environnement spécifique (64 bits, 16 bits, doigts et orteils).

Voici un exemple de nourriture:

Vous avez deux morceaux de pain, un couteau, du beurre de cacahuète et de la gelée et vous les donnerez à un jardin d’enfants. Vous écrivez des instructions sur la façon de faire un sandwich.

En simulation, vous exécutez le processus, vous faites semblant d’ouvrir les bocaux, vous faites semblant de répandre le beurre d’arachide, etc.

Si, à la fin des instructions, il ne vous rest plus que de la gelée et non du beurre d’arachide, vous avez échoué à la simulation et vous devez corriger vos instructions. Par contre si vous avez un “sandwich” complet alors les instructions doivent être valides

En émulation, vous utiliseriez des représentations proches des parties réelles (même pain, couteau au beurre d’arachide, etc.). Qu’advient-il si vous avez donné à votre jardin d’enfants un couteau en plastique bon marché et du beurre d’arachide vraiment très épais? Le couteau se briserait en émulation et les instructions devraient être clarifiées ou fixées pour résoudre ce problème. Dans ce cas, vous pouvez suggérer de réchauffer le beurre de cacahuète au micro-ondes.

En pratique: considérez un système 64 bits que vous programmez et un système 32 bits qui exécutera réellement le code. Vous ajoutez deux très grands nombres et imprimez le résultat. Dans la simulation, tout fonctionne (vous avez réussi à obtenir le code correct pour append deux nombres) En émulation, vous constatez que vous obtenez une mauvaise réponse. Qu’est-il arrivé? L’émulation du système 32 bits était incapable de gérer les grands nombres. Ceci est un exemple de fonctionnalité correcte (c.-à-d. Simulation) mais pas de support approprié pour votre environnement d’exécution (émulation)

S’il te plaît, pardonne-moi si je me trompe. Et je dois avouer dès le départ que je n’ai pas fait de recherche sur ces 2 termes. En tous cas…

L’émulation consiste à imiter quelque chose avec des résultats connus détaillés, quels que soient les comportements internes. Nous essayons seulement de faire avancer les choses et ne nous soucions pas beaucoup de ce qui se passe à l’intérieur.

La simulation, par contre, consiste à imiter quelque chose avec certains comportements connus pour étudier quelque chose qui n’est pas encore connu.

mes 2cents

Voici un exemple: nous avons récemment développé un modèle de simulation pour mesurer le temps de réponse de la transmission à distance d’un système qui n’a pas encore été développé. Une parsing d’émulation ne nous aurait pas donné la réponse à temps pour mettre à niveau la capacité de bande passante, donc la simulation était notre approche. Parce que nous étions principalement intéressés par la détermination des besoins en bande passante, nous nous intéressions principalement à la taille et au volume des transactions, et non au traitement du système. Le modèle de simulation reposait sur un logiciel autonome conçu pour modéliser des processus à événements discrets. Pour résumer en réponse à votre question, l’émulation est un type de simulation. Mais, dans ce cas, la simulation N’EST PAS une émulation car elle ne représentait pas complètement le nouveau système, seulement la taille et le volume des transactions.

J’ai été confondu entre les deux processus. J’ai trouvé cette explication simple sur la différence entre les émulateurs et les simulateurs

  1. Simulateur:
    Supposons que vous ayez écrit un programme d’assemblage dans un fichier et que le fichier exe correspondant soit prêt. Le simulateur est le logiciel PC qui lit les instructions de l’exécutif et les «minmics» du fonctionnement du processeur.

  2. Émulateur:
    L’émulateur est un (logiciel PC + un processeur). Le processeur peut être branché sur le tableau cible lorsque vous souhaitez tester le logiciel développé en temps réel pour vérifier les bogues d’exécution. Lorsqu’il n’est pas utilisé, il peut être débranché. Le processeur aura une interface parallèle ou JTAG avec le PC pour télécharger le fichier exe pour exécution.

Par conséquent, alors que l’exécution du simulateur est lente, Emulator sera en mesure de vérifier en temps réel le code développé. En règle générale, vous allez d’abord tester votre code développé sur le simulateur, puis vérifier l’émulateur.

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