· 

第8回 処理の依存関係と並列性能

6において、コア数を増やしてもコア数ほどには性能があがらないという話をして、その理由の一つとして処理の依存関係の話をしました。

 

 

例えば下の図で、左が処理の依存関係です。処理BCDは処理Aが終了しないと実行を開始できません。各処理の計算量を100とすると、シングルコアでは400の時間で実行できます。そのため、2コアでは性能が2倍になり200、4コアで100になってほしいところですが、前回お話ししたオーバーヘッドを無視できたとしても、依存関係のため各CPUには待ち時間ができてしまい、下の図に示すように2コアでは300、3コア以上では200よりは速くなりません。

このように処理の順序関係によって並列性は制約を受けることになります。従って、システムの並列性を向上させるには、不要な依存関係をなくすことが重要となります。