ハイパースレッディング・テクノロジー(HTT)詳解
ハイパースレッディング・テクノロジー(HTT)は、
[インテル]]が開発したCPUの性能向上技術です。1つの物理的な
CPUコアを、複数の論理的なコアとして動作させることで、処理能力の向上を目指しています。
オペレーティングシステム]から見ると、物理コア数よりも多くのコアが存在するように見え、複数のスレッドや[[プロセスを同時に実行できるようになります。この論理的なコア数を論理コア数、物理的なコア数を物理コア数と呼びます。
HTTの仕組み
現代の
CPUは、命令パイプライン処理という手法を用いて処理速度を向上させています。これは、命令の読み込み、解釈、実行といった処理を複数の段階に分けて同時に行うことで、効率を高める技術です。しかし、各段階の処理能力には限界があり、例えば整数演算のパイプラインが稼働中でも、浮動小数点演算やマルチメディア演算のパイプラインが空いている場合があります。
HTTはこのような状況を改善するために開発されました。1つの物理コアに、命令の解釈や実行スケジューリングを行う装置を複数搭載することで、複数の論理コアを擬似的に作成します。これにより、空いているパイプラインを有効活用し、処理効率を高めることが期待できます。
HTTの有効性と限界
HTTの効果は、ソフトウェアの特性に大きく依存します。整数演算と浮動小数点演算を両方使うソフトウェアや、多くのスレッドを並列実行するソフトウェアでは、HTTによる性能向上が期待できます。特に、メモリアクセスの遅延がボトルネックとなっているプログラムにおいては、HTTがメモリアクセスの遅延を隠蔽することでスループットの改善に繋がります。
一方、小さなコード片を頻繁に実行したり、データの依存関係が強いソフトウェアでは、HTTの効果は限定的です。複数の論理コアが同じ
キャッシュメモリを共有するため、キャッシュの競合が発生し、かえって処理速度が低下する可能性があります。また、Windowsや
Linuxのような、多くのライブラリを呼び出すソフトウェアでは、HTTの効果が小さくなる傾向があります。
HTTの進化と実装
HTTは、当初NetBurstマイクロアーキテクチャで実装されましたが、その後Coreマイクロアーキテクチャでは一時的に採用されませんでした。これは、Coreマイクロアーキテクチャが
マルチコア化を前提とした設計だったためです。しかし、Nehalemマイクロアーキテクチャ以降、再びHTTが採用されています。
実装方法もアーキテクチャによって異なり、ItaniumプロセッサではSoEMT、
Intel Atomプロセッサではインオーダープロセッサ向けSMTとして実装されています。また、第12世代
インテルCPUから導入された高効率コア(Eコア)ではHTTはサポートされていません。
セキュリティに関する懸念
HTTは、セキュリティ上のリスクも指摘されています。
2005年には、悪意のあるスレッドが他のスレッドの情報を盗み出す可能性を示す論文が発表されました。また、2019年には、Intel
CPUにおけるマイクロアーキテクチャデータサンプリング脆弱性が公表され、HTTの無効化が対策の一つとして検討されています。ChromeOSでは、この脆弱性対策としてデフォルトでHTTが無効化されています。
まとめ
HTTは、
CPUの処理能力を向上させる効果的な技術ですが、その効果はソフトウェアの特性や実装方法に依存します。また、セキュリティ上のリスクも考慮する必要があります。そのため、多くのPCではBIOS設定などでHTTを有効/無効に切り替えることが可能です。HTTを使用する際には、これらの点を理解した上で適切な設定を行うことが重要です。