PowerPC 970
PowerPC 970シリーズは、IBMが2002年に発表したPowerPCアーキテクチャのスーパースカラ型64ビットRISCマイクロプロセッサである。
970シリーズはIBMとAppleにより共同で開発された。このプロジェクトはGP-UL、またの名を Giga Processor Ultra Light という開発名の下で進められた。Giga Processorとはこのコアの元となったPOWER4の開発名である。AppleはPower Mac G5に採用し、このプロセッサは5年にもわたる共同開発の成果であり、将来複数世代にわたって採用することになると述べていたが、このプロセッサのMacでの利用は3年間と短命に終わった。IBMがCPUの高速化に失敗した為、AppleはG5のリリース後1年で3GHzのプロセッサを生産するという約束を撤回しなければならなかった。IBMは、ポータブルコンピュータに合うように、プロセッサの消費電力を十分に落とすことができなかった。Appleはこのプロセッサの派生品を3つ採用したに過ぎない。
PowerPCは伝統的にビッグエンディアンとリトルエンディアンを切り替えることができるバイエンディアンとして設計されているが、PowerPC 970はビッグエンディアンのみをサポートするように設計が変更された。このため、PowerPCのリトルエンディアンモードを使用していたマイクロソフトのVirtual PCは設計を変更しなければならず、発売が遅れることとなった。
IBMのブレードサーバ用モジュールであるJS20/JS21といくつかのローエンドワークステーション、System pサーバはPowerPC 970を利用している。このプロセッサはマーキュリー社の Momentum XSA-200のようなハイエンド組み込みシステムでもまたいくつか使われた。PowerPC 970は、しばしばマイクロソフトの Xbox 360に採用されているIBMの Xenonのコア、もしくはCellのPower Processing Element(PPE)と同じであると誤解されることがある。しかし、両者のマイクロアーキテクチャはPowerPC 970とは完全に異なり、単にVMX命令に対応した64ビットPowerPCであるという仕様が共通しているにすぎない。
PowerPC 970はPOWER4をシングルコアに簡素化させたもので、32ビットおよび64ビットのPowerPC命令をネイティブに処理できる。プロセッサコアのマイクロアーキテクチャとしてはアウト・オブ・オーダー実行可能な5-wayのスーパースカラであり、主な仕様は以下の通り。
一次命令キャッシュとは32バイト/サイクルの帯域で接続されており、1サイクルにつき8命令をフェッチ可能。
クロックあたり最大5(内部)命令デコード/ディスパッチ
PowerPC 970では、複雑な命令をデコード時に複数の内部命令(86ビット長)に分解して実行するアプローチをとっている。そのため、パイプラインのデコード段は4段と、通常のRISCプロセッサと比較すると長い。2つまでの内部命令で表現可能なPowerPC命令についてはハードウェアデコーダで処理することができるが、それより多くの内部命令を必要とする命令についてはマイクロコードROMで処理される。
デコードされた命令はグループに纏められて処理される。グループには5つのスロット(スロット0-4)が用意されており、最大5つの内部命令がスロット0からプログラム順に格納される。ただし、スロット4は分岐命令専用であり、デコードされた命令の中に分岐命令が存在しない場合はグループに含まれるのは最大4命令となる。また、同様にスロット0や1のみに格納できる命令もあり、プログラム順に格納した際にこれらの命令がうまく該当するスロットに入らない場合、代わりにNOPがスロットに入り調整が行われる。そのため、プログラム側で命令を上手に並べない限り、5命令/サイクルというピーク性能を維持し続けるのは難しい。
ディスパッチはグループ単位で行われる。そのため、対応する命令キューに空きがない等の理由でディスパッチ不可能な命令がグループの中に1つでも存在すると、グループに含まれる全ての命令はディスパッチ不可能になりストールしてしまう。ディスパッチされたグループは後述するGlobal Completion Tableに登録され、各スロットの命令は各演算器の命令キューに入り待機状態となる。この際にレジスタ・リネーミングも行われ、各命令のオペランドは物理レジスタファイルにマッピングされる。
クロックあたり最大10命令を10の演算器に対してアウト・オブ・オーダー発行可能
PowerPC 970は内部に10個の演算器を備えており、各命令キューからの合計で最大10命令が同時に発行可能である。以下に各演算器の構成を示す。
除算と一部の特殊命令を除くと、多くの整数演算命令はいずれのユニットでも実行可能である。ただし、乗算器はパイプライン化されておらず、整数乗算のパフォーマンスは低い。加減算や論理, シフト演算は1サイクルで実行可能であるが、後続命令へ演算結果のバイパスを行わない(オペランドは常にレジスタファイルから供給される)ため、実際に後続命令でオペランドが利用可能になるまでのレイテンシは2サイクルである。前世代のPowerPC G4(7450以降)プロセッサは計4つの整数演算ユニットを備え(うち1つは乗除算用)、レイテンシも最短で1サイクルと短かったため、やや見劣りする仕様となっている。
2つのロード・ストアユニット
命令キューは整数演算命令と共用であるが、2つのパイプラインを備えている。複数のロード・ストアユニットを備えているのはPowerPCとしては初である。
2つの単精度もしくは倍精度の浮動小数点演算が同時に実行可能で、どちらのユニットにも積和演算器を備えているため、SIMD命令を使わずに4FLOPs/サイクルを達成可能な理論性能を持つ。これは当時のPC用のプロセッサとしては非常に強力である。
AltiVec互換のSIMD命令セットであるVMX命令が実行可能である。Vector Permute命令用のユニットとそれ以外の命令用のユニットに分かれており、初期G4プロセッサと同じ構成となっている。
20エントリのGCT (Global Completion Table)
PowerPC 970においてアウト・オブ・オーダー実行の状態を管理するリオーダ・バッファに相当するのがGCTである。GCTでは通常のリオーダ・バッファとは異なり前述のグループ単位で状態を管理するため、1エントリにつき最大5つの内部命令が格納可能で、テーブル全体では100の命令の状態を管理できる。G4ではわずか16命令分のリオーダ・バッファしか持っていなかったため、アウト・オブ・オーダー実行可能な命令ウィンドウが大きく増加している。
2-wayセットアソシアティブで、ライトスルーで動作する。リード2ポート、ライト1ポートを持ち、各ポート共に帯域は8バイト/サイクルである。レイテンシは2-4サイクル (データを必要とする実行ユニットによって異なる) となっている。
ダイレクトマッピングで、帯域は32バイト/サイクルである。
コアの半分の速度で動作し、帯域は64バイト/サイクルである。L1ミス、L2ヒット時のレイテンシは12-13サイクルである。
PowerPC 970はシステムコントローラチップ(ノースブリッジ)との間で、一方向あたり32ビットのフロントサイドバスを2本持ち、プロセッサコアの速度の半分の速度で動作させることができる。このバスの帯域は1GT/sで上り下り合計8GB/sと、G4のMPXバス (167MHzで1.3GB/s) と比べると大きく速度が向上している。
PowerPC 970ベースのコンピュータ用に3つの専用のシステムコントローラがある。すべてIBMが製造している。
Appleが設計し、U3ないしU3H(誤り検出訂正つき)と呼んだ。130nmで製造。2本の550MHz動作の双方向プロセッサバスと400MHz DDRコントローラ、x8 AGPと16bit幅400MHz動作の HyperTransport トンネルを持つ。2プロセッサ(970/970FX)まで制御可能である。
IBMが設計し、U4と呼ばれた。90nmで製造。2本の625MHz動作の双方向プロセッサバス(970MPもしくは970/970FXを2個までの対称型マルチプロセッシングに対応)と533MHzのDDR2コントローラ(ECC RAM 64GBまで対応)、x16 PCI Express、そして16ビット幅800MHz動作の HyperTransport トンネルを持つ。4プロセッサ(970MPを2個)まで制御可能。
IBMが設計し、90nmで製造。低消費電力化が計られている。同時発表された PowerPC 970GX を含む PowerPC 970 シリーズと共に利用可能。