CELL
とある寄り合いに参加。
寄り合いではCELLプログラミングの解説がありました。PS3で使われているCELLはコントローラの役目を担うPPE(Power PCアーキテクチャ)が、8基のSPEを使役する仕組みになっています。発表者いわく「潔い設計」。
焦点は当然ながらSPEのアーキテクチャでした。
- SPEは128bit長のオペランドしか使えない
- 128bitのなかに4bit長整数から32bit長浮動小数点数までパックできる
- 基本的にロード・ストア型SIMDプロセッサ
- ロード命令にレイテンシがある
- 演算レイテンシは6~7くらい。インターロックあり
- 128bitレジスタを128本持っている
- DOループ命令を持たない
- サーキュラーバッファアクセス命令を持つか聞き忘れた(不覚)が、たぶん持たない
- 固定小数点命令を持たない
- ミス・アライン・アクセスを許さない
- 各SPEは各々が内蔵する256KBメモリにしかアクセスできない。それ以外はDMAを使ってPPEのメモリ空間から持ってくる。
- 二本パイプのIn-Orderパイプラインを持つ
私の感想は「汎用プロセッサの設計者が開発した画像処理用プロセッサ」です。Mooreの法則の恩恵を存分に利用するつもりなのでしょう、DSP的な質素倹約とは違うアプローチが鮮明でした。
発表された方はHPC(High Performance Computing)関連の仕事をなさっている方で、アーキテクチャの特性を利用してカリカリにチューニングするとおっしゃっていました。コンパイラの性能は平々凡々で、最適化はもっぱらIntrinsicsを使用するそうです。
追記:
- Cell「ブロードバンド・エンジン・アーキテクチャ」仕様公開
- Georgia Tech - STI Center of Competence for the Cell Broadband Engine Processor
- Cell Open Cafe - Multicore Processor Cell
公開仕様の中にはISAが含まれますが、レイテンシや並列性のような実装パラメータがありません。