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のスーパースカラであり、主な仕様は以下の通り。 クロックあたり8命令フェッチ 一次命令キャッシュとは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命令が同時に発行可能である。以下に各演算器の構成を示す。 2つの整数演算ユニット 除算と一部の特殊命令を除くと、多くの整数演算命令はいずれのユニットでも実行可能である。ただし、乗算器はパイプライン化されておらず、整数乗算のパフォーマンスは低い。加減算や論理, シフト演算は1サイクルで実行可能であるが、後続命令へ演算結果のバイパスを行わない（オペランドは常にレジスタファイルから供給される）ため、実際に後続命令でオペランドが利用可能になるまでのレイテンシは2サイクルである。前世代のPowerPC G4（7450以降）プロセッサは計4つの整数演算ユニットを備え（うち1つは乗除算用）、レイテンシも最短で1サイクルと短かったため、やや見劣りする仕様となっている。 2つのロード・ストアユニット 命令キューは整数演算命令と共用であるが、2つのパイプラインを備えている。複数のロード・ストアユニットを備えているのはPowerPCとしては初である。 2つの浮動小数点演算ユニット 2つの単精度もしくは倍精度の浮動小数点演算が同時に実行可能で、どちらのユニットにも積和演算器を備えているため、SIMD命令を使わずに4FLOPs/サイクルを達成可能な理論性能を持つ。これは当時のPC用のプロセッサとしては非常に強力である。 2つのVMXユニット AltiVec互換のSIMD命令セットであるVMX命令が実行可能である。Vector Permute命令用のユニットとそれ以外の命令用のユニットに分かれており、初期G4プロセッサと同じ構成となっている。 1つの分岐処理ユニット 1つの条件レジスタ命令処理ユニット 20エントリのGCT (Global Completion Table) 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サイクルである。 PowerPC 970はシステムコントローラチップ（ノースブリッジ）との間で、一方向あたり32ビットのフロントサイドバスを2本持ち、プロセッサコアの速度の半分の速度で動作させることができる。このバスの帯域は1GT/sで上り下り合計8GB/sと、G4のMPXバス (167MHzで1.3GB/s) と比べると大きく速度が向上している。 PowerPC 970は、IBMによって2002年の10月に発表された。これは、2003年6月に出荷されたAppleのPower Mac G5に対してリリースされたものである（慣用名を引き継ぎ、AppleはPowerPC 970搭載製品にG5と名付けた。このプロセッサがPowerPCプロセッサの第5世代であることが由来。）。IBMは、PowerPC 970を採用した最初のブレードサーバ、BladeCenter JS20を、2003年11月にリリースした。 PowerPC 970は、512KBのフルスピードL2キャッシュを持ち、1.6GHzから2.0GHzまでのクロック速度で動作した。(8GFLOPS[1GHz動作時]) HyperTransportはプロセッサのクロック速度の半分の速度で動作する。 PowerPC 970FXは、90nm SOIプロセスを採用し、2GHzでは最大48Wを消費する一方、1GHz動作時には摂氏65℃（華氏149度）で最大11Wを消費する。 Appleは2004年を通して970FXベースの製品をリリースした。1月にXserve G5、6月にPower Mac G5、8月にiMac G5である。Power Mac G5では、水冷装置と併せて最高クロック2.5GHzで動作するプロセッサが採用された。iMac G5 では、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を消費する。 PowerPC 970MP（開発名は"Antares"）は、IBMによって2005年の第3四半期にリリースされた。970MPはデュアルコアプロセッサで、1.4GHzから2.5GHzで動作する。最大消費電力は1.7GHzのときに37W、2.5GHzの時には100Wである。それぞれのコアはL2キャッシュは970FXの2倍となる1MBずつ持っており、90nm SOIプロセスで製造された。両コアのうちひとつがアイドル状態になると、そのコアは「doze」（眠る）モードに入ってスリープ状態になる。 PowerPC 970MPは、AppleがPower Mac G5でPowerPC 970FXと置き換えた。（iMac G5はPowerPC 970FXプロセッサを採用し続けた。）PowerPC 970MPは、IBM の JS21ブレードモジュールで使われている。IBMは、PowerPC 970MP 2.5GHzを1基または2基搭載したIntelliStation POWER 185とSystem p5 185 Serverを2006年2月にリリースした。 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で動作した。 PWRficient PA6T-1682Mは、P.A. Semi社（2008年にAppleが買収）が設計したSoCで、PowerPC 970の省電力な互換製品。PowerPC 970とはマイクロアーキテクチャが全く異なるが、完全な命令互換性を有する。2006年8月21日のHot Chips 18で発表された。2007年2月5日サンプル出荷開始。 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（PA6T-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がパフォーマンスの上昇の絶え間ない遅延に耐えられなくなった上、ネイティブのWindows互換性を望んでおり、ビジネスの焦点をデスクトップコンピューティングからiPod（後にiPhone, iOS）開発にシフトすることがAppleの戦略と推測され、AppleがIntelプロセッサに切り替えたとも推測された。[要出典] Appleは2008年にP.A.Semiを買収し 、そのエンジニアリングリソースを利用し、iPhone、iPod Touch、iPad、およびApple TV製品ライン用のAppleシリコンを開発した。そして、最終的には2020年にMacのIntelチップに代わってこれらの設計で一巡させた。 PA6T-1682Mプロセッサは、後にAmigaOne X1000パーソナルコンピュータで使用された。 PowerPC 970ベースのコンピュータ用に3つの専用のシステムコントローラがある。すべてIBMが製造している。 CPC925 Appleが設計し、U3ないしU3H（誤り検出訂正つき）と呼んだ。130nmで製造。2本の550MHz動作の双方向プロセッサバスと400MHz DDRコントローラ、x8 AGPと16bit幅400MHz動作の HyperTransport トンネルを持つ。2プロセッサ(970/970FX)まで制御可能である。 CPC945 IBMが設計し、U4と呼ばれた。90nmで製造。2本の625MHz動作の双方向プロセッサバス（970MPもしくは970/970FXを2個までの対称型マルチプロセッシングに対応）と533MHzのDDR2コントローラ（ECC RAM 64GBまで対応）、x16 PCI Express、そして16ビット幅800MHz動作の HyperTransport トンネルを持つ。4プロセッサ（970MPを2個）まで制御可能。 CPC965 IBMが設計し、90nmで製造。低消費電力化が計られている。同時発表された PowerPC 970GX を含む PowerPC 970 シリーズと共に利用可能。