Was ist der Unterschied zwischen Simulation und Emulation?

97

In der Informatik sehe ich häufig Simulation und Emulation . Diese beiden Begriffe scheinen synonym zu sein. Gibt es einen Unterschied zwischen Simulation und Emulation ?

Benutzer
quelle

Antworten:

108

Ja, die Konzepte sind unterschiedlich.


Simulation

A simulationist ein System, das sich ähnlich wie etwas anderes verhält , aber auf eine ganz andere Weise implementiert wird. Es bietet das grundlegende Verhalten eines Systems, muss jedoch nicht unbedingt alle Regeln des zu simulierenden Systems einhalten. Es soll Ihnen eine Vorstellung davon geben, wie etwas funktioniert.

Beispiel

Stellen Sie sich als Beispiel einen Flugsimulator vor. Es sieht aus und fühlt sich an, als würden Sie ein Flugzeug fliegen, aber Sie sind völlig unabhängig von der Realität des Flugzeugfliegens, und Sie können diese Regeln biegen oder brechen, wie Sie es für richtig halten. Fliegen Sie beispielsweise einen Airbus A380 verkehrt herum zwischen London und Sydney, ohne ihn zu beschädigen.


Emulation

An emulationist ein System, das sich genau wie etwas anderes verhält und alle Regeln des zu emulierenden Systems einhält. Es ist praktisch eine vollständige Replikation eines anderen Systems, bis hin zur Binärkompatibilität mit den Ein- und Ausgängen des emulierten Systems, wobei jedoch eine andere Umgebung als die Umgebung des ursprünglichen emulierten Systems verwendet wird. Die Regeln sind fest und können nicht geändert werden, oder das System fällt aus.

Beispiel

Das MAME- System basiert auf dieser Prämisse. Alle alten Arcade-Systeme, die lange in Vergessenheit geraten sind, die fast ausschließlich in Hardware oder in der Firmware ihrer Hardware-Systeme implementiert wurden, können bis zu den ursprünglichen Fehlern und Abstürzen emuliert werden, die auftreten würden, wenn Sie die höchstmögliche Punktzahl erreichen würden.

S.Robins
quelle
18
"benimm dich genau wie ..." ist möglicherweise nicht notwendig. Das Wichtige ist, dass es "dasselbe exakte äußere Verhalten reproduziert" in Bezug darauf, was es verwendet.
Emilio Garavaglia
Beachten Sie, dass dies davon abhängt, was simuliert / emuliert wird. Beispielsweise kann etwas, das einen PC-kompatiblen Computer emuliert, weitaus ungenauer und weniger realistisch sein als etwas, das die digitalen Schaltkreise eines PC-kompatiblen Computers simuliert. In diesem Fall verhält sich der Simulator möglicherweise "genau wie" ein echter PC, während der Emulator dies nicht tut (weil der Simulator etwas auf einer viel niedrigeren Ebene simuliert).
Brendan
16

Eine Simulation ist ein Modell, das aus etwas anderem aufgebaut ist, das einige der Merkmale des Dings reproduziert und andere weglässt - offensichtlich möchten Sie die für Ihre Abfrage relevanten Merkmale beibehalten und die irrelevanten weglassen.

Bei einer Simulation des Pendlerverkehrs am frühen Morgen werden beispielsweise die Namen des Pendlers und möglicherweise sogar seine Identität (unter Verwendung einer Zählervariablen anstelle eines tatsächlichen Satzes von CommuterObjekten) ausgelassen, die Ankunftsrate kann jedoch nicht außer Acht gelassen werden.


Emulation ist das Ausführen einer für Plattform A erstellten Software X auf Plattform B, ohne die Software selbst zu ändern. Dazu muss ein Modell von A erstellt werden, das auf B ausgeführt wird, und natürlich muss alles an A modelliert werden, das die Codeausführung umfasst. (Theoretisch könnten Sie auf die Unterstützung von Opcodes verzichten, von denen Sie wissen, dass diese bestimmte Software sie niemals verwenden wird. Dies ist jedoch selten. Es ist harte Arbeit, einen Emulator zu erstellen, und es lohnt sich viel mehr, eine gründliche Arbeit zu erledigen und etwas Wiederverwendbares als einen Kludge zu haben das funktioniert nur für s.)

Kilian Foth
quelle
7

Beides bedeutet, etwas anderes zu tun.

Der Unterschied besteht darin, dass "Simulation" auf einer bewussten Ebene (in Bezug auf den Benutzer) stattfindet und in der Regel abgeschlossen wird, um das Ergebnis einer Realität zu antizipieren, ohne die Realität selbst zu berühren.

