メモリ容量の限度

サラッと読めるかなと思って読み始めた本が意外と手ごわく。
1週間かかってしまったが、明日には読み終わりそうです。
それについては明日書くとして・・・。

今日は、アセンブラや機械語、CPUなどコンピュータの構造について勉強していた時の発見です。
今まで疑問に思っていたことが、いくつも解決していったのです。

パソコンを買いに行くと、必ずスペックがつらつらと書いてあるわけです。
CPUのクロックが気になりますが、まずはメモリについてです。

「2GBのメモリを搭載」とか書いてあるのは納得がいくけれど。
「最大で4GBまで搭載できますよ」とかも書いてあります。
つまり、更に2GBのメモリを増設して、4GBにできるわけです。

もっと増やせないのか?

この限度を作っているのは、メモリではなくCPUだったんですね。
・・・たぶん。
パソコンの中に入っているのは、16bit CPUだとか32bit CPUだとかです。
「CPUの創りかた」で解説しているのは、ずっと単純なもので4bit CPUです。

この本で紹介されている4bit CPUである、TD4(とりあえず動作する4bit CPUの略!)は、ROMが16バイトです。
一度に4bitずつ処理していく4bit CPUは、メモリの番地として扱えるのが4bitで扱える範囲に限られてしまうのです。

1bitで表せるのが、0番地と1番地の2個。
2bitで表せるのが、0番地から3番地の4個。
3bitで表せるのが、0番地から7番地の8個。
4bitで表せるのが、0番地から15番地の16個。

つまり、2の4乗で、16バイトまでしかメモリが扱えないんです。
32bit CPUではどうかというと、2の32乗は4,294,967,296で、確かに4GBになるんですよね。

ただし、「32bit CPUの限度は4GBだ」という結論は誤りです。
32bitで表せる番地が「4,294,967,296個」というだけなので、一つの番地に2バイトを当てれば、2倍の8GBまで扱えます。
更に、32bit CPUは「一度に」32bitずつ処理をするので、この限度が生まれたことを思い出します。
メモリを探しに行くのを二度の処理に分けたら、2倍の64bitまで扱えるので無限に扱えると言っても良いです。

ただし、二度の処理に分けるというのは、処理速度が半分に低下してしまうので現実的ではありません。
そんなことよりも、32bit CPUをやめて、最初から64bit CPUにしてしまえという話です。

ところで、このページを書くのに使っているパソコンはちょうど5年前に買ったものですが。
その当時のCPUのクロック数は最上位のもので、3GHzでした。
そして、今でもクロック数は、3GHzくらいが限界。
半導体の集積度は指数関数的に増加すると言っていたのに、なぜ。

これもずっと気になっていたことですが、ざっくりと解決しました。
高周波数にすると色んな問題が出てくるんですね。
(趣味の電子工作で扱えるのは、せいぜい数MHzくらいのもんです)
そして、そもそも集積度と周波数は関係ないのだということ。

CPUとか集積回路というのは、内部ではスイッチをパチパチと、オンにしたりオフにしたりしています。
3GHzだと、1秒間に30億回もスイッチを切り替えなきゃいけない。
人間がスイッチを切り替えるスピードに限界があるように、CPUにもスイッチを切り替えるスピードには限界があったわけです。
もちろん、これを改善しようと研究している人は沢山いるはず。

「じゃあ、CPUの性能はこれ以上良くならないのか?」といえば、そんなことはなくて。
半導体の集積度はやっぱり指数関数的に増えているんです。
これはつまり、一枚のCPUの中にスイッチ切り替えの担当者を沢山詰め込めるわけです。
一人一人のスピードはこれ以上速くならなくても、人数は増やせる。
だから、高速化は可能です。

人が増えるっていうのは、いま32人で処理してるのを、64人で処理するということです。
だから、すぐに64bit CPUの時代がやってくるのでは・・・。

オーバークロックとかいって、同じCPUでもクロック数を上げる裏技があるらしいですが。
これは、流れ作業している工場のベルトコンベアのスピードを上げるようなものです。
上手く行けば、確かに早くなる。
でも、スピードが早すぎて作業が終わる前にベルトが通過してしまったら・・・。

コメント

タイトルとURLをコピーしました