こんにちわ。
パソコンを使われていると「32bit(ビット)パソコン」とか、「64bitパソコン」とか、よく聞きますよね。
この「32bit」とか、「64bit」って何を指しているんでしょうね。
これ、実はCPUが処理できる2進数の桁数のことです。
つまりは、CPU内部のデータを扱うレジスタが32桁あれば「32bit」ということになります。
そして、同時にメモリのアドレス空間の桁数のことを言います。
最近でこそ、64bitパソコンが主流になってきましたが、ぼくが小学生だった40年ほど前には、4bitや8bitのCPUばかりでした。
当時は今のようなすばらしいパソコンなどもなかったわけです。
そんな、bit数からCPUやパソコンを眺めてみましょう。
4bit CPU
4ビットCPUとは、4ビットサイズのレジスタ、アドレスバス、データバスを持つCPUです。
1970年代前半に存在していました。
たとえば、インテルの4004なんかですね。
インテルの4004は電卓に使用されていましたが、他には軍用に使われていたり、機械への組み込みで使われていた4bit CPUもあります。
まだまだ、今のようなパソコンの頭脳にはなっていなかったわけですね。
(出典:ウィキメディア・コモンズ photo by LucaDetomi / CC by-sa 3.0)
4bitって表すことのできるデータは0~15までです。
これをこのままアドレス空間とすると16個のアドレスしか利用できないし、機械語とすると16個の命令しか利用することができません。
これじゃ、使えるものも使えないということで、インテルの4004は4bitの物理バスは、アドレス、データ共用で使うもののアドレスについては3回に分けて順次バスから送り出し、命令は2回に分けて送り出すことで、それぞれ12bitアドレス空間と8bit命令を処理できるようにしていました。
8bit CPU
実際のパソコンの歴史は8bit CPUから始まります。
データバスが8bitとなり、アドレス空間としてもぐっと広がりました。
インテルから発表された8008が世界初で、1972年頃から1981年頃まで生産されていました。
8008は8bitバスを持っており、メモリ空間は14ビット(16KB)、I/Oは入力ポートが8個、出力ポートが24個、7つの8ビットレジスタと、8レベルのハードウェアスタック(うち1つはプログラムカウンタ)、4つのフラグなどが実装されていました。
(出典:ウィキメディア・コモンズ photo by Konstantin Lanzet / GFDL )
この後、インテルの8080、ザイログのZ80や、インテルに対抗するモトローラのMC6800などが出てきたわけです。
インテルの8080は、1976年に発売されたNECのTK-80というトレーニングきっとで採用されました。(互換CPUですが)
(出典:ウィキメディア・コモンズ photo by Akakage / CC by-sa 3.0)
実は、これ持ってました。
当時は機械語をひたすら打ち込む感じでしたので、大したことはできませんでしたが、プログラムさせ入力すれば、色々なできるという可能性に心おどらせてましたね。(笑)
また、Z80はシャープのMZ-80Kというパソコンに実装されていました。
(出典:ウィキメディア・コモンズ photo by Lax1 / パブリックドメイン)
こちらになると更に本格的です。
カセットテープにプログラムなどを保存できるということで、当時、カセットテープに入ったゲームプログラムなんかが流通していたように思います。
ちなみに、パチンコやパチスロにはいまだZ80が使われていて、技術者が高齢化が問題になっているんだそうです。
この後、8bitCPUをつかったPCとしてNEC PC-8801、富士通 FM-7シリーズ、日立 ベーシックマスターシリーズなど、たくさんの8ビットパソコンが登場していきました。
16bit CPU
1970年代後半から16bitのCPUが生産されるようになりましたが、そのうちのいくつかはミニコンピュータ(日本でいうオフコン)から派生してきました。
一方、インテルは8008後継の8bitCPUである8080を拡張することで、16bitCPUを作ります。
それが8086というCPUですね。
8086は8080を16ビットに拡張し、乗除算などの命令を強化したCPUで、アドレスバスは20ビットに、データバスは16ビットに拡張されたCPUですね。
(出典:ウィキメディア・コモンズ photo by Konstantin Lanzet / CC by-sa 3.0)
それ以外に、外部データバスを8ビットにした低価格版の8088なども発表されました。
8086はNECのPC-9801などに採用され、8088は初期のIBM-PC採用されるなど、インテルの市場寡占化に一役買いました。
ただ、当時8086は8080の拡張ということで、アーキテクチャ的に複雑になったことから、プログラムが大規模、複雑になるにつれてプログラマから、嫌がられるCPUになっていきましたね。
32bit CPU
1980年代になると16bitに代わって、32bitCPUが現れました。
実際、市場では16ビットCPUは完全な32ビットを実装したマイクロプロセッサが現れるまでのつなぎでしかなかったようです。
インテルの最初の32ビットCPUは1981年に発表したiAPX432でした。
先進的なアーキテクチャが採用されましたが、性能があまりよくなく失敗でした。
しかし、1985年にインテルは80386を発売します。
80386は、x86アーキテクチャでの最初の32ビットプロセッサで、ここで採用されたIA-32アーキテクチャ上では多くの本格的なOSが動作し、その後のインテルや互換プロセッサの基礎となりました。
(出典:ウィキメディア・コモンズ photo by Grain / CC by-sa 3.0)
一方、モトローラも1985年にMC68020で、データバスもアドレスバスも完全32ビット化されたマイクロプロセッサを出荷しています。
68020はUNIX市場では非常に人気を博し、日本でもソニーのNEWS、NECのEWS4800、住友電工のEstationなどが68020を使って製品化されました。
たしか、デスクトップワークステーションと言われていたように思います。
今で言うところのサーバ機ですかね。
64bit CPU
パソコン向けの64bit CPUが登場したのは21世紀になってからです。
今のCPUはこの世代になりますね。
流石にアーキテクチャ的にも複雑になりすぎて、簡単に説明できません。(笑)
2003年にAMDのOpteron、Athlon64、IBMのPowerPC G5が出荷され、2004年になって、インテルXeonが出荷されました。
概ね互換性を重視しており、32bit版のOSやソフトウェアが動作するようになっています。
面白いことに、ソフトウェアの進化がついてこない状況になっているようで、パソコンの世界では64ビットWindowsはドライバの非互換性からなかなか普及しない状況になっているようです。
Intel 64もAMD64も高速な32ビットCPUとして使われていることがまだまだ多いようですね。
最後までおつきあいありがとうございました。