64 ビット システムで 32 ビット プログラムをエミュレートするとプロセッサ パワーが失われるのはなぜですか?

64 ビット システムで 32 ビット プログラムをエミュレートするとプロセッサ パワーが失われるのはなぜですか?

愚かな質問かもしれませんが、明確な答えが見つかりません。

ホスト CPU = エミュレートされた CPU

ペンティアムプロ200MHz = 286 6MHz

ペンティアムII 350MHz = 386SX 25MHz

ペンティアムIII 1.0GHz = 486 66MHz

ペンティアム 4 3.0GHz = ペンティアム 133MHz

Core 2 Duo 3.3GHz = Pentium II 300MHz

Core i5 4xxx 4.0GHz = Pentium III 500GHz

によるとこれはここです

答え1

これはすべて、使用しているエミュレーターによって異なります。ただし、重要な点は、エミュレーターはソフトウェアを使用してハードウェアの作業を実行することです。つまり、アセンブリ コードをハードウェア上で直接実行するのではなく、ソフトウェアで実行します。

言い換えれば、64 ビット システムで 32 ビット コードを実行するだけではなく (実際にはオーバーヘッドはありません)、実際のハードウェアから抽象化されたハードウェアのふりをしたソフトウェアです。

答え2

エミュレーションでは、ソフトウェアでコンピュータを作成する必要があります。これには、実際のハードウェアにできるだけ近いコンピュータを作成するために必要な CPU、メモリ、およびすべての補助ハードウェアが含まれます。

すべてのCPU命令は、ホストCPUで実行される前に検査され、エミュレートされたCPUで使用される言語に変換されます。ホストCPU上で直接コードを実行するのと同じではないCPU はホスト CPU から完全に分離されたソフトウェア構造であるためです。

この分離により、エミュレートされたコンピュータはホスト CPU から独立しており、エミュレーション ソフトウェアのみに依存するため、CPU タイプがまったく異なる場合でも、他のシステムに移動できます。ホスト CPU とエミュレートされたマシンの CPU は大きく異なる場合があります。

これは単に32ビットマシンとして動作する64ビットマシンではなく、CPU全体を実行する64ビットマシンです。ソフトウェア実際の CPU の上に。

エミュレーションの代替手段は仮想化です。仮想化では、ソフトウェアは CPU 自体ではなく、CPU 周辺のハードウェアと関連インターフェイスのみをエミュレートします。コードはホスト CPU 上で直接実行されるため、ホストとゲスト マシンで同じ CPU アーキテクチャが必要になるという代償を払うことで、ネイティブに近い速度が得られます。

関連情報