CPU発達史(intel)

↑

インテルCPUの歴史(前編)

ICという仕組みはTexas Instrumentのジャック・キルビーとIntelのロバ ート・ノイスがほぼ同時期に考えたものですが、ノイスの方がわずかに早く 特許申請したため、その後40年間にわたって、ICの発達の中心には Intel 社が居続けています。

コンピュータの歴史にはほんとに微妙なところがあります。今のIntelの位置 に Texas Instrument がいたかも知れないし、Microsoftの位置に Digital Research がいたかも知れないし、IBMの位置に Univac がいたかも知れません。

インテルでは1969年に日本のビジコンと共同で世界初のマイクロブロセッサ i4004を開発。そして1972年には8ビットCPUのi8008を出します。

この時期の「○ビットCPU」というのは、大雑把な言い方をすると、昨日説明 したアキュムレータの桁数のことと思って良いでしょう。i4004ではデータが 4ビット単位で処理されるので4ビットCPU, i8008では倍の8ビット単位で処理 されるので8ビットCPUということになります。

さて、ここで問題です。

8ビットCPUは4ビットCPUに比べて何倍の処理速度が出るでしょうか?

単純に考えると倍の桁数なら倍の速度が出そうですが、実際は3〜4倍くらに なります。実際問題として、たとえば分かりやすいように10進数で説明しま すと 11118888 + 33334444 という計算をするのに8桁の電卓なら1発で答え が出ますが、4桁の電卓でやろうとすると

8888 + 4444 = 13332 (1は繰上り) 1111 + 3333 = 4444 4444 + 1 = 4445

というわけで3回の足し算(と、その度に結果のメモ)が必要です。これが 掛け算になると更にやっかいで 11118888 × 33334444 は

     1111 8888      ×3333 4444    ――――――――     3949 8272 (8888×4444)     493 7284    (1111×4444)    2962 3704 (8888×3333)  370 2963      (1111×3333)  ――――――――――  370 6419 4937 8272

というわけで、なんと4回の掛け算と8回の足し算が必要になります。そう いうわけでCPUのビット数を大きくすればそれだけ飛躍的に高速になるのです が回路の製造技術が十分高度にならないと、せっかく多ビットのCPUを作っ ても例えば8ビットの掛け算が4ビットの掛け算の10倍時間が掛かる、などと いうことであったら意味がありません。

ですからCPUのビット数は徐々に上がってきている訳です。現在は32ビット CPUへの移行がやっと終わった段階で、64ビットへの移行が始まろうとして います。早ければ2005年頃、遅くとも2010年頃には、64ビットへの移行が 完了して今度は128ビットCPUへの移行が始まるのではないかと思われます。

さて、その後インテルのCPUは8080,8086,80286,80386,と進歩して行きました。

このCPUにとって幸運であったのは、IBM-PC がこのCPUを採用したことで、 これにより、IBM-PCが世界の標準パソコンの地位を勝ち取るのとともにイン テルのCPUも標準CPUの地位を獲得します。

8080は8008と同じく8ビットのCPU, 8086は初の16ビットCPUで、最初のモデル は今では信じられない遅さですが、5MHz で動作していました。しかし当時、 このCPUは「ものすごく速い」というイメージがありました。

この8086がMSDOSの文化を生んだCPUといってよいでしょう。

本来16ビットCPUというのはデータを16ビット単位で処理するという訳です から、メモリのアドレス(番地)も16ビット、つまり65536 までしか管理でき ません。つまり本来 65536バイト(64KB)しか処理できないことになります。

しかし8086は「ベースレジスタ」を4ビットずらしてポインタレジスタやプ ログラムカウンタと重ね合わせ、20ビットのアドレッシングをしていました。
このため、8086は 2の20乗で 1MB (100万バイト)までのメモリを管理するこ とができました。ただしひとつのデータの単位はあくまで64KB以内という 制限が付いていました。

この64KBとか1MBとかいった制限は、このCPUが登場した1978年頃は、使い道 を思いつかないほど、途方もなく巨大なメモリーでした。しかしこの仕組み をベースに作られたMSDOSは1995年頃まで使用されており、1990年頃にはこの 制限は「とても使いにくい小さすぎる制限」と思われるようになっていまし た。そして既に全てが32ビットに移行したはずの現在でも、一部64KB制限が まだ残っているソフトもあります。

