PowerPC 970

en 970シリーズは、IBMが2002年に発表したenアーキテクチャのスーパースカラ型64ビットenマイクロプロセッサである。

1. 概要
-----

970シリーズはIBMとAppleにより共同で開発された。このプロジェクトはGP-UL、またの名を en という開発名の下で進められた。enとはこのコアの元となったenの開発名である。AppleはPower Mac G5に採用し、このプロセッサは5年にもわたる共同開発の成果であり、将来複数世代にわたって採用することになると述べていたが、このプロセッサのMacでの利用は3年間と短命に終わった。IBMがCPUの高速化に失敗した為、Appleはenのリリース後1年で3GHzのプロセッサを生産するという約束を撤回しなければならなかった。IBMは、ポータブルコンピュータに合うように、プロセッサの消費電力を十分に落とすことができなかった。Appleはこのプロセッサの派生品を3つ採用したに過ぎない。

enは伝統的にビッグエンディアンとリトルエンディアンを切り替えることができるバイエンディアンとして設計されているが、en 970はビッグエンディアンのみをサポートするように設計が変更された。このため、enのリトルエンディアンモードを使用していたマイクロソフトのenは設計を変更しなければならず、発売が遅れることとなった。

IBMのブレードサーバ用モジュールであるJS20/JS21といくつかのローエンドワークステーション、enサーバはen 970を利用している。このプロセッサはマーキュリー社の en XSA-200のようなハイエンド組み込みシステムでもまたいくつか使われた。en 970は、しばしばマイクロソフトの en 360に採用されているIBMの enのコア、もしくはenのenと同じであると誤解されることがある。しかし、両者のマイクロアーキテクチャはPowerPC 970とは完全に異なり、単にVMX命令に対応した64ビットPowerPCであるという仕様が共通しているにすぎない。

2. 設計
-----

en 970はenをシングルコアに簡素化させたもので、32ビットおよび64ビットのen命令をネイティブに処理できる。プロセッサコアのマイクロアーキテクチャとしてはアウト・オブ・オーダー実行可能な5-wayのスーパースカラであり、主な仕様は以下の通り。

クロックあたり8命令フェッチ一次命令キャッシュとは32バイト/サイクルの帯域で接続されており、1サイクルにつき8命令をフェッチ可能。クロックあたり最大5命令デコード/ディスパッチPowerPC 970では、複雑な命令をデコード時に複数の内部命令に分解して実行するアプローチをとっている。そのため、パイプラインのデコード段は4段と、通常のRISCプロセッサと比較すると長い。2つまでの内部命令で表現可能なPowerPC命令についてはハードウェアデコーダで処理することができるが、それより多くの内部命令を必要とする命令についてはマイクロコードROMで処理される。デコードされた命令はグループに纏められて処理される。グループには5つのスロットが用意されており、最大5つの内部命令がスロット0からプログラム順に格納される。ただし、スロット4は分岐命令専用であり、デコードされた命令の中に分岐命令が存在しない場合はグループに含まれるのは最大4命令となる。また、同様にスロット0や1のみに格納できる命令もあり、プログラム順に格納した際にこれらの命令がうまく該当するスロットに入らない場合、代わりにNOPがスロットに入り調整が行われる。そのため、プログラム側で命令を上手に並べない限り、5命令/サイクルというピーク性能を維持し続けるのは難しい。ディスパッチはグループ単位で行われる。そのため、対応する命令キューに空きがない等の理由でディスパッチ不可能な命令がグループの中に1つでも存在すると、グループに含まれる全ての命令はディスパッチ不可能になりストールしてしまう。ディスパッチされたグループは後述するGlobal Completion Tableに登録され、各スロットの命令は各演算器の命令キューに入り待機状態となる。この際にレジスタ・リネーミングも行われ、各命令のオペランドは物理レジスタファイルにマッピングされる。クロックあたり最大10命令を10の演算器に対してアウト・オブ・オーダー発行可能PowerPC 970は内部に10個の演算器を備えており、各命令キューからの合計で最大10命令が同時に発行可能である。以下に各演算器の構成を示す。2つの整数演算ユニット
除算と一部の特殊命令を除くと、多くの整数演算命令はいずれのユニットでも実行可能である。ただし、乗算器はパイプライン化されておらず、整数乗算のパフォーマンスは低い。加減算や論理, シフト演算は1サイクルで実行可能であるが、後続命令へ演算結果のバイパスを行わないため、実際に後続命令でオペランドが利用可能になるまでのレイテンシは2サイクルである。前世代のPowerPC G4プロセッサは計4つの整数演算ユニットを備え、レイテンシも最短で1サイクルと短かったため、やや見劣りする仕様となっている。2つのロード・ストアユニット命令キューは整数演算命令と共用であるが、2つのパイプラインを備えている。複数のロード・ストアユニットを備えているのはPowerPCとしては初である。2つの浮動小数点演算ユニット2つの単精度もしくは倍精度の浮動小数点演算が同時に実行可能で、どちらのユニットにも積和演算器を備えているため、SIMD命令を使わずに4FLOPs/サイクルを達成可能な理論性能を持つ。これは当時のPC用のプロセッサとしては非常に強力である。2つのVMXユニットAltiVec互換のSIMD命令セットであるVMX命令が実行可能である。Vector Permute命令用のユニットとそれ以外の命令用のユニットに分かれており、初期G4プロセッサと同じ構成となっている。1つの分岐処理ユニット1つの条件レジスタ命令処理ユニット20エントリのGCT PowerPC 970においてアウト・オブ・オーダー実行の状態を管理するリオーダ・バッファに相当するのがGCTである。GCTでは通常のリオーダ・バッファとは異なり前述のグループ単位で状態を管理するため、1エントリにつき最大5つの内部命令が格納可能で、テーブル全体では100の命令の状態を管理できる。G4ではわずか16命令分のリオーダ・バッファしか持っていなかったため、アウト・オブ・オーダー実行可能な命令ウィンドウが大きく増加している。32KBの一次データキャッシュ2-wayセットアソシアティブで、ライトスルーで動作する。リード2ポート、ライト1ポートを持ち、各ポート共に帯域は8バイト/サイクルである。レイテンシは2-4サイクル  となっている。
64KBの一次命令キャッシュダイレクトマッピングで、帯域は32バイト/サイクルである。512KBの二次キャッシュコアの半分の速度で動作し、帯域は64バイト/サイクルである。L1ミス、L2ヒット時のレイテンシは12-13サイクルである。en 970はシステムコントローラチップとの間で、一方向あたり32ビットのフロントサイドバスを2本持ち、プロセッサコアの速度の半分の速度で動作させることができる。このバスの帯域は1GT/sで上り下り合計8GB/sと、G4のMPXバス  と比べると大きく速度が向上している。

