Quelle est la différence entre l'émulation et la simulation? [dupliquer]
possibilité de dupliquer:
simulateur ou émulateur? Quelle est la différence?
En simples termes compréhensibles, quelle est la différence entre les deux termes?
10 réponses
(en utilisant comme exemple votre premier lien)
vous voulez dupliquer le comportement d'une ancienne calculatrice HP, il y a deux options:
-
vous écrivez un nouveau programme qui dessine l'écran et les clés de la calculatrice, et lorsque l'utilisateur clique sur les clés, vos programmes font ce que l'ancienne calculatrice a fait. Il s'agit d'un simulateur
-
, Vous obtenez une image de l' firmware de la calculatrice, puis écrire un programme qui charge le firmware et l'interprète de la même façon que le microprocesseur dans la calculatrice fait. Il s'agit d'un émulateur 151980920
1519100920"
le "simulateur 151970920 tente de reproduire le" comportement du dispositif.
Le émulateur tente de dupliquer le travaux intérieurs de la appareil.
il est difficile de répondre à cette question de façon définitive parce que les termes sont souvent mal utilisés ou confus.
souvent, un émulateur est une mise en œuvre complète d'un dispositif ou d'une plate-forme particulière. L'émulateur agit exactement comme le vrai appareil. Par exemple, un émulateur NES implémente le CPU, la puce son, la sortie vidéo, les signaux du contrôleur, etc. Le code non modifié D'un nes castridge peut être jeté et l'image résultante peut être chargée dans notre émulateur et joué.
un simulateur est une implémentation partielle d'un dispositif/plate-forme, il en fait juste assez pour ses propres besoins. Par exemple, le simulateur iPhone exécute une "application iPhone" qui a été spécialement compilée pour cibler x86 et L'API Cocoa plutôt que L'API ARM CPU et Cocoa Touch de l'appareil réel. Cependant, le binaire que nous avons dans le simulateur ne fonctionnerait pas sur le périphérique réel.
tous les deux sont des modèles d'un objet que vous avez un moyen de contrôler les entrées et d'observer les sorties. Avec un émulateur, vous voulez la sortie exactement ce que l'objet d'émulation. Avec un simulateur, vous voulez que certaines propriétés de votre sortie soient similaires à ce que l'objet produirait.
Laissez-moi vous donner un exemple, supposons que vous voulez faire quelques tests pour voir comment l'ajout d'un nouveau capteur (comme un thermomètre) à un système aurait des répercussions sur système. Vous savez que le thermomètre envoie un message 8 fois par seconde contenant sa mesure.
Simulation-- si vous n'avez pas encore le thermomètre, mais que vous voulez tester que ce taux de message ne va pas surcharger votre système, vous pouvez simuler le capteur en attachant une unité qui envoie un nombre aléatoire 8 fois par seconde. Vous pouvez exécuter un test qui ne dépend pas de la valeur réelle du capteur envoie.
émulation -- supposons que vous avez un très thermomètre coûteux qui mesure à 0,001 C, et vous voulez voir si vous pouvez obtenir avec un thermomètre moins cher qui mesure seulement à la plus proche 0,5 C. Vous pouvez émuler le thermomètre moins cher en utilisant un thermomètre coûteux en arrondissant la lecture à la plus proche 0,5 C et en cours d'exécution des tests qui dépendent des valeurs de température.
je ne sais pas si c'est de l'avis général, mais j'ai toujours différencié les deux par ce qu'ils sont utilisés pour. Un émulateur est utilisé si vous voulez réellement utiliser la machine émulée pour sa sortie. Un simulateur, d'autre part, est pour quand vous voulez étudier la machine simulée ou tester son comportement.
par exemple, si vous voulez écrire une logique de machine d'état dans votre application( qui fonctionne sur un CPU à usage général), vous écrivez un petit État émulateur de machine. Si vous souhaitez étudier l'efficacité ou la viabilité d'une machine d'état pour un problème particulier, vous écrivez un simulateur.
basé sur 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 n'est modelé que par un code et/ou des mathématiques. La Simulation tente de reproduire avec précision le comportement (ou de le prédire) du système réel, mais seulement de l'approcher.
émulation: par opposition à la simulation, il ne se rapproche pas du comportement de la système réel, il COPIE le comportement du système réel. Un émulateur peut impliquer du matériel. Mais il peut aussi être entièrement en logiciel. Par exemple: vous obtenez ces émulateurs de logiciel pour de vieilles consoles de jeux comme la Genesis Sega. C'est un émulateur parce qu'il copie tellement la fonctionnalité genesis réelle que vous pouvez exécuter le code Genesis original dans l'émulateur. Un simulateur genesis ne serait pas capable d'exécuter le code original, il ne produirait que des approximations de son comportement, produisant des résultats similaires, sur la qualité des modèles du système original.
un émulateur d'un composant de système peut être intégré dans un système plus grand, remplaçant complètement le composant qu'il émule - un simulateur ne pourrait pas parce qu'il n'est pas une représentation assez précise du comportement original du composant.
An " emulator " est un terme pour un simulateur matériel basé sur un logiciel, mais en général les deux sont synonymes.
venant du monde du développement matériel. . .
les essais de Simulation de la fonctionnalité. 2+2 = 4 etc
L'émulation teste la fonctionnalité sur l'environnement spécifique (64 bits, 16 bits, doigts et orteils).
voici un exemple d'aliment:
vous avez deux morceaux de pain, un couteau, du beurre de cacahuète et de la gelée et vous les donnerez à une maternelle. Vous écrivez des instructions sur la façon de faire un sandwich.
en simulation, vous feriez semblant d'avoir ouvert les bocaux, d'étaler le beurre de cacahuète, etc.
si à la fin des instructions, il ne vous reste que de la gelée et non du beurre d'arachide, alors vous avez échoué à la simulation et vous devez corriger vos instructions. D'autre part, si vous avez un "sandwich", puis les instructions doivent être valides
dans l'émulation, vous utiliseriez des représentations proches de les pièces réelles (même pain, couteau beurre de cacahuète etc). Que se passe-t-il si vous donnez à votre maternelle un couteau en plastique bon marché et du beurre de cacahuète vraiment très épais?? Le couteau entrerait en émulation et les instructions devraient être clarifiées ou corrigées pour résoudre ce problème. Dans ce cas, vous pourriez suggérer de réchauffer le beurre de cacahuète au micro-ondes.
en pratique: considérez un système 64 bits dans lequel vous programmez et un système 32 bits qui sera effectivement l'exécution du code. Vous ajoutez deux très très grands nombres et imprimer le résultat. Dans la simulation tout fonctionne (vous avez réussi à obtenir le code juste pour ajouter deux nombres) dans l'émulation cependant vous trouvez que vous obtenez la mauvaise réponse. Ce qui s'est passé? L'émulation du système 32 bits n'a pas été capable de gérer les grands nombres. C'est un exemple de fonctionnalité correcte (c.-à-d. simulation) mais pas de support approprié pour votre environnement d'exécution (émulation)
pardonnez-moi si je me trompe. Et je dois admettre que je n'ai pas fait de recherche sur ces 2 Termes. De toute façon...
L'émulation est d'imiter quelque chose avec des résultats connus détaillés, quels que soient les comportements internes. Nous essayons seulement d'obtenir des choses faites et ne se soucient pas beaucoup de ce qui se passe à l'intérieur.
de Simulation, d'autre part, est d'imiter quelque chose avec certains comportements connus pour étudier quelque chose n'étant pas encore connus.
mes 2cents
voici un exemple: nous avons récemment mis au point un modèle de simulation pour mesurer le temps de réponse à la transmission à distance d'un système encore à développer. Une analyse 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. Comme nous nous intéressions surtout à la détermination des besoins en bande passante, nous nous souciions surtout de la taille et du volume des transactions, et non du traitement du système. Le modèle de simulation était sur une pièce autonome de logiciel conçu pour modéliser les processus d'événements discrets. En résumé, l'émulation est un type de simulation. Mais, dans ce cas, la simulation n'était pas une émulation parce qu'elle ne représentait pas entièrement 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
-
simulateur:
Supposons que vous ayez écrit le programme d'assemblage dans un fichier et l'exe correspondant le fichier est prêt. Le simulateur est le logiciel pc qui lit les instructions de l'exe et "minmics" le fonctionnement du processeur. -
Émulateur:
L'émulateur est un (logiciel PC + un processeur). Le processeur peut être branché le tableau de bord cible lorsque vous voulez 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é. processeur aura une interface parallèle ou JTAG avec le PC pour le téléchargement de l'exe fichier d'exécution.
donc, alors que le simulateur est lent dans l'exécution, émulateur sera en mesure de donner une vraie vérification temporelle du code élaboré. Généralement, vous allez tester votre code développé sur simulateur d'abord et puis aller pour la vérification sur l'émulateur.