シミュレーションとエミュレーションの違いは何ですか


97

コンピューターサイエンスでは、シミュレーションエミュレーションがよく見 られます。これら2つの用語は同義語のようです。シミュレーションエミュレーションに違いはありますか?

回答:


108

はい、概念は異なります。


シミュレーション

A simulationは、他の何かと同様に動作するシステムですが、まったく異なる方法で実装されています。システムの基本的な動作を提供しますが、シミュレーション対象のシステムのすべてのルールに必ずしも準拠しているとは限りません。何かがどのように機能するかについてのアイデアを提供するためにあります。

例としてフライトシミュレータを考えてください。飛行機を操縦しているように見えますが、飛行機を操縦するという現実から完全に切り離されており、必要に応じてこれらの規則を曲げたり、破ったりすることができます。たとえば、エアバスA380をロンドンとシドニーの間で壊れることなく上下逆さまに飛行させます。


エミュレーション

An emulationは、他のシステムとまったく同じように動作し、エミュレートされるシステムのすべてのルールを順守するシステムです。これは、エミュレートされたシステムの入力および出力とバイナリ互換になるまで、別のシステムの完全な複製であり、元のエミュレートされたシステムの環境とは異なる環境で動作します。ルールは固定されており、変更できないか、システムに障害が発生します。

MAMEのシステムは、この非常に前提を中心に構築されています。長い間忘れられてきた、ほぼ完全にハードウェアまたはハードウェアシステムのファームウェアに実装された古いアーケードシステムはすべて、可能な限り最高のスコアに達したときに発生する元のバグやクラッシュまでエミュレートできます。


18
「…のように正確に振る舞う」は必要ないかもしれません。重要なことは、それを使用するものに関して「まったく同じ外部動作を再現する」ことです。
エミリオガラヴァリア

シミュレート/エミュレートされているものに依存することに注意してください。たとえば、PC互換コンピューターをエミュレートするものは、PC互換コンピューターのデジタル回路をシミュレートするものよりもはるかに正確性が低く、はるかに現実的でない場合があります。この場合、シミュレーターは実際のPCとまったく同じように動作しますが、エミュレーターはそうではありません(シミュレーターははるかに低いレベルで何かをシミュレートしているため)。
ブレンダン

16

シミュレーションは明らかにあなたがあなたのクエリに関連する機能を維持し、無関係なものを残したい-そのことの機能の一部を再現し、他人を抜けて何か他のもので構築したモデルです。

たとえば、早朝の通勤者トラフィックのシミュレーションでは、通勤者の名前、さらにはアイデンティティ(実際のCommuterオブジェクトのセットではなくカウンター変数を使用)が除外されますが、到着率は無視できません。


エミュレーションとは、プラットフォームA向けに作成されたソフトウェアXをプラットフォームBで実行し、ソフトウェア自体を変更しないことです。これには、B上で実行されるAのモデルを構築する必要があり、明らかに、コード実行を伴うAについてのすべてをモデル化する必要があります。(理論的には、この特定のソフトウェアが使用することはないことを知っているオペコードのサポートを省略することができますが、それはまれです-エミュレータを実行するのは大変な作業であり、徹底的な仕事をして、クラッジよりも再利用可能なものを持つことははるかに価値がありますSでのみ機能します。)


7

両方とも、何か別の仕事をしていることを意味します。

違いは、「シミュレーション」が意識レベルで(ユーザーに対して)発生し、通常、現実そのものに触れることなく現実の結果を予測するために最終化されることです。

「エミュレーション」は無意識のレベルで発生し、基礎となるコンポーネントを、ユーザーに関して古いコンポーネントとして機能する別のコンポーネントに置き換える目的があります。

言い換えれば、シミュレーションは「パラレルワールド」で行われ、エミュレーションは「置き換えられた世界」で行われます。


3
これは、コンピューターサイエンスの観点からOPの質問にどのように答えますか?それらについて意識的でも無意識的でもありません。シミュレーションと同様に、シミュレーションも本物です。ただし、それぞれの目的は概念的に非常に異なります。
S.ロビンズ

@ S.Robins:意識的/無意識的!=本物/非本物。意識=あなたが明示的に決めたもの、無意識のうちにあなた自身が明示的に決めなかったもの。「エミュレートされた」システムで実行されているアプリは、そのエミュレーションを認識しません。「シミュレートされた」システムで実行されているアプリは、必ずしも同じ動作をする必要はないため、そのことを知っている必要があります。
エミリオガラヴァリア

1
どのアプリがどこで実行されているかとは関係がなく、意識的または無意識的な意思決定とは関係ありません。基本的に違いは、システムが一般的にモデル化されているか、完全に複製されているかです。
-S.ロビンズ

@ S.Robins:あなたが意味する概念には同意しますが、それが捉えない微妙なものがあります。「エミュレータ」は、通常、アプリケーションのスコープ内の何か置き換える、トップで何かを実行すると考えられます。「シミュレータ」は通常、実際のアプリケーションなく、それ自体で実行されると考えられています。それらは同じ抽象レベルではありません。
エミリオガラヴァリア

6

技術的には、両者は同じことを行います。まるで本物のように動作する環境で何かをします。

ただし、概念的には重要な違いがあります。

