まずは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)。簡単なプログラムの場合には、ひとつのプロセスにひとつのスレッドしか含まれていないこともある。
この連載の記事
-
第775回
PC
安定した転送速度を確保できたSCSI 消え去ったI/F史 -
第774回
PC
日本の半導体メーカーが開発協力に名乗りを上げた次世代Esperanto ET-SoC AIプロセッサーの昨今 -
第773回
PC
Sound Blasterが普及に大きく貢献したGame Port 消え去ったI/F史 -
第772回
PC
スーパーコンピューターの系譜 本格稼働で大きく性能を伸ばしたAuroraだが世界一には届かなかった -
第771回
PC
277もの特許を使用して標準化した高速シリアルバスIEEE 1394 消え去ったI/F史 -
第770回
PC
キーボードとマウスをつなぐDINおよびPS/2コネクター 消え去ったI/F史 -
第769回
PC
HDDのコントローラーとI/Fを一体化して爆発的に普及したIDE 消え去ったI/F史 -
第768回
PC
AIアクセラレーター「Gaudi 3」の性能は前世代の2~4倍 インテル CPUロードマップ -
第767回
PC
Lunar LakeはWindows 12の要件である40TOPSを超えるNPU性能 インテル CPUロードマップ -
第766回
デジタル
Instinct MI300のI/OダイはXCDとCCDのどちらにも搭載できる驚きの構造 AMD GPUロードマップ -
第765回
PC
GB200 Grace Blackwell SuperchipのTDPは1200W NVIDIA GPUロードマップ - この連載の一覧へ