Kotaro7750's diary

低レイヤを中心とした技術ブログ、たまに日記

CPUの創り方を読んだ

動機

そろそろ本腰入れて低レイヤのお勉強しなくちゃと思い、一応コンピュータ・アーキテクチャの授業でやったけれども、CPUについてサクッとおさらいする意味で読みました。

そのため、明らかに基礎的な部分はすっ飛ばして高速で読むことを意識し、だいたい3日くらいで読み終えました。

どんな本?

CPUの創りかた

CPUの創りかた

CPUを作るという難しそうな話題を優しい語り口で解説しています。レベルとしては高校生でも読めそうで、内容としては

  • デジタル回路の設計について
  • CPUの構成要素とその論理的実装
  • 命令セットの基礎

といったところでしょうか。後半2つは、授業でやっていたこともあり、こんな話もあったなあと思いつつ読み進めましたが、一年前に読んでたらかなりためになるトピックだったと思います。

個人的にはデジタル回路の設計のほうが初めての話だったので面白かったです。

初見だった内容の復習

スイッチのマトリクス配置

キーボードを自作した際(これもそのうち記事にしたいです)、基盤上のスイッチの認識を行う方法としてマトリクス配置を知りました。

例えば2行2列のスイッチがあったとして、通常なら認識に4つの入力端子を使うと思います。マイコンの入力端子は意外と数があるのでこれくらいなら一つ一つ使っても平気です。

では通常使用に耐えうる60キー程度のキーボードはどうでしょう。入力端子は60個も無いわけですから一つのスイッチに一つの端子を割り当てると数が足りなくなるのです。そこで登場するのがマトリクス配置です。

f:id:Kotaro7750:20190916224842p:plainf:id:Kotaro7750:20190916224837p:plain
マトリクス配置のダイオード

プルアップ・ダウン

トグルスイッチの場合、ONとOFFの間、一瞬だけオープンになる瞬間があり、 これはあまりよろしくないので抵抗を介して電源またはGNDにぶら下げることをプルアップ・ダウンといいます。

書いてて思ったけどこれ初見じゃないですね... たしかICの使ってない足にプルアップしたような記憶があります。

コンデンサによるチャタリング除去

これまたスイッチの場合、切り替えた瞬間に金属同士がバウンドしてしまい、短時間の間で見るとスイッチが高速で切り替わっているように見えてしまうことがあります。これをチャタリングといいます。これを防ぐにはスイッチと並列にCRフィルタを作ってあげます。

f:id:Kotaro7750:20190916222851p:plain
チャタリング除去回路

キャパシタに電流を流したとき、時間に対し緩やかに電圧が上昇していくという性質を使います。この電流値を抵抗を用いて制御してやることで比較的自由に充電までの時間を変えられます。具体的にはCR積(CR時定数)によって決まります。

回路理論も院試に向けて復習し直す必要があるかも...

スイッチの出力

読ん出る最中に少し混乱しかけたのがスイッチの出力です。 といってもスイッチは出力しているわけではなくて、電流を流すか流さないかを決めているだけです。これをあたかも出力のように見せかけているのはプルアップ抵抗を介して電流が電圧に変換されているからです。

まとめ

後半は低レイヤの勉強に関係ないような気もしましたが院試には関係ありそうですね。実際にこれ読んでかつ根気があれば簡単なCPUなら作ることができそうだなと思います。私は時間的理由から実際に実装はしませんでしたが、老後にでも趣味でやったら面白そうだとは思います。