仮想マシンとは?
- 仮想マシン(VM)は、コンピュータのように動作するプログラムである。CPUといくつかのハードウェア構成要素をシミュレートし、算術演算を実行し、メモリの読み書きを行い、I/Oデバイスと相互作用できる。
- VMは、特定のコンピュータの動作を再現したり、ソフトウェア開発を容易にしたりするために作られる。
- Java Virtual Machine(JVM)は成功した例であり、さまざまな機器でJava、Kotlin、Clojureのプログラムを実行できるようにする。
LC-3アーキテクチャ
- LC-3は教育用のコンピュータアーキテクチャであり、現代のCPUで使われる主要な概念を示している。
- LC-3は65,536個のメモリ位置を持ち、各位置には16ビット値が保存される。
- レジスタは10個あり、このうち8個は汎用レジスタ、1個はプログラムカウンタ(PC)、1個は条件フラグ(COND)レジスタである。
命令セット
- 命令は、CPUが実行する基本的な作業を指示するものだ。
- LC-3には16個のオペコードがあり、各命令は16ビット長で構成される。
- 命令はオペコードと、処理に必要なパラメータで構成される。
条件フラグ
- R_CONDレジスタは、直近の計算の符号を示す条件フラグを保存する。
- LC-3は3つの条件フラグを使って、計算結果の符号を表す。
プログラム実行
- プログラムはメモリから命令を読み込み、PCレジスタを増加させ、オペコードを確認して命令を実行する。
- 命令はPCを変更することで、実行フローを制御できる。
命令の実装
- ADD命令は2つの数値を加算し、結果をレジスタに保存する。
- LDI命令はメモリから値を読み込み、レジスタに保存する。
- 各命令は仕様に従って実装され、フラグを更新する必要がある。
トラップルーチン
- LC-3は、キーボード入力や文字列出力などの一般的な作業を実行するためのトラップルーチンを提供する。
- 各トラップルーチンはトラップコードで識別され、TRAP命令で実行される。
- トラップルーチンはCで書かれており、OSのI/Oルーチンを活用することでVMの性能を向上させる。
1件のコメント
Hacker Newsのコメント
あるユーザーは、コミュニティカレッジでコンピュータサイエンス入門の授業を受けた際に、簡単なCPU命令セットを設計し、VMとアセンブラを書いてアセンブリプログラムを実行する経験をしたという。この過程によって、コンピュータについて多くのことを理解できた
Ben EaterのブレッドボードCPUシリーズを見た後で、自分自身のCPUを設計してエミュレートしてみたいという意見があった
推薦された書籍一覧:
教育用アーキテクチャであるBrookshear MachineやLittle Computerは実際のものとは異なり、学生に歪んだ理解を与える可能性があるという意見があった
"Virtual Machine"という用語は、現代ではハードウェア仮想化機能を使う環境を指すのが一般的だという意見があった