計算能力重視のプロセッサCELLとDSPを比較する ―― アーキテクチャ,開発環境,活躍場所など
ゲーム・コンソールの次世代プロセッサとして開発されたCELLアーキテクチャは,量産されているプロセッサとしては異例といっていい演算能力を誇る.ここでは,同じく演算能力を重視して開発されるDSP(Digital Signal Processor)とCELLを比較して,その特徴をあらためて見つめ直す.(筆者)
CELLはソニー,米国IBM社,東芝の3社がソニー・コンピュータエンタテイメント(SCE)のPlayStation 3に搭載することを目標として作ったマルチプロセッサ計算機アーキテクチャです.ソニーはPlayStation 2の成功から,次世代ゲーム機も演算性能重視で開発することに決めました.さらにゲーム機だけではなく,家電製品のCPUとして使うことで,世界中のあらゆる家庭を計算ノードとして使うといったプラットホーム構想を打ち立てました.その後,CELLで世界を埋め尽くす構想はトーンダウンし,現在,CELLといえばPlayStation 3のプロセッサを示すのが一般的です.
3社のもくろみははずれましたが,完成したCELLプロセッサは現在のx86と比べてもけた違いの能力を持っています.CELLのピーク演算性能は200GFLOPSに達します.世界初のスーパコンピュータと呼ばれるCRAY-1が160MFLOPSでしたから,その1000倍を超えます.
高い計算能力を達成する上で,CELLは深いパイプラインを活用するアプローチをとりました.これは数年前まで米国Intel社の主力であったNet Burstアーキテクチャと同じ方向です.しかし0から設計したCELLには互換性の縛りがないという点で強みがありました.そこでCELLは汎用プロセッサよりも思い切って計算能力に重きを置いた設計になっています.
計算能力が高いプロセッサというと,思い浮かべるのはDSP(Digital Signal Processor)です.筆者はDSP関連の職についていたことがあり,CELLのアーキテクチャとDSPの比較に興味を持ちました.今回,両者を比較する機会をいただきましたので,あらためてCELLアーキテクチャとはどのようなものか,そしてCELLが活躍するフィールドがどのようなものか,少し斜め方向から見つめてみましょう.
1.CELLの概要
● CELLという名前の定義
最初に名前についてはっきりさせておきます.SCEが公開している文書(1)によると,CELLのアーキテクチャは正式には「CELL Broadband Engine(CBE)」という名前です.ところが,この名前はPlayStation 3に搭載されているプロセッサの名前としても用いられています.つまり,CELL Broardband Engineという名前は,実装方法を規定しない抽象的なアーキテクチャの名前と,パイプライン数やその深さといった具体的な数値をまとって存在する実装の両方に用いられています.
これは大変紛らわしいことですが,名前がつけられているものは仕方がありません.そこで,本記事ではCELL Broardband EngineのアーキテクチャをCBEAと呼びます.そしてCBEAに準拠して設計され,PlayStation 3に搭載されているプロセッサをCBEと呼ぶことにします.これはSCEの用法そのものですが,うっかりするとどちらを指して呼んでいるのか分からなくなるので,はっきりさせておきます.
● PowerPCと数値演算専用プロセッサを搭載
さて,CBEAはマルチプロセッサ・アーキテクチャになっており,内部に2種類のプロセッサを持ちます(図1).
図1 CELLアーキテクチャに準拠したプロセッサの構成
一つはPowerPCアーキテクチャのプロセッサで,これはPPU(PowerPC Processor Unit)と呼ばれます.PPUはPowerPCプロセッサそのものなので,既に存在するPowerPC用の開発ツールを使ってプログラムを開発できます.IBM社が配布している開発キットはGCCを利用しています.
PPUは必ずしもチップの中に一つというわけではありません.CBEAは複数のPPUをまとめてPPE(PowerPC Processor Element)として実装し,さらに複数のPPEを一つのチップに実装することを許しています.初めから大量のプロセッサを搭載することを視野に入れてCBEAは作られています.
CBEAが規定するもう一つのプロセッサはSPU(Synagitic Processor Unit)です.これはCBEAのために開発されたプロセッサで,高速数値演算だけを目的として設計されています.そのため極めて特徴的な設計になっています.この記事ではもっぱらSPUについて考察します.
CBEAはSPUも複数持ってよいとしています.複数のSPUをまとめてSPE(Synagitic Processor Element)とし,さらに一つのチップが複数のSPEを持つことができます.
CBEは八つのSPEを持ち,それぞれが一つのSPUを持っています.つまり,CBEは一つのPPUと八つのSPUからなるプロセッサです.PowerPCそのものであるPPUは柔軟な処理を担当し,高速な演算が必要な場合は強力なSPUに処理を分散するのが賢い使い方です.