"Emulation" geschieht auf einer unbewussten Ebene und hat den Zweck, eine zugrunde liegende Komponente durch eine andere zu ersetzen, die - in Bezug auf den Benutzer - wie die alte funktioniert.

Mit anderen Worten, die Simulation findet in einer "parallelen Welt" statt, während die Emulation in einer "ersetzten Welt" stattfindet.

Emilio Garavaglia
quelle
3
Wie beantwortet dies die Frage des OP in Bezug auf die Informatik? Sie haben nichts Bewusstes oder Unbewusstes. Eine Simulation ist real, ebenso wie eine Emulation. Ihre jeweiligen Zwecke sind jedoch konzeptionell sehr unterschiedlich.
S.Robins
@ S.Robins: bewusst / unbewusst! = Echt / unwirklich. bewusst = etwas, das Sie explizit entschieden haben, unbewusstes etwas, das Sie nicht explizit selbst entschieden haben. Eine App, die auf einem "emulierten" System ausgeführt wird, kennt diese Emulation nicht. Eine App, die auf einem "simulierten" System ausgeführt wird, muss dies wissen, da sie nicht unbedingt dasselbe Verhalten aufweist.
Emilio Garavaglia
1
Es hat nichts damit zu tun, welche Apps wo laufen und nichts damit, bewusste oder unbewusste Entscheidungen zu treffen. Der Unterschied besteht grundsätzlich darin, ob ein System allgemein modelliert oder vollständig repliziert wird.
S.Robins,
@ S.Robins: Ich mit dem Konzept zustimmen Sie meinen, aber es ist etwas subtiler es nicht fangen: ein „Emulator“ wird in der Regel etwas auf laufen konzipiert, etwas zu ersetzen , unter dem Umfang der Anwendung. Ein "Simulator" wird normalerweise so konzipiert, dass er anstelle der eigentlichen Anwendung für sich selbst ausgeführt wird . Sie befinden sich nicht auf derselben Abstraktionsebene.
Emilio Garavaglia
6

Technisch machen beide dasselbe: in einer Umgebung, die sich so verhält, als wäre es die Realität.

Konzeptionell gibt es jedoch einen wichtigen Unterschied.

Eine Simulation soll sich bis zu einem gewissen Grad von der realen Welt lösen; Der Ausgang einer Simulation ist nicht direkt mit dem zu simulierenden Objekt verbunden. Beispielsweise fliegt ein Flugzeugsimulator nicht wirklich und der Pilot kommuniziert nicht wirklich mit einem echten Fluglotsen.

Eine Simulation hat normalerweise das Ziel , einen realen Prozess in einer sicheren Umgebung zu testen oder vorherzusagen. Da die Simulation von der realen Welt getrennt ist, kann nichts wirklich Schlimmes passieren (ein abgestürzter Flugzeugsimulator tötet niemals reale Menschen).


Im Gegensatz dazu hat eine Emulation das Ziel, den Platz des Realen einzunehmen: Wenn Sie beispielsweise einen einfachen Mikrocontroller mit einer komplexeren programmierbaren CPU emulieren, kann diese CPU anstelle des ursprünglichen Mikrocontrollers verwendet werden. Es ist physisch mit einer Maschine verbunden und steuert diese Maschine genau wie der Mikrocontroller.

Das Ziel einer Emulation ist Hardware- oder Software - Komponenten mit funktionalen Äquivalente zu ersetzen , wenn die ursprünglichen Module nicht verfügbar sind (oder zu teuer werden, wenn auch nur zu halten). Die Emulation kann auch dem Ziel dienen, die Hardware flexibler einzusetzen - derselbe programmierbare Mikrocontroller kann sich für mehrere einfachere Controller verdoppeln und den Emulationsmodus nach Bedarf umschalten.

