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を使用するそうです。
追記:

公開仕様の中にはISAが含まれますが、レイテンシや並列性のような実装パラメータがありません。