【レポート】

Fall Processor Forum 2005 - 試行錯誤を求められそうなCellのプログラミング

5 十分な性能を引き出すにはまだ時間がかかる?

    大原雄介  [2005/11/05]

    ここまではPPEと「1つの」SPEでのモデルだったが、ここからは複数のSPEのハンドリングである。Cellの場合Heterogeneous構成だから、本来は従来のマルチプロセッサとはプログラミング方法が異なる。が、様々な同期メカニズムを用意することで、あたかもこれをHomogeneousな環境の様にタスクのハンドリングを可能にするのが、ここでの目的である。共有メモリもまた、こうした環境を作るためには欠かせない要素である。OpenMPを使ってのタスク制御をサポートしているのも興味深いところだ(Photo24)。

    Photo23:Mailbox/Signal/Eventsといったものはともかく、MFCはちょっと違うのではないかという気もする。lwarx/stwcxというのはかなり不思議な命令で、CPUはlwarxで渡されたアドレス(Word)を監視するもので、stwcxと対になって使うもの。ldarx/sdwcxはこれがDouble-Wordになっている。セマフォの構築には便利な命令ではあるが、x86のXCHGの様に「変更中は割り込み不可」という命令を作る方が自然に思えるのだが。このあたりはPowerPCの偉い人に教えを請いたいところだ。

    Photo24:ただここまで示してきたとおり、Shared MemoryはCellではしばしば高コストのSolutionであることが最大の問題である。

    またJob Queueに関しては、先にPhoto20で示したものを更にアグレッシブに拡張したモデル(Photo25)が考えられるとしている。あるいはMessage Passing式のプログラミングも可能である(Photo26)。実のところ、この方が自然に思える。このケースだと、Local StoreからLocal Storeへのデータの移動が主で、全体への影響が少ないからだ。これを更に推し進めると、パイプライン化も可能だろう(PHoto27)。

    Photo25:ここで注目すべきは、PPEがここに介在しないことだ。この場合、JobをStreamingで処理するという形になるから、PPEが介在したらおかしいという話もあるが、これが可能なのはよほどTaskのGranularityが揃っており、かつ比較的処理が短い場合に限られるだろう。それ以外の場合は、PPEの管理によるオーバーヘッドよりも、PPEで管理することにより細かなハンドリングが可能になることのメリットが上回ると考えられるからだ。

    Photo26:Message Passingの場合、SPE 1,2,3..,はそれぞれ処理A,B,C,...専用プロセッサとして動作する。最初のデータ(メッセージ)がSPE1に届いたら、処理Aを行い、結果をSPE2に送り、次に処理Bを行い、...という形で動作するパターンが一般的だ。あくまでもメッセージドリブンという形である。

    Photo27:パイプライン化を行う場合、各SPEの処理負荷が均等になるように細工する必要がある(さもないと、特定のSPEがボトルネックになり、スムーズな動作にならない)。それと、前段からのメッセージ到着と後段へのメッセージ送付がほぼ同じタイミングになるので、Local Store上でのデータレイアウトをちょっと考える必要があるだろう。

    もっとアグレッシブなのは、複数のSPEをあたかも汎用プロセッサの様に扱う、Multi-Tasking SPEs(Photo28)である。簡単なのはLocal Store内にTaskを格納しておき、Event Dispatcherで順次実行するというモデルだが、メモリにTaskを格納して、これをDispatchするという方法は更に効果的だろう。ただここまでいくと、SPE用のOSを作るようなもので、実現にはまだ当分掛かりそうである。実際、この実装に必要なカーネルの問題点も列挙されているほどで(Photo30)、このあたりの問題はまだ解決していない模様だ。

    Photo28:この場合の問題は、そもそもLocal StoreにどれだけのTaskが収まるかという事だろう。

    Photo29:この場合、複数のSPEでメモリを監視しながら動作というわけで、ここのDispatcherの設計がかなり難しいだろう。メモリアクセスのオーバーヘッドを如何に抑えるか、も重要なテーマだ。

    Photo30:そもそもSPEは非常に単機能なプロセッサなので、本格的なマルチタスクOSで管理されることを余り考慮していない。こうしたものが本当に必要か? というあたりから検討する必要があるのはPhoto20と同じだ。

    雑感

    CESOFに関してはPseudo Codeも示されるほどに具体的に煮詰められているが、Multi-Tasking SPEに関してはむしろ願望に近いレベルの議論に終始しているあたりが、現状のCellの開発状況を如実に示している感がある。かつてPS2はライブラリの不足/不備/不調や、そもそもトリッキーなハードウェア構成もあってなかなかプログラミングが大変だったが、Cellは別の意味でまた難しい。こちらはとにかくメモリやEIBのボトルネックを避け、かつ有効にSPEを走らせるためのシステム設計が最大の肝になることが、今回の発表から明確になったといえよう。Time CriticalなシステムというのはEmbeddedの世界では珍しくないが、CellのそれはResource Criticalというべきであって、新たなスキルを要求される事になりそうだ。何にせよ、ある程度の性能を引き出すための「定番システム構成」が決まるまで、プログラマはかなり試行錯誤を強いられる気がする。

    関連記事

    関連サイト

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン