MikroSimは、 Microsoft Windowsオペレーティングシステム上で動作する仮想プロセッサの一般的な機能と動作を、ハードウェアに依存しない形で説明するための教育用コンピュータプログラムです。小型電卓、マイクロコントローラ、マイクロプロセッサ、コンピュータなどのデバイスは、マイクロ命令(マイクロコード)のシーケンスによって制御されるレジスタ転送レベルで独自に開発された命令コードによって説明できます。これに基づいて、より高い抽象度で仮想アプリケーションボードを制御するための命令セットを開発することが可能です。
MikroSimは当初、教育分野で広く利用できるプロセッサシミュレーションソフトウェアとして開発されました。MikroSimの動作は、仮想制御ユニットのマイクロ命令のシーケンスとして定義されるマイクロコードの開発を基盤としています。このソフトウェアの目的は、CPUシミュレータや命令セットエミュレータの機能を含め、さまざまな抽象化レベルを持つマイクロコードシミュレータに最初にアプローチすることです。現在のソフトウェア改訂版では、マイクロコード制御の仮想アプリケーションが独自のコード化された命令セット上で動作することが可能です。MikroSimでは、コンピュータアーキテクチャや命令セットアーキテクチャなど、コンピュータ工学分野における典型的でよく知られた概念が、情報化時代の初期から確立され、現在も有効であるにもかかわらず、特に指定されることなく扱われています。このようにして、このシミュレーションソフトウェアは、過去および未来の特別な開発に限定されることなく、時代を超えた自由な教育的メリットを得ています。詳細なドキュメントとバイリンガルアプリケーションのグラフィカルユーザーインターフェース(GUI)は、ドイツ語と英語の両方で作成されており、MicrosoftのオペレーティングシステムであるWindowsによってある程度上位互換性が確保されています。[ 1 ]
このソフトウェアは、 MS-DOSオペレーティングシステム用にコンパイルされたTurbo Pascalで書かれたバージョンに基づいており、 1992 年までドイツのマールブルク大学でコンピュータ工学とコンピュータ科学の教育目的で使用されていました。 [ 2 ]このコンセプトは 1992 年夏に Martin Perner によって取り上げられ、改訂され、Microsoft Visual Basicでコンパイルされ、 Windows 3.1xで動作するWindows アプリケーションに変換されました。[ 3 ]このとき、マイクロコードの構成と教育的影響の追跡可能性をサポートするために MS Windows の GUI の機能と利用を活用することで、概念的に改良されたシミュレータが生まれました。Windows 上での e 学習ツールの強化は、1995 年末までマールブルク大学の数学/情報科学部で Heinz-Peter Gumm によってサポートおよび推進されました。
このシミュレータは、1994年11月にドイツのハイデルベルクで開催された欧州学術ソフトウェア賞1994のコンピュータサイエンス部門を受賞しました。1995年3月には、ハノーバーで開催されたコンピュータ展示会CeBIT '95で、ヘッセン州の大学の展示ブースにてシミュレータが紹介されました。1995年から2000年の間、シミュレータはMikrocodesimulator MikroSim 1.2として、特に大きな改良を加えることなく公開されました。この間、このツールは、1996年の欧州生涯学習年に合わせて、欧州連合から1000 ECUの賞を受賞しました。1997年には、LearnTec'97展示会に関連したMultimedia Transfer'97コンテストでソフトウェアが紹介されました。[ 4 ]シミュレータは、最終版の1つ前のバージョンとして、MS Windows 95の32ビット動作に最適化されたMikrocodesimulator MikroSim2000として公開されました。
2008年から2009年にかけて、シミュレータのコンセプトは改訂、再設計、そして慎重に拡張されました。そのため、コアとなるマイクロコードシミュレーション機能の成功した概念的側面には手をつけずに、広範囲にわたる改善と拡張が行われました。この目的のために、オペレーティングシステムと基盤となる計算能力によって決定される今日のコンピューティングシステムのパフォーマンスを活用し、MikroSimのシミュレーション機能を仮想アプリケーションボードの段階まで拡張しました。MikroSimは、互換性を制限せず、可能な限り広く配布するために、32ビット版としてMS Windows XP向けにコンパイルおよび最適化されています。このプログラムは、MS Windows VistaおよびMS Windows 7のすべての32ビットおよび64ビットオペレーティングシステムで動作します。そのため、特別なXP互換モードは必要ありません。2010年1月以降、シミュレータは0/1-SimWareによってMikrocodesimulator MikroSim 2010として配布されています。
Windowsアプリケーションでは、あらかじめ機能が決定されており、そのため変更不可能な仮想アプリケーションを段階的に構築することが可能です。
探索モードでは、1サイクル内の1つのマイクロコード命令によって影響を受ける、新しく追加されたコンポーネントの動作原理と制御を評価できます。MikroSimのマイクロ命令の幅は49ビットです。1つのマイクロ命令は、3フェーズクロックの3つのフェーズで実行されます。部分的なフェーズは「GET」、「CALCULATE」、「PUT」フェーズと呼ばれ、レジスタ値のフェッチ、32ビット計算の実行、そして最後に計算結果をCPUの内部レジスタに格納します。
シミュレーションモードでは、実行されたマイクロ命令が、後続のサイクルでシミュレータの中央処理装置を制御します。そのため、1つのマイクロ命令の固有の能力を利用して、制御ストア内の次のマイクロ命令をアドレス指定します。マイクロ命令セット(一般に「マイクロコード」と呼ばれる)を保持する制御ストアは、それぞれ49ビット幅の1024個のマイクロ命令ワードで構成されています。
マイクロコードのスケジューリングに制御ストアの構造化機能を利用し、マイクロコードでプログラムされた周期的に動作するマシンコードインタープリタを実装することで、個々のマイクロオペレーションシーケンスを実装することが可能になります。このマイクロコードは、MikroSimのファームウェアとみなすことができ、変更可能で、マイクロコードROMファイルに保存したり、そこから再ロードしたりできます。
マイクロ命令実行サイクル内では、CPUと入出力コントローラが外部の16KB ランダムアクセスメモリ(RAM)に接続されています。入出力コントローラを介して、仮想入出力デバイスとの通信は、ダイレクトメモリアクセス(DMA)、I2C(Inter-Integrated Circuit Connection)、および割り込み要求(IRQ)機能によってサポートされます。出力ポート、ディスプレイ、タイマー、イベントトリガー、デジタルアナログコンバータ、キーボード、およびデータ入出力チャネルは、外部デバイスとの通信を教育的に説明するための仮想ICデバイスとして提供されます。
マイクロコードシミュレータは、それぞれ32ビット幅の8つの自由に使用可能なレジスタを使用し、32ビット算術論理演算ユニット(ALU)に接続されています。[ 5 ]レジスタの内容は、符号付きまたは符号なしの整数値、あるいは32ビット浮動小数点数とみなすことができます。レジスタの内容は、統合されたシステム数値エディタでビット単位で表示、解釈、変更できます。
32ビットALUは中央処理装置の中核となるユニットです。整数演算、割り込み制御、浮動小数点演算など、128種類の基本的な算術演算をサポートしています。
浮動小数点演算の教育的アプローチは、1940年代初頭にコンラート・ツーゼによって導入されました。このアプローチは、加算/減算および乗算/除算という主要な演算に関わる指数部と仮数部の基本サブレベル演算を用いることで導入されました。基本的な演算と基本的な解析関数に対応する、仮数部と指数部における一連の32ビット浮動小数点演算コマンドが、今日の数学コプロセッサで実現されているように提供されています。ここで、MikroSimを用いたシミュレーションでは、サポートされている各ALU演算の実行には、実際に必要とされる回路の複雑さとは無関係な、明確な計算時間のみが必要であると理想的に想定されています。
マイクロ命令の実行は、さまざまなシミュレーションレベルで、異なる時間分解能で実行できる。
さまざまな追加オプションにより、マシンプログラミングによるアプリケーション制御を行う際に、処理速度を向上させるために、CPUの視覚的なアクティビティを抑制することができます。シミュレータに付属のパフォーマンスインデックスモニタを使用すると、MikroSimの処理性能をベンチマークし、シミュレータのハードウェアの演算能力(1秒あたりの浮動小数点演算回数(FLOPS)および1秒あたりの命令数(IPS)で測定)と比較することができます。
MikroBAT(「MikroSim用基本アセンブラツール」)を使用すると、アセンブラ言語で簡単なプログラムを開発できます。ここでサポートされるアセンブラ言語のニーモニックはすべて、ユーザーが独自に作成したマシンの命令セット(マイクロ命令レベル)によって決定されます。このアドオンツールは、アセンブラ言語プログラムをマシンコードとデータに変換し、バイナリコードを外部RAMに転送して、後続のシミュレーションを実行できます。MikroBATとマイクロコードシミュレータMikroSimを組み合わせることで、スイッチ制御の計算機からアセンブラでプログラム可能なアプリケーションまで、技術系コンピュータサイエンスの教育的側面を効果的に導入できます。