用語解説集-計算機科学-アーキテクチャ-シミュレータ

アーキテクチャシミュレータ | Architecture Simulator

gem5

MARSSx86

Multi2Sim

  • 様々な命令セットをサポート(x86AMD、ARM、MIPS32、Evergreen、NVIDIA Fermi)
  • User-level simulation 、粒度は不明
  • マルチコアサポート
  • CPU-GPUシミュレーションに用いられる

Sniper

PTLsim

ZSim

McPAT

  • 様々な命令セットをサポート(x86、ARM、Alpha、SPARC)
  • 電力、面積の評価に用いられる サイクルアキュレート  
  • マルチコアサポート
  • Multi-core Power, Area, and Timingの略

SimpleScalar

Full-system simulation

  • コンピュータシステムの全体をシミュレーションする
    • ユーザーランドで動作するプログラムだけでなく、OSやデバイスドライバを含む
    • プロセッサ内部だけでなく、メモリシステムやI/Oデバイスを含む
  • 主にオペレーティングシステムなどシステムソフトウェアの研究に用いられる

User-level simulation

Functional simulation

  • 正確さが劣っても良いので高速なシミュレーションを行いたい場合に用いる。
  • 特定の入力に対する出力が期待どおりであるかどうかを確認することに焦点を当てていますが、実行にかかる時間やサイクル数は考慮しない。
  • CPUが対象の場合は、 Instruction-Level simulation とほぼ同義。

Instruction-Level simulation

  • 対象とする命令セットアーキテクチャの各命令の動作を再現することに重点を置く。
  • サイクル数等詳細な情報は提供しない。
  • 新しい命令セットアーキテクチャを開発する際やに用いる。
    • あるプログラムで実行された命令毎の総数やメモリアクセスの局所性を調べるのに使う。

サイクルアキュレート | Cycle accurate simulation

  • 対象の動作をクロックサイクル単位で正確にモデル化する。
  • OS全体やコンピュータシステム全体を対象とすると、シミュレーションが現実的な時間で完了しない。

Event-driven simulation

  • コンピュータシステム内で発生するイベントを用いる方法
    • イベントとは、命令のフェッチ、メモリアクセス、I/Oアクセスなど

Trace-driven simulation

  • 実機や他のシミュレータから採取したトレースデータを用いる方法
    • トレースデータとは、命令シーケンスやメモリアクセスパターン
  • 特定のアプリケーション、ワークロードの性能分析や、コンピュータシステムの挙動の分析に用いる

VLSI設計の文脈における、シミュレーションの抽象度には下記の3つがある。

  1. ビヘイビアレベル | Behaivioral-level
  2. RTL | Register Transfer Level
  3. ゲートレベル | Gate-Level

ビヘイビアレベル | Behaivioral-level

  • VLSI設計の文脈における、シミュレーションの抽象度の1つ
  • 目的は、VLSI設計の初期段階における、設計対象の明確化。

RTL | Register Transfer Level

  • VLSI設計の文脈における、シミュレーションの抽象度の1つ
    • 一般に、論理回路設計の最終成果物は、この抽象度で記述される。より低い抽象度であるネットリスト(= ゲートレベル の記述)には論理論理合成によってなされ、人手では行わない。
    • この抽象度は、任意の1サイクルにおける記憶素子から記憶素子への論理関数を記述したものである。
  • 目的は、論理回路設計のデバック・検証。

ゲートレベル | Gate-Level

  • VLSI設計の文脈における、シミュレーションの抽象度の1つ
    • 回路をネットリストで記述し(=論理ゲートのスタンダードセル, フリップフロップ, RAM等で記述し)、
    • クロックサイクルより細かいタイムスケールでシミュレーションする
  • 目的は、電力評価、動的タイミング解析。