導入
Cell は、IBM、ソニー、東芝が共同設計したプロセッサで、2005 年 2 月に発表されました。特に、ソニーのビデオ ゲーム コンソール PlayStation 3 に搭載されています。 IBM 、 Mercury Computer Systems 、東芝でもCellベースのコンピュータ(Qosmio F50/55およびG50/55)を生産する予定です。
浮動小数点ベクトル計算に適用される彼のお気に入りの分野は次のとおりです。
- PlayStation 3 コンソールおよびアーケード マシンを使用したビデオゲーム (バンダイナムコ)
- マルチメディアアプリケーション、映画、HDTV (ソニー、東芝)
- リアルタイムレンダリング、物理シミュレーション、信号処理 (DSP)
- 医療画像処理、航空宇宙および防衛、耐震計算、電気通信

哲学
設計者が提示した数値を超えて、たとえばAMDの Phenom やIntelの Core 2 などの PC に搭載されている他のプロセッサとは根本的に異なるCell の哲学を理解することが重要です。

複雑さを軽減してより多くの生のパワーを実現
実際、従来のプロセッサは近年、実行ユニット自体の上流で、プログラムを構成するコンピュータコードを最適化するユニットを開発しました。これにより、プログラマの作業が大幅に容易になり、最適化されていないコードでも良好な条件で動作することができます。たとえば、従来のプロセッサは実行前にコードを内部的に再編成します。これは「OoO」(順序が狂っている)と呼ばれます。命令は、プログラムによって与えられた順序とは異なる順序で実行される場合があります。実行後、プロセッサは命令を正しい順序に戻して、適切な動作を保証します。これには、命令がパイプラインを通過するときに命令を監視 (トレーサビリティ) するためのハードウェアも含まれます。このすべての作業は、プロセッサ上の多くのスペース (トランジスタ) を消費します。
最後に、従来のプロセッサは長年にわたり根本的に進化していません。彼らは本質的に、頻度を高めるために新しい彫刻プロセスを利用することに満足していました。 90nm以降、この時代は終わりを迎え、以前ほど周波数を高めることはできなくなりました。私たちがデュアルコアプロセッサの出現を目の当たりにしているのはこのためです。私たちは周波数を大幅に上げることなく、新しい彫刻技術を利用してより多くのトランジスタを配置し、プロセッサ自体の内部に SMP を開発しています。
IBM for Cell は独自のアプローチを選択しました。 Cell は、過去のプロセッサと同様に、コードを再編成する作業を行わず、「順序どおりに」実行されると言われています。これにより、新しいスレッドを追加するための多くのスペースが解放されます。欠点は、最適化作業がプログラマとコンパイラの責任であるため、相互運用性が損なわれることです。 RISC では、プロセッサの外に作業を移すことがすでに普及していました。
Cell のもう 1 つの独自性は、並列コンピューティングに最適化されていることです。複数のプロセッサが相互に通信し、ワークロードを共有できます。したがって、Cell プロセッサの数が増えるほど、より多くの計算能力を利用できるようになります。
ベクトル計算中に達成される、8 個の SPE を備えた Cell プロセッサ @ 3.2 GHzの理論上の最大パフォーマンス (ピーク) は次のとおりです。
- 32 ビット単精度 (SP): 230.4 GFLOPS (SPE あたり 25.6 GFLOPS、PPE について 25.6 GFLOPS)
- 64 ビット倍精度 (DP): 20.8 GFLOPS (SPE あたり 1.8 GFLOPS、PPE について 6.4 GFLOPS)
1 つのメインコアと 8 つの特定コア

従来のマルチコア プロセッサのように、同じ同一のコアを複数回複製するのではなく、設計者は、1 つのメイン コアと 8 つの特定のコアという完全に異なるアプローチを選択しました。
PowerPC Processing Element ( PPE ) と呼ばれるメイン コアは、従来のコアに比較的近いままです。これまで見てきたように、特に最適化モジュールがないため設計が簡素化されている場合でも、よく知られているIBM POWER の命令セットにより、 2 レベルのキャッシュ システム L1 および L2 を介して RAM にアクセスします。したがって、PPE はセルの中で最も珍しい部分ではありません。
Synergystic Processing Elements ( SPE ) と呼ばれる 8 つの特定のコアはそれぞれ、256 KBのローカルメモリ( Local Storage (ローカル ストレージ) または LS) と、 Streaming Processor Unit (SPU) と呼ばれるベクトル計算ユニットの 2 つの部分で構成されています。特定の SIMD 命令セットを備えていますが、AltiVec と同様に、SPU はローカル メモリに直接かつ非常に高速にアクセスできます。一方、メインメモリにアクセスするには、相互接続バスに対して非同期転送要求を行う必要があります。
要素相互接続バスまたはEIB バスと呼ばれるこの相互接続バスは、セルの最後の非常に重要な要素です。その役割は、PPE、SPE、メイン RAM メモリ、および入出力デバイス間の接続を確立することです。
要約して単純化すると、次のようになります。
- PPE は作業の準備と SPE の開始を担当します (これは指揮者の役割のようなものです)。また、SPE では単純に実行できないすべてのタスクを実行するためにも使用されます。
- したがって、SPE は、EIB を使用してローカル メモリ内のデータを取得することにより、PPE の要求に応じて最も複雑な計算を実行します。
- 最後に、EIB の待機を回避してパフォーマンスを最大化するには、SPU で実行されるコードは、たとえば複数のバッファを使用するなどして、転送の実行と同時に計算を実行する必要があります。
