並列化
おはようございます。本日の当番、プログラマーの大川です。
さて、最近のパソコンでは、マルチプロセッサー搭載機が当たり前になっています。
ひとつのCPUでは処理を賄い切れないから、それならCPUを複数積んで
複数の処理を一気をやってしまおう!という発想です。
それはパソコンに留まらず、最近のゲーム機(いわゆる次世代機)でもトレンドと
なっています。処理速度においては、20年前のそれとは雲泥の差です。
そんな沢山のCPUがあるんだから、今後のゲームはもっと凄くなるのでは!と
思うでしょうが、実際はそんな単純な話ではないのです。
複数の処理を同時に行えるのが、マルチプロセッサーの強みなのですが、
逆に複数の処理を「効率良く」出来なければならない、という弱みもあります。
この「効率良く」というのが、各CPUを制御する「プログラム」に懸かっています。
例えば、、、
「御飯を食べながら、新聞を見て、なおかつテレビの情報を集める」
などという行動(処理)を人間(制御プログラム)が行うとします。
要領の良い人間であれば、そそくさと済ませられるのでしょうが、これが
不器用な人間だと、パニックに陥ってしまい、結果としては、逆に時間だけを
浪費する結果となります。
それなら、要領の良いプログラムを作ればいいやん!と思うでしょうが、
そうもいきません。並列処理のもうひとつのワナ、「依存関係」です。
依存関係というのは、Aが無いとBが出来ない、などといった関係で、
これが沢山あればあるほど、本来のマルチプロセッサーの強みである
同時処理は難しくなります。
先程の要領の良い人間(制御プログラム)が、車でドライブをするとしましょう。
助手席の人と会話をしながら、運転をする事は問題無く出来るでしょうが、
地図を開いて目的地を凝視することは出来ません。そんな事をすれば
間違いなく事故(バグ)になるからです。
いくら要領の良い人間でも、これは無理ですね。
一旦、車を停める(処理を止める)ことになります。
こういった依存関係は、ゲームプログラムにおいても例外ではなく、これを
<効率良く処理するのは、なかなかの至難の業です。次世代機における
ゲームプログラマーの腕の見せ所ですね。
「処理速度が速ければ、面白いゲームになる!」という訳ではありませんが、
速いに越したことはありません。
私も決して要領の良い人間ではありませんが、
本業だけは出来るだけ「効率良く」仕事をしたいもんです。
| 固定リンク
「プログラマー」カテゴリの記事
- Bug Fix (2012.05.25)
- 作業量を保存するの法則?(2012.05.24)
- 原点回帰 (2012.04.12)
- すばらしき中華料理の素(2012.03.19)
- やり過ぎにはご用心(2012.03.16)












コメント