まずは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次キャッシュはあまり問題ではないので、ここでは省いている。
このケースで「一番動いていないのはどこか?」と言うと、赤い枠で示した部分だ。ようするに実行ユニットに当たる部分で、データの依存関係の解消やらパイプラインストールやらと、何かと実行を妨げられる要素が多いから、ALUやLoad/Storeユニットがフルに動いている状況というのはそれほど多くない。というよりも、大半は寝ていると言っても過言ではない。
もちろん最適化したプログラムを動かせば、実行ユニットの利用率はぐんと高まる。だがそうは言っても、OS上で動いている以上は定期的にスケジューラーにより別のプログラムが動いたり、割り込みが入ってその処理が優先されたりするから、本当にフルに動く、というケースはむしろマレと言ってもいい。
では効率が低いALUやロードストアユニットを減らせば効率が上がるかというと、確かに効率は上がるのだが、今度はピーク性能が落ちてしまうため、全体としての処理性能はむしろ低下する傾向にある。
そこで出てきたアイディアが、「2つ以上のスレッドを同時に実行させる」というものである。スレッドというのは、処理の流れと考えればいい。
- プロセス(Process):ある特定のプログラムを動かすための環境一式
- スレッド(Thread):あるプロセス内で、プログラムを実行する部分
例えば以下の画面はCGレンダリングベンチマークテスト「CINEBENCH 11.5」の実行中のシーンだ。この場合、プロセスとは「CineBench 11.5全体」を指し、スレッドは「レンダリング中のオレンジ枠の正方形ひとつひとつ」になる。
つまりCineBench 11.5の場合、上のケースでは13個のスレッドが動作している(12個の正方形のレンダリングに12、CineBench全体の管理に1)。簡単なプログラムの場合には、ひとつのプロセスにひとつのスレッドしか含まれていないこともある。

この連載の記事
-
第828回
PC
TOP500の4位に躍り出たJUPITER Boosterは効率と性能/消費電力比が驚嘆に値する -
第827回
PC
オーディオとモデムを普及させるのに一役買ったAMRとACR 消え去ったI/F史 -
第826回
PC
PCIeリリース直前に登場しわずか1年の短命に終わったCSA 消え去ったI/F史 -
第825回
PC
バッファがあふれると性能が低下する爆弾を抱えるもライセンスが無料で広く普及したAGP 消え去ったI/F史 -
第824回
PC
AT互換機が普及するきっかけとなったPCIは、MCAの失敗から生まれた 消え去ったI/F史 -
第823回
PC
Intel 18AはIntel 3と比較して性能/消費電力比が15%向上 インテル CPUロードマップ -
第822回
PC
爆発的に普及したことが逆に寿命を縮める結果になったVL-Bus 消え去ったI/F史 -
第821回
PC
IBMのMCAバスに対抗してAT互換機メーカー9社が共同で開発したEISA 消え去ったI/F史 -
第820回
PC
LEDが半導体の救世主に? チップレット同士の接続を電気信号から光信号へ ISSCC 2025詳報 -
第819回
PC
次期Core UltraシリーズのPanther Lakeは今年後半に量産開始 インテル CPUロードマップ -
第818回
PC
DDRを併用し低価格・低消費電力を実現したAIプロセッサー「SN40L」 ISSCC 2025詳報 - この連載の一覧へ