目次:
定義-プロセッサエミュレーションの意味
プロセッサエミュレーションは、特定のプロセッサまたはオペレーティングシステム(OS)用にコンパイルされたソフトウェアを、異なるプロセッサとOSを持つ異なるシステムで実行できるようにする仮想化プロセスおよびテクノロジです。 これは、プロセッサの命令とプログラムの関連するすべてのオペレーティングシステムコールを、プロセッサとそれが実行されているOSの命令に動的に変換することによって行われます。
Techopediaはプロセッサエミュレーションについて説明します
プロセッサエミュレーションにより、1つのプロセッサ用に記述されたプログラムを、異なるアーキテクチャと命令セットを備えた別のプロセッサで実行できます。 良い基本的な例は、ゲームコンソールエミュレーターです。これにより、ユーザーはNintendo Entertainment SystemやPlayStationゲームなどのコンソールゲームをPCでプレイできます。 ゲームコンソールで使用されるプロセッサはPCのプロセッサとは非常に異なるため、PCでコンソールゲームをプレイするには、ゲームコンソールのプロセッサをエミュレートする必要があります。
基本的な考え方は、実行する必要のあるプログラムの個々のアクションと動作はすべて、ホストシステムの同等の命令セットやオペレーティングシステムコールに変換する必要があるということです。 主な目標は、プロセッサの状態を変更し、ハードウェアと対話するコードを実行することです。これは、実行中のプログラムの各命令に対して実行する必要があります。
プロセッサエミュレーションの処理方法:
- 動的再コンパイル-コードを実行することで操作のリストが作成され、分岐命令に達すると、ホストプラットフォームの命令コードにコンパイルされます。 これは、将来の使用のためにキャッシュされます。 または、各コードを単にオンザフライでコンパイルすることもできますが、このアプローチは最適化が困難です。
- 静的再コンパイル-これは静的バイナリ変換とも呼ばれ、動的再コンパイルで行われるように、コードを実行せずにコードが最初にターゲットマシンまたはアーキテクチャのコードに変換されます。 ただし、コンパイル時にターゲットコードのすべてを翻訳者が決定できるわけではないため、ターゲットコードの一部は間接ブランチでのみ検出され、実行時にのみ決定される可能性があるため、問題が発生する可能性があります。
- 解釈-各コードは、命令ポインターを使用してメモリから読み取られ、ホストコンピューターのCPU命令セットに従って実行されます。 つまり、命令は1対1に変換され、ネイティブに実行されます。 ここでの最大の欠点はパフォーマンスです。
