Quelle est la différence entre simulation et émulation

97

Je vois fréquemment Simulation et Émulation en informatique. Ces deux termes semblent synonymes. Existe-t-il une différence entre simulation et émulation ?

utilisateur
la source

Réponses:

108

Oui, les concepts sont différents.


Simulation

A simulationest un système qui se comporte de manière similaire à autre chose, mais qui est mis en œuvre de manière totalement différente. Il fournit le comportement de base d'un système, mais ne respecte pas nécessairement toutes les règles du système simulé. Il est là pour vous donner une idée de la façon dont quelque chose fonctionne.

Exemple

Imaginez un simulateur de vol. On dirait que vous pilotez un avion, mais vous êtes complètement déconnecté de la réalité, et vous pouvez vous plier à ces règles ou les enfreindre à votre guise. Par exemple, pilotez un Airbus A380 à l'envers entre Londres et Sydney sans le briser.


Émulation

An emulationest un système qui se comporte exactement comme autre chose et qui respecte toutes les règles du système imité. Il s’agit d’une réplication complète d’un autre système, jusqu’à ce qu’il soit compatible binaire avec les entrées et les sorties du système émulé, mais fonctionnant dans un environnement différent de celui du système émulé original. Les règles sont fixes et ne peuvent pas être modifiées ou le système échoue.

Exemple

Le système MAME est construit autour de ce principe. Tous ces vieux systèmes d'arcade oubliés depuis longtemps, implémentés presque entièrement dans du matériel ou dans le micrologiciel de leurs systèmes matériels peuvent être imités jusqu'aux bugs et plantages d'origine qui se produiraient si vous atteigniez le score le plus élevé possible.

S.Robins
la source
18
"se comporter exactement comme ..." peut ne pas être nécessaire. L’important est qu’il «reproduise le même comportement externe» en ce qui concerne son utilisation.
Emilio Garavaglia
Notez que cela dépend de ce qui est simulé / émulé. Par exemple, quelque chose qui émule un ordinateur compatible PC peut être beaucoup moins précis et beaucoup moins réaliste que quelque chose qui simule les circuits numériques d’un ordinateur compatible PC. Dans ce cas, le simulateur peut se comporter "exactement comme" un vrai PC, contrairement à l'émulateur (car le simulateur simule quelque chose à un niveau beaucoup plus bas).
Brendan
16

Une simulation est un modèle construit à partir de quelque chose d'autre qui reproduit certaines de ses fonctionnalités et en laisse d'autres. Nous souhaitons évidemment préserver les fonctionnalités pertinentes pour votre requête et laisser de côté celles qui ne le sont pas.

Par exemple, une simulation du trafic de banlieue tôt le matin laisse de côté les noms des banlieusards et peut-être même leurs identités (en utilisant une variable de compteur plutôt qu'un ensemble d' Commuterobjets), mais elle ne peut ignorer leur vitesse d'arrivée.


L'émulation est l'exécution d'un logiciel X créé pour la plate-forme A sur la plate-forme B, sans modifier le logiciel lui-même. Cela nécessite de construire un modèle de A qui s'exécute sur B et, évidemment, de modéliser tout ce qui concerne A impliquant l'exécution de code. (En théorie, vous pourriez omettre le support des opcodes que vous savez que ce logiciel n’utilisera jamais, mais cela est rare: créer un émulateur est un travail difficile, et il est bien plus intéressant de faire un travail minutieux et d’avoir quelque chose de réutilisable. cela ne fonctionne que pour S.)

Kilian Foth
la source
7

Les deux signifient quelque chose faisant le travail de quelque chose d'autre.