3. プロセッサ一覧
----------

3.1. PowerPC 970
----------------

PowerPC 970は、IBMによって2002年の10月に発表された。これは、2003年6月に出荷されたAppleのPower Mac G5に対してリリースされたものである。IBMは、PowerPC 970を採用した最初のブレードサーバ、BladeCenter JS20を、2003年11月にリリースした。

en 970は、512KBのフルスピードL2キャッシュを持ち、1.6GHzから2.0GHzまでのクロック速度で動作した。 HyperTransportはプロセッサのクロック速度の半分の速度で動作する。

3.2. PowerPC 970FX
------------------

en 970FXは、90nm SOIプロセスを採用し、2GHzでは最大48Wを消費する一方、1GHz動作時には摂氏65℃で最大11Wを消費する。

Appleは2004年を通して970FXベースの製品をリリースした。1月にXserve G5、6月にPower Mac G5、8月にiMac G5である。Power Mac G5では、水冷装置と併せて最高クロック2.5GHzで動作するプロセッサが採用された。en では、HyperTransportをクロック速度の3分の1で動作させた。浮動小数点演算は、2GHz動作時に16GFLOPS。

IBMは、PowerPC 970FX 2.2 GHzを採用したBladeCenter JS20を2006年4月より販売していた。

2005年の7月に省電力化、最高クロック2.7GHzバージョンが発表された。1.4GHz動作時13W、1.6GHz動作時16W、2GHz動作時24.5Wを消費する。

3.3. PowerPC 970MP
------------------

PowerPC 970MPは、IBMによって2005年の第3四半期にリリースされた。970MPはデュアルコアプロセッサで、1.4GHzから2.5GHzで動作する。最大消費電力は1.7GHzのときに37W、2.5GHzの時には100Wである。それぞれのコアはL2キャッシュは970FXの2倍となる1MBずつ持っており、90nm SOIプロセスで製造された。両コアのうちひとつがアイドル状態になると、そのコアは「en」モードに入ってスリープ状態になる。

en 970MPは、AppleがPower Mac G5でen 970FXと置き換えた。PowerPC 970MPは、IBM の JS21ブレードモジュールで使われている。IBMは、PowerPC 970MP 2.5GHzを1基または2基搭載したIntelliStation POWER 185とSystem p5 185 Serverを2006年2月にリリースした。

