Cell(マイクロプロセッサ)

Cellチップにはさまざまな構成があるが、基本構成は1つの「Power Processor Element(PPE)」と複数の「Synergistic Processing Element(SPE)」からなるマルチコアチップである。 PPEとSPEは、「Element Interconnect Bus」(EIB)と呼ばれる内部高速バスで接続されている。 Power Processing Element

PPE は PowerPC ベースのデュアル発行インオーダー2ウェイ同時マルチスレッド CPU コアで、計算作業量のほとんどを処理する 8 つの SPE のコントローラとして機能する 23 段階のパイプラインを備えています。 PPEは限定的なアウトオブオーダー実行機能を持ち、アウトオブオーダーでロードを実行でき、遅延実行パイプラインを備えている。 PPEは、他の64ビットPowerPCプロセッサと類似しているため、従来のオペレーティングシステムで動作するが、SPEはベクトル化浮動小数点コード実行用に設計されている。 PPEは64KiBのレベル1キャッシュ(32KiBの命令と32KiBのデータ)と512KiBのレベル2キャッシュを搭載している。 キャッシュラインのサイズは128バイトである。 さらに、IBMは、単精度浮動小数点用に完全にパイプライン化されたAltiVec(VMX)ユニット(Altivec 1は倍精度浮動小数点ベクターをサポートしない)、スレッドごとに64ビットレジスタファイルを持つ32ビット固定小数点ユニット(FXU)、ロード&ストアユニット(LSU)、64ビット浮動小数点ユニット(FPU)、分岐ユニット(BRU)と分岐実行ユニット(BXU)。PPEの主要ユニットは3つの構成になっている。 PPEは、命令ユニット(IU)、実行ユニット(XU)、ベクトル/スカラ実行ユニット(VSU)の3つの主要ユニットで構成されています。 IUには、L1命令キャッシュ、分岐予測ハードウェア、命令バッファ、依存性チェックログインが含まれる。 XUには、整数実行ユニット(FXU)とロードストアユニット(LSU)が含まれる。 VSUには、FPUとVMXの全実行リソースが含まれる。 各PPEは、スカラー融合加算命令で1クロックあたり2回の倍精度演算(3.2GHzで6.4GFLOPS)、ベクトル融合加算命令で1クロックあたり8回の単精度演算(同25.0GFLOPS)を実行できます。757>

Xenon in Xbox 360Edit

PPE は Cell プロセッサ用に特別に設計されましたが、開発中に Microsoft が Xbox 360 用の高性能プロセッサコアが欲しいと IBM に持ちかけたのです。 757>

Synergistic Processing Elements (SPE) 編集

各SPEは、SPU (Synergistic Processing Unit) と MFC (Memory Flow Controller、DMA、MMU、バスインターフェース) からなるデュアル発行イン順序プロセッサであります。 SPEは分岐予測ハードウェアを持たない(そのため、コンパイラの負担が大きい)。 SPUは、専用に開発された命令セット(ISA)で、単精度命令と倍精度命令を128ビットSIMD構成で実行する。 現在の世代のCellでは、各SPEは256KiBの命令およびデータ用の組み込みSRAMを持ち、これは「ローカルストレージ」(ソニーの資料ではVRAMを指す「ローカルメモリ」と間違えないように)と呼ばれ、PPEから見えていてソフトウェアから直接アドレスを指定できるようになっている。 各SPEは、最大4GiBのローカルストアドメモリをサポートすることができる。 ローカルストアは、ソフトウェアに対して透過的ではなく、どのデータをロードするかを予測するハードウェア構造も含んでいないため、従来のCPUキャッシュのようには動作しない。 SPEは128ビット、128エントリのレジスタファイルを搭載し、90nmプロセスで14.5mm2の大きさです。 SPEは、1クロックで16個の8ビット整数、8個の16ビット整数、4個の32ビット整数、4個の単精度浮動小数点数、およびメモリ演算を行うことができます。 SPU によって形成された 64 ビットの仮想メモリ アドレスは、SPU から SPE メモリ フロー コントローラー (MFC) に渡され、システム アドレス空間内で DMA 操作を設定しなければなりません。

