マイクロプロセサなどに関する学会「A Symposium on High Performance Chips(HOT CHIPS)18」(主催:米IEEE)が,カリフォルニア州のStanford Universityで米国時間の2006年8月20日に開幕した(ホームページ,図1,図2)。
今回は過去最多となる65件の提案から選ばれた27件の発表がある。プログラム委員会の一人によると,米Intel Corp.がマイクロプロセサに採用した新しいマイクロアーキテクチャ「Core」に関する講演に注目が集まっているという。「4~5年前のようにネットワーク関連LSI一色でなく,パソコンやサーバー機向けのマイクロプロセサや組み込み機器向けマイクロプロセサ,リコンフィギュラブルLSIなど,様々な分野の講演が集まった」(あるプログラム委員)。
マルチコアの恩恵を受けるには
初日の午前中は,「Multicore Programming: From Threads to Transactional Memory」と題したチュートリアルがあった。多くのマイクロプロセサ・メーカーが複数のCPUコアを1チップに集積するマルチコア型マイクロプロセサの開発に舵を切ったが,アプリケーション・ソフトウエアの性能向上という恩恵を受けるにはソフトウエア開発の面で多くの課題があるとの認識によるものである。米Sun Microsystems, Inc. Scalable System GroupのSenior Staff EngineerであるYuan Lin氏は,現在主流となっている共有メモリ方式の並列化プログラミングの手法である,POSIXスレッドやOpenMP,Javaなどについて概説した上で,並列化プログラミングの課題を挙げた。具体的には,「並行するタスクをどのように見つけ,作り出すか」「タスクをどのようにスレッド化するか」「スケーラビリティをどのように達成するか」といった11個の課題を提示した(図3)。
Lin氏は,プログラマーが容易にマルチコア型マイクロプロセサの性能を引き出せるようになるためには,プログラミング言語,コンパイラなどの開発ツール,ランタイム・ライブラリ,仮想マシンやOS,プログラミング手法といったすべてのレベルで技術革新が必要であるとした。「これから5年は,プログラマーにとって混沌の時代になるだろう」(Lin氏)。
注目集める「Transactional Memory」
Intel社 Programming Systems LabのPrinciple EngineerであるAli-Reza Adl-Tabatabai氏らは,解決策の一つとして注目される「Transactional Memory」について解説した。共有変数をロックせずに複数のCPUコアで処理を実行する考え方で,共有変数の競合があった場合のみ処理をやり直すというものである。Intel社に設置した60個のマイクロプロセサを搭載したサーバー機に接続して,16スレッドを並列に実行する環境で,既存の手法による並列化を手動で実施したプログラムと,Transactional Memoryを応用して並列化したプログラムの両方を動かして,その効果を見せていた。並列化の粒度が粗いプログラムでは,同時に実行できるスレッド数が増えてもアプリケーション全体の実行速度は上がらないが,Transactional Memoryを用いたプログラムはスレッド数の増加に伴って実行速度が向上するとした(図4)。
Transactional Memoryは,共有変数の競合の検出方法をどうするか,ハードウエアとソフトウエアにそれぞれどのように機能を分担させるか,といった点で複数の考え方があり,対応するコンパイラやマイクロプロセサなどは製品化されていない。「ここ2~3年でTransactional Memoryに関する研究が活発になっており,大きな進歩を見せている」(Intel社 Programming Systems LabのSenior Staff ResearcherであるBratin Saha氏)として,今後この分野の研究が進む可能性を示した。