3.4. en 970GX
-------------

2006年10月4日にリリースされたPowerPC 970GXは、PowerPC 970FXの後継モデルで、90nmプロセスで製造されたシングルコアプロセッサである。32ビットと64ビットの両方をサポートし、L2キャッシュは970FXの2倍となる1MB持っている。ゲート酸化膜の厚みを増してDC漏電を減らし、ACスイッチング電圧を下げて、970FXと同等の消費電力で1.2GHz～2.5GHzで動作する。

ただし、2006年2月に開催された「ISSCC 2006」では、3.0GHz動作版が発表されている。資料では3.0GHz時、85Wで動作した。

3.5. en PA6T-1682M
------------------

PWRficient PA6T-1682Mは、P.A. Semi社が設計したSoCで、PowerPC 970の省電力な互換製品。PowerPC 970とはマイクロアーキテクチャが全く異なるが、完全な命令互換性を有する。2006年8月21日のHot Chips 18で発表された。2007年2月5日サンプル出荷開始。

3.5.1. 経緯
---------

P.A. SemiがPWRficientプロセッサの先行試作品を2006年第3四半期に出荷する計画を発表したとき、AppleがPowerBook G4後継機種に搭載する準備を進めているという噂が絶えなかった。

2006年、//The Register//は、P.A.SemiがAppleと緊密な関係を築き、Appleのノートパソコンライン、場合によってはデスクトップ向けのプロセッサチップを迅速に提供することになるだろうと報じた。2006年の時点でも、Apple/IBMにはノートパソコン用のG5プロセッサはなかった。パーソナルコンピュータを動かすプロセッサは、P.A.Semiが事前に提案していたプロセッサ「PWRficient 1682M」であった。2007年第1四半期に先行試作されたバージョンは、2GHzのデュアルコアCPUで、2つのDDR2メモリコントローラ、2MBのL2キャッシュ、8つのPCI Expressレーンをサポートするものである。また、サンプル出荷されたチップは、通常負荷で9～31Wを消費／発熱するIntelのCore Duoよりも、5〜13Wと消費／発熱が低くなっていた。

//The Registerの//記事によると、P.A. Semiの幹部は、Appleとの契約を勝ち取ると信じており、CEOのDan Dobberpuhlは、AppleがIntelに移行するという噂は単なる説得力のある戦術だと考えていた。当時、両社はPWRficientソフトウェアに取り組んでいた。

PowerPC 970互換アーキテクチャの利点にも関わらず、Appleは「ワットあたりのパフォーマンス」の理由で正式にIntelアーキテクチャに移行した。ただし、P.A. Semiは、2007年まで、低電力マルチコア製品を大量に出荷することはできなかった。これは、P.A. Semiの新興企業としての地位と相まって、PowerBook開発に最後の打撃を与えた可能性がある。ただし、Appleがパフォーマンスの上昇の絶え間ない遅延に耐えられなくなった上、

Appleは2008年にP.A.Semiを買収し 、そのエンジニアリングリソースを利用し、iPhone、iPod Touch、iPad、およびApple TV製品ライン用のAppleシリコンを開発した。そして、最終的には2020年にMacのIntelチップに代わってこれらの設計で一巡させた。

PA6T-1682Mプロセッサは、後にAmigaOne X1000パーソナルコンピュータで使用された。

4. システムコントローラ
-------------

en 970ベースのコンピュータ用に3つの専用のシステムコントローラがある。すべてIBMが製造している。

CPC925Appleが設計し、enないしenと呼んだ。130nmで製造。2本の550MHz動作の双方向プロセッサバスと400MHz DDRコントローラ、x8 AGPと16bit幅400MHz動作の en トンネルを持つ。2プロセッサまで制御可能である。CPC945IBMが設計し、enと呼ばれた。90nmで製造。2本の625MHz動作の双方向プロセッサバスと533MHzのDDR2コントローラ、x16 en、そして16ビット幅800MHz動作の en トンネルを持つ。4プロセッサまで制御可能。CPC965IBMが設計し、90nmで製造。低消費電力化が計られている。同時発表された en 970GX を含む en 970 シリーズと共に利用可能。

5. 脚注
-----

6. 関連項目
-------

バージニア工科大学#スーパーコンピュータ
マレノストルム

7. 外部リンク
--------

[1]
[2]
[3]
[4]
[5]
[6]