web-dev-qa-db-ja.com

シミュレータかエミュレータか違うはなんですか?

シミュレーションとエミュレーションが一般的に何を意味するのか理解していますが、私はほとんど常にそれらについて混乱します。既存のハードウェア/ソフトウェアを模したソフトウェアを作成したとしましょう。シミュレータかエミュレータ?

誰もがプログラミングの面で違いを説明できますか?

ボーナス:これら二つの用語の間の英語の違いは何ですか? (申し訳ありませんが、私はネイティブスピーカーではありません:))

474
AraK

エミュレーションは、既存のターゲットと一致するように、外から観察可能な動作を模倣するプロセスです。エミュレーションメカニズムの内部状態は、それがエミュレートしているターゲットの内部状態を正確に反映する必要はありません。

一方、シミュレーションでは、ターゲットの基本的な状態をモデル化します。良いシミュレーションの最終結果は、シミュレーションモデルがシミュレートしているターゲットをエミュレートすることです。

理想的には、シミュレーションを調べて、元のターゲットを調べた場合にも見られるプロパティを観察できるはずです。実際には、パフォーマンス上の理由からシミュレーションへの近道があるかもしれません。つまり、シミュレーションのいくつかの内部的側面は、実際にはエミュレーションである可能性があります。

MAMEはアーケードゲームのエミュレータです。 Hypertermは(あまり良くない)ターミナルエミュレータです。エミュレートされた動作を実現するために、アーケードマシンや端末を詳細にモデル化する必要はありません。

Flight Simulatorはシミュレータです。 SPICEはエレクトロニクスシミュレータです。彼らは、ターゲットが実際に何をするかを表すために、可能な限りターゲットの詳細をすべてモデル化します。

編集:他の回答は、エミュレーションの目的はそれがエミュレートしているオブジェクトの代わりになることができることであると指摘しました。それが重要なポイントです。シミュレーションの焦点は、ターゲットの内部状態のモデル化に重点が置かれています - そして、シミュレーションが必ずしもエミュレーションにつながるわけではありません。特に、シミュレーションはリアルタイムよりはるかに遅く実行されるかもしれません。たとえば、SPICEは実際の電子回路に代わることはできません(電気回路をSPICEシミュレーションに完全に接続するある種の魔法のような装置があったとしても)。

422
Toybuilder

フライトシミュレータがAからBにあなたを輸送することができればそれはフライトエミュレータでしょう。

エミュレータはオリジナルを real useに置き換えることができます。
Virtual PCはPCをエミュレートします。

シミュレータは研究と分析のためのモデルです。

エミュレータは常にリアルタイムに近い動作をする必要があります。シミュレータの場合、必ずしもそうとは限りません。地質学的シミュレーションは1000年/秒以上を行うことができます。

307
Henk Holterman

シミュレーション= analysisstudy

エミュレーション= 代替としての使用

シミュレータはモデル化された環境ですが、エミュレータは元のデバイスやシステムと同じように使用方法を再現するものです。

シミュレータは、それがシミュレートしているものの活動を模倣します。シミュレートされているものと同じであることは、「出現する」(コンテキストに応じて、この「出現する」で多くのことができます)。たとえば、フライトシミュレータは、ある場所から別の場所にあなたを移動させますが、ユーザーにとっては本当のフライトのように見えます。

一方、エミュレータは、実際には " does " _エミュレートされているものが何をするのか、そしてそうすることでも "同じことをしているように見えます"です。エミュレータは、エミュレートされているものを模倣するために異なるプロトコルセットを使用することがありますが、結果/結果は常に元のオブジェクトと同じです。たとえば、EMU8086はあなたのコンピュータ上で8086マイクロプロセッサをエミュレートします。これは明らかに8086では動作していません(= 異なるプロトコル)、しかしそれが与える出力は実際の8086が与えるものです。

153
Dheepak J

それは焦点の違いです。エミュレータ1 システムが内部でどのように機能するかに関係なく、システムの動作を再現することに焦点を当てます。シミュレータ2 システムのコンポーネントのモデリングに焦点を当てます。システムが何をするのかを気にするのであればエミュレータを使い、どうやって動かすのかを気にするのであればシミュレータを使います。