La différence est que la "simulation" se produit à un niveau conscient (vis-à-vis de l'utilisateur) et se finalise généralement pour anticiper le résultat d'une réalité sans toucher à la réalité elle-même.

"L'émulation" se produit à un niveau inconscient et a pour but de remplacer un composant sous-jacent par un autre différent qui, en ce qui concerne l'utilisateur, fonctionne comme l'ancien.

En d'autres termes, la simulation se produit dans un "monde parallèle", tandis que l' émulation se produit dans un "monde remplacé".

Emilio Garavaglia
la source
3
Comment cela répond-il à la question du PO en matière d'informatique? Il n'y a rien de conscient ou d'inconscient à leur sujet. Une simulation est réelle, tout comme une émulation. Leurs buts respectifs sont cependant très différents sur le plan conceptuel.
S.Robins
@ S.Robins: conscient / inconscient! = Réel / irréel. conscient = quelque chose que vous avez explicitement décidé, inconscient quelque chose que vous n'avez pas décidé vous-même explicitement. Une application fonctionnant sur un système "émulé" ne connaît pas cette émulation. Une application fonctionnant sur un système "simulé" doit le savoir, car elle n'aura pas nécessairement le même comportement.
Emilio Garavaglia
1
Cela n'a rien à voir avec les applications qui fonctionnent où, ni avec la prise de décisions conscientes ou inconscientes. La différence réside fondamentalement dans le fait de savoir si un système est modélisé de manière générale ou reproduit intégralement.
S.Robins
@ S.Robins: Je suis d'accord avec le concept que vous voulez dire, mais il y a quelque chose de subtil qu'il ne comprend pas: un "émulateur" est généralement conçu pour exécuter quelque chose par-dessus, remplaçant ainsi quelque chose sous le champ d'application. Un "simulateur" est généralement conçu pour être exécuté pour lui-même au lieu de l'application réelle. Ils ne sont pas au même niveau d'abstraction.
Emilio Garavaglia
6

Techniquement, ils font tous les deux la même chose: faire quelque chose dans un environnement qui agit comme si c'était la vraie chose.

Sur le plan conceptuel, toutefois, il existe une différence importante.

Une simulation est supposée être détachée du monde réel dans une certaine mesure; la sortie d'une simulation n'est pas directement reliée à la chose simulée. Par exemple, un simulateur d'avion ne vole pas réellement et le pilote ne communique pas réellement avec un vrai contrôleur de la circulation aérienne.

Une simulation a généralement pour objectif de tester ou de prévoir un processus réel dans un environnement sécurisé; étant donné que la simulation est déconnectée du monde réel, rien de grave ne peut arriver (un simulateur d'avion écrasé ne tue jamais de vraies personnes).


Une émulation , au contraire, a pour objectif de remplacer le réel: par exemple, si vous émulez un simple microcontrôleur à l'aide d'un processeur programmable plus sophistiqué, ce dernier peut être utilisé à la place du microcontrôleur d'origine; il sera physiquement connecté à une machine et le contrôlera comme le ferait un microcontrôleur.

Le but d'une émulation est de remplacer des composants matériels ou logiciels par des équivalents fonctionnels lorsque les modules d'origine ne sont pas disponibles (ou sont devenus trop chers, ne serait-ce que pour les maintenir). L'émulation peut également servir à utiliser le matériel de manière plus flexible: le même microcontrôleur programmable peut doubler pour plusieurs contrôleurs plus simples, en commutant le mode d'émulation si nécessaire.

tdammers
la source
3
"technically", ils sont totalement différents. La différence conceptuelle que vous décrivez est fondamentale pour cette différence.
S.Robins
@ S.Robins: par "techniquement", je veux dire que les implémentations techniques sont souvent similaires ou équivalentes; la différence réside principalement dans ce que vous utilisez.
tdammers
Cela n'a rien à voir avec des cas d'utilisation. C'est la différence fondamentale des objectifs qui définit deux concepts très distincts. L'émulation cherche à remplacer un système complexe de fonctionnalités exactement de manière à ce qu'il ne puisse être distingué de l'original, tandis que la simulation simplifie grandement un système et représente la fonctionnalité dans un sens très général via un modèle. Ainsi, les implémentations techniques sont nécessairement très différentes.
S.Robins
@ S.Robins - Je ne suis pas d'accord. Que vous simuliez ou imitiez un microprocesseur donné ne fait pas une grande différence pour la mise en œuvre, mais ce que vous faites avec cela le fait.
tdammers
1
@tdammers: En règle générale, le principal objectif de la conception d'un émulateur est de remplacer "en temps réel" l'élément émulé, tandis que l'un des principaux objectifs de la conception d'un simulateur est de permettre une analyse non nécessairement en temps réel: et éventuellement interaction avec le processus sous-jacent. Certains simulateurs peuvent être rapides et certains émulateurs peuvent offrir de grandes capacités d'analyse et / ou d'interaction avec le processus sous-jacent, mais les priorités en matière d'ingénierie sont différentes.
Supercat
1

Bien que l’étymologie ne soit pas tout à fait exacte, réfléchissez à la différence entre sympathie, "je peux imaginer ce que cela doit ressentir" et empathie, "je sais ce que cela fait." Une simulation peut inclure une représentation visuelle d'un problème, mais pas nécessairement. Par exemple, il peut simplement imprimer des colonnes de nombres représentant le nombre de personnes alignées pour quelque chose, le total des revenus ou la vitesse moyenne. Il présente certaines caractéristiques qui correspondent à la réalité et d'autres non.

L'émulation, qui est souvent utilisée dans le contexte d'une plate-forme se faisant passer pour une autre, est beaucoup plus complète. Les développeurs Windows Phone peuvent donc exécuter ou déboguer leurs applications téléphoniques sur une machine Windows dans un émulateur, qui ressemble à un téléphone et se comporte comme tel. Vous pouvez également exécuter vos anciens jeux Commodore 64 dans un émulateur.

Les mots ne sont pas précis. La plupart des simulateurs de vol ressemblent davantage à des émulateurs à mon avis, mais le nom a été collé à une époque où ils n'étaient pas aussi immersifs. Certaines personnes réservent le mot émulateur pour le cas multiplate-forme et le refusent pour toute autre chose. Vous ne serez probablement jamais trompé si vous faites la même chose lorsque vous parlez, mais comprenez que certaines personnes peuvent placer la limite entre les deux mots un peu différemment, et faire preuve de tolérance lorsque quelqu'un dit "ceci est une émulation" simulation complète.

Kate Gregory
la source
1
Il semble à tort que l’émulation et la simulation soient effectivement les mêmes. Cela peut être dû au fait que le mot imiter peut refléter le comportement des autres (par exemple, un enfant imite son père). Ceci est techniquement inexact quand on parle d’informatique. Un simulateur de vol n'est pas une émulation, car toutes les entrées / sorties sont gérées par un programme spécifique - le simulateur - qui ne reproduit pas exactement le comportement de l'avion sur lequel il a été modélisé, car il n'implémente pas le même ordinateur. programme l'avion fait. Si c'était le cas, alors ce serait un émulateur.
S.Robins
0

Les deux termes sont très similaires dans le concept - imitant.

La simulation ou les simulateurs utilisent un logiciel pour produire un système répliqué qui ressemble beaucoup au modèle cible en ce qui concerne ses fonctionnalités principales sous-jacentes (en particulier sa méthodologie de base).

Les émulateurs, quant à eux, se concentrent davantage sur la similitude extérieure par rapport au système cible. Il ne tient pas compte de la manière dont les fonctions sont imitées. Les émulateurs sont généralement utilisés lorsque vous travaillez dans un environnement complètement différent (par exemple, un système d'exploitation différent) par rapport au système d'origine.

M. White
la source
1
Je dirais que vous avez mélangé les deux concepts. C'est une simulation qui ne se soucie pas de la mise en œuvre exacte; l'émulation se soucie beaucoup des internes. Voir: MAME
Andres F.