Next: シミュレーションモデル, Previous: Top, Up: Top

## 1 MICSとは

開発の初期段階で，プロセッサやハードウェア構成の詳細が決まっていることは大変稀なことであり，一般には開発の初期段階で様々な仕様のハードウェアユニットを選別あるいは設計し，それらを組み合わせた上でのソフトウェアの動作を評価，検証する必要がある． しかし，従来のアーキテクチャの詳細な設計に基づくシミュレータや，プロセッサ毎に独立したシミュレータでは，仕様や構成を変更する度にシミュレーション環境やソフトウェアの開発環境を逐一構築することが必要であり，システムアーキテクチャ設計が大変困難かつ時間を要する作業となっている．

これを容易にするために，開発の初期段階で決定可能な情報であるプロセッサの実行サイクル数や，ハードウェアユニット間の通信サイクル数などによってソフトウェアの動作をシミュレートし，アプリケーションのボトルネックの検出や，変更による効果を検証や評価できるシステムアーキテクチャ設計のためのシミュレータが強く求められている．

MICSは，

1. ハードウェアユニットを抽象化した基底に基づいて，シミュレータ要素を実装し，
2. 各要素の処理に対する必要サイクル数によってシステム全体の動作を仮想的に，

実現する，ことで柔軟なシステム構成と，開発の初期段階から実アプリケーションに近いソフトウェアを動作させることができるシミュレーション環境である．

同じ基底に基づいて実装された要素が可換であることから，(1)により，シミュレーション要素の組み合わせを容易に変更することが可能となる．また，(2)により，開発の段階に応じてユーザがシステムを構成する各要素のシミュレーション精度を任意に決定し，ソフトウェアを動作させることができる．サイクル数を求めるために，他のツール，例えばgdbやRTLシミュレータとの連携を行うことでシミュレータの再実装の手間を削減することもできる．