彼らの一般的な英語の意味に関しては、エミュレーションは「品質または アクション で別のものと同等または同等にするための努力」であり、シミュレーションは「to モデル 」または "のプロパティ。大した違いはありません。エミュレーションはæmulus、「努力すること、競争すること」から来ており、「模倣する」および「イメージ」に関連しています。 「似た」という言葉がそうであるように、「シミュレーション」はsimilis「のような」から来ています。これはおそらくより深い一致を示唆しています。

参考文献:

  1. Wikipedia: エミュレータ
  2. ウィキペディア: コンピューターシミュレーション
  3. ウィクショナリー: emulation
  4. ウィクショナリー: シミュレーション
  5. Etymology Online: emulation
  6. Etymology Online: シミュレーション
37
outis

私はエミュレータとシミュレータを比較できるとは思わない。どちらも何かを模倣していますが、同じ推論の範囲の一部ではありません、同じ文脈では使用されていません。

一言で言えば、エミュレータはorginialのいくつかの機能をコピーするように設計されており、実際の環境では置き換えることさえ可能です。シミュレータは、オリジナルの機能をコピーするようには設計されていませんが、オリジナルに似ているように見えるように人間にのみ設計されています。元の機能がなければ、シミュレータは実際の環境でそれを置き換えることはできません。

emulatorは、それが本物のものに置き換えることができるのように十分に近い何かをまねたデバイスです。たとえば、回路をROM(読み取り専用メモリ)回路のように機能させたいが、必要になるまで内容を調整したい場合もあります。エミュレートするROMと互換性のある物理的および電気的インタフェースを備えたROMエミュレータ、ブラックボックス(CPUベースの可能性が高い)を使用します。エミュレータは実際のROMの代わりにデバイスに接続されます。マザーボードは動作しても違いは見られませんが、エミュレートROMの内容は簡単に変更できます。そうでなければ、エミュレータはそのマザーボードの文脈では実際のものと全く同じように動作する(実際の内部モデルのために多少遅くなるかもしれない)が、マザーボードの文脈からはデザイナーにしか見えない追加機能(書き換えなど)があるだろう。そのため、エミュレータの定義は次のようになります。オリジナルを模倣し、その機能的機能をすべて備え、実際にはそれをある程度拡張することができ、通常のコンテキストでは見えない追加の機能を持つことができます。

シミュレータは別の考え方で使われています。例えば平面シミュレータ、自動車シミュレータなどです。シミュレーションは実際の事柄のある側面、通常は{人間がどのように関係しているか)にのみ注意を払います。それを知覚し制御するだろう。シミュレータは実際のものの機能を実行することはなく、それに代わることもできません。飛行機シミュレータは誰かを飛ばしたり運んだりしません、それはその目的ではありません。シミュレータは動作するようには意図されていませんが、パイロットにはどういうわけか通常の目的以外の目的のために実際のもののように見えるようにします。地上での訓練を可能にする(全エンジン故障のような異常な状況を含む)。そのため、シミュレータの定義は次のようになります。元のように、人間には表示できるものの、ある程度までは表示できますが、実際の使用のために置き換えることはできません。さらに、パイロットはシミュレータがシミュレータであることを知っています。

ROMは人間と相互作用していないので、ROMシミュレータは表示されないと思います。また、飛行機が代替品を実行できないため、飛行機エミュレータも表示されません。現実の世界でも同じ機能があります。

私の考えでは、エミュレータやシミュレータの中のモデルは何でも構いませんし、オリジナルのモデルに似ている必要はありません。 ROMエミュレータモデルはおそらくハードウェアではなくソフトウェアになるでしょう。MSFlight Simulatorはそれ以上のソフトウェアにはなれません。

この2つの用語の比較は、内部モデルに違いをもたらす、現在選択されている答え(Toybuilderから)と矛盾します。一方、違いは、実際の機能を実行するために偽物を使用できるかどうかです。いくつかの受け入れられた拡張に、確かに)。

