3 ポイント 投稿者 GN⁺ 2024-12-28 | 1件のコメント | WhatsAppで共有

仮想マシンとは?

  • 仮想マシン(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件のコメント

 
GN⁺ 2024-12-28
Hacker Newsのコメント
  • あるユーザーは、コミュニティカレッジでコンピュータサイエンス入門の授業を受けた際に、簡単なCPU命令セットを設計し、VMとアセンブラを書いてアセンブリプログラムを実行する経験をしたという。この過程によって、コンピュータについて多くのことを理解できた

    • FPGA向けの実際のCPU設計から、簡単なOSやプログラム作成まで、コンピューティングのあらゆる段階をこのように学べると感じた
    • 現代のコンピューティングに求められる性能やセキュリティが不要であれば、このような過程は驚くほど単純である
  • Ben EaterのブレッドボードCPUシリーズを見た後で、自分自身のCPUを設計してエミュレートしてみたいという意見があった

    • 時間を作って設計してみたいという願望を述べている
  • 推薦された書籍一覧:

    • "Virtual Machines: Versatile Platforms for Systems and Processes" by Smith and Nair - 包括的なトピック概説書のようだ
    • "Virtual Machines" by Iain Craig - 言語とVMについての実践書のようだ
    • "Virtual Machine Design and Implementation in C/C++" by Bill Blunden - 実装中心の実践書のようだ
    • これらの本を読んだ人が意見を追加してくれると助かると言及している
  • 教育用アーキテクチャであるBrookshear MachineやLittle Computerは実際のものとは異なり、学生に歪んだ理解を与える可能性があるという意見があった

    • コンピュータの動作方式を学びたい人は、オペレーティングシステムの講義を受けるほうがよいと提案している
    • 短いチュートリアルを望むなら、"Writing my own bootloader"を勧めている
    • "Write your own VM"チュートリアルが悪いというわけではなく、別のテーマのほうがより有益かもしれないという意見である
  • "Virtual Machine"という用語は、現代ではハードウェア仮想化機能を使う環境を指すのが一般的だという意見があった

    • エミュレータとVMの違いを説明し、過去には用語の曖昧さがあったものの、現在では明確になっていると述べている