このページの本文へ

ロードマップでわかる!当世プロセッサー事情第73回

CPU性能向上のトレンド マルチコアの理論と限界

2010年10月18日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/)

  • この記事をはてなブックマークに追加
  • 本文印刷

並列化への対応と同期処理がFSB方式の足かせに

 特に問題だったのは、性能面での足かせである。CPUの数を増やしても、無尽蔵に性能が上がるわけではないというのは、1967年に「アムダールの法則」として提唱されていた。CPUの数が増えても、そこで動かすプログラムの方が並列化に対応していないと効果がない、という話である。

 例えば図4のように、1CPUでしか実行できない処理A・Cと、複数のCPUで分散して実行できる処理Bがある場合を想定する。CPUが2つだと、処理Bは処理B1/B2に分割することで半分の時間で済むが、処理A・Cは分割できないので、トータルの処理時間はそれほど減らない、というものである。

図4
図4 並列処理できる処理が少ないと、CPUを増やしても性能はあまりあがらない

 そのため、いかにして並列処理できるようにプログラムを記述するかが、ポイントになる。だが、これはあくまでもひとつのプログラムを分割する話だ。図5のように、同時に2つ以上のプログラムが走っていれば、それぞれを別々のCPUに割り当てることで、性能は見かけ上倍になるわけだ。

図5
図5 並列処理で見かけ上の性能を倍にできたケース

 ただし、(アムダールの法則を含めて)ここまでの話では考慮していないことがある。それは同期の時間である。例えば図4の場合、本来は入らない「処理B1とB2を並行に実行させる」「処理B1とB2の両方が終わることを確認する」という、2つの処理を同期させる処理が必ず入ることになる(図6)。この同期に要する時間が長いと、図6のようにさらに効率が落ちることになる。

図6
図6 図4に同期待ちの処理が入ると、さらに処理効率は低下する

 これは、図5のケースでも当てはまる。1CPUの場合は、OSがそれぞれを切り替えながら処理していたが、2CPUになると、2つのCPUにまたがる形でOSがそれぞれの処理を走らせることになり、結果として図7のように、ここでも見かけ上の処理性能が落ちることになる。FSBを利用してのMCMパッケージは、この同期に要する時間が長くなる、というのが最大の問題だったわけだ。

図7
図7 同期待ちにより並列処理が滞るケース

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン