研究概要 |
本年度は,マルチスレッド型プロセッサで問題となる,並列プログラムの負荷を複数のスレッドへ動的配分する問題の基礎研究として,細粒度タスクを共有メモリ計算機上で処理するスレッド管理方式の研究を行った.対象としたアクティビティ方式スケジューラは,軽量プロセスを再利用して効率よいスレッド割当てを行う方式であるが,プロセッサ数やタスク数が多い状況で管理キューへのアクセスが集中するとオーバヘッドが増大する問題があった.その改善法として,タスク生成要求をプロセッサ毎に分散させて保存し,大部分のスケジュール処理がプロセッサ毎に行なえる構成を提案した.この方式は,ローカル・キューでのタスク処理順序をLIFOとして保持する状態の爆発的増大を防ぎ,リモート・キューにアクセスする順序をFIFOとして少ないアクセス回数で効果的に負荷の動的再配分を達成できる.試作した処理系について処理速度や使用メモリ量をシミュレーションにより評価し,性能向上を明らかにした. また,マルチスレッド型プロセッサを用いた構成の特徴である,キャッシュを通じたスレッド干渉について研究を行った.これは,メモリ遅延時間の許容にはスレッド数を大きく設定することが望ましいが,スレッド数が多すぎるとプロセッサ内の複数のスレッドが限られたキャッシュ容量を奪い合ってヒット率を高くできない現象である.プロセッサとキャッシュのモデル解析より,これらの要因の相互作用により特定のスレッド数でプロセッサ稼働率がピークとなることを明らかにした.また,プログラムの性質(並列度やヒット率)の変化に対応するように,各時点での実行可能スレッド数などの収集機能をプロセッサに付加し,動作スレッド数を変化させて常に適切なスレッド数を維持する方式を提案した.アクティビティ・スケジューラを基本として,個々の細粒度タスク終了を契機にして問題の処理順序を乱さずに動作スレッド数を実行時に増減させる処理系を実現した.応用プログラムの処理時間による評価から,動的スレッド数制御によって高い稼働率が達成されることを確認した.
|