平面シミュレータは、地球の一部ではない地球、太陽、風などもシミュレートしなければならないことに注意してください。したがって、平面シミュレータは、地球の環境だけでなく、平面のいくつかの側面を模倣する必要があります。それはこの実際の環境ではなく、トレーニング室で使用されているので飛行機。

これは、元のものだけをエミュレートするエミュレータとの大きな違いです。その目的は、エミュレートする必要なしにオリジナルの環境で使用されることです。飛行機の文脈に戻ると・・・飛行機エミュレータは何だろう? 2つの空港、実際には2つの飛行機の階段を結ぶ列車が、乗客を乗せ、スチュワーデスを搭乗させ、車内を実際の飛行機のキャビンのように見せ、船長の言っている。私たちの行き先は24°Cです。その利点は見づらいです、ハム...

結論として、エミュレータは実際に動作することを目的としたものであり、シミュレータはユーザをだますことを目的とした偽物です。

19
mins

簡単な説明.

PC(Windowsを実行している)をMacに変換したい場合は、次のいずれかを実行できます。

(1)WindowsにMacのテーマをインストールするだけです。それで、あなたのPCはもっとMacのように感じます、しかしあなたは実際にどんなMacプログラムも走らせることができません。 (SIMULATION)

(または)

(2)あなたはあなたのPCをMacのように走るようにプログラムすることができます(これが可能かどうかはわかりません:P)。これで、Macプログラムを正常に実行でき、Macと同じ出力が期待できます。 (EMULATION)

最初のケースでは、Macを体験できますが、Macと同じ出力は期待できません。
2番目のケースでは、Macと同じ出力が期待できますが、それでもPCのみであるという事実が残ります。

12
Vishnu Vivek

数年前、私は非常に短い格言を思い付きました。それは私が違いの本質を非常にうまく捉えていると思います。

シミュレータは、ミッション上のエミュレータです。

つまり、本物が使えないときはエミュレータを使い、本物が使えないときはシミュレータ を使い、それについて何かを見つけたいということです

10
Jörg W Mittag

シミュレータとエミュレータの違いを理解するために、シミュレータは実際のデバイスの動作を模倣しようとします。たとえば、iOSシミュレータの場合は、実際のiPhone/iPadデバイスの実際の動作をシミュレートします。ただし、シミュレータ自体はMacにインストールされているさまざまなライブラリ(QuickTimeなど)を使用してレンダリングを実行するため、実際のiPhoneと同じ効果が得られます。さらに、シミュレータ上でテストされたアプリケーションは、シミュレータによって理解されるバイトコードであるx86コードにコンパイルされます。実際のiPhoneデバイスは、逆にARMベースのコードを使用します。

対照的に、エミュレータは実際のデバイスの動作をエミュレートします。エミュレータ上でテストされたアプリケーションは、実際のデバイスによって使用される実際のバイトコードにコンパイルされます。エミュレータは、バイトコードを、エミュレータを実行しているホストコンピュータによって実行され得る形式に変換することによってアプリケーションを実行する。

シミュレーションとエミュレーションの微妙な違いを理解するために、ナイフで遊ぶのは危険だと子供に納得させようとしていると想像してください。これをシミュレートするために、あなたは痛みでナイフとうめき声で自分自身を切るふりをします。これをエミュレートするために、あなたは実際に自分自身を切っています。

10
पवन

エミュレータは、エミュレートされたシステムが受け付ける有効な入力を受け入れ、同じ出力または結果を生成するシステムのモデルです。つまり、あなたのソフトウェアはエミュレートされたシステムの 動作 を正確に再現している場合に限り、エミュレータです。

9
cdiggins

おおよそ普通の言い方では:あなたのソフトウェアが模倣されたシステムができることすべてをすることができるならば、それはエミュレータです。それがシステムの結果(ITまたはそれ以外)の近似値にすぎないのであれば、それはシミュレータです。

6
Pontus Gagge

