MCL(111)

インデックスに戻る

前のMCLへ  次のMCLへ

▼ My Computer Life (111)

111. PentiumからCoreへ

 1993年に、インテルがPentiumを発売したので、私は2006年にその事を記事にした。その時点で、「そろそろPentiumも終わりそうだ」と言うような事を書いた。…うむむ、もう2006年に書いた事が、一つの歴史になってしまうくらい時間が経ったんだな…。このコンテンツも長いなあ。
 その2006年に、インテルのコンシューマ向けメインストリームは、Pentiumとつかない、新しい「Core」という名前のCPUになった。Coreってさ、そもそもCPUの名前っぽくないよね…。今はマルチコアのCPUがほとんどで、その意味でも「コア」という用語を使う。それがCPUコアの話なのか、CPUそのものの名前なのかを文脈依存で判断しなければいけない。Pentiumみたいな、他で使ってない用語にして欲しかったわ…。

 さて、そのPentiumの歴史。
 #0055で書いたが、80868018680286i386i486と来た、インテルのx86系CPUは、その次は586とならず、Pentiumとなった。「5」を示す接頭辞のPentaを使ってそれっぽくした感じだ(今きづいたけど、それが#0055なんだね。偶然だわ)。
 一番最初のPentiumは、60MHz版と66MHz版が出た。この時点で、前世代のi486では、100MHz版などが出ていたので、Pentiumはコストの割りにはあんまりパワー出ないね、みたいな石だった…と言うのは#0055の時に書いた。
 60MHz版と66MHz版とか、そんなほんのわずかな差で2バージョン出す意味あんの、とか現代人は普通思うよね。元々その時期のCPUには、25MHz系と33MHz系の2種類のクロックの系統があった。それらは元はと言えば、更に昔の5MHz系と8MHz系だった。だから、周辺のチップ等も、それらの2系統に対応するようになっていた。この、それぞれのクロックを発生させるオシレータを分周させて周波数を得るので、その5MHz/8MHz、25MHz/33MHzという数字の整数倍、あるいは0.5倍単位でクロックが上がっていった(33MHzは8MHzを4分周したものだが、端数があるので、32MHzではなく33MHzになる)。つまり、Pentiumの60MHz版は、5MHz系で、66MHzは8MHz系というわけだ。
 その後、Pentiumの5MHz系は、75MHz、90MHz、120MHz、150MHz版と進化する。8MHz系は、100MHz、133MHz、166MHzと進化し、166MHz以降は8MHz系に統一され、200MHzなどが出た。元々2系統あるのが面倒だったのと、バス規格であるPCIが33MHzだったため、33MHz系(8MHz系)に統一した方が都合が良かったのだろう。

 その無印Pentiumも、後期にはPentium with MMXと言う、若干新しいアーキテクチャになった。これは、PentiumにMMXテクノロジという新しい仕組みを付加したものだ。
 MMXとは、MultiMedia eXtensionsの略で、当時ボチボチ出てきていた、SIMD型の演算を行う機能だ。SIMDとは、複数の演算を一発で行うという意味で、例えば4組の数字の足し算を行うとかだと、従来は足し算命令を4回発行していたが、4つの足し算を1命令で行うのだ。
 それが何の役に立つのかと言うと、MMXの名前で分かる通り、画像処理などで、一気に同様の計算(加算や乗算など)を繰り返す事が多いので、そういった時にパワーを発揮する。ただし、MMX専用命令を使用するので、まずはそれに最適化したコンパイラ等が無いと、その実力は出なかった。
 MMXは残念ながら、整数演算オンリーの命令セットだった。しかも、レジスタが浮動小数点ユニットの物を利用するので、MMXを使用する時は浮動小数点計算ができない。この事は、当時重要度を増してきていた、3D向けの演算には使いづらい、という結果を生んだ。

 さて、そのMMX Pentiumが出るほんの少し前に、PentiumProが出ている。
 このPentiumProは、実は第6世代と呼ばれる新しいアーキテクチャで、従来の記法で言えば686というナンバーを与えられるような、全然別の中身を持ったCPUである。ただ、全然そうは見えないくらい、アピールが弱かった。
 まず、発売時期が早い。i386が1985年、i486が1989年、Pentiumが1993年と、ここまでキッチリ4年間隔で出ていたのに、PentiumProが出たのが1995年なので、2年しか経っていない。実際、Pentiumが出て割とすぐに出てきた印象がある(特に最初期のPentiumはi486の影でなかなか普及しなかっただけに)。
 そして、PentiumProというネーミングも意外だ。これまでは世代ごとに新しい名前をつけていて、Pentiumは第5世代だからそういう名前がついているのに、第6世代がPentiumProなのかよ、と。
 おまけに、結果論ではあるが、PentiumProは全然出回らなかったので、これが第6世代のトップバッターだと言われても、非常に印象が薄い。
 ただ、そんな地味なPentiumProの設計思想は、のちのインテルのCPU設計に大きな影響を与える、革命的な一歩となった。

 まず、PentiumProは、部分的にRISCチップ化したと言われている。
 CISCとRISCの話は前にもちょっと書いたが、従来のCPUであるCISCに対し、極端に命令を小さくし、高クロックで動かせるようにしたのが、RISCである。PentiumProは、CISCチップである旧x86と命令レベルでの互換性は維持するため、CISCサイズの命令を受け取るが、内部でRISCサイズの細かい命令に分解してしまう。
 これだと、元々のRISCの思想であった、「小さい命令に分割した方が、コンパイラで最適化しやすいよね」という利点は得られない。ただ、命令を小さくした方が、パイプラインの多段化や、命令実行ユニットの増加はしやすい。その利点を取ったのだろう。
 また、当時並列実行のための技術として検討が進んでいた「投機的実行」「アウトオブオーダ」「レジスタリネーム」が取り入れられている。非常に進歩的なプロセッサだと言える。
 更に、PentiumProでは、初めて2次キャッシュが実装された。こちらはCPUの内部に実装されたので、チップの生産性には影響を与えてしまったが、高速なキャッシュとして機能した。

 PentiumProが受けなかった理由は、その2次キャッシュがCPUに乗る事によるコストの増加と、あとは16ビットコードの実行効率の悪さがあった。PentiumProは、32ビットコードは従来CPUよりすばやく処理ができたが、16ビット対応は十分とは言えなかった。当時のアプリケーションはまだまだ16ビットコードが使われており(Windows3.1/95/98の世代までは32ビット化していなかった)、市場には受け入れられなかった。

 第6世代の後継CPUは、PentiumIIとなった。これは、PentiumProの欠点を克服した形のCPUだ。
 まず、16ビットコードの実行速度を改善した。更に、2次キャッシュをCPUから分離した。その代わり、CPUを含めたサブ基板を作り、その上に2次キャッシュを搭載した。PentiumIIはこのサブ基板ごと供給されるので、見た目はファミコンのカセットの横長版みたいな代物になる。これをグサッと基板に挿す。
 また、PentiumPro後にリリースされた、MMX機能も取り入れた。
 PentiumIIは、決して電力効率の良いCPUとは言えなかったが、スタートから233MHzとかなり高い動作周波数となっており、最終的には450MHzとなった。
 このPentiumIIの時代に、下位プロセッサとして、Celeronがリリースされている。これは主に、対抗するAMDへのカウンターでもある。AMDの話は次回するが、Celeronの話は長くなるので割愛する。

 PentiumIIの後継機種は、まんまだけどPentiumIIIとなる。
 PentiumIIとの違いは、SSE(Stream SIMD Extensions)を搭載している事だ。これは簡単に言えば、浮動小数点版MMXだ。これを搭載して初めて、CPU単体での3D演算能力という意味で、AMDと対抗できるようになった。
 また、PentiumIIIも、最初はIIと同じく、ファミコンのカートリッジのようなスロット形式だったが、のちに2次キャッシュが内蔵され、また昔のようなソケット式(CPUを直接マザーに取り付ける)に戻った。キャッシュの内蔵と言っても、PentiumProとは少々違う。PentiumProは、CPU部と、2次キャッシュ部が別々で、それを1つのパッケージにしている状態だった。この後期PentiumIIIでは、CPUダイの上に2次キャッシュが載る。一つの回路として作られるイメージだ。
 PentiumIIIの動作周波数は、450MHzから始まり、最後は1.4GHzまで到達した。が、1GHz以上はなんかヤケクソ気味に速度を上げていたように感じる。この無闇な動作周波数のアップは、AMDとの激しい競争が一つの原因となっている。

 次の後継機種がPentium4と、ここでアラビア数字になる。なんか、最初ローマ数字で始まって、どっかでアラビア数字になるとかほんと良く見るよね。ハイドライド方式。
 このPentium4で、それまでの第6世代(P6)アーキテクチャから、新しく第8世代のNetBurstアーキテクチャになった。第7世代はどうなったの? って気がするけど、なんかなくなったらしい。詰めないんだ…。そして、この世代から、アーキテクチャに名前がつくようになった。
 Pentium4は、1次キャッシュ(命令キャッシュ)の使い方をかなりドラスティックに変更した。従来は、命令キャッシュと言うと、元のx86命令を格納していた。Pentium4では、P6アーキテクチャと同じく、命令をRISCレベルにまで分解して(この命令をuOpsと呼んだりする)実行するが、Pentium4がキャッシュするのはこのuOpsの方なのだ。
 デコード時の効率はP6に比べて劣るが、一度デコードしてしまえばそちらをキャッシュするため、そこからの処理は柔軟に行える。NetBurstはその特性を利用して、非常に段数の多いパイプラインを用意した。これにより、従来のCPUに比べて、作業をずっと「小刻み」に行う事が出来るようになった。

 さて、このような設計変更は、何の役に立つのだろうか。NetBurstアーキテクチャの狙いは、動作周波数を上げる事にある。パイプラインを極端に多段化する事を筆頭に、様々な部分が動作周波数を上げるために設計されている。
 Pentium4は、当初はPentiumIIIの最高速だった1.4GHzでリリースされたが、すぐに2GHzになり、やがて3GHzを越え、最終的には3.4GHz版まで出たそうだ。プロセッサの進化の観点から、1GHz到達までの時間と、そこから2GHz、3GHz突破の時間を考えると、異常な進化と言わざるを得ない。
 これが、クロック至上主義のアーキテクチャの利点なのだ。

 もちろん、作業を小刻みにする形で速度を上げているのだから、従来のCPUに比べて、見た目ほどの性能向上があるわけではない。同一周波数で動作させると、Pentium4はPentiumIIIに負ける。
 その分動作周波数を上げているのだから、結果的に性能は上がっていったのだが、大きなペナルティがあった。消費電力や熱の問題だ。当たり前だが、周波数を上げれば上げるほど、より多くの電力を使うようになる。
 インテルは、消費電力の増加は、プロセスルールの改善で解消すると考えていた。つまり、CPU内部の配線の幅をほそーくほそーくする事で、回路全体を小さく、そして配線を短くできる。そうすると、少ない電力で稼動させられ、全体の消費電力も熱も下がるので、更に速度を上げられる。
 と言うようなシナリオを描いていたのだが、それも限界が来た。リーク電流が馬鹿にならなくなってきた。リーク電流とは、名前の通り漏れ電流なのだが、配線ミスとか絶縁不良で漏れるのではない。そこまでの細かさになると、量子論的な効果により、電子がジャンプしてしまうのだ。当然、電流を増やすほどリークも増えるので、消費電力や発熱のわりに性能が上がらなくなってくる。
 よって、周波数を上げるのはだんだんと頭打ちになった。

 そこまでのデメリットを負いながら、強引な動作周波数のアップをなぜ狙ったのかと言うと、基本的には、他社のプロセッサに対して、ほーらうちのCPUは速いよー、と言うためだ。確かに、AMDのプロセッサに比べて、動作周波数的には大幅に引き離した。
 大昔から、PCの処理性能は、CPU周波数を元に語られたという経緯がある。実際、4MHzよりも8MHzの方が、8MHzよりも16MHzの方が、性能が高かった。
 しかし、Pentium4は、その比例関係を切ってまで、見た目の動作周波数を上げていった。結果として消費電力と発熱に耐え切れず、この路線は破綻していった。

 実際のところ、Pentium4は、3.4GHz以上のモデルを予定していたし、またその次の世代も、NetBurstアーキテクチャをベースとして開発していた。だが、これらは全てキャンセルせざるを得なかった。
 こうして、冒頭に語った通り、次世代プロセッサとして、2006年にCoreというCPUをリリースした。このCoreは、Pentium4の路線は踏襲せず、中身のアーキテクチャは、PentiumMというモバイル向けのものである。
 PentiumMは、ノートPC等でも使えるように、低消費電力を目指したプロセッサである。そう、Pentium4路線がダメになった理由の一つとして、ノートPCがだんだん主流になってきたという経緯もある。昔は、デスクトップPCこそが花形で、ノートPCはおまけみたいな印象があったが、次第にPCが高性能化していった結果、オフィスでも、家庭でも、「ノートPCで良くね?」という風潮が生まれた。そして、ノートPCはバッテリで動くので、Pentium4のように電力・熱と引き換えに見た目のクロックを上げました、みたいな設計は最悪だった。
 そこで、PentiumMは、Pentium4と全く逆に、低クロックでも実効性能が出るように考えられている。言い換えると、できるだけ低クロックになるように工夫してある。そして、次世代のCoreが、このPentiumMのアーキテクチャで作られているのは、皮肉と言える。Pentium4の方向は、進化の袋小路だったのだ。

 実際、Coreは、当初1.66GHzでリリースされた。これまでは、新しい世代のCPUは、前世代の動作周波数と同等かそれ以上で出るのが通例だったが、当時3GHzに到達していたPentium4からは、約半分の周波数でリリースした。大きな方向転換である。

 ちなみに、#0055では、「Pentiumもそろそろ終わりそうだ」と書いたが、実際にはそうはならなかった。確かに最先端CPUのモデルは、Coreという新しいシリーズに繋がったが、単純なブランド名として、後にPentiumは復活した。それは、Celeronのような、まさに「ブランド名」というような存在だ。
 元々、上位CPUであるPentium/PentiumPro/PentiumII/PentiumIII/Pentium4は、アーキテクチャが変更されるとそのモデル名も変更された。それに対し、Celeronはそのような命名規則ではない。同じCeleronと言っても、その中身はPentiumIIや、IIIや、4と同じアーキテクチャで、例えば2次キャッシュを外すなど、適当に機能制限したものを「Celeron」と言うブランド名で売っているだけの話だ。
 Pentiumもそのような位置づけとなり、実際の中身のアーキテクチャは色々変わりつつも、ブランド名として使われた。それは、最上位CPUであるCoreシリーズと、廉価版であるCeleronの間くらい、という位置づけになった。

 さて、そうして生まれたCore自体は、PentiumMと同アーキテクチャだったのが、その後継チップのCore2は、新しくCoreアーキテクチャという名前で新しく設計され(だからCoreというCPUはCoreアーキテクチャではない)、ついに64ビット化した。
 そのあたりの話は、また機会を改めてやろう。


前のMCLへ  次のMCLへ

戻る

TOM 2020