シミュレーションはある程度現実の世界から切り離されることになっています。シミュレーションの出力は、シミュレートするものに直接接続されていません。たとえば、航空機シミュレータは実際には飛行せず、パイロットは実際の航空管制官と実際に通信していません。

シミュレーションは、通常あり、目標のテストをか、安全な環境で、いくつかの現実のプロセスを予測します。シミュレーションは現実の世界から切り離されているため、実際に悪いことは何も起こりません(crash落した航空機シミュレーターが実際の人を殺すことはありません)。


エミュレーションは、対照的に、本物の場所を取るという目標を持っている:あなたはより洗練されたプログラム可能なCPUを使用して簡単なマイクロコントローラをエミュレートする場合、そのCPUは、オリジナルのマイクロコントローラの代わりに使用することができます。物理的に何らかのマシンに接続され、実際にマイクロコントローラーと同じようにそのマシンを制御します。

エミュレーション目標は、元のモジュールが利用できない場合(または維持するだけでも高価になった場合)に、ハードウェアまたはソフトウェアコンポーネントを機能的に同等のものに置き換えることです。エミュレーションは、ハードウェアをより柔軟に使用するという目標にも役立ちます。同じプログラム可能なマイクロコントローラーを複数の単純なコントローラーで倍増させ、必要に応じてエミュレーションモードを切り替えることができます。


3
"technically"、それらはまったく異なります。説明する概念的な違いは、この違いの基本です。
S.ロビンズ

@ S.Robins:「技術的に」とは、技術的な実装がしばしば類似または同等であることを意味します。違いは主に使用目的にあります。
-tdammers

ユースケースとは関係ありません。2つの非常に別個の概念を定義するのは、目的の根本的な違いです。エミュレーションは、元のシステムと区別できないように、複雑な機能システムを正確に置き換えようとしますが、シミュレーションはシステムの大幅な簡略化であり、モデルを介して非常に一般的な意味で機能を表します。したがって、技術的な実装は必然的に大きく異なります。
-S.ロビンズ

@ S.Robins-私は同意しません。特定のマイクロプロセッサをシミュレートするかエミュレートするかは、実装に大きな違いをもたらすことはありませんが、それで何をするかは違います。
-tdammers

1
@tdammers:一般的に、エミュレーターの主な設計目標は、エミュレートされているものの「リアルタイム」置換として機能することです。一方、シミュレーターの主要な設計目標は、不要なリアルタイム分析を可能にすることです。場合によっては、基礎となるプロセスとの相互作用。一部のシミュレーターは高速であり、一部のエミュレーターは、基礎となるプロセスを分析および/または対話するための実質的な機能を提供しますが、エンジニアリングの優先順位は異なります。
supercat

1

語源は厳密に正確ではありませんが、「私はそれがどのように感じなければならないか想像できます」と共感、「私はそれがどのように感じるか知っています」の違いについて考えてください。シミュレーションには問題の視覚的表現が含まれる場合がありますが、含まれない場合があります。たとえば、何人の人が列に並んでいるか、総収益、平均速度を表す数字の列を印刷するだけです。それは現実と一致するいくつかの特徴を持ち、そうでないものもあります。

あるプラットフォームを別のプラットフォームのふりをするコンテキストでよく使用されるエミュレーションは、はるかに完全です。そのため、Windows Phone開発者は、エミュレーター内のWindowsマシンで電話アプリを実行またはデバッグできます。エミュレーターは電話のように見え、そのように動作します。エミュレータで古いCommodore 64ゲームも実行できます。

言葉は正確ではありません。私の意見では、ほとんどのフライトシミュレータはエミュレータに似ていますが、その名前は没入型ではない時代から定着しています。一部の人々は、クロスプラットフォームのケースのために単語エミュレータを予約し、それ以外のもののためにそれを拒否します。話すときに同じことをすれば、おそらく間違っているとは思わないでしょうが、2つの単語の境界を少し異なるように配置し、誰かが「これはエミュレーションです」と言ったときに、完全なシミュレーション。


1
エミュレーションとシミュレーションは事実上同じであるという一般的な誤解のようです。これは、エミュレートという言葉が他人の行動を反映することを意味している可能性があるためです(例:子供が父親をエミュレートする)。これは、コンピューターサイエンスの観点から言えば、技術的に不正確です。フライトシミュレーターはエミュレーションではありません。すべての入出力は専用のプログラム(シミュレーター)によって管理されているためです。航空機が行うプログラム。それがなかった場合は、その後、それはエミュレータになります。
-S.ロビンズ

0

両方の用語のコンセプトは非常に似ており、模倣しています。

シミュレーションまたはシミュレーターは、ソフトウェアを使用して、基礎となるコア機能(特にその基本的な方法論)に関してターゲットモデルに非常によく似た複製システムを作成します。

一方、エミュレーターは、ターゲットシステムと比較した場合、外部の類似性により重点を置いています。関数がどのように模倣されるかについての懸念は最小限です。エミュレータは、一般に、元のシステムとはまったく異なる環境(たとえば、異なるオペレーティングシステム)で作業するときに使用されます。


1
私はあなたが2つの概念が混同したと思います。正確な実装を気にしないシミュレーションです。エミュレーションは内部を非常に重視します。参照:MAME
アンドレスF.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.