# MICS is Cycle-based Simulator

- MICSとは
- ドキュメント
- 使い方
- 更新履歴
- 今後の予定
- 既知の問題
- 謝辞
- ライセンス

## MICSとは

低消費電力，限られたリソースの上で，効率の良いアプリケーションを実現するためには，ハードウェアとソフトウェアの両方，すなわちシステムアーキテクチャの設計が重要である．このシステムの設計および評価には，シミュレーションが有効であるが，従来より用いられているシミュレーション手法では，その構築にかかるコストが大きく，手軽に様々なアーキテクチャモデルを試行することが難しい．

MICSは，これを解決し，開発の初期段階から実アプリケーションに近いソフトウェアをシミュレーションするためのプラットホームです．

MICSは，

- デバイスの抽象化による規定の定義に基づくシミュレータ要素の実装
- 各要素のサイクル数の算出

に基づくアーキテクチャシミュレーション環境です．

抽象化した共通の規定の基にデバイスを実装することによって，シミュレーション要素の容易な変更が可能となり，また，サイクル数のみに基づくシミュレーションであるためシミュレーション精度をユーザが任意に決定することができ，開発の初期段階から使用することができます．また他のツール，例えばgdbなどとの連携を行うこともできます．

## ドキュメント

- MICS全般，ツール，ユニットなど
- サンプルとその動作の説明
- SimpleProcessor
- リコンフィギュラブルプロセッサ
- SHプロセッサ用のGDBとの連携
- チュートリアル

## 使い方

### 起動

GUI環境で使用する場合，

    java -jar mics.jar

また，CUI環境で使用する場合，

    java -jar mics.jar -g

でMICS起動を起動することができます． Windowsであれば，mics.jarをダブルクリックしても起動することができます．

詳しい使用方法はチュートリアルを参照してください．

また，MICSでgdbを利用してシミュレーションを行うためには，commons-codec-1.3.jarとxmlrpc-2.0.1.jarが必要です．

### 設定ファイルの書き方

MICSではシミュレータ構成要素をXMLによって定義します． 詳細はドキュメントを参照してください．

## 更新履歴

0.5.0
  - MICSシミュレーションユニットを，net.wasamon.mics.MicsCompositeElementを使って階層的に定義できるようにしました．
0.4.6
  - SimpleProcessor32に浮動小数レジスタを追加し浮動小数演算を利用できるようにしました．R32〜R63に4バイトでデータを書きこんだ場合に，IEEE754フォーマットでデコードしてfloatとして保持します．
  - SimpleProcessor32のコードを少し整理しました．
  - SimpleProcessorを非推奨にします．
  - Wallet/COINSで浮動小数を扱うようにしました．doubleはまだ使えません．
0.4.5
  - SimpleProcessr/SimpleProcessor32でバスリクエストに対するwriteback関数内のバグを修正
  - WalletにCOINSのno-alignオプションを指定できるようチェックボックスを追加
0.4.4
  - 内部のレジスタが32bitのプロセッサSimpleProcessor32を追加
  - SHのGDBを扱う上でのメモリアドレッシングのフックのバグの修正
  - COINSフロントエンドの切り離し(Walletに)
  - アセンブラの切り離し(Walletに)
  - MICSからアセンブラを呼び出す場合，スタックポインタを0x7000にセットして，mainを呼び出すだけのルーチンをデフォルトとして先頭に付加することにした．
  - SimpleProcessorのバグの修正
  - CharacterDisplayで毎クロック再描画していたのをやめた
  - 回数を指定してのステップ実行で，最後の実行のみの実行状態を表示するように変更

## 今後の予定

- SimpleProcessor32への割込み機能の付加
- SimpleProcessor32での64bit演算のコード生成
- CharacterDisplay，BitMapDisplayで指定したレートでの自動リフレッシュ．
- MICS上で走らせるプログラムのデバッグを支援するツール

## 既知の問題

Resetをクリックしてもプロセッサなどの状態が完全にリセットしません．
  完全に初期状態に戻したい場合には，あらためてアーキテクチャ構成情報を読み込み直してください．
詳細なコンパイルエラーがみられない
  呼び出しているCOINSの出力を完全にとれていないせいです．現状では，COISNの吐くエラーメッセージは標準出力に出力されますので，これを見るためには，コマンドラインなどからMICSを起動してください．

## 謝辞

- この製品／商品には、Apache Software Foundation (http://www.apache.org/)において開発されたソフトウェアが含まれます．
- この製品／商品には、COINS Project Group (http://www.coins-project.org/)において開発されたソフトウェアが含まれます．

## ライセンス

Copyright 2007 Takefumi MIYOSHI
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

| トップへ戻る