サラッと読めるかなと思って読み始めた本が意外と手ごわく。
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でもクロック数を上げる裏技があるらしいですが。
これは、流れ作業している工場のベルトコンベアのスピードを上げるようなものです。
上手く行けば、確かに早くなる。
でも、スピードが早すぎて作業が終わる前にベルトが通過してしまったら・・・。
コメント