業界に多大な影響を与えた現存メーカー PowerPCでx86の市場を切り崩しにかかったIBM
さて今回はAS/400のPowerPCへの移行であるが、そのPowerPCそのものを包括的に説明していないので、やや寄り道めいているが今回はPowerPCの話をメインにしていこう。
インテルのx86に対抗するために
開発されたプロセッサーPowerPC
PowerPCの開発動機は、x86に対抗できるプロセッサーをPOWERベースで作ろうというものだ。当時AppleはMotorolaのMC68000系を利用してMacintoshのラインナップを提供していたものの、MC68040の後継がなかなか出なかった。68050がキャンセルになり、68060は1994年まで出荷されなかったからだ。
その一方でMotorolaが出したMC88000はあまりに「アレ」過ぎた。その後継のMC88100(*1)はだいぶマシになったわけだが、もともとの着手が遅れたうえに、ほとんど新設計に近いくらいに設計のやり直しがあったためにやはり登場が遅れた。
こうなると、AppleとしてはMacintosh向けの新プロセッサーが存在しない状態で、x86+Windows陣営に大幅な遅れを取りそうだった。
ここに話を持ちかけたのがIBMである。IBMはPOWERをワークステーションだけでなく、広範に利用することを目論んでいた。さらには、x86の市場をPowerPCで切り崩すことも同時に目論んでいたとも言える。かくして両社の思惑は一致することになった。
ここにMotorolaが加わったのは、主にAppleの思惑である。Appleとしてはダブルソーシング(2社からプロセッサーの供給を受けること)を強く求めた。理由は簡単で、安定供給を求めたというのが表向きのアイデアであるが、実際のところは両社を競わせることで安価なプロセッサー供給を実現しよう、というものだったらしい。
このあたりは当時のAppleのCEOがペプシコ出身のJohn Sculley氏だったことを考えるとさもありなんという気はする。Motorolaとしても、自社で68Kと88Kという2種類のCPUコアを開発し、しかも競争力を持たせることがかなり困難な状況になっていた。
実際1990年台に入ると、同社の68Kベースで製造されていた顧客の製品がどんどんMIPSやその他のプロセッサーに置き換わり始めており、これに歯止めをかけるはずだった頼みの88Kも期待外れの結果に終わっていたため、なにかしら抜本的な対策が必要だった。
IBMと提携することは、開発コストを低く抑えつつ競争力のあるRISCプロセッサーを手に入れられるチャンスであって、悪い話ではない。
なにより68Kの大口ユーザーであったAppleが引き続きPowerPCを利用するのであれば、Appleへの売上を失わずに済む。かくして1991年10月にAIM Allianceが形成され、以後PowerPCの共同開発がスタートすることになった。
(*1) MC88100の詳細はこちら。
■Amazon.co.jpで購入
-
忘れ去られたCPU黒歴史 Intel/AMDが振り返りたくない失敗作たち大原 雄介(著)角川アスキー総合研究所
-
忘れ去られたCPU黒歴史 Intel/AMDが振り返りたくない失敗作たち大原 雄介(著)アスキー・メディアワークス
ほぼ12ヵ月で完成した
PowerPC 601
さて、最初に商品化されたのがPowerPC 601である。これは設計開始からほぼ12ヵ月という非常に短い期間で製品化された。ベースになったのはPOWER1のRSCであるが、命令セットはPOWER ISAではなくPowerPC ISAベースであり、またアドレスも32bitになっている。
ただこのPowerPC 601はPowerPC ISAに完全準拠ではなく、一部POWER ISAも含むやや中途半端なものになっていた。またAIM連合にMotorolaが加盟するにあたり、Motorolaが既存の88K(正確にはMC88100)とのバスの互換性を求めた関係で、バスに関しては互換性がない。
さらに言えば、RSCには搭載されていなかったマルチプロセッサー対応が追加されている。このPowerPC 601はIBMだけでなくMotorolaからもMPC601として出荷されており、翌1994年にはプロセスを微細化して高速化したPowerPC 601+もリリースされている。ちなみにパイプライン構造は1命令のインオーダー構成で、パイプライン段数は4段に過ぎない。
多岐にわたる
PowerPC 601の後継
これに続く世代がけっこう分岐した。まずIBMはこのPowerPC 601をベースに、構造の簡素化と若干の機能追加、PowerPC ISAのフルサポートなどを盛りこんだPowerPC 603と、これのプロセスを微細化したPowerPC 603eを開発する。
こちらはノートなどの省電力向け製品と組み込み向けのベースである。といっても段数こそ4段のままながら2命令同時解釈、3命令同時実行のアウトオブオーダー構成のパイプラインとなっており、大幅に性能が向上している。その一方、FPUは倍精度をサポートしない(単精度のみ)といった簡素化もされている。
もう1つの進化はPowerPC 601の高性能化で、これが同じく1994年に出たPowerPC 604である。アウトオブオーダーで4命令同時実行のスーパースカラーを搭載し、また1次キャッシュを命令/データで分離(PowerPC 601はUnified L1構成だった)、パイプライン段数も6段に増強され、より高速動作が可能になっている。
このPowerPC 604も、PowerPC ISAをフルサポートした。RS/6000のローエンド機種はこのPowerPC 604を搭載したものがいくつかある。こちらもMotorolaではMPC604として製造された。
このPowerPC 604のキャッシュサイズを倍増(16KB→32KB)させるとともにプロセスを微細化して高速動作可能にしたのがPowerPC 604eとなる。
これと並行してIBMで開発されていたのが、PowerPC 604コアとx86コアを搭載し、Pentium互換のソケット形状で提供されるPowerPC 615であるが、こちらは発表こそされたものの出荷されずに終わっている。
IBMはインテルとクロスライセンス契約を結んでいるのでx86コアを出荷する権利はあるし、Blue Lightningシリーズなどのx86コアも保有してはいるが、それとPowerPCを組み合わせたからと言って競争力が増すわけではないのは少し考えればわかることで、消えて当然の製品だったと言える。
もう1つ、徒花的に出現したのがPowerPC 620である。ここまではCPUコアの設計はすべてIBMであり、Motorolaは設計済みのコアをIBMから提供してもらい自社で製造するだけだったが、PowerPC 620はMotorolaの設計によるものである。
もともとPowerPC ISAそのものは64bitへの対応も定義されており、ただし当時はまだPC市場は32bit全盛期だったため特に実装はなされなかったわけだが、なぜかMotorolaはPowerPC 603をベースに64bit PowerPC ISAを実装し、PowerPC 620を作り上げた。ただ、仏Bullのワークステーションに採用されたのが唯一の採用例というあたりで、商業的には失敗作である。
任天堂のWii/Wii Uにも採用された
第3世代PowerPC
さて、PowerPC 604の後継はなぜか作られず、代わりにPowerPC 603eをベースに高性能化を図るという決断が下された。これがPowerPC 740/750シリーズで、第3世代(G3)という方が通りが良いかもしれない。
パイプライン段数は5段となり、4命令同時解釈、4命令同時実行に増強されたが、回路規模はPowerPC 604よりも小さいものだった。こちらはプロセスの微細化が積極的に行なわれたこともあり、多数の派生型(740/750・745/755・750CX・750CXe・750GX・750VX・750CL)が生まれている。
ほかにも例えば任天堂のWii/Wii U向けに750ベースのコアが利用されるなど、けっこう長期間にわたって使われたコアである。
最後の世代となった
第4世代PowerPC
このPowerPC 740/750をベースにSIMD演算エンジン(AltiVec)を搭載したのが、Motorolaで開発されたMPC7400シリーズで、業界的にはG4として知られている。こちらは主にMotorola(途中でFreescaleに社名変更)が製造したが、一部IBMの製造による製品も混ざっている。
SIMD以外に倍精度FPUのサポートやマルチプロセッサー機能の強化、それと旧来の(88K互換の)60x busに加えて新しいMPX busのサポートなども追加された。
そのPowerPCのメインストリームの最後の製品が2002年のPowerPC 970である。こちらは、いわばPOWER 4のサブセットという扱いで、命令セットは完全にPowerPC ISAであるが、内部構造は限りなくPOWER 4に近い。
FreescaleはこのPowerPC 970を使わずに、独自のe500というコアと、これをマルチプロセッサー化したe500mc、そのe500mcを64bit化したe5500といったコアを開発して、自社のネットワークプロセッサー(PowerQUICC/QorIQ)向けに採用している。
さて、これと並行してIBMで組み込み向けにリリースされたのがまず1994年のPowerPC 401である。これを若干高性能化したものがPowerPC 405、さらに性能強化したのがPowerPC 440で、これはQCDOCやBlueGene/Lでも採用されたので覚えておられる読者もいるだろう。
このPowerPC 440を無理やりマルチプロセッサー対応に魔改造したBlueGene/P専用のものがPowerPC 450、命令拡張などで性能を引き上げたのがPowerPC 460とPowerPC 470となる。
ただPowerPC 405あたりからは、さまざまなアプリケーションに組み込まれて使う方が多くなっており、単体で組み込みプロセッサーとして目にするケースはあまりなくなっている。
また連載446回で説明した通り、IBMはPowerPC 4000シリーズのラインナップをまるごとAMCCに売却している。
32bitアドレスのPowerPCは
48bitのAS/400では使えない
PowerPCの系譜を一通り紹介したところで、いよいよAS/400の話だ。CISCベースのプロセッサーの代わりにPowerPCを、という考え方は間違っていないが、問題はこの当時のPowerPCは(PowerPC 620を唯一の例外として)64bitアドレスに対応していなかったことだ。
AS/400は前回説明したように48bitアドレスで動いているので、32bitでは用が足りないことになる。それだけであれば「PowerPC 620を使えばいい」あるいは「P2SCでいい」と思うのだが、どうもそれだけではいろいろ足りなかったらしい。
ベースはP2SCながら、独自の命令拡張を行なったPowerPC AS ISAを策定。これを実装したチップをPowerPC ASと称した。最初に登場したのは1995年のA10で、CMOS-4S(0.65μm)で製造され、50~77MHz駆動だった。ちなみにスーパースカラー構成で、77MHz動作のものは231MIPSの性能だったらしい。
この性能を確保するために、4KBの命令キャッシュと8KBのデータキャッシュ、さらにオフチップで1MBのUnified L2キャッシュを搭載していたそうだ。このA10はCobraというコード名で知られており、50MHz駆動のものはCobra-Lite(低コスト版)だったらしい。
これの改良型がA30で、Muskieというコード名で知られている。まず動作周波数を引き上げる(最大125~154MHz)ために、0.65μmのCMOSから0.72μmのBiCMOSに切り替え、同時に4命令同時実行を可能としたほか、キャッシュ容量の拡大、4way SMPのサポート、システムバスの高速化(2.67GB/sec)などが盛り込まれている。
これを再びCMOSに戻したのが1997年のA35で、RS64という方が通りが良い。コード名は“Apache”で、最大で12wayのSMPに対応するほか、キャッシュの大容量化(オンチップ128KB/オフチップ4MB)、システムバスの128bit化などが施されている。
動作周波数こそ125MHzで据え置きになったが、消費電力削減やキャッシュ容量の増大などで、実質的には変わらない性能が発揮できたようだ。
1998年には0.35μmに微細化、262MHz駆動でオフチップキャッシュを8MBに増強したRS64-II(Northstar)、1999年には0.22μmで450MHz(のちに銅配線で600MHz)まで動作周波数を引き上げたRS64-III(Pulsar)と来て、2000年に0.18μmで750MHz駆動のRS64-IV(Sstar)に至る。
この一連の製品は原則としてはAS/400専用ではあるが、一部RS/6000に採用された製品もある。そしてこのRS64-IVがAS/400の最後の専用プロセッサーであり、このあとAS/400の製品ラインはPOWERプロセッサーに統合されることになる。
