最近の話題 2003年02月08日

1.プレステ3のCellコンピュータ

  ソニー,東芝,IBMの連合軍で開発しているというCellについてはガードが固く,中々情報が入ってきませんが,このほど,関連の有りそうな特許をSCEが出願していることが判明しました。特許は他社の権利化を防ぐために範囲を広げて取るのが普通なので,当面使うつもりがないことも書かれていたり,また,アイデアだけで実際には使われないというものも多いので,ここに書かれたものが本当にCellコンピュータとして世に出てくるかどうかは分かりません。しかし,5件を纏めて同時に出願していることから,単なるアイデア特許ではなく,かなり真面目に取り組んでいるという印象です。また,望ましい実施例として書かれている仕様が かなり生々しいので,本物かなという気もします。 なお,発明者の鈴置氏はPS2のEmotion EngineをISSCC99で発表した方で,引き続きPS3のハード開発の中心人物として活躍しておられるようです。

  ということで,多少眉に唾をつけて読んでいただきたいのですが,prefereded embodiment(望ましい実施例)として書かれている仕様を紹介します。興味のある方は米国の特許出願のドキュメント20020138637 Computer architecture and software cells for broadband networksを読んでください。 これ以外にも4件ありますが,特許請求範囲が異なるだけで実施例の記述は同じ(と思う)なので,1件読めば十分です。

  なお,現在のPS2 EEについてはISSCC99の発表が詳しいのですが,これはWebで無料ではみられません。しかし,有る程度の解説はこのリンクで見られます。

2.Cell

  Cellというのはコンピュータのことかと思っていたのですが,この出願では処理すべきデータと処理するプログラムを対にしたものをソフトウェアセルと呼び,それをネットワーク経由で送ってどこでも受け取ったところで処理できるという世界を考えており,このセルを処理するため にコンピュータがあるという意味であるようです。

3.PE プロセサエレメント

  プロセサエレメントと呼ぶユニットは,PUと呼ぶ汎用プロセサ1個,DMACと呼ぶメモリインタフェース1個とAPUと呼ぶ8個のプロセサから構成され,これらがPEバスで接続されています。各APUは128KBのローカルメモリ,128個の128bitレジスタファイル,各4個の浮動小数点演算器と整数演算器を持っています。ローカルメモリは1024bit幅でPEバスに接続され,また,256bit幅のバスでレジスタファイルに接続されています。レジスタファイルとそれぞれの演算器群の間は,読み出し側が384bit,書き込み側が128bitバスで接続されています。PS2 EEのアーキから類推すると,この4個の演算器は128bitを4分割した32bitオペンランドに対してSIMD的に動くという感じです。

  最大性能は32GFLOPS,32GOPSと書かれており,3オペランドで毎サイクル2演算とするとクロックは4GHzとなります。

  また,バリエーションとしてAPU 8個ではなく,APUを4個にして4個分の面積を描画エンジンにあてる構成も書かれています。

4.BE ブロードバンドエンジン

  BEは4個のPEと64MBのDRAMを集積し,それにI/Oが付いたという形で書かれています。64MBのDRAMは1MB単位のバンクになっており,8個のバンクごとにコントローラがあり,PEとの間はクロスバで接続されています。また,複数のBEチップのメモリを連続 空間として使うことが出来るようになっています。

  APU 1個で32GFLOPSで,PEにこれが8個,BEにはPEが4個なので,トータルでは1TFLOPSになり,これは以前にIBMが言った値と一致しています。

  64MBのメモリですが,90nmテクノロジのCu-08では72MbitのDRAMが32mm2程度の大きさで,これを8個集積すると256mm2,APUはいい加減ですが15mm2程度かと思います。PUとDMACを入れて400mm2程度で,これらの接続で20%増しとすると480mm2となります。これでは大きすぎるのと,90nmテクノロジでは4GHzは難しいと思われるので,その次の65nmテクノロジでの実現を目指していると思われます。65nmならほぼ半減するので240mm2と初期のPS2 EEとほぼ同じサイズで,コンシューマ用としては大きなチップですが,量産できないというほどではありません。

  65nmプロセスとするとプレステレベルの大量産は早くても2005年の後半ではないでしょうか?但し,1月9日の日経の報道では,東芝は2004年末には65nmの量産に入ると言っているので,半年位早まるかもしれません。本当にこれがプレステ3とすると,まだ,2年先ですから,これからプレステ2を買っても楽しむ時間はあります。

  また,BEからの入出力は光インタフェースを集積して出入りペアの光ファイバが2本出る絵が描かれていますが,現状ではシリコンではまともな光インタフェースは集積できないので,将来の夢ではないかと思います。 (MotorolaがSiの上にGaAsを貼り付けるプロセスを開発しており,これを使えば可能かも知れないが…)

  APU 8個のPEでは無く描画エンジンを組み込んだPEを使ったものはVS ビジュアルシステムと呼んでいます。

