[English]

KUE-CHIP2シミュレータについて

以下はすべて,科研報告書からの抜粋です. 詳しくはそちらをご覧ください.

目的

本シミュレータの開発の目的は以下の2点である.

  1. KUE-CHIP2教育用ボードのユーザインタフェースの改善
  2. ネットワークを利用した情報処理教育用ソフトウェアの開発

KUE-CHIP2教育用ボードには動作制御や観測を行うためのスイッチ, 表示用LEDが備 わっている. 本シミュレータでは, これらのユーザインタフェースに加えプログラムやデー タの入力, 表示, プロセッサの動作確認などをより迅速に行えるようにいくつ かの機能を追加した. これにより, KUE-CHIP2を用いた計算機実験をより円滑に進めることができる.

さらに, Java言語を用いてシミュレータを開発することにより, インタネット を介しての計算機教育を行うことができる. つまり, インタネットに接続され ており, WWWブラウザが利用できる計算機環境があればどこからでもシミュレー タを利用することができる. このことは, 将来のネットワークを利用した情報 処理教育の可能性を示唆するものである.

開発経緯

本シミュレータの開発は, 1996年4月から新實治男助教授の提案で開始した. 開発に利用した環境, 作業時間などを表に示す. 主と してSolaris2.5上で開発を行った. 開発の際には, 参考書 およびJava言語に関する メーリングリスト(Java House ML, Java House Brewers ML) などを利用した.

開発環境および作業時間
開発環境
  • Solaris2.5
  • Windows95
  • MacOS
開発用ソフトウェア Java Developers Kit(1.02 release)
作業時間9ヶ月(実質約60日)

シミュレータの構成

メインウィンドウは, 大きく分けてプロセッサの内部状態を表示する部 分とプロセッサの動作を制御する部分からなる.

表示部

表示部には実行中のフェーズ, 各レジスタ, フラグの値が表示される. これらを利用することで プロセッサの動作観測が行える.

KUE-CHIP2教育用ボードでは各レジスタ, フラグの表示はスイッチで 観測したい対象を選び2種類の7セグメントで確認する. 本シミュレータでは すべてのレジスタの値, フラグの状態を常に表示しユーザがスイッチ を用いてそれらを切替える必要がない.

制御部
制御部にはSS, SI, SP, RESETボタンがあり, これらはKUE-CHIP2教育用ボードと同様の機能を提供する. 主としてこれらの4つのボタンでプログラムの実行, 停止, 再開 などを行う.

本シミュレータでは, これらに加え以下の3種類のボタンがある.

MEMORY
このボタンを押すことで, メモリエディタ・ウィンドウが表示される. プログラムやデータの入力にはこのウィンドウを使用する. 変更したいデータ(1バイト) を反転表示させ, 値を16進数で入力することでメモリの内容を変更できる.
BLOCK
このボタンを押すことで KUE-CHIP2のブロック図が表示される. プロセッサが動作中は, 有効となっている制御線が赤色で表示される.
LOG
このボタンを押すことでログ・ウィンドウ が表示される. 必要に応じてプログラムの実行中の実行履歴を記録することが できる.

これらの他に以下のようなユーザインタフェースが提供される.

Normal
プログラムの実行速度を5段階に調節できる.
Instruction:
実行中の命令をニーモニック表示する.
Total Phases
プログラムの実行を開始してからの総フェーズ数を表示する.
Total Instructions:
プログラムの実行を開始してからの総実行命令数を表示する.
State:
現在のシミュレータの動作状態(STOP, RUNNING, BREAK, RESETのいずれか)が表示される.

本シミュレータの特徴

本シミュレータの特徴として, 以下の2点が挙げられる.

  1. ブロック図の表示や実行履歴の記録などハードウェアでは実現の困難な機能を持ち, GUIベースのソフトウェアであるためその操作も簡単である.
  2. Java言語で記述することにより, マルチプラットホームでの実行, インタネットを通じての利用が可能である.

ソフトウェアシミュレータの利点

本シミュレータは, 前述したようなユーザインタフェースを備え KUE-CHIP2を用いた実験を円滑に進めることができる.

実験ではまずプログラムの入力を行う. プログラムの入力は, 前述したメモリエディタ・ウィンドウを 起動しプログラムを直接入力する方法と, Fileメニューから プログラムファイルを読み込む方法のどちらかを選択することができる. プログラムファイルは, テキスト形式で指定のフォーマットで 記述されている必要がある.

次にプログラムの実行はSS, SI, SPボタンを用いて行う. 実行中はメインウィンドウに各レジスタの値, およびフラグの状態が表示 され, ブロック図のウィンドウを表示しておけばプロセッサ内部の 動作を随時確認できる.

また, プログラムの実行を中断している間には, 各レジスタの値, およびフラグの状態を自由に変更することができる. レジスタの値を 変更する場合, 値を変更したい7セグメントをマウスでクリックし, 16進数で値を入力する. フラグの場合, 変更したいLEDを マウスでクリックすることで状態が反転する.

さらに, ユーザはブレークポイントを設定することができる. 各レジスタが, ユーザの設定した値になった時にプログラムの実行を停止する. 各レジスタの値が表示されている7セグメントのすぐ横にある, 小さな 7セグメントをクリックして値を入力することで設定できる.

プログラム実行中の履歴は, 前述したログ・ウィンドウを開き LogメニューからStart Logの項目を選択することで, その時点から の実行履歴を記録することができる.

プログラムの実行が終了後, 現在のメモリの内容, および ログ・ウィンドウに表示されている実行履歴をテキスト形式で 保存することができる.

以上のように, ウィンドウシステム環境でのGUIベースの ソフトウェアとして開発されて いるため, プログラムの入力, 実行, レジスタの値およびフラグの変更, ブレークポイントの設定などを簡単に行うことができ, またメモ リの内容, 実行履歴の保存が可能であるためプログラムの評価, 再利用などが 簡単に行える. また, ブロック図を用いてプロセッサ内部の動作の様子をリアルタイムで 観測することができる. これらの機能をハードウェアで実現することは 困難であると考えられる.

マルチプラットホーム環境下での実行

本シミュレータはJava言語で記述されている.

Javaのソースコードをコンパイルすることによって バイト・コードと呼ばれる中間ファイルが生成される. このバイト・コードはJava Virtual Machine (Java仮想マシン, 以下JVMと略記) のオブジェクトコードである. 本シミュレータの実行は 各プラットホームに実装されたJVM上で行われる. このバイト・コードは 異なるプラットホーム間で共有することができる.

さらに, インタネットを通じてこのオブジェクトコードを送ることができる. 現在主なWWWブラウザにはJVMが実装されておりアプレットと呼ばれる形式で 実行することができる. 実際に, Solaris2.5, Windows95(NT), MacOS, IRIXなどで 動作確認済みである.

クラス階層

工事中

問題点

本シミュレータを開発する上で問題となった点を以下に挙げる.

  1. 異なるプラットホーム(JVM)上への実装が困難であること
  2. セキュリティ上制限されている機能があること
  3. Javaプログラムの実行速度が比較的遅いこと

KUE-CHIP2シミュレータのページへ戻る