ハイパースレッディング、マルチコアによる並列処理とマルチスレッド処理の可能性
CPUは、コードを読み込んで演算などの処理を行います。従来のCPUは、コードを一つずつ読み込んで一つずつ処理していましたが、最近は同時に2つ以上のコードを同時(並列的)に処理するCPUが普及してきています。 ただし、CPUが「同時に複数のコードを処理できる」としても、ソフトの方がその機能を利用しなければ無意味です。 これに対し、ソフトウエアの方で計算処理を複数の人(スレッド)で「分担」するようプログラムすることもできます。例えば、1-50番の計算はスレッド1で、51-100番の計算はスレッド2で行うようにするのです。こうすれば、もし計算可能な人が2人いれば、一人で100題解くのに比べ2倍の効率(一人50題解けば良い)で計算問題を処理することができますね。そして、デュアルコアCPUは、この「計算する人」を2人持っているようなCPUなのです(ハイパースレッディングは、計算する人は一人だけど、他にいろいろお手伝いしてくれる助手が一人付く感じ)。 つまり、マルチコア・ハイパースレッディング環境でその特長を活かして効率よく処理を行いたければ、ソフトウエアの方も「同時に複数の処理を行う」ようにする必要がある、ということです。まあ、実際にはソフトウエアを管理するOS自体が「同時に複数の処理」を行う仕組みになっていることが多いので、そのようなOSでシングルスレッドのプログラムを動かす場合でもハイパースレッディングやマルチコアCPUは有効(「重い」ソフトを動かしても、他のプログラムへの影響が少なくなったり、GUIの反応が良くなる)なんですけどね。 |
戻る |