マイクロアーキテクチャシミュレーションは、コンピュータ アーキテクチャの研究とコンピュータ サイエンスの教育において重要な手法です。これは、マイクロプロセッサとそのコンポーネント ( ALU、キャッシュ メモリ、制御ユニット、データ パスなど) の設計と動作をモデル化するツールです。シミュレーションにより、研究者は設計空間を探索できるだけでなく、新しいマイクロアーキテクチャ機能のパフォーマンスと効率を評価できます。たとえば、分岐予測子、リオーダー バッファ、トレース キャッシュなどのいくつかのマイクロアーキテクチャ コンポーネントは、今日の最新のマイクロプロセッサで一般的なコンポーネントになるまでに、多数のシミュレーション サイクルを経ています。さらに、シミュレーションにより、教育者はコンピュータの構成とアーキテクチャのコースを実践的な体験とともに教えることができます。
コンピュータ ハードウェアのシステム レベルのシミュレーションについては、完全なシステム シミュレーションを参照してください。
分類
マイクロアーキテクチャ シミュレーションは、入力の種類と詳細レベルに応じて複数のカテゴリに分類できます。具体的には、入力は、実際のマイクロプロセッサ上のプログラムの実行から収集されたトレース (いわゆるトレース駆動型シミュレーション) またはプログラム自体 (いわゆる実行駆動型シミュレーション) になります。
トレース駆動型シミュレーション[1]は、ファイルから固定のトレースレコードのシーケンスを入力として読み取ります。これらのトレースレコードは通常、メモリ参照、分岐結果、または特定のマシン命令などを表します。トレース駆動型シミュレーションは比較的高速で、その結果の再現性が高いことが知られていますが、非常に大きなストレージスペースも必要とします。一方、実行駆動型シミュレーション[2]は、プログラムを読み取り、マシン命令の実行をオンザフライでシミュレートします。プログラムファイルは通常、トレースファイルよりも数桁小さくなります。ただし、実行駆動型シミュレーションは、各命令を 1 つずつ処理し、関連するマイクロアーキテクチャコンポーネントのすべてのステータスを更新する必要があるため、トレース駆動型シミュレーションよりもはるかに低速です。したがって、シミュレーションの入力タイプの選択は、スペースと時間のトレードオフです。特に、高精度のシミュレーションのための非常に詳細なトレースには非常に大きなストレージスペースが必要ですが、非常に正確な実行駆動型シミュレーションでは、プログラム内のすべての命令を実行するのに非常に長い時間がかかります。
入力タイプとは別に、詳細レベルを使用してシミュレーションを分類することもできます。特に、サイクルごとにプログラムを実行するマイクロプロセッサをシミュレートするソフトウェアは、サイクル精度シミュレータと呼ばれます。一方、命令セットシミュレータは、命令スケジューラの観点から見たマイクロプロセッサ上のプログラムの実行と、命令実行の大まかなタイミングのみをモデル化します。実践的な経験を伴うコンピューターアーキテクチャのほとんどのコンピューターサイエンスクラスでは、命令セットシミュレータを教育ツールとして採用していますが、サイクル精度シミュレータは、複雑さとリソース消費の両方のため、主に研究プロジェクトに導入されています。
使用法
マイクロアーキテクチャ シミュレータは、さまざまな目的で導入されています。研究者は、コストと時間のかかる実際のマイクロプロセッサ チップを製造することなく、アイデアを評価できます。たとえば、数千のコアと複数レベルのキャッシュ メモリを備えたマイクロプロセッサをシミュレートする場合、プロトタイプ チップの製造と比較すると、コストはほとんどかかりません。研究者は、シミュレータでさまざまなキャッシュ モデルを使用して、キャッシュ階層のさまざまな構成を試すこともできます。異なるものをテストするたびに新しいチップを製造する必要はありません。
マイクロアーキテクチャ シミュレータのもう 1 つの用途は教育です。[3]コンピュータ アーキテクチャのコースでは、学生にさまざまなマイクロプロセッサの機能とアーキテクチャを教えることから、マイクロアーキテクチャ シミュレータは、学期を通してさまざまな機能とアーキテクチャをモデル化および実験するのに最適です。たとえば、学生は学期の初めに、単純なマイクロプロセッサ設計をモデル化するマイクロアーキテクチャ シミュレータから始めることができます。学期が進むにつれて、命令パイプライン、レジスタ名の変更、予約ステーション、アウトオブオーダー実行、スコアボードなどの追加機能が教室で紹介されるにつれて、それらをモデル化してシミュレータに追加できます。マイクロアーキテクチャ シミュレータは、最小限のコストで再構成とテストの柔軟性を提供します。
例
- Shade [4](トレース駆動型命令セットシミュレータ)
- SimpleScalar [5] [6](実行駆動型、サイクル精度シミュレータ)
- SPIM [7](実行駆動型命令セットシミュレータ)
- SMTSIM [8](実行駆動型、サイクル精度シミュレータ)
- マルチ2シム(2007)
- GPGPU-Sim (2007)、SimpleScalarから派生
参考文献
- ^ Uhlig, RA, & Mudge, TN (2004). トレース駆動型メモリシミュレーション: 調査ACM Computing Surveys , 29(2), 128-170.
- ^ Burger, D., & Austin, TM (1997). Simplescalarツールセットバージョン2.0. Computer Architecture News , 25(3), 13-25.
- ^ Skadron, K. (1996). 高度なコンピュータアーキテクチャを学ぶためのマイクロプロセッサ概論コース。2002 ACM SIGCSE カンファレンスの議事録、152-156 ページ。
- ^ Cmelik, RF, & Keppel, D. (1994). Shade: 実行プロファイリングのための高速命令セットシミュレーター。ACM SIGMETRICS パフォーマンス評価レビュー、22(1), 128-137。
- ^ Austin, T., Larson, E., & Ernst, D. (2002). SimpleScalar: コンピュータシステムモデリングのためのインフラストラクチャ。IEEE Computer Magazine , 35(2), 59-67.
- ^ D. Burger および TM Austin. SimpleScalar ツール セット、バージョン 2.0。http://www.simplescalar.com、1997 年。
- ^ Patterson, DA, & Hennessy, JL (2011).コンピュータの構成と設計: ハードウェア/ソフトウェア インターフェース、Morgan Kaufmann。
- ^ Tullsen, DM (1996)。同時マルチスレッドプロセッサのシミュレーションとモデリング。第 22 回 Computer Measurement Group カンファレンスの議事録。
外部リンク
- SimpleScalar 公式ウェブサイト
- SPIM公式ウェブサイト
- SMTSIM マルチスレッドシミュレーター
