Duplicate possible:
Simulateur ou émulateur? Quelle est la différence?
En termes simples et compréhensibles, quelle est la différence entre les deux termes?
(En utilisant comme exemple votre premier lien)
Vous souhaitez dupliquer le comportement d'une ancienne calculatrice HP, vous avez le choix entre deux options:
Vous écrivez un nouveau programme qui dessine l'écran et les touches de la calculatrice et lorsque l'utilisateur clique sur les touches, votre programme fait comme l'ancienne calculatrice. Ceci est un simulateur
Vous obtenez une copie du micrologiciel de la calculatrice, puis écrivez un programme qui charge le micrologiciel et l'interprète de la même façon que le microprocesseur de la calculatrice. Ceci est un Emulator
Le simulateur tente de dupliquer le comportement de l'appareil.
Emulator essaie de dupliquer le fonctionnement interne de l'appareil.
Il est difficile de répondre définitivement à cette question, car les termes utilisés sont souvent mal utilisés ou confus.
Souvent, un émulateur est une nouvelle implémentation complète d'un périphérique ou d'une plateforme particulière. 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. Le code non modifié d'une castridge NES peut être vidé, puis l'image résultante peut être chargée et lue.
Un simulateur est une implémentation partielle d'un appareil/d'une plateforme, il en fait juste assez pour ses propres besoins. Par exemple, iPhone Simulator exécute une "application iPhone" spécialement conçue pour cibler x86 et l'API Cocoa plutôt que le périphérique réel ARM CPU et l'API Cocoa Touch. Cependant, le binaire qui nous exécutons dans le simulateur ne fonctionnerait pas sur le vrai périphérique.
Les deux sont des modèles d'objet pour lesquels vous avez un moyen de contrôler les entrées et d'observer les sorties. Avec un émulateur, vous voulez que la sortie soit exactement ce que l'objet que vous émulez produirait. Avec un simulateur, vous voulez que certaines propriétés de votre sortie soient similaires à ce que l’objet produirait.
Permettez-moi de vous donner un exemple. Supposons que vous souhaitiez effectuer des tests sur le système pour voir comment l'ajout d'un nouveau capteur (tel qu'un thermomètre) à un système aurait une incidence sur le système. Vous savez que le thermomètre envoie un message 8 fois par seconde contenant sa mesure.
Simulation - si vous ne disposez pas encore du thermomètre, mais que vous souhaitez vérifier que ce débit de messages 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 repose pas sur la valeur réelle envoyée par le capteur.
Émulation - Supposons que vous avez un thermomètre très coûteux mesurant 0,001 C et que vous voulez savoir si vous pouvez vous en tirer avec un thermomètre moins cher mesurant seulement à 0,5 C près. Vous pouvez émuler le thermomètre moins cher à l'aide d'un thermomètre coûteux en arrondissant la lecture à 0,5 C près et en effectuant 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 distingué les deux par leur utilité. Un émulateur est utilisé si vous voulez réellement utiliser la machine émulée pour sa sortie. Un simulateur, par contre, vous permet d’étudier la machine simulée ou d’en tester le comportement.
Par exemple, si vous souhaitez écrire une logique de machine à états dans votre application (qui s'exécute sur un processeur standard), vous écrivez un petit émulateur de machine à états. Si vous souhaitez é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 en ingénierie logicielle et système, je résumerais la différence comme suit:
Simulation: pour moi, c'est toujours dans le logiciel - chaque aspect du système réel n'est modélisé que par un code et/ou une mathématique. La simulation tente de reproduire avec précision le comportement (ou de le prédire) du système réel, mais ne s'en approche que de manière approximative.
Emulation: Contrairement à la simulation, elle n’APPLIQUE PAS le comportement du système réel, elle COPIE le comportement du système réel. Un émulateur peut impliquer du matériel. Mais cela peut aussi être entièrement logiciel. Par exemple. vous obtenez ces logiciels EMULATORS pour les anciennes consoles de jeux comme la Sega Genesis. Il s’agit d’un émulateur, car il copie tellement la fonctionnalité de genèse réelle que vous pouvez exécuter le code Genesis original dans l’émulateur. Un simulateur de genèse ne pourrait pas 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 ainsi complètement le composant qu'il émule - un simulateur ne pourrait pas, car ce n'est pas une représentation suffisamment précise du comportement du composant d'origine.
Un "émulateur" est un terme désignant un simulateur matériel basé sur un logiciel, mais en général les deux sont synonymes.
Venant du monde du développement de matériel. . .
Fonctionnalité de tests de simulation. 2 + 2 = 4 etc
L'émulation teste la fonctionnalité sur l'environnement spécifique (64 bits, 16 bits, doigts et orteils).
Voici un exemple de nourriture:
Vous avez deux tranches de pain, un couteau, du beurre de cacahuète et de la gelée et vous les donnerez à une enfant de la maternelle. Vous écrivez des instructions sur la façon de faire un sandwich.
En simulation, vous jouez le processus, faites semblant d’ouvrir les pots, faites semblant de répandre le beurre de cacahuète, etc.
Si, à la fin des instructions, il ne reste que de la gelée et pas du beurre de cacahuète, la simulation a échoué et vous devez corriger vos instructions. D'autre part, si vous avez un "sandwich" complet, les instructions doivent être valides
En émulation, vous utiliseriez des représentations proches des pièces réelles (même pain, couteau, beurre de cacahuète, etc.). Qu'advient-il si vous donniez à votre enfant d'âge maternelle un couteau en plastique bon marché et du beurre de cacahuète vraiment très épais ?? Le couteau se briserait en émulation et les instructions devraient être clarifiées ou corrigé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érons un système 64 bits que vous programmez et un système 32 bits qui exécutera le code. Vous ajoutez deux très grands nombres et imprimez le résultat. En simulation, tout fonctionne (vous avez réussi à obtenir le code qui convient pour ajouter deux nombres). En émulation, vous constatez toutefois 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 (simulation) mais pas de support approprié pour votre environnement d'exécution (émulation)
Voici un exemple - nous avons récemment développé un modèle de simulation pour mesurer le temps de réponse à la transmission à distance d'un système qui n'a pas encore été développé. Une analyse d'émulation ne nous aurait pas donné la réponse à temps pour améliorer la capacité de bande passante. La simulation a donc été notre approche. Parce que nous étions principalement intéressés par la détermination des besoins en bande passante, nous nous préoccupions principalement de la taille et du volume des transactions, et non du traitement du système. Le modèle de simulation reposait sur un logiciel autonome conçu pour modéliser des processus à événements discrets. En résumé, en réponse à votre question, l’émulation est un type de simulation. Mais, dans ce cas, la simulation n'était PAS une émulation car elle ne représentait pas entièrement le nouveau système, mais uniquement la taille et le volume des transactions.
J'étais confus entre les deux processus. J'ai trouvé cette explication simple sur la différence entre les émulateurs et les simulateurs
Simulateur:
Supposons que vous ayez écrit le programme Assembly 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écutable et "minmics" le fonctionnement du processeur.
Émulateur:
L'émulateur est un (logiciel PC + un processeur). Le processeur peut être branché sur TARGET BOARD 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.
Ainsi, alors que l'exécution du simulateur est lente, Emulator sera en mesure de donner une vérification en temps réel du code développé. Généralement, vous testerez d'abord votre code développé sur le simulateur, puis vous effectuerez une vérification sur l'émulateur.
S'il te plaît, pardonne-moi si je me trompe. Et je dois admettre d'emblée que je n'ai fait aucune recherche sur ces deux termes. En tous cas...
L'émulation consiste à imiter quelque chose avec des résultats détaillés 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