コンピュータアーキテクチャシミュレータとは、コンピュータアーキテクチャの実行をシミュレートするプログラムのことである。
コンピュータアーキテクチャシミュレータは、以下の目的で使用されます。
コンピュータアーキテクチャシミュレータは、その用途に応じて様々なカテゴリに分類できる。
フルシステムシミュレータは、実行駆動型のアーキテクチャシミュレーションであり、実システムの完全なソフトウェアスタックを一切変更することなくシミュレータ上で実行できるほど詳細なレベルを実現しています。フルシステムシミュレータは、ホストコンピュータの特性に依存しない仮想ハードウェアを提供します。フルシステムモデルには通常、プロセッサコア、周辺機器、メモリ、相互接続バス、ネットワーク接続が含まれます。エミュレータは、開発中のハードウェアではなく、廃止されたハードウェアを模倣するフルシステムシミュレータです。
命令セットシミュレータと比較したフルシステムシミュレーションの決定的な特徴は、単一のプログラムだけでなく、実際のデバイスドライバやオペレーティングシステムを実行できる点です。したがって、フルシステムシミュレーションでは、ネットワークデバイスドライバからオペレーティングシステム、ネットワークスタック、ミドルウェア、サーバー、アプリケーションプログラムに至るまで、すべてのソフトウェアを含めた個々のコンピュータやネットワーク接続されたコンピュータノードをシミュレートすることが可能です。
フルシステムシミュレーションは、欠陥の検出、再現、修復を容易にすることで、システム開発プロセスを加速させることができます。マルチコアプロセッサの使用は、フルシステムシミュレーションの必要性を高めています。仮想ハードウェアによって提供される制御された環境なしでは、エラーを再現してデバッグすることが非常に困難で時間がかかるためです。[ 1 ]これにより、ハードウェアが準備できる前にソフトウェア開発を行うことが可能になり、[ 2 ]設計上の決定を検証するのに役立ちます。
サイクル精度シミュレータとは、マイクロアーキテクチャをサイクル単位でシミュレートするコンピュータプログラムです。一方、命令セットシミュレータは、命令セットアーキテクチャをシミュレートしますが、通常はより高速ですが、特定のアーキテクチャの実装に対してサイクル精度は高くありません。これらは、レガシーな理由から時間精度が重要な古いハードウェアをエミュレートする場合によく使用されます。サイクル精度シミュレータは、新しいマイクロプロセッサを設計する際によく使用されます。物理的なチップを実際に構築することなく、完全なオペレーティングシステムやコンパイラを実行するなどして、正確にテストおよびベンチマークを行うことができ、期待される計画に合わせて設計を何度も容易に変更できます。
サイクル精度シミュレータは、分岐予測、キャッシュミス、フェッチ、パイプラインストール、スレッドコンテキスト切り替え、その他マイクロプロセッサの多くの微妙な側面など、すべての操作が適切な仮想時間(可能であれば実時間)で実行されることを保証する必要があります。