80286はWindowsを生んだCPUです。MicrosoftのWindows 2.0 はこの80286上 で動作していました。80286はアドレスレジスタが24ビットに拡大されてい ました。この結果2の24乗で16MBまでの物理メモリを管理することができ、 仮想記憶まで使用すると、1GBのメモリー空間が利用できるようになってい ました。

80286を最初見た時の印象は「信じがたいほど高速」というものでした。3次 元のフレームがまるでフルアニメーションのように動き回っているデモを見 て、どぎもを抜かされました。

80286が出てきても相変わらずMSDOS自体は1MBまでのメモリーしかサポート していませんでした。しかしマニアックなユーザーや、科学技術計算などで どうしても大量のメモリーが欲しい人たちは、無理矢理MSDOSで元々はサポ ートされていない1MBより上のメモリーを使おうとしました。それがBMSとか EMS と呼ばれているものです。

次の世代の80386はインテル初の32ビットCPUです。基本的にインテルのCPU の基本構造はこの1985年に出た80386から最新のPentium III まで全く変更 されていません。

このCPUでは全てのレジスタが32ビット化され、メモリーは物理メモリが2の 32乗で4GBまで、仮想記憶では64TBまで対応できるようになりました。

当時4GBというのは「無制限という意味だな」と思ったのですが、今はもう 現実にパソコンに1GBくらいのメモリを搭載している人がいます。時代の移 り変わりを感じます。(Pentium Pro以降のCPUは物理メモリ64GB対応)

当時、多くのパソコンメーカーは32ビットCPUは特殊用途と考え、個人用に は16ビットで充分であり、32ビットは不要と考えていたようです。その中で 数少ない例外が日本電気で、日本電気は先陣を切って個人向けパソコンにこ の80386を投入し(PC9801RA)、他のメーカーが冷ややかな目でながめている 中で急速に売上をのばし、ハッと気が付いた時は、世の中ほとんど日本電気 のPC98になってしまっていました。

この業界では消費動向を読み誤ると致命的です。

インテルCPUの歴史(中編)

インテルのi80386は途中からi386というように、「80」を外した名前が正式 名称に変更されました。

またi386には、i386SX という廉価版が出され、元のi386はi386DXと呼ばれる ようになりました。i386SXは外部バス、つまりCPUと他のICを接続するバスを 16ビットに縮小しており、この時は「○ビットCPU」とは一体何を以って呼ぶ のか、というのが少し議論されたようにも思います。結果的には内部データ バスのビット数を言うのだ、というのが世界的な共通認識となりました。そ の定義ではi386SXは間違いなく32ビットCPUなのです。

(実は8086の廉価版の8088も16ビットCPUだが外部データバスは8ビットだった)

ついで1989年には86の名前が付く最後のCPUである i486 が出ました。この CPUの大きな特徴は、一種のRISC化が図られたことです。

当時サンのSPARCなど、RISC型のCPUが評判になっていました。RISCには色々 な特徴があるのですが、その中のひとつは命令の数を減らすことにより命令 の解釈に掛かる時間を節約する、というのと、その結果厳選された各命令は 原則として1サイクルで実行する、というものでした。

このため当時全てのCPUは今後RISCになってしまうのではないかとも言われて いました。これに対するインテルの答えがi486でした。

i486は基本的に従来の仕組みを継承しており命令の数は増えはしても減りは していません。しかしほとんどの命令を1サイクルで実行できるように高速 化が図られていました。これを一部の人は従来型のCISCとRISCの折衷である としてMISCと呼びました。(C=Complex, R=Reduced, M=Mixed)

i486にも廉価版が出されi486SXと呼ばれました。これに対して元のものは i486DXと呼ばれます。このi486SXはi386SXの時とは違い、i486DXに内蔵され た浮動小数点演算回路を省いたもので、外部バスは32ビットです。

さて、この頃、世に「オーバードライブ」なるものが評判になり始めました。
これはCPUのクロック数を本来の倍にしてしまうというものです。