エミュレータは実際のシステムに代わるものですが、シミュレータは実際のシステムを最適化し、理解し、推定するために使用されます。

4
Ramsharan

シミュレータ: インタプリタに似ています。つまり、実際のコードを 1行ずつ で実際に実行し、動作を模倣します。

エミュレータ: /似た実行可能ファイルです。すなわち、コンパイルされたコードを受け取りそれを実行します。

4
satya

どちらもオブジェクトのモデルであり、入力を制御したり出力を観察したりするための手段がいくつかあります。

主な違いは、

  • emulatorを指定すると、エミュレートしているオブジェクトが生成する出力完全一致が必要になります。
  • simulatorを使用すると、出力の特定のプロパティを類似 _ _ _ _オブジェクトが生成するものにします。

例を挙げましょう - システムに新しいセンサー(温度計など)を追加するとシステムにどのような影響があるかを確認するためにシステムテストを行いたいとします。あなたは、体温計がその測定値を含むメッセージを1秒間に8回送信することを知っています。

シミュレーション - 温度計をまだ持っていなくても、このメッセージレートがシステムを過負荷にしないことをテストしたい場合は、1秒間に8回乱数を送信するユニットを接続することによってセンサーをシミュレートできます。センサーが送信する実際の値に依存しないテストを実行できます。

エミュレーション - あなたが0.001 Cまで測定する非常に高価な温度計を持っていて、あなたが最も近い0.5 Cまでしか測定できないより安い温度計で得ることができるかどうかを見たいと思う。その後、読み取り値を最も近い0.5 Cに丸めて、温度値に依存するテストを実行します。

シミュレーションは行動の予測や予測にも使用できます。有限要素解析シミュレーションは、天気予報や仮想風洞など、多くのアプリケーションで使用されています。

用語の定義:

  • エミュレーション - 超過または完全に一致
  • シミュレート - 外観や性格を模倣する
3
Jay Elston

2つの用語の違いは少しあいまいです。 「エミュレータ」が組み込みシステムのデバッグを可能にするハードウェアの一部である世界から来る。そして、あなたがPCプラットフォームをデバッグするためのICE(In Circuit Emulation)機能を持つことを可能にした製品を思い出してください。

この用語の現在の用法に対する私の正当化は、エミュレーションが機能性を「増強する」可能性があり、システムの動作の「合理的な」近似にのみ関係しているということです。

ICE :(インサーキットエミュレーション)実際のプロセッサの代わりにボードに差し込まれているハードウェア。実際のプロセッサが存在するかのようにシステムを実行できます。通常、これらは、ユーザーがハードウェアの制御下で実行とシングルステップを中断できるように、グルーロジックを使用してソフトウェアを実際に実行するためのプロセッサのバリエーションを持っています。ロギング機能を提供するものもあります。最近のほとんどのプロセッサ開発システムは、ICEタイプのエミュレーションをJTAGエミュレーションに置き換えています。JTAGは特別な目的のシリアルリンクを介してプロセッサと対話するだけで、実行はすべてボードに搭載されたプロセッサによって実行されます。

ソフトウェアエミュレータ:0x86エミュレータは、0x86アセンブリ言語を実行できることにのみ関心があり、SPECIFIC 0x86プロセッサのサイクルごとの正確なサイクル動作モデルを提供しません。 Bochsはその一例です。 QEMUはこれを行いますが、特別なカーネルモジュールを使った「仮想化」も可能にします。

シミュレータ:テキサスインスツルメンツは、開発者がハードウェアを使用する前に使用するSPECIFICプロセッサコアの動作の正確なシミュレーションを目的とした、ソフトウェア開発用プロセッサのCYCLE ACCURATE動作モデルを提供しています。

ソフトウェアEMULATOR拡張機能:BLEEMはPlayStationソフトウェアを実行することを許可するだけでなく、PlayStationが提供することができたよりも高い解像度でディスプレイを出力することを許可し、また利用可能なGPUのより高度な機能を利用しました。 (つまり、テクスチャのより良いブレンドとスムージング)

3
NoMoreZealots