ある典型的な使用シナリオでは、システムは SPE に小さなプログラム(スレッドに類似)をロードして、SPE を連結し複雑な操作で各段階を処理します。 例えば、セットトップボックスはDVDの読み込み、ビデオとオーディオのデコード、ディスプレイのプログラムをロードし、データはSPEからSPEへと受け渡され、最終的にテレビに表示されることになります。 また、入力データを分割し、複数のSPEで同じような処理を並列に行うことも考えられる。 3.2 GHz の場合、各 SPE は理論上 25.6 GFLOPS の単精度性能を発揮します。

同世代のパーソナル コンピュータと比較すると、Cell プロセッサの比較的高い総合浮動小数点性能は、Pentium 4 や Athlon 64 といった CPU の SIMD ユニットの能力を上回っているように思われます。 しかし、システムの浮動小数点演算能力だけを比較するのは、一面的でアプリケーションに特化した指標となる。 Cellプロセッサとは異なり、こうしたデスクトップCPUは、通常パソコンで実行される汎用的なソフトウェアに向いている。 IntelやAMDのプロセッサは、1クロックで複数の命令を実行することに加え、分岐予測器を搭載しているのが特徴だ。 Cellは、これをコンパイラの支援で補うように設計されており、prepare-to-branch命令が作成されている。 パソコンで使われることもあり、科学技術計算でよく使われる倍精度浮動小数点演算では、Cellの性能は1桁下がるが、それでも20.8GFLOPS(SPEあたり1.8GFLOPS、PPEあたり6.4GFLOPS)にも達する。 IBM のテストでは、SPE は最適化された並列行列乗算を実行して、理論的なピーク性能の 98% に達することができます。

東芝は、家電製品の3Dや映画効果を加速するために、4つのSPEを搭載し、PPEを搭載しないコプロセッサ、「SpursEngine」を開発しました。

EIB (Element Interconnect Bus) Edit

EIBはCellプロセッサ内部の通信バスで、PPEプロセッサ、メモリコントローラ(MIC)、8つのSPEコプロセッサ、2つのオフチップI/Oインタフェースといったさまざまなオンチップシステム要素を接続し、PS3には合計12人が参加しています(SPUの数は産業用途では異なる場合がある)。 EIBには、トラフィックライトのセットとして機能するアービトレーションユニットも含まれる。 いくつかの文書では、IBM は EIB 参加者を「ユニット」と呼んでいます。

現在、EIB は、対になって回転する 4 つの 16 バイト幅の単方向チャネルからなる円形リングとして実装されています。 トラフィックパターンが許す限り、各チャネルは同時に最大3つのトランザクションを伝送することができます。 EIB はシステムクロックの半分の速度で動作するため、実効チャネル速度はシステムクロック 2 回に 16 バイトとなります。 最大同時実行時、4つのリングそれぞれに3つのアクティブなトランザクションがある場合、ピーク時のEIBバンド幅は1クロックあたり96バイト(12同時実行トランザクション×16バイト幅/転送あたり2システムクロック)です。 この数値は IBM の文献によく引用されていますが、この数値をプロセッサのクロック速度で単純にスケーリングするのは非現実的です。 EIB のリード デザイナーである IBM のシニア エンジニア David Krolak は、並行処理モデルについて次のように説明しています。 各転送は常に 8 ビートかかります。 これは、私たちが行った単純化の 1 つで、多くのデータをストリーミングするために最適化されています。 小さなオペを行う場合、それはかなりうまく動作しません。 この線路を 8 両編成の列車が走っていると考えると、列車同士がぶつからない限り、線路上で共存できます。

EIB の各参加者は、16 バイトの読み取りポートおよび 16 バイトの書き込みポートを 1 つずつ持っています。 単一の参加者の制限は、EIB クロックあたり 16 バイトのレートで読み取りと書き込みを行うことです (単純化のため、多くの場合、システム クロックあたり 8 バイトと見なされます)。 各 SPU プロセッサは、SPU の進行中の計算を妨げることなく、さまざまなエンドポイントに長いトランザクションのシーケンスをスケジューリングできる専用の DMA 管理キューを含んでいます。これらの DMA キューは、ローカルまたはリモートでも管理でき、制御モデルにさらなる柔軟性をもたらします。 12人の参加者がいるので、起点に戻るチャネルを回るステップの総数は12です。 6ステップは参加者のどのペアの間でも最長の距離です。 EIB チャネルは、6 ステップ以上の距離を必要とするデータを伝送することは許されないので、そのような データは、より短いルートで円環を一周して別の方向に移動しなければなりません。 パケットの送信に必要なステップ数は、転送の待ち時間にほとんど影響しません。ステップを駆動するクロック速度は、他の考慮事項に比べて非常に高速です。 しかし、通信距離が長くなると、利用可能な同時実行性が低下するため、EIB の全体的な性能に不利になります。

