あなたの言語とオペレーティングシステムで、あなたのアーキテクチャのコンピューターを作りたいと思ったことはありませんか? 私は。
ですから、1つのトレーニングコースについてお話したいと思います。その目的は、コンピューターの作成方法と動作方法を伝えるだけでなく、他のコースとは異なり、実際に動作するコンピューターを作成することです。 面白い? 読んでください。
コースの終わりまでに構築されるコンピューターシステムは、このアーキテクチャの単純な16ビットコンピューターです。
•プロセッサ-アドレス、データレジスタ、ソフトウェアカウンタの3つのレジスタが含まれます
•2つの16キロバイトメモリモジュール:データを保存するためのモジュールとコードを保存するためのモジュール
•2つの入力/出力デバイス:キーボードとスクリーン
また、このコースには、アセンブラ、仮想マシン、単純なオブジェクト指向言語用の単純なコンパイラ、およびオペレーティングシステムの作成が含まれます。
このコースは、Noam NisanとShimon Schockenbによって作成され、その主な目標は、コースで作成された単純なコンピューターに基づいて、現代のコンピューターシステムの作業の全体像を示すことです。 あなたのことは知りませんが、プログラミングの学習を始めたとき、私はすべてがどのように機能するかについて非常に漠然とした考えを持っていました。 一般的に、このコースはコンピューターシステムの基本原理を理解する絶好の機会です。
コース概要は次のとおりです。
- 第1章ブール論理
- 第2章組み合わせチップ
- 第3章シリアルチップ
- 第4章機械語
- 第5章コンピューターアーキテクチャ
- 第6章アセンブラー
- 第7章仮想マシン1:算術演算
- 第8章仮想マシン2:管理
- 第9章プログラミング言語
- 第10章コンパイラ1:パーサー
- 第11章コンパイラ2:コードの生成
- 第12章オペレーティングシステム。
各章には、理論的な資料と実践的なタスクが含まれています。
コンピューターは、最も単純なチップであるNandに基づいたHDL言語(ハードウェア記述言語)を使用して記述されます。 コース中に作成された他のすべてのチップは、Nandチップとそれに基づいて作成された他のチップのさまざまな組み合わせに基づいています。
nandは何をしますか?
単純な論理演算はNot(And(x、y))です:
X Uナンド(x、y)
0 0 1
0 1 1
1 0 1
1 1 0
ここで、たとえば、HDLのNandチップに基づいたAndおよびNotチップ:
CHIP Not {
IN in; //
OUT out; //
PARTS: //
Nand(a=in,b=in,out=out);
}
CHIP And {
IN a, b; //
OUT out; //
PARTS: //
Nand(a=a,b=b,out=c);
Not(in=c, out=out);
}
すべてのチップを書き留めるだけでは面白くないことに同意するので、それらを実行する必要があります。 これを行うには、ハードウェアシミュレーターを使用します(スクリーンショットを参照)。 また、作成される各チップに対して、正しい動作を検証するためのテストファイルが提案されます。
ソフトウェアプロジェクト(アセンブラ、仮想マシン、単純なコンパイラ)は、コース教材に基づいて、任意のプログラミング言語を使用して作成できます。 OSは、コース自体で開発された言語を使用して構築されます。
コースWebサイトhttp://www1.idc.ac.il/tecs/-コースに必要なすべての資料は、このサイトのパブリックドメインに掲載されています。
PS
これは非常に興味深く有用なコースであるように思えます。 どう思いますか?