SMTによる性能向上は簡単ではない
SMT自体はわりと一般的な技法になりつつあるのだが、もちろん欠点もいくつかある。その最大のものは、性能が上がらない、ということだ。
先述のとおり、SMTは空いている実行ユニットを活用する技術だから、これが空いてないとオーバーヘッドが増えるだけである。実際、Pentium 4で採用されたNetburst Architectureの場合、Hyper-Threadingを使わない場合の実行ユニットの利用率は平均30%程度。Hyper-Threadingを有効にすることで、これが50%程度まで高まった、なんていう解析結果がインテル自身から語られるほどに、実行ユニットが空いていたから性能改善の余地が大きかった。
ところが、実行ユニットを効率よく使うNehalemの場合、特にWindows XPあたりで通常のデスクトップアプリケーションを使うと、露骨に性能が落ちるという状況に陥った。このあたりはWindows 7になって、同時に動くプログラムの数が増えたことで多少緩和された(Hyper-Threadingを有効にして性能が落ちるケースはほとんどなくなった)が、30%もの性能アップが見込めるケースはほとんどない。
また消費電力は、特に実行ユニット以外の部分が、2スレッド分の管理が必要になったこともあってむしろ増えており、性能/消費電力比の観点ではむしろ悪化しているケースも見られた。それにも関わらず、インテルがNehalem世代でHyper-Threadingを再び有効にしたのは、特にサーバー向けの分野で大量のデータを処理する際に、Hyper-Threadingによるレイテンシー遮蔽の効果が効きやすいからだ。逆に言えば、デスクトップやモバイルでは、あまり効果が見られないことになる。
もうひとつ致命的なのは、システム全体としての性能は上がっても、1スレッドあたりの性能は変わらないことだ。先ほど「30%向上」と書いたが、あくまでもシステム全体での話である。もっともこれに関しては「いや、ある程度体感できる」という人もいるかも知れないが、これは別の事情による。
特にWindows XP以降では、OSが常時さまざまな処理をしており、これによるオーバーヘッドが馬鹿にならない。そのため1スレッドのCPU(例えばCeleron)を使っていると、アプリケーションの実行中に頻繁にOS関係の処理が割り込むことになり、見かけ上アプリケーションの動作が遅くなっていた。
ところがHyper-Threadingを有効にすると、こうしたOS関係の処理が別スレッドで実行できるため、アプリケーション処理のスレッドがフルに動けるようになる、というものだ。ただ、これは別にSMTの利点ではなく、マルチコアCPUでも同じ効果が得られる話であり、SMTそのもので1スレッドの性能が上がるわけではない。
インテルはこの分野でも研究を重ねており、「Speculative Pseudo Multi-Threading」「Helper Thread」「Victim Thread」などと呼ばれる「仮想マルチスレッド」の仕組みを研究していた。これを簡単に言えば、あるプログラムを複数のスレッドで、同時に実行するというものである。
例えば、あるプログラムがデータA、B、Cを読み込んでから処理する場合、プログラムのメインスレッドに先立って、Helper ThreadがあるものはAを、あるものはBを、別のものはCをと、それぞれ取り込む。そのため、メインのスレッドが動くときには、A~Cのデータはすでに読み込まれてキャッシュ中にあるため、最小限のレイテンシーで実行できるという壮大なものだ。
ただし、言うは易く行なうは難し。性能が上がるケースもあれば下がるケースもあるといった具合に、必ずしもうまくいかなかった。インテルはこれを、「Prescott」(90nm世代Pentium 4)に続く「Tejas」世代で本格的に活用する予定だったようだが、Tejasが消えたのと連動してこちらも実用化の目処がなくなった(関連記事)。そんなわけで、今のところSMTによる1スレッドの性能改善方法は、見当たらないままである。
性能の改善率が平均30%程度、というのも問題であり、これもあってAMDは次世代の「Bulldozer」コアで、SMTではなく独自のデュアルコア構成を採用する。必ずしもSMTは万能ではないわけだ。
この連載の記事
-
第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ロードマップ -
第764回
PC
B100は1ダイあたりの性能がH100を下回るがAI性能はH100の5倍 NVIDIA GPUロードマップ -
第763回
PC
FDD/HDDをつなぐため急速に普及したSASI 消え去ったI/F史 -
第762回
PC
測定器やFDDなどどんな機器も接続できたGPIB 消え去ったI/F史 -
第761回
PC
Intel 14Aの量産は2年遅れの2028年? 半導体生産2位を目指すインテル インテル CPUロードマップ -
第760回
PC
14nmを再構築したIntel 12が2027年に登場すればおもしろいことになりそう インテル CPUロードマップ -
第759回
PC
プリンター接続で業界標準になったセントロニクスI/F 消え去ったI/F史 -
第758回
PC
モデムをつなぐのに必要だったRS-232-CというシリアルI/F 消え去ったI/F史 - この連載の一覧へ