EIBをより強力なクロスバーとして実装したいというIBMの当初の希望にもかかわらず、リソースを節約するために採用した円形の構成は、全体としてCellチップの性能の制限要因になることはほとんどありません。 最悪の場合、プログラマーは、EIB が高い同時実行レベルで機能するような通信パターンをスケジュールするよう、特に注意を払う必要があります。

David Krolak は次のように説明しました。 接続性と面積のバランスを考えなければなりませんでしたが、クロスバー・スイッチをフルに搭載するスペースはありませんでした。 そこで考え出されたのが、このリング型構造で、これは非常に面白いと思っています。 757>

帯域幅の評価 編集

3.2 GHz では、各チャネルは 25.6 GB/s のレートで流れます。 EIB を接続するシステム要素から切り離して考えると、このフロー レートで 12 の同時トランザクションを達成すると、抽象的な EIB 帯域幅は 307.2 GB/秒となります。 この見解に基づき、多くの IBM 出版物では、利用可能な EIB 帯域幅を「300 GB/s 以上」と表現しています。 この数字は、プロセッサ周波数でスケーリングされたピーク瞬時 EIB 帯域幅を反映しています。

しかし、バスに受け入れられるパケットの仲裁メカニズムには、他の技術的制約が関係しています。 IBM Systems Performance グループは次のように説明しています。

EIB 上の各ユニットは、バス サイクルごとに 16 バイトのデータを同時に送信および受信できます。 EIB 全体の最大データ帯域幅は、システム内のすべてのユニットにわたってアドレスがスヌープされる最大レートによって制限され、それはバス サイクルごとに 1 つです。 各スヌープされたアドレス要求は潜在的に最大 128 バイトを転送できるので、3.2 GHz での EIB の理論的なピーク データ帯域幅は 128Bx1.6 GHz = 204.8 GB/s です。

この引用は明らかに、IBM がこのメカニズムおよびその影響について公表した全範囲を表しています。 EIB 仲裁ユニット、スヌープ機構、およびセグメントまたはページ変換フォルトでの割り込み生成は、IBM がまだ公開しているドキュメント セットではよく説明されていません。

実際には、有効な EIB 帯域幅は関与するリング参加者によっても制限される可能性があります。 9 つの処理コアのそれぞれが 25.6 GB/秒の読み取りと書き込みを同時に維持できる一方で、メモリ インターフェイス コントローラー (MIC) は、読み取りと書き込みを合わせて 25.6 GB/秒の最大フローを可能にする 1 組の XDR メモリ チャネルに接続されており、2 つの IO コントローラーは 25.6 GB/s のピーク複合入力速度と 35 GB/s のピーク複合出力速度をサポートすると文書に記載されています。 この参照フレームでは、瞬間的な EIB 帯域幅は 384 GB/s、調停制限帯域幅は 256 GB/s です。

全てを考慮すると、最も頻繁に引用される理論上の 204.8 GB/s という数字は、心に留めておくべき最高の数字です。 IBM Systems Performance Group は、3.2 GHz で動作する Cell プロセッサ上で 197 GB/s を達成する SPU 中心データフローを実証しており、この数値は実際を正しく反映していると言えるでしょう。 メモリインタフェースコントローラ(MIC)は、XIOマクロとは別に、IBMによって設計されたものです。 XIO-XDRリンクは、1ピンあたり3.2Gbit/sで動作する。 2 つの 32 ビット チャネルは、理論的に最大 25.6 GB/s を提供できます。

同じくラムバス社の設計である I/O インターフェイスは、FlexIO として知られています。 FlexIO インターフェイスは 12 のレーンで構成され、各レーンは一方向の 8 ビット幅のポイント トゥ ポイント パスです。 8ビット幅のポイントツーポイントパスのうち5本はCellへのインバウンドレーンで、残りの7本はアウトバウンドレーンとなる。 これにより、2.6GHz時の理論ピーク帯域幅は62.4GB/s(アウトバウンド36.4GB/s、インバウンド26GB/s)となる。 また、FlexIOインターフェースは独立したクロックで動作させることが可能で、標準的には3.2GHzで動作します。 インバウンド4レーン+アウトバウンド4レーンでメモリコヒーレンシーをサポート

コメントを残す

メールアドレスが公開されることはありません。