この質問はおそらく歴史的慣習を見て答えるのが最もよいでしょう。

これまでに、私はPC上でPlayStation&SEGA用のゲーム機エミュレータを見ました。

運転や飛行などの現実の行動を模倣しようとするソフトウェアを指す場合、シミュレータは一般的です。 Gran TurismoとMicrosoft Flight Simulatorは、シミュレータの典型的な例として頭に浮かぶ。

言語的な違いに関しては、エミュレーションとは通常、誰かの(または何かの)賞賛に値する特性や動作をコピーすることを指します。エミュレーションは、人が偽造の目的でコピーされるという模倣とは異なります。

動詞「シミュレーション」の言語学的な意味は、基本的に誰かまたは何かを装うか模倣することです。

2
Zaid

コンピュータサイエンスでは、シミュレーションとエミュレーションの両方が、元のシステムが生成するのと同じ入力から同じ出力を生成します。しかし、エミュレーションはそれを達成するために 同じプロセス を使用し、 同じ材料から作られています 。シミュレーションは、元のシステムとは異なるプロセスを使用します。注目に値するのは、複製という用語です。これは、2つの中間のものです。同じプロセスを使用しますが、異なる素材で作成されています。

それで私が私の古いSuper Mario Brosゲームを私のPC上で走らせたいのならSNES emulator を使います。同様の材料(シリコンチップ)。しかし、ボーイング747ジェットを私のPC上で飛行させたいのであれば、飛行 シミュレータ を使用します。なぜなら、それはオリジナルと全く異なるプロセスを使用するからです。

これは、コンピュータサイエンス用語集から取った正確な定義です。

シミュレーションは、システムの入力と出力との間の機能的な関係を捉えるシステムのモデルですが、必ずしもシステム自体のプロセスと同じ、または類似のプロセスに基づくものではありません。

複製とは、システムの入力と出力の間の機能的な関係を捉えるシステムのモデルであり、システム自体のプロセスと同じまたは類似のプロセスに基づいています。

エミュレーションは、システムの入力と出力の間の機能的接続を、そのシステムのプロセスと同じまたは類似のプロセスに基づいて取得し、そのシステムと同じ材料で構築されたシステムのモデルです。 。

参照:オープン大学、M366用語集1.1、2007

2
Aeolai

シミュレーションは類似を他のものと同じように動作させるシステムですが、まったく異なる方法で実装されています。これはシステムの基本的な振る舞いを提供しますが、シミュレートされているシステムのすべての規則に必ずしも従うわけではありません。それはあなたに何かがどのように働くかについての考えを与えるためにそこにあります。

エミュレーションは正確にが他の何かのように振る舞うシステムであり、エミュレートされるシステムのすべての規則に従います。それは、エミュレートされたシステムの入力と出力とバイナリ互換性があるまでは別のシステムの完全な複製ですが、元のエミュレートされたシステムの環境とは異なる環境で動作します。規則は固定されており、変更することはできず、システムに障害が発生します。

2

単語の定義は違いを最もよく表しています。 Google検索では、シミュレートとエミュレートについて次のように定義されています。

simulate の外観または文字を模倣します。

エミュレート 通常は模倣によって、一致または超過(人物または達成)。

シミュレーションはシステムを模倣します。エミュレーションはシステムを非常にうまくシミュレートして、それを置き換えることができ、あるいはそれを超えることさえできます。

コンピューティングでは、エミュレーションはそれがエミュレートしているシステムの代わりとなるドロップです。多くの場合、それは模倣しているシステムより優れていることさえあります。たとえば、ゲームコンソールエミュレータは通常、ハードウェアの互換性の向上、パフォーマンスの向上、オーディオ/ビデオ品質の向上などの改善を行います。

一方、シミュレーションはそれらがモデルであることによって制限されます。それらはシステムを模倣するための最良の試みですが、それに代わるものではありません。ハードウェアを模倣することができ、違いを見分けるのが難しいので、ハードウェアエミュレータがあります。実際の農業を置き換えることができるエミュレーションがないので、農業エミュレータはありません。私たちは農業のモデルをシミュレートすることができるだけで、より良い農業方法についての洞察を得ることができます。

2
J.Money

Virtual PCはエミュレートコンピュータ、 プログラマの観点から しかし、同時に、シミュレートコンピュータ 電気の観点から)エンジニア

1
Abhinav

エミュレータ:

あなたが英語だけを知っていて、あなたが中国にいる状況を考えてみましょう。中国人と交流するには、翻訳者が必要です。今、翻訳者の役割は、英語であなたからの入力を求めて中国語に変換し、その入力を中国人に与え、中国人から応答を得て英語に変換して、あなたに出力を英語で与えることです。その翻訳者と中国人がエミュレータです。どちらのコンバインも、あたかもイギリス人とコミュニケーションを取っているかのように同様の機能を提供します。そのため、ハードウェアは異なる場合がありますが、機能は同じになります。

シミュレータ:

私はSPICEやフライトシミュレータよりも良い例をあげることはできません。どちらも、ハードウェアコンポーネントの動作を、ハードウェアと同様に動作するソフトウェアまたは数学モデルに置き換えます。

最終的には、どのソリューションがプロジェクトのニーズに適しているかというコンテキストに依存します。

0
Vaibhav Gautam

シミュレータ エミュレータ よりも幅の広いもので、上記の記事ではこの用語の二元性が見過ごされているようです。

エミュレータ

既存のシステムの一部のハードウェア部品を簡単な方法で置き換え始めたときに、人々は新しいWord emulation を使用することに決めました。何かをして、すべてを同等の状態にします。 だから私達はこの部分をエミュレートしました! (そして全体は以前と同じように動作します)

エミュレータは通常、デジタル領域で狭義の意味で使用されています(デジタル形式でソフトウェアの一部として提示)。これまでに知られていたもの(仮想チップ、回路基板、電子デバイス)。それで、世界がよりデジタルになり、 エミュレータ Wordを大衆にもたらしたとき、大衆はそれに不確実性を加えました(または追加の理由)。

シミュレータ

まず第一に、私はエミュレータが実際に何かをするか置き換えるかについての多くのコメントを見ましたが、シミュレータはそうではありません。

しかし、フライトシミュレータは実物のために使用されます - それはパイロットを訓練し、彼らにスキルと知識を与えます、そしてそれは高価な現実の飛行機に取って代わってそして多くのお金を節約します。そして、これはそれ以上のものであるという内面的な感覚があるので、プレーンエミュレータと言うことはできません。したがって、それを simulator :)と呼ぶことができます。

シミュレータは分析や研究に(そして実際のもののためにはエミュレータが)使用されますが、 分析と研究 はエミュレートされたGSMボードより実物ではありません。 。分析は、ビジネスに価値を付加し、コストを削減し、または交換された(エミュレートされた)ハードウェア以上の利益を指摘します。

シミュレータは、何らかの理由(コスト、技術、物理的な不可能性)では入手できないもののモデリングに似ています。それは通常、新しいもの、無形のもの、複雑なもの、あるいは市場、天気、燃焼、ユーザーなど、私たちにはよく知られていないものに対してシミュレートされます。それで、ここに飛行、ブラックホール、証券取引所、シミュレーションが来ます。

最後に:

  1. シミュレータはエミュレータよりも幅が広い
  2. シミュレータは、よりグローバルなプロセス/モノ全般を模倣する傾向があり、模造品を絞り込むことができます(たとえば、既知のモデルを表すプリセットを含むキャパシタシミュレータ)。
  3. エミュレータは、特定の仕様、既知の特性、および特性を持つ特定のハードウェアデバイスを模倣する傾向があります(例:SNESエミュレータ、Intel 8087またはRoland TB-303)。

言葉は由来

すべてラテン語によるもので、

  • エミュレート は「等しくなるように」(より積極的で直接的な - 競合のように見える)
  • シミュレート は「似ている」ことを意味します(より巧妙でトリッキーな - 模造のように見えます)。
0
rook