しかしクロック数を倍にすると以前にも述べたように、それについて来れな い周辺ICが出てきて不都合が起きます。そこで、オーバードライブの場合 CPUの内部だけクロック数を上げ、外部には間引きしたクロックを供給す るという考え方をしました。

たとえば25MHzのCPUで動いているパソコンがあった時、オーバードライブで CPUの内部を倍の50MHzにしてしまいます。しかしこの時外部には従来通りの 25MHzのクロックを供給する訳です。

結果的には例えばメモリーなどとのやりとりの速度は変わりませんがCPUの 内部でレジスタだけで済んでしまうような処理は倍のスピードになることに なり、全体的なパフォーマンスはかなり上がります。この効果は例えばプロ グラムをコンパイルする時に「できるだけレジスタを使用する」といった オプションを付けて生成しておけば、更に高めることができます。

こういうオーバードライブが広まり始めた頃、本家のインテル自身が、この オーバードライブの仕組みをそのまま使ったCPUを出しました。それがi486DX2 です。このCPUは内部のクロック数を倍にしてあり、i486DX2の40MHzタイプ というのは実は外部バスは20MHzで、内部だけ倍にしてある、というモデル でした。

こういう製品をパッと世に出せる所に、私はインテルという企業が大企業病 に陥っておらず、トップが柔軟な思考を持っている、ということを感じ取り ました。

このシリーズでは更にクロック数を3倍化した DX4 という商品も出ました。
DX4の60MHzというと外部クロックは20MHzになります。この DX4 には 486と いう数字が付いていません。時々 486DX4 と間違って書く人もいましたが、 このモデルは単に intel DX4 でした。

このi486シリーズの次のCPUは当然誰もが i586 という名前になるであろう と予測していました。しかしこの頃、インテルは同社の互換CPUの台頭に頭 を痛めていました。

AMDがAMD386,AMD486などといった名前のCPUを出していましたし、Cyrixも CX486などといった名前のCPUを出していました。こういう似た名前を付けら れると、これらの製品もインテルのものかと思われ、色々と迷惑する面があ るのと同時に、インテルとしては不愉快でした。できれば486などというの を登録商標にしたかったところですが、数字では商標にして保護するのは 困難です。

そこで次世代のCPUはi586ではなく、固有名が付けられることになりPentium という名前が生まれました。このCPUは1993年の発売。Pentaはラテン語の5 ですから、これはまさに i586 でした。

そしてこのPentiumの後継CPUは1995年に出ますが、この名前はラテン語の6の sexから取って Sexiumか?、と思ったら Pentium Pro と来ました。つまり 当面インテルはこの Pentium という名前で CPU を出していくという方針を 打ち出した訳です。

インテルCPUの歴史(後編)

486からPentiumへの改良点は「スーパースケラー」技術を取り入れたことで す。これは従来スーパーコンピュータで使用されていたものですが、こうい うとんでもない技術をおしげもなくパソコン用CPUに投入するというのがこの 会社のすごい所です。

スーパースケラーというのは複数の演算回路を用意しておき、それを同時に 使おうというものです。たとえば

compute x = a + b; compute y = a - d;

などといった命令が並んでいた時、これを別々の演算回路に割り当てて同時 実行することにより高速化を図るわけです。このとき例えば

compute x = a + b; compute y = x - d;

とかいった場合はスーパースケラーを実行しません。1行目の計算結果が出な いと2行目の計算ができないからです。スーパースケラーの特徴はこういう 判断を全てCPUが自動的に行うことで、プログラム側はこういう関係の考慮は 一切する必要がありません。

Pentiumはスーパースケラーを取り入れたことで、クロック数よりMIPS値の方 が高くなるという状況になりました(100MHzのPentiumはだいたい130MIPSくら いあった)。

1995年に出たPentium Proではこのスーパースケラー技術の改良が行われてい ます。Pentiumでは基本的に演算装置の個数分の命令を取り出して同時実行が できるかどうかチェックしていたのですが、PentiumProでは更にその数個先 まで読んで、場合によっては順序を入れ替えてスーパースケラーを行います。

