今さら聞けないマルチプロセッサの基礎教えます ――キャッシュの共有,割り込みの共有,OSによる制御
2 マルチプロセッサ・システム開発の注意点
対称型マルチプロセッサ・システムを使用するもっとも大きな動機の一つは,(相互にほとんど依存しない)複数のタスクやスレッドを同時に実行し,システムの処理性能の向上を図ることです.その一方で,複数のタスクやスレッドが相互に作用しながら処理を行っていくような運用方法も,もちろんあります.ここでは,後者の方針でプログラムを開発する場合に,注意すべきことを考えます.
● 通信間隔をどこまで長くできるか見極める
複数のプロセッサに割り当てられたタスクやスレッドが相互に作用するということは,プロセッサ間で何らかの通信が必要です.通信手段としては,これまで説明してきたcashe coherence protocolによるキャッシュ間データ転送や,プロセッサ間割り込みによるものなど,いろいろとありますが,いずれにしても通信にはそれなりの時間がかかります.
タスク間(あるいはプロセッサ間)の通信にあまり時間をかけすぎると本来の処理を実行するのに支障をきたすので,通信間隔をなるべく長くして相対的に通信のオーバヘッドを小さくするようなくふうが必要となります.ところが,通信間隔を長くしすぎると,あるCPUはタスクを実行し続け,別のCPUは実行中のタスクの結果を待ち続けるといった,プロセッサ間の負荷の不均衡の問題が起きやすくなります.このような,通信間隔とプロセッサの負荷分配については,プログラムの設計段階からよく考えておく必要があります.