密結合マルチプロセッサシステムについて
情報太郎さん
(No.1)
密結合マルチプロセッサシステムでは、各タスクはどのプロセッサでも実行できるので、タスク間で同期をとる機能が必要になると書いていたのですが、なぜタスク間で同期を取る必要があるのですか?ご教授のほどお願い致します。
2019.07.09 13:58
双葉さん
(No.2)
処理のタイミングによって実行結果が異なるのを防ぐためです。
密結合マルチプロセッサシステムは、主記憶装置(メモリ)を各プロセッサが
共有するシステムです。
例えば、主記憶装置上のある番地に6(10)という数値があるとします。
これに2を加算してから、2で除算する処理をするとします。
同期がきちんととれているときの処理は
(6+ 2) / 2 = 4 です。
しかし、どちらかのプロセッサで前工程の処理が遅れることがあります。
同期を取らないということは、前の工程が終わっているかを確認しないで
処理をすることを意味します。処理の順番が入れ替わると
6 / 2 + 2 = 5
となり、正しい処理ができていないことになります。
-----余談
プロセッサ単位ではきちんと同期できていても、プログラミングの並列処理でよく
発生するミスです。特定の環境でしか発生せず、再現が難しくデバックしにくい
など厄介なバグです。設計段階でシーケンス図を書くなどして、バグが入り込む
余地を潰して対策します。
密結合マルチプロセッサシステムは、主記憶装置(メモリ)を各プロセッサが
共有するシステムです。
例えば、主記憶装置上のある番地に6(10)という数値があるとします。
これに2を加算してから、2で除算する処理をするとします。
同期がきちんととれているときの処理は
(6+ 2) / 2 = 4 です。
しかし、どちらかのプロセッサで前工程の処理が遅れることがあります。
同期を取らないということは、前の工程が終わっているかを確認しないで
処理をすることを意味します。処理の順番が入れ替わると
6 / 2 + 2 = 5
となり、正しい処理ができていないことになります。
-----余談
プロセッサ単位ではきちんと同期できていても、プログラミングの並列処理でよく
発生するミスです。特定の環境でしか発生せず、再現が難しくデバックしにくい
など厄介なバグです。設計段階でシーケンス図を書くなどして、バグが入り込む
余地を潰して対策します。
2019.07.09 17:13
情報太郎さん
(No.3)
同期する意味が理解できました!
ありがとうございました!
ありがとうございました!
2019.07.10 09:44
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告