要約: 『CPUの創りかた』読んだら良かった。
https://gyazo.com/469963d1dffe3a4b859e17a98f9a6186
普段はKMCでYouTubeとTwitterを見る活動をしているnona7です。
今回は既にタイトルで要約している通りの話をします。CPU実験した人とかには自明でごめんね……。
あらすじ 〜 数年前 〜
部室の本棚が溢れ、廃棄されることとなっていた本の山の中に、CPUの創りかたがあったことに気付いた私。 「いやこの本を捨てるのは無いでしょ……(読んだこと無いけど)」と思って家に持って帰り、積む。そのまま数年経過……。
最近
それ以降すっかり積んだままであったところ、KMCのSlackでCPUの創りかたが読まれているのを見かけ、「そういえば読んでなかったな」と思い出し、読みはじめる。 部品が届くのを待ちながら、とりあえず手は動かさずに読んでいきます。
私は工学部ではなく理学部だったので、授業の実験でCPUを作ったりしたりしたことがなく、CPUの動作は今までは中で魔法による動作であるという理解でした。
NANDが完全であることは理解しているので、任意の入力に対してNANDゲートを組み合わせて任意の出力を出せることは知っていたが、ゲートの組み合わせだけでは「状態」を持つことができず、入力に対して出力を返すことはできても、過去の入力に基づいて何かをすることはできなかった……。 この本のクロックに関するところあたり(4章)までを読んでから、電子部品によるゲートの実装とかを見ることで、魔法にて動作していたこれらが、簡単な法則にて動作していたことがわかります。 おもしろくなってくるのは7章からです。
4章のクロックあたりからでてきた時間という概念により、ブール関数でしかなかった – と私は理解していた – ゲートの出力をまわりまわって自分の入力に戻すことに意味が表れます。
これは単に$ \mathrm{NAND} :: \{0, 1\}^2 \to \{0, 1\} のように今まで認識していた私には驚きでした。以下のような図に意味を持たせるのは、単なるbool2値を取ってboolを返す関数だという認識では困難なためです。極限操作的なにおいがしてくる……してきませんか?? より正確にはゲートの並びに半順序が入らないとヤバい感じがする ということです。ブール関数の合成で話が済まなくなるので……。
https://upload.wikimedia.org/wikipedia/commons/c/cc/Flipflop_RS_type.png
時間、クロックのようなものを得たため、それはつまり「状態」を得ます。あんまり動作の意味がわかってなかったフリップフロップについても魔法が解けてくるというわけです。概念としてはこのへんがブレイクスルーだったかもしれない。
これと、その続きにある説明の「フリップフロップの出力を入力に戻すことにより、クロックを跨いでデータを保持する」「ロードとフィードバックを切り替えることで新たな値を保持するか固定するかを切り替える」、これの見方を変えてのP171、
そろそろCPUの正体がわかってきましたか? 要するにCPUというのは
転送命令を繰り返すだけのロジック
なわけです。
あたりが本質であるということを理解して、CPUの動作をさせていた魔法がだいたい解けることとなります。これより後は、「なんかうまいこといい感じにデータを転送させるだけのことをやっているだけ」という感じ – もちろんそれが単純ということではなく、単にそこにはもう魔法はないということ – であるということもすぐにわかります。
第一部完
これにて部品は注文したものの、それが届く前にCPUについては完全に理解してしまった……めでたしめでたし……。となると話が速くてよかったんですが……
ロジックの上での話はたしかにそうかもしれない。
https://gyazo.com/a7659ca1cf863a28d47469b314ec93d2
まぁこれはそうかもしれない。
https://gyazo.com/a9974da266aecb927e0df21490afa97b
再現の漢字が間違っている。
これなんで? GNDが私の身体より相対的にまだ高いところにいるから?
https://gyazo.com/b3c2a3815c2b62f7c7df60d2b0655649
https://youtu.be/aP4jlM2B3o4
https://gyazo.com/4cc3debbf70f1e04215664f199a5929e
これが12/6。
https://www.youtube.com/watch?v=cYBk38dt0ts
これは意図的に降圧したところから取ってしまっていたけど、途中の値を見るためにLEDを繋いだら、他のところの電流変わって結果的にICへの入力の電圧がHかLか微妙なところになってしまい、おかしな動作をした回もあった。
https://www.youtube.com/watch?v=YugH43Gzqac
可変抵抗が端っこでほぼ0Rになるの、構造を考えたらそうかなという感じはするものの、気をつけないとそのうち何か焼きそう。
俺達の冒険はまだまだこれからだ!
実際手を動かさないとわからないものばっかりな上、気をつけないとロジック(デジタル)の世界から変な操作をしてしまうだけでアナログの世界に堕ちてしまい、ソースコード(結線)を睨むデバック地獄に堕ちてしまう……。
1限だから起きれないからと言ってエレクトロニクスの授業切らなければよかった…… って言っています。
少しづつ手を動かして理解しつつとりあえずこの本のCPUは完成させましょう というのが現在の状況です。
それ以外のものもおもしろそうな動画がYouTubeにあったりするので、ぼちぼちやっていきましょう みたいなきもちになっています。魔法は解けたので、自分でも実装できるのでやってみるとおもしろいね……。車輪の再実装をして理解を得ていくことだけをやって生きていきたい。 最後に
読む前から人々の言及とかで良い本なんだろうな とは思っていたけれども、実際に読んでみたところやっぱり個人的にはかなり良かった(多くの魔法が解けた)ので、気になったりした人はぜひ読んでみてください。
また、KMCはコンピュータを使ったあらゆる活動をしており、コンピュータを使っていないこういう活動をしている人もたまにいます。
それでは良いクリスマスを!