1997年にはMMX-Pentium, Pentium II というふたつの製品が出ました。これは いづれもMMX命令というものが付加されたものです。これはWindowsの普及で近 年要望が高くなっていたグラフィック関係で使用する特殊な演算を命令として サポートしたもので、MMX-Pentiumは Pentium にMMXを付加したもの、Pentium II は Pentium Pro に MMX命令を付加したものです。

更に1999年に発売されたPentium III では3Dグラフィック用の命令SID命令と いうものが付加されています。

なお、1998年にインテルはPentiumの廉価版としてCeleronという名前の製品を 出しました。最初のCeleronはPentium II から2次キャッシュを取ったもので、 その後出たMobile Celeronはモバイル用に消費電力を抑えるため動作電圧を 1.5〜1.6Vまで下げた製品です。(Celeronは2.0V)

また、インテルはXeonという名前の付いた製品を高級機向けに出しています。
Pentium II Xeon / Pentium III Xeon は CPUを4個構成にできるようになって います。(普通のPentium II / Pentium III は2個まで)

インテルCPUの歴史(未来編)

現在インテルは次世代のCPUとして、インテルとしては初の64ビットCPUとなる Itanium(アイテニウム)を開発しています。このCPUは元々ヒューレット・パッ カードが開発を進めていたものですが、ヒューレット・パッカードだけでは 開発のための投資が重すぎて耐えられなくなり、インテルと共同開発になった ものです。恐らくは2001年くらいにはこのCPUを搭載したパソコンが登場する ものと思われます。

このCPUは完全な64ビットの体系になっており、当初は恐らく64ビット版Linux などを乗せて使う人が多いのではないかと私は推測しています。
(インテルでは64bit-Windows2000と 64bit-Linuxでテストしている模様)

このCPUは32ビット命令のことはあまり考慮しておらず、現在のWindows98の ような32ビットのプログラムを動作させると、Pentium II 程度の速度しか 出ないという話です。恐らくインテルとしてはプログラムの64ビット化は、 かなり高速に進むのではないかと予測しているのでしょう。

Itaniumではスーパースケラーに代わる技術として EPIC という新しい高速化 手法が取り入れられています。

スーパースケラーは非常に高速なのですが、CPUが複数の演算回路への振り分 けを行うため、スピードが速くなってくると、その部分のオーバーヘッドが 大きくなりすぎて高速化に限界が来ます。

EPICはスーパースケラー以前の高速化技術である VLIW の考え方を取り入れた ものです。

VLIW というのは今話題のCPU Crusoe(Linuxの開発者 Linus Torvaldsが在籍 している Transmeta社の製品)などが使用していますが、この複数の演算回路 の振り分けをプログラムをコンパイルする時にやっておく、というものです。

しかしこの方法の欠点は、演算回路の個数の違うプロセッサで実行する時は プログラムをコンパイルしなおさなければならないという点でした。元々、 VLIWというのは、スーパーコンピュータで使用された手法なので、その場合 コンパイルしなおしても全然平気だったのですが、パソコンの場合それでは 汎用のソフト製品を販売できません。

そこでEPICでは、コンパイル時に演算回路の振り分けのためのヒントだけを 埋め込んでおきます。そして実行時にはこのヒントを元に振り分けを行うた め、高速に振り分け処理ができるし、演算回路の個数が違うCPUで実行して も平気だというわけです。

ちなみに Transmeta社のCrusoeの場合はこの部分をエミュレータを入れるこ とによって解決しています。

またインテルのItaniumでは分岐の同時実行などというとんでもない考え方 を取り入れて、高速化の最大の障壁になる、プログラムの分岐(GOTO)命令を 事実上追放してしまっています。

なお、Itanuiumはメモリーも64ビットでアクセスしますので、18EB (E-Exa は G-Giga の1000,000,000倍)のメモリーまでを管理できます。だいたい1GB で図版まで含めた本が1冊十分格納できますので、国立国会図書館の蔵書を 約650万冊と考えて、国立国会図書館150個分のデータが収納できるメモリー ということになります。

しかしこんな途方もないメモリーもその内「小さい」という感覚に変わる時 が来るのでしょうか。


↑ Dropped down from digital episode.
(C)copyright ffortune.net 1995-2016 produced by ffortune and Lumi.
お問い合わせはこちらから