5.メモリ構造とパイプライン処理

  APUはローカルメモリの命令,データを使って処理を進める構造で,メインメモリのデータを直接アクセスすることは出来ません。メインメモリのデータは,DMACを使って1024bit単位でローカルメモリに転送してから使い,また,逆にローカルメモリからメインメモリに転送するという使い方をします。メインメモリはこの1024bitの単位ごとにFull/Empty bitとデータを転送すべきAPUのIDとそのローカルメモリのアドレスを格納するフィールドを持っています。メインメモリは最初はEmptyになっており,ここに同期Readの要求が来ると,要求を出したAPU IDとローカルメモリのアドレスが格納されます。一方,ローカルメモリは各番地にBusy bitを持っており,データ待ちになるとこのビットが立ちます。

  その後,何処かのAPUがその番地にデータを書き込むとFullになり,データを待っているAPUに転送されます。そして,メインメモリはまたEmptyになります。また,データを受け取ったローカルメモリのBusyビットが落とされて,データが読めるようになります。供給側が早くてFullになっている状態で同期Readが来た場合は,そのまま普通にデータがローカルメモリに転送され,メインメモリはEmptyになります。

  このように,Semaphoreなどのメカニズムを使わずに処理の同期が行えるように工夫されています。このような考えは以前からあったのですが,メモリに余分のビットが必要ということで広く使われるには至っていませんが,この特許の場合は,両方のメモリともにオンチップなのでビット幅には融通が効くのことから採用したものと思われます。

 このメモリ同期構造により,複数のAPUでパイプライン的に処理を行う場合の同期が簡単になり,1024bit単位で次の処理に渡せるので,もっと大きな単位をSemaphoreで保護して渡す場合と較べて遅延も小さくなります。

6.Sandbox

  プログラムがセルに含まれて送られてくる環境であるので,これにウイルスなどが入り込むと被害甚大です。そのため,各プログラムがアクセスできるメインメモリの領域をハード的に制限するメカニズムが設けられており,Sandbox(お砂場)と呼んでいます。

  各APUにストレージキーとマスクが与えられ,一方,メモリの領域(Sandbox)にもキーとマスクがあり,マスクされていない部分のキー同士が一致した場合だけにアクセスが可能になります。これはメインフレームでやられているのとほぼ同じ構造で,キーとマスクの作り方で,単独のAPUからしかアクセスできない領域や複数のAPUが共用する領域を作ったりすることが出来ます。

7.APU命令

  APUの命令については特許申請資料には何も書かれていません。PS2EEでは4つの32bit FloatingをSIMDで処理するユニットとその他の命令を処理するユニットを制御するそれぞれ32bitのMIPS COP命令を流用した64bit命令を使っていました。今回はSIMD演算器が3オペランドになり,かつ,レジスタファイルが128エントリになったのですが,MIPSのコプロセサ命令を気にしなければ,32bitあれば7bitレジスタ指定x3の他に11bit取れるので,4個のSIMD FPUと4個のSIMD IU+Load/Store等をそれぞれ32bitの命令で駆動することは可能と思われます。

8.感想

  基本的にはPS2のEEの拡張で,PS2ではVU0とVU1という二つのベクタユニットだったのが,今回は8個のAPUとなり4倍に能力拡張されています。また,PS2ではVU1しか表示処理ユニットに直結されていなかったのですが,全部のAPUが等価になりプログラムはやり易くなった感じがします。

  また,VUでは整数演算はSIMDではなかったのですが,今回はFPUと同様になっています。DTVのMPEG4などを考えると意味があるのかと思いますが,この辺はあまり知らないのでコメントできません。

  注目すべき機構はメモリに組み込まれた同期機構で,8個のAPUがAtomicのTest&Setなどで同期をとるとバスの負荷が相当高くなってしまう恐れも有るので,概念的には採用の理由は理解できます。しかし,ハード的には無視できない投資であり,これがどの程度性能に貢献するのかが興味のあるところです,

  PS2EEは0.25umプロセスで250MHzで動いていたのですが,今回は4GHzということでそれぞれのユニットの速度は16倍に上がっています。4APU+VSというPEが4個入ったチップを考えると,演算はユニット数で8倍,クロックで16倍で128倍の能力です。2005年の導入として前作から6年ですが,100倍あまりの能力増加は汎用プロセサの性能向上よりずっと急速で,PS2の画像から2桁性能が上がるとどんな絵が見られるかと考えると期待が膨らみます。