このページの本文へ

前へ 1 2 3 4 次へ

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

Core iシリーズにも使われる「SMT」の利点と欠点

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

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

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

まずはSMTを理解するための基本
プロセスとスレッドの関係

 今回は「SMT」(Simultaneous MultiThreading、同期マルチスレッディング)の話をしてみたい。インテルではこれを「Hyper-Threading」と呼んでおり、以下では一般論の場合にはSMT、インテル製品に関する話題ではHyper-Threadingと、それぞれ称することにする。このSMTの技法はここ5回に渡って説明してきたパイプラインの改良そのものとは、ちょっと異なる方法論である。

 例えば、図1のようなデュアルコアCPUを考えてみよう。2次キャッシュがコア別に異なるのは、インテルの「Pentium D」やAMDの「Athlon 64 X2」「Athlon X2」など、共有なのが「Core Duo」以降のインテルのCoreマイクロ・アーキテクチャー製品になる。だが、この話では2次/3次キャッシュはあまり問題ではないので、ここでは省いている。

図1

図1 デュアルコアCPUのパイプラインの例

 このケースで「一番動いていないのはどこか?」と言うと、赤い枠で示した部分だ。ようするに実行ユニットに当たる部分で、データの依存関係の解消やらパイプラインストールやらと、何かと実行を妨げられる要素が多いから、ALUやLoad/Storeユニットがフルに動いている状況というのはそれほど多くない。というよりも、大半は寝ていると言っても過言ではない。

 もちろん最適化したプログラムを動かせば、実行ユニットの利用率はぐんと高まる。だがそうは言っても、OS上で動いている以上は定期的にスケジューラーにより別のプログラムが動いたり、割り込みが入ってその処理が優先されたりするから、本当にフルに動く、というケースはむしろマレと言ってもいい。

 では効率が低いALUやロードストアユニットを減らせば効率が上がるかというと、確かに効率は上がるのだが、今度はピーク性能が落ちてしまうため、全体としての処理性能はむしろ低下する傾向にある。

 そこで出てきたアイディアが、「2つ以上のスレッドを同時に実行させる」というものである。スレッドというのは、処理の流れと考えればいい。

  • プロセス(Process):ある特定のプログラムを動かすための環境一式
  • スレッド(Thread):あるプロセス内で、プログラムを実行する部分

 例えば以下の画面はCGレンダリングベンチマークテスト「CINEBENCH 11.5」の実行中のシーンだ。この場合、プロセスとは「CineBench 11.5全体」を指し、スレッドは「レンダリング中のオレンジ枠の正方形ひとつひとつ」になる。

CINEBENCH 11.5

CINEBENCH 11.5全体がプロセス、レンダリングを処理するオレンジ枠の正方形がそれぞれスレッド

 つまりCineBench 11.5の場合、上のケースでは13個のスレッドが動作している(12個の正方形のレンダリングに12、CineBench全体の管理に1)。簡単なプログラムの場合には、ひとつのプロセスにひとつのスレッドしか含まれていないこともある。

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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