「CPUの創りかた」を読んだ。
最近は子育てで自分の時間を自由にまとまった量とることができず、個人開発をガリガリやってみるモチベーションが失われているため、もっぱら書籍を読む方向で時間を使うことにしている。
(子育て中の自由時間は、纏まった大きな時間が取りづらかったり、終了時間が明確じゃなかったりする。 開発作業は細切れに時間があってもやりづらく、突然の中断にうまく対応することができない。 対して読書は比較的柔軟に対応できる。)
この本はかなり前から気になっていた本でようやく読むことができた。
CPUが具体的に何を行っているのか全然イメージできていなかったため気になっていたが、知らなくても業務に影響でないので後回しになっていた。
ここ数年はずっと「履歴書で輝きを放ちそう」とか「知ってないと近々死ぬかも」のような知識を優先的に手を出してた(k8sとかアーキテクチャとか)。
今は幸いそういった切羽詰まった状況ではないので興味基準で学ぶ対象を選ぶこともでき始めている。
読んで思ったことなど
いつも触っているプログラミング言語と実際に物理として起こっていることが頭の中で地続きになった。
例えると、今までCPUってアンドロメダの向こうの出来事(観測できない、行けない)のように思っていたのが、南極大陸(詳しい方法はわからんが、行く手段はなんかあるんでしょう)くらいに近づいた。
プログラミングしてそれがコンパイルされ命令(機械語)に置き換えられてズラリとメモリにのり、
CPUがプログラムカウンタをカウントアップしながらメモリから命令を読み出し実行していく。
CPUには一時記憶領域(レジスタ)が複数用意されていて、そのあたりを自由に使いながら行いたい計算を実行していく。
CPUの各回路はクロックによって協調動作する。
こういった説明は過去にも色んなところで読んで履いたが、実際に具体的な回路で説明されると腹落ち度が段違いだった。
なんかCPUって今まで頭脳みたいなイメージあったけど、たぶんCPU自体は自分が何を行っているのかわかってない。 ただの電子回路でしかないので、与えられた入力に対して決められたロジック(回路)を通し出力するのみである。 むしろ、CPUを使う側がその行為に意味を与えて制御している感じ。
よく見る「CPUは頭脳」というメタファーが、あまりピンとこなくなった。
あ、でももしかして本当の脳も単に電気信号を扱っているだけでそれに意味づけしているのは別の何かだったりするんだろうか。。であればCPUも頭脳と言えるのか。よくわからん
次の興味
CPUについてイメージできるようになったので、次はコンパイラあたりを学びたい気がする。
↓ これも以前から気になってる。
低レイヤを知りたい人のためのCコンパイラ作成入門
もしくは機械学習もそろそろどんなもんかは知っておきたい。
あ、マイクロサービスアーキテクチャの本もたしか気になってた。