内容要旨 | | 今日,計算機の応用分野は拡大の一途を辿っており,科学技術計算などの定型処理だけでなく,整数演算が主体の処理や記号処理などの複雑な非定型処理をも含めた汎用の高速計算機が求められている.また,VLSI技術の著しい発展によって,高並列計算機がハードウェア的に実現可能となり,定型処理の分野では実用化段階を迎えている.一方,負荷分散やスケジューリングなどの並列実行制御方式は,いかなる並列処理においても必要となる普遍的な課題として,並列処理の研究と共に長く精力的に研究されてきたが,従来の方式は非定型な高並列処理には適用が困難で.高並列汎用計算機の実用化を妨げる一因となっていた. そこで本研究では,高並列非定型処理を対象とする実用的な並列実行制御方式を,現実の高並列計算機上で明らかにすることを目的とした研究を行なった.そして,研究の遂行に伴う作業や実装中の発見などの副次的な成果を含めて,大別して,1)高並列推論エンジンPIE64の全稼働状態の実現,2)高並列非定型処理における並列実行制御方式,3)レジスタウィンドウ上のマルチスレッド処理方式,の三種類の成果を得た. 高並列推論エンジンPIE64の全稼働状態の実現 本研究は,高並列推論エンジンPIE64の試作研究プロジェクトの一貫として行なわれた.PIE64(図1)は.大規模知識処理のための高並列記号処理計算機として開発されたが,アーキテクチャ的には一般的な構成をとっており,記号処理をも含めた汎用の細粒度高並列処理に適した並列計算機と見なすことができる. 図1:PIE64の外観.十字型に並べた五つの筐体からなり,中央の筐体に相互結合網(2系統),回りの筐体に推論ユニット(16台×4筐体)が格納されている. 本研究の遂行上は,システムの全稼働状態を実現するために,大半の時間が費やされた.その作業の多くは実装上の細かい問題であり,本来の研究目的には必ずしも沿ったものではないため,詳細は本論文では割愛する.しかし,実用的な方式という研究目的を達成するには,実用規模の実機上での実験が必要不可欠であり,全稼働状態の実現なくして本研究の成果を得ることは不可能であったと言える.また,PIE64の全稼働状態の実現によって,本研究自体が可能になっただけではなく,コンパイラやさらに先の計算機アーキテクチャなどの様々な研究も,実機での実測データに基づいて進めることが可能となった.すなわち,それらの研究に資するPIE64を全稼働させたこと自体も,本研究の成果の一つであると言える. 高並列非定型処理における並列実行制御方式 本研究の中核である並列実行制御方式の研究としては,実機が稼働するまでは,定性的な検討とシミュレーションによる評価を中心に,1)静的負荷分割の研究,2)並列処理管理カーネルの研究を行なった.それらの研究で得られた知見を元に,実機が稼働してからは,3)バンバン粒度制御の研究を行なった. 静的負荷分割の研究 静的負荷分割の研究では,非常に高い表現力を持ちながらも,実行時オーバヘッドが小さく,動的分割や動的割当とも融合が可能な,静的分割の戦略表現方法を考案した.また,仮実行のプロファイルデータを用いて,その分割戦略を自動付加する実験を行ない,従来困難とされていた非定型処理の自動分割の可能性を示した.そして,ワークステーション上のシミュレーションによる評価で,実質的な並列性を落すことなく,メモリアクセスのローカリティが35%前後から70%前後まで向上することを確認した.一方,この自動付加手法では,ヒューリスティクスを使わずに最適化が可能な実験的方法を用いており,その結果を分析することによって,より実用的な最適化方式への指針を示すことができた. 並列処理管理カーネルの研究 並列処理管理カーネルの研究では,静的な方式を踏まえた上で,プログラムの実行時支援を担うオペレーティングシステム核の基本設計を行ない,実行時の負荷分散やスケジューリングなどに対する要件を整理して,必要な機能の検討を行なった.特に,負荷分散の方式としては,コンパイラによる静的負荷分割,並列処理管理カーネル自身による動的負荷分割,そして相互結合網ハードウェアによる動的負荷割当を組み合わせる方式を考案し,ワークステーション上のシミュレーションによって,類似した効果を持つ静的分割と動的分割を比較し,それらの得失の違いを明らかにした.すなわち,動的分割は,並列性が高い場合には非常に効果的であるが,並列性が低くなると急激に効果がなくなるのに対し,静的分割は,並列性が高い場合の効果は動的分割に及ばないものの,並列性の高低によらない一定レベルの効果を発揮し,並列性が低い場合には動的負荷分割を上回る効果を持つことがわかった.そして,並列性が高い時には動的分割が,並列性が低い時には静的分割が重要であり,両者の利点を組み合わせた複合方式が常に最良であることも明らかになった. バンバン粒度制御の研究 バンバン粒度制御の研究は,上記二つのシミュレーションベースの研究で得られた知見を踏まえた上で,再度,定性的な考察を加えて一般化し,全稼働し始めた実機上に実装して評価したものである.すなわち,並列性が十分に高く,システム全体が高負荷状態にある時と,並列性が不足し,低負荷状態にある時とでは,様々な状況が全面的に逆転する.そこで,それらの二つの世界を明確に分離し,それぞれの世界での最適化を意識的に区別して行なった上で,実行時の負荷状態に応じて細粒度と粗粒度の両極のコードを切替える「バンバン粒度制御」を提案した.二つの世界を分離し,両状態を同時に扱う中間粒度のような考え方を捨て去ることによって,複雑なシステムが大変見通しのよいものとなり,並列処理の研究で長く議論されている様々な問題に自ずと答が与えられる.一般には中間粒度が良いと言われるような領域でも,粗粒度の最適化と,粒度のすみやかな切り替え機構によって,効率と稼働率の向上がはかられる.本方式をPIE64上に実装し,評価した結果,1)単体プロセッサによる実行では,細粒度並列処理言語においても,C言語で記述して逐次型計算機で実行した場合に匹敵する性能が得られ,2)並列性が十分に高い場合には,逐次処理と較べても高い台数効果が得られ,3)並列性が低い場合には,細粒度並列処理による限界と同じ速度向上が得られる,という理想的な高並列非定型処理が実現されることを確認した. レジスタウィンドウ上のマルチスレッド処理 これは,レジスタウィンドウを用いた高速手続き呼び出しと高速コンテクストスイッチを,既存のレジスタウィンドウアーキテクチャ上で両立させる方式で,汎用高速RISC型マイクロプロセッサであるSPARCを用いたマルチスレッド処理に広く適用可能な,汎用的な方式である. この方式は,PIE64の実装中に偶然発見されたもので,本研究の副次的な研究成果の一つであるが,一般社会へのインパクトという観点では,本研究の様々な成果の中で,最も社会的貢献度の高い成果の一つである.すなわち,SPARCを用いた粗粒度並列計算機や逐次計算機は,既に社会に広く普及しているが,本方式は,細粒度高並列処理に限らず,それらの計算機にも広く適用可能な方式である上,これまでの一般的な認識を完全に覆す方式であり,さらに,発見した工夫自体は至極単純明解で,コロンブスの卵のような研究成果でもある. 本方式は実際にPIE64上で使われているが,その一般性を考慮して,C言語による応用プログラムと,レジスタウィンドウのエミュレータを使い,より一般的な観点から評価した.その結果,十分な数のウィンドウがある場合は,本方式は確かに手続き呼び出しとコンテクストスイッチの高速化に役立つことが確認され,さらに,ワーキングセットモデルを導入することで,利用可能なウィンドウ数に応じてワーキングセットが制御され,本方式は常に優れた性能を示すことが確認された. 以上のように,本研究では様々な研究成果を挙げたが,それらを関連付けてまとめると,次のようになる. 静的負荷分割方式の研究では,自由度の高い負荷分割戦略の表現方法を提案し,コンパイラによる自動分割の可能性を示した.並列処理管理カーネルの研究では,この静的な方式を踏まえた上で,実行時の動的な方式を提案し,静的方式と動的方式の得失を明らかにして,両者を融合した複合方式が最善であることを示した.この知見を元にさらに考察を加え,低負荷状態と高負荷状態を明確に分離し,細粒度と粗粒度の二種類のコードを切り替えるバンバン粒度制御方式を提案し,全稼働状態を実現したPIE64の実機上に実装,これを評価して,理想的な高並列非定型処理が達成されることを確認した.また,実装の途中で,レジスタウィンドウ上のマルチスレッド処理方式を発見したため,これを一般化・実装・評価した. 従来,高並列非定型処理における並列実行制御方式は,プログラマに負担を与えており,真に汎用の高並列計算機の実用化を妨げていたが,本研究の成果によれば,これを完全に自動化することは可能であり,高い並列性を有する時には高い台数効果が,並列性が不足する時には限界までの速度向上が得られ,優れたコストパフォーマンスと飛躍的な性能向上を両立させる理想的な高並列汎用計算機を実現することが可能である.プログラマに残された仕事は,高い並列性を有するアルゴリズムでプログラムを記述することであり,もはや過剰な並列性や通信オーバヘッドなどを気にかけてプログラミングする必要はない.すなわち,本研究によって,高並列汎用計算機の実用化へのブレークスルーが開かれたと言うことができる. |