ILP Wall+Power Wall+Memory Wall=Brick Wall(レンガの壁)

コンピュータの開発は、1サイクルに同時実行できる命令数の飽和(ILP Wall)、消費電力の制約(Power Wall)、そしてメモリ性能の制約(Memory Wall)に直面しており、博士の友人のU.C. BerkeleyのPatterson教授によると、ILP Wall+Power Wall+Memory Wall=Brick Wall(レンガの壁)だそうで、突破は極めて困難な状況にある。

突破口は、並列性の活用であるが、コンピュータアーキテクチャの学会で発表された論文数を見ると、マルチプロセサやインタコネクトに関する論文は、1995年ころから減少傾向にあり、危機的状況にあるという。

熱心に講演されるBurton Smith博士

そして、ハードウェアは、Mooreの法則でマルチコア、マルチスレッドと並列性が向上していくが、一番大きな問題は、シーケンシャルなプログラムと比較して、パラレルなプログラムを書くことの難しさであるという。博士の考える並列性利用の方向は、計算アルゴリズムをシーケンシャルな手続き的に書くのではなく、アルゴリズムをそのまま記述するFunctional Programmingと、パラレルに実行される処理の同期の問題を容易にするTransaction Processingであると述べられた。これらの手法は、一般的に性能低下を招き、ハイパフォーマンスコンピューティングには適さないと考えられている向きがあるが、FORTRANに比肩する性能が得られるものもあり、今後の発展には期待が持てるというのが博士の意見である。

また、大きな並列システムではプログラムのデバグや性能チューニングも問題である。シーケンシャルプログラムではブレークポイントで実行を止めて、シングルステップで動作を確認するというデバグが行われるが、プロセサ並列の場合は、各プロセサについてシングルステップを行う必要があり、場合によっては、プロセサごとのシングルステップの実行順序で結果が変るということもありうる。従って、従来から行われているこのデバグ法はあまり有効ではない。

OSに関しても、現在は、一つの物理プロセサに多数のソフトウェアスレッドを割り当てているが、コンテキストスイッチのオーバヘッドが大きい。従って、性能を重視するなら、1ソフトウェアスレッドを1個の物理スレッドに割り当てるべきという。

ハードウェアによるクロックの向上が頭打ちになり、ILPは改善されず、コア数が増えるので、並列処理を行う必要があるという状況はこれまで経験したことの無い環境であり、コンピューティングのやり方を根本から見直す(Reinventing Computing)必要があるというのが、スミス博士の主張である。

余談であるが、Reinventing Wheelという英語があり、車輪は重要な発明であるが、既に広く用いられており、それを再度発明するのは無駄ということで、英語では、既に知られていることを無駄に考えるという意味で使われる。しかし、今回の博士の講演のタイトルはそういう皮肉な意味ではなく、並列性の利用という点で、どこかでボタンを掛け違ってしまったかも知れないコンピュータの発展を見直し、スムーズに並列処理ができるようなやり方を発明する必要があるという主張である。

余談その2であるが、最近のSunのNiagaraは4スレッド、Niagara 2は8スレッドを切り替えて順次実行しており、HEPの考え方を踏襲している。スミス博士に、これらのプロセサについてどう思うかと質問すると、博士のHEPのマルチスレッドの考え方が採用され、嬉しく思っているという返事であった。