tdammers
quelle
3
"technically"Sie sind ganz anders. Der von Ihnen beschriebene konzeptuelle Unterschied ist für diesen Unterschied von grundlegender Bedeutung.
S.Robins
@ S.Robins: Mit "technisch" meine ich, dass technische Implementierungen oft ähnlich oder gleichwertig sind; Der Unterschied liegt hauptsächlich darin, wofür Sie sie verwenden.
tdammers
Es hat nichts mit Use Cases zu tun. Es ist die grundsätzliche Zweckdifferenz, die zwei sehr getrennte Konzepte definiert. Die Emulation versucht, ein komplexes Funktionssystem genau so zu ersetzen, dass es vom Original nicht zu unterscheiden ist, während die Simulation eine große Vereinfachung eines Systems darstellt und über ein Modell die Funktionalität im allgemeinen Sinne darstellt. Daher sind die technischen Implementierungen notwendigerweise sehr unterschiedlich.
S.Robins,
@ S.Robins - da stimme ich nicht zu. Ob Sie einen bestimmten Mikroprozessor simulieren oder emulieren, spielt für die Implementierung keine große Rolle, aber was Sie damit machen, macht es.
tdammers
1
@tdammers: Im Allgemeinen besteht das primäre Entwurfsziel eines Emulators darin, als "Echtzeit" -Ersatz für das zu emulierende Objekt zu dienen, während das Hauptentwurfsziel eines Simulators darin besteht, nicht notwendigerweise eine Echtzeitanalyse zu ermöglichen, und möglicherweise Interaktion mit dem zugrunde liegenden Prozess. Einige Simulatoren sind möglicherweise schnell, und einige Emulatoren bieten möglicherweise umfangreiche Möglichkeiten zur Analyse und / oder Interaktion mit dem zugrunde liegenden Prozess, aber die technischen Prioritäten sind unterschiedlich.
Supercat
1

Denken Sie an den Unterschied zwischen Sympathie, "Ich kann mir vorstellen, wie sich das anfühlen muss", und Empathie, "Ich weiß, wie sich das anfühlt", obwohl die Etymologie nicht genau ist. Eine Simulation kann eine visuelle Darstellung eines Problems enthalten, dies ist jedoch möglicherweise nicht der Fall. Beispielsweise werden möglicherweise nur Spalten mit Zahlen ausgedruckt, die angeben, wie viele Personen für etwas oder den Gesamtumsatz oder die Durchschnittsgeschwindigkeit anstehen. Es hat einige Eigenschaften, die mit der Realität übereinstimmen, und einige, die dies nicht tun.

Die Emulation, die häufig im Zusammenhang mit einer Plattform verwendet wird, die vorgibt, eine andere Plattform zu sein, ist weitaus vollständiger. So können Windows Phone-Entwickler ihre Telefon-Apps auf einem Windows-Computer in einem Emulator ausführen oder debuggen, der aussieht wie ein Telefon und sich auch so verhält. Sie können Ihre alten Commodore 64-Spiele auch in einem Emulator ausführen.

Die Worte sind nicht präzise. Die meisten Flugsimulatoren ähneln meiner Meinung nach eher Emulatoren, aber der Name stammt noch aus einer Zeit, als sie noch nicht so einnehmend waren. Einige Leute reservieren das Wort Emulator für den plattformübergreifenden Fall und lehnen es für alles andere ab. Sie werden wahrscheinlich nie für falsch gehalten, wenn Sie beim Sprechen dasselbe tun, aber verstehen, dass einige Leute die Grenze zwischen den beiden Wörtern möglicherweise ein wenig anders setzen und berücksichtigen, wenn jemand sagt, "das ist eine Emulation" für eine wirklich genaue und komplette Simulation.

Kate Gregory
quelle
1
Es scheint ein weit verbreitetes Missverständnis zu sein, dass Emulation und Simulation praktisch identisch sind. Dies kann daran liegen, dass das Wort emulieren das Verhalten anderer widerspiegeln kann (z. B .: ein Kind emuliert seinen Vater). Dies ist technisch ungenau, wenn von Informatik gesprochen wird. Ein Flugsimulator ist keine Emulation, da die gesamte Eingabe / Ausgabe über ein spezielles Programm - den Simulator - gesteuert wird, der das Verhalten des Flugzeugs, dem er nachempfunden ist, nicht exakt reproduziert, da nicht derselbe Computer implementiert wird programmiert das Flugzeug. Wenn ja, dann wäre es ein Emulator.
S.Robins
0

Beide Begriffe ähneln sich sehr im Konzept - imitieren.

Simulation oder Simulatoren verwenden Software, um ein repliziertes System zu erstellen, das in Bezug auf die zugrunde liegende Kernfunktionalität (insbesondere die grundlegende Methodik) dem Zielmodell sehr ähnlich ist.

Emulatoren hingegen konzentrieren sich im Vergleich zum Zielsystem eher auf äußere Ähnlichkeiten. Es besteht nur eine minimale Sorge, wie die Funktionen nachgeahmt werden. Emulatoren werden im Allgemeinen verwendet, wenn Sie in einer völlig anderen Umgebung (z. B. einem anderen Betriebssystem) als das ursprüngliche System arbeiten.

Herr weiß
quelle
1
Ich würde sagen, Sie haben die beiden Konzepte verwechselt. Es ist eine Simulation, die sich nicht um die genaue Implementierung kümmert. Emulation kümmert sich sehr um die Interna. Siehe: MAME
Andres F.