エントリー

2011年11月16日の記事は以下のとおりです。

4004から40年

 1971年11月,世界で最初のマイクロプロセッサ「4004」が世に出ました。2011年の今年は,なんと4004が登場して40年という節目の年になります。

 4004はすでに歴史の中の半導体で,電子部品としての詳細を知る人も少なくなりました。コンピュータである以上は機械語もニーモニックもあるし,周辺チップとの接続方法や,もっと根本的に電源電圧や消費電流,クロックなどの電気的スペックも当然存在します。

 これらは,4004を使うために必要な情報であって,理解には専門知識を擁する技術者でなければ難しいわけですが,4004はすでに歴史的役割が語られるだけの存在になっているので,専門家である必要はありません。

 面白いなあと思うのは,4004の果たした役割に対して勝るとも劣らない8080や8086,80386というCPUを語るには,4004のように役割だけではまだまだ足りず,そこに必ず技術的な話が必要になるということです。

 これはつまり,技術的な話が理解出来る人にしか,その功績を理解出来ないということを意味します。だから,4004に比べて8080や8086,80386の凄さというものが,一般の人々の間にまだまだ知られていないのだと思うのです。

 4004は世界初のマイクロプロセッサであり,ここからの説明は文系の人でも「世の中を変えた」だの「コンピュータが家庭に入った」だのと,まあありがちな話を適当に垂れていればそれで様になります。

 また,実際のところ,技術的側面において4004の凄さを語るのはなかなか難しいのも事実です。

 よく知られているように,4004は電卓ごとに作っていた専用の電卓LSIでは埒があかないので,1つのLSIで様々な電卓を作る事が出来るように,汎用性の高い電卓LSIを目指した中で誕生しました。

 キーボードとディスプレイと電源,場合によってはプリンタを繋げば電卓が完成する専用の電卓LSIは,全てハードウェアで電卓の機能を実現しています。それら機能の追加や変更があったら,いちいちLSIを作り直さねばなりません。

 これではとても大変なので,それらの機能をバラバラに分解し,それらをソフトウェアで動かすように考えたのが,当時のビジコンの開発陣です。足し算には足し算の命令を,かけ算にはかけ算の命令を,平方根には平方根の命令を,プリンタ駆動にはプリンタ駆動の命令を用意し,ハードウェアで作られたそれぞれの機能を呼び出すのに使うわけです。こうすれば,1つのLSIで様々な電卓を作る事ができます。

 ここまでの話を考えたのが,かの嶋正利さんです。このアイデアを実現してくれる半導体メーカーを探し回って,ようやく受けてくれたのはインテルだったのですが,当時のインテルにとって,彼らのアイデアを実現するには回路規模が大きすぎて,とても作る事ができませんでした。

 ここからがとても素晴らしいのですが,インテルのテッド・ホフさんは,この汎用電卓LSIの回路をもっと簡略化し,難しい動作や高い機能はソフトウェアで実現するというアイデアを提案します。テッド・ホフさんも嶋正利さんも,ミニコンピュータや汎用機をそれなりに知っている人ですので,それがコンピュータそのものであることを知らないわけはありませんが,発想はコンピュータのダウンサイジングではなく,電卓LSIの汎用化からです。

 0から9までの数字と,その数字の属性を考えると,一桁の表現力としては4ビットもあれば十分です。桁数の多い計算は何度も繰り返せばいいわけで,桁数分の回路を搭載するのは無駄だという話です。

 こうして,4004は4ビットCPUとして誕生しました。

 発注元のビジコンにとって,4004は彼らの要望を満たすための汎用電卓LSIに過ぎませんでしたが,言うまでもなく4004は超小型のコンピュータそのものでした。インテルはこれに気が付き,カスタムLSIであった4004を一般に販売できるように権利をビジコンから買い取り,MicroComputerSystem-4,略してMCS-4と名付けて販売をします。こうして,世界最初のマイクロプロセッサが登場したわけです。

 ところが,8080の素晴らしさというのはわかりにくいのです。8080の前には8008という8ビットCPUがありましたから,世界初とかインテル初という話にはなりません。しかし8008と8080は天と地ほど差があって,8086が8080の直系とするならば,現在のインテルのCPUの起点であると言って良いものです。

 16ビットのアドレス持ったこと,スタックをRAMに置いてネスティングレベルを事実上無限にしたこと,自由度の高い割り込みを持ったことなどが,明らかにそれまでの世代のCPUとは一線を画しており,下位のミニコンピュータに列ぶ機能を実現していたのです。8ビットCPUとしては,すでに完成形であったといって良いでしょう。

 8086は現在のIA32の元祖ですが,実はこれもわかりにくい存在です。世界初の16ビットCPUではありませんし,インテルにとって8086は当時主流ではなく,膨大な開発費をかけた別の本命CPUまでのつなぎとして考えられていましたし,主役に抜擢されたのも,その本命CPUが大失敗したからに過ぎません。

 8086が16ビットCPUとして優れていたのは,リニアではないにせよ1Mバイトまでアクセス出来るメモリ空間を持っていたこと,8080との互換性はなかったものの,8080を使った人がすんなり移行できるような継続性のあるアーキテクチャを持っていたこと,そして専用の浮動小数点演算プロセッサ8087が用意され,これと組み合わせれば,あたかも最初から浮動小数点演算命令が備わっていたかのように振る舞ってくれたことでしょうか。

 80386に至ってはさらにわかりにくい存在です。32ビットCPUとしてはいくつも先行した他社製品があり,インテル自身にとってですら初めての32ビットCPUではありません。ですが,80386こそ本当の意味で現在に続くIA32のスタートだと言えるものです。

 アドレス空間も32ビットで完全にリニア,ページング方式の仮想記憶をサポートし,メモリ保護機能とリングプロテクションを持っていました。また32ビットの汎用レジスタは機能に差がなくなっており,近代的なコンピュータとして最低限欲しい機能が全て入った,32ビットのコンピュータとして欠点のない,まさに全部入りのCPUだったのです。

 実は,8086もその後継である80286も,ちゃんとしたコンピュータを知る技術者からは散々な言われようをした,欠点だらけのCPUでした。同時期に出ていたモトローラの6800や68000との比較が常に行われ,「電卓あがり」だの「詰めが甘い」だのと,随分揶揄されたものでした。しかし,80386が登場してからそうした悪口を叩く人はすっかり消え,ライバル達もいつの間にかいなくなってしまったのです。

 機能として完成の域に達した80386はのちにIA32と呼ばれるアーキテクチャの起源とされ,以後登場する80486やPentiumは,基本的の80386の高速版として生まれました。のみならず,後継となるはずだった64ビットCPUのItaniumさえも蹴散らし,64ビット拡張まで行われて,まさに王者として君臨しています。

 インテルのCPUとてコンピュータですから,当然技術的に複雑で,加えてコンピュータ自身が急激に進歩した時期に開発が続いたものですから,その進化の意味や後に与えた影響を考察するには,相応の専門的な知識が必要です。

 問題は,そこまで深く理解して考察するべきかどうかで,現在のPCや家電品の高性能化を,果たして4004にまで遡るべきか,あるいは8080,8086,80386まで遡れば済むと考えるかは,それぞれの立場や理解力にかかってくるように思うのです。

 もしかすると,4004がなければ,コンピュータは小型化しなかった,つまりマイクロコンピュータは誕生しなかったという人がいるかもしれません。しかし,4004から数ヶ月遅れで,当時のNECから4ビットのマイクロプロセッサが発表されています。インテルがやらなくても,どこかの会社がコンピュータを半導体に作り込むことは,そんなに時間を置かずに実現していたことでしょう。

 いろいろ書きましたが,それでも世界最初のマイクロプロセッサが登場して40年。冷蔵庫ほどもある「設備」だったコンピュータ本体がシリコンの板に焼き込まれて,印刷物のように大量生産されたことでやってきた世界は,確実に我々の生活を変えたはずです。

 むしろ,インテルにしてもNECにしても,当初なかなか売れなかったマイクロコンピュータに見切りを付け,さっさと撤退してしまっていたらどうなっていたかを考える方が面白いでしょう。今時はどの会社でも,儲からないとわかればさっさと撤退しますから,もしかすると過去に撤退したものの中には,世の中を大きく変えたものがあったかもしれないですね。

ページ移動

  • 前のページ
  • 次のページ
  • ページ
  • 1

ユーティリティ

2011年11月

- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 - - -

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

新着エントリー

過去ログ

Feed