2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

未経験が読む「コンピュータシステムの理論と実装」#3

Last updated at Posted at 2022-06-23

はじめに

本記事は「コンピュータシステムの理論と実装」の勉強会の記録第3回となります。

前回ALU(算術論理演算機)の実装が終わり、今回はメモリを組み立てていくことになります。
この章が終わればハードウェアのパーツは完成です。
第5章では1〜3章のパーツを組み合わせてハードウェアは完成するようなので、非常に楽しみですね!

実装の部分についてはこれまでの記事と同様、私が詰まった部分をヒントとして残していきます。

3章の感動ポイント

記憶を維持する"メモリ"

「時間の経過によりデータを失うことなく保存でき、また引き出したい時にそのデータを引き出せる」という超便利アイテム"メモリ"が作れてしまいます。
今まで作ってきたCHIPだけでそれができてしまうのが驚きです。

1章の伏線回収

1章で「これなんで作ったの?」と疑問に思っていたCHIPを使います。
「ここで伏線回収……!」という少年マンガのような感動がある、と先輩エンジニアさんが言っていました。たしかに!

偉人の軌跡を感じるフリップフロップ回路の登場

ちなみに、Apple創業者たちを描いたマンガ「スティーブズ」の冒頭で、ウォズニアックが「♪フリップ フロップ」と歌っています。彼らもこうして(※ただし物理的に)コンピュータを作っていったのかもしれません。

3章実装のヒント

作る順序は
Bit
Register
RAM小さい順
PC
がよさそうです。
少し詰まったのはBit、RAM8、RAM16KでしたがALUやMUXなどに比べると簡単かもしれません。

多bitピンを分割するテクニック

前章のヒント内で紹介しましたが、見逃した方のために。(実装例は正解ではありません)

CHIP RAM16K {
    IN in[16], load, address[14];
    OUT out[16];

    PARTS:
    // Put your code here:
    // address[3..5]のように書くことができます。
    RAM8(in=in, load=address[0], address=address[3..5], out=out);
}

outピンを2回以上出力するテクニック

「最後の出力を入力ピンに入れたいのに、outを他のピンに代入できない」という問題が起きました。
こんな記載方法があります。

Nand(a=a, b=b, out=out1, out=out);

各CHIPのヒント

※以下に答えは載せていません。あくまでヒントです。

Bit
図3-1のとおりなのですが、そのとおりに実装したつもりがテストを通りませんでした。
"逆"になってませんか?
RAM8
P.54のヒントが神。
「なんでこれ作ったんだろう?」と思っていたCHIPがここで使われます。
使うパーツはわかったものの、そのCHIPへの入力に何を使えばいいか考えるのが複雑でした。落ち着いて整理しましょう。
また、outピンは一度しか使えません。
8本ありそうな出力を1本にまとめるCHIPが必要です。
RAM16K
8, 64, 512, 4Kと進められた人なら難しくないはず。
ワンパターンだと思って実装したらエラーが出て少し頭を捻りました。

8→64→512→4k と 4k→16k  規則が違いますね。
PC
Registerを通ると、これまでの時間がt-1という過去になります。

また、3.2.4の仕様の部分を見てください。
inc,load,resetの中で、他の2つによらず結果を出せる"強力な"セレクターはどれでしょう。
さらに残った2つの中で、もう一方によらず結果を出す"強力な"セレクターは?

"強力"なほど、先に書くべきですか?後に書くべきですか?

3章を読み終えた私の感想

PCを最初に発明した人は本当に間違いなく天才ですね。
NAND回路から始まり、NANDだけで種々の回路を作り、ALUのような複雑な回路を作りました。
そしてメモリというデータを記憶するパーツを作りました。
インターネットやPCに関する知識が広まった今だからこそ容易に思いつく構造を、何十年も前に考案し、今我々が使っているシミュレータとテストが存在しない中、物理的に作りあげています。
私たちはDFFを実装済みCHIPとして使わせてもらえますが、当時の人はDFFすら自分で作り上げなければならなかったはずです。

そんな偉人のPC開発の軌跡を追うのは、ロマンを追いかけているようで心が躍ります。

4章以降も楽しみです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?