酔眼漂流読書日記

本と音楽と酒場と言葉

CPUの仕組みに迫る『CODE コードから見たコンピュータのからくり』

 

2024年2月に新しい訳書が出ます。

本書は2003年に出版された「CODE: コードから見たコンピュータのからくり」の第2版です。

 

第1版ではコード化(符号化)の意義と意味を説明し、0と1を使った簡単な計算の仕組みを説明したところで終わりでしたが、今回の第2版は積み残した宿題に著者は挑戦しています。すなわちコンピュータの心臓部である CPU (中央演算装置)の仕組みに切り込んでいるのです。

よく「コンピュータは0と1で動いている」と言われますが、それはどういう意味なのでしょう。その奥底には単純ないくつかの部品が置かれています。

たとえば以下に示したのはANDゲートという部品です

ANDゲートとその動作(上記書籍、102ページより引用)

左側が入力(2つある)で右側が出力を示しています。0または1の入力があると、0または1の出力が得られる様子を示していますが AND ゲートという名前が示しているように、このゲートは「2つの入力が同時に1になったときだけ出力が1になる」という動作をします(赤い色がついているのが1を示している)。

またORゲートというものもあり、この場合は「2つの入力のどちらかが1になったときに出力が1になる」という動作をします。

詳しくは本書をみて欲しいのですが、実際のコンピュータはこうした論理ゲート(AND、OR以外にも出てきます)が大量に組み合わされて構成されています。

さて、なぜこうした組み合わせだけで「計算」ができるのか。それどころかなぜ「記憶」ができるのか。そもそもその「計算」の指示(つまりプログラムの実行)がなぜこうした「論理ゲートの組み合わせ」だけで実現できるのか。

本書は泥臭くこの論理ゲートの組み合わせを積み上げながら、かつて実用的に使われていたCPU(インテル8080)のサブセットがどのように構成されているかを追いかけて行きます。

世の中にはJavaPythonC#Lisp、様々な「高級」プログラミング言語がありますが、いわゆるフォン・ノイマン型のアーキテクチャ(これも本書を参照)を利用する限り最後は0,1の「マシン語」に還元され、その実行がここに示したような論理ゲートによって支えられているのです。

非常にハードな内容ですが、本書は「教科書」ではなくあくまでも「読み物」です。よって演習問題はありませんし、途中少しわからなくなっても大丈夫です。ストーリーに沿って本書を読み切れば、現代的なコンピュータの大元の仕組みが「わかったような気に」なります。

コンピュータの性能は恐ろしく上がりましたが、最後に行われている動作は(少なくとも原理的には)本書で示されているものと同じなのです。

普通にアプリケーションのプログラミングを勉強しているだけでは、あるいは普通のプログラム解説本を読んでいるだけでは、最後はCPUがよろしくやってくれるところで終わりですが、本書を読むとそのよろしくやってもらっているCPUの中身が一段掘り下げられて、それがハードウェアとどのように絡み合っているかを知ることができます。

論理と物理の境目で何が起きているのかを知りたい方にはピッタリの書籍です。