ハイパースレッディング

このHTTの高レベルの描写では、命令はRAMからフェッチされ(異なる色のボックスは4つの異なるプロセスの命令を表す)、フロントエンドによってデコードされ並べ替えられ(白いボックスはパイプラインバブルを表す)、同じクロックサイクル中に2つの異なるプログラムからの命令を実行できる実行コアに渡されます。[ 1 ] [ 2 ] [ 3 ]

ハイパースレッディング(正式名称はハイパースレッディング・テクノロジーまたはHTテクノロジー、略称はHTTまたはHT)は、 x86マイクロプロセッサ上で実行される計算の並列化(複数のタスクを同時に実行すること)を向上させるために使用される、Intel独自同時マルチスレッディング(SMT)実装です。 2002年2月にXeonサーバープロセッサに、2002年11月にPentium 4デスクトッププロセッサに導入されました。 [ 4 ]その後、IntelはItaniumAtomCoreシリーズCPUなどにこのテクノロジーを搭載してきました。[ 5 ]

物理的に存在するプロセッサコアごとに、オペレーティングシステムは2つの仮想(論理)コアをアドレス指定し、可能な場合はそれらのコア間でワークロードを分散します。ハイパースレッディングの主な機能は、パイプライン内の独立した命令の数を増やすことです。これは、複数の命令が別々のデータに対して並列に動作するスーパースカラーアーキテクチャを活用します。HTTでは、1つの物理コアがオペレーティングシステムに対して2つのプロセッサとして認識され、コアごとに2つのプロセスを同時にスケジューリングできます。さらに、2つ以上のプロセスが同じリソースを使用することもできます。つまり、あるプロセスのリソースが利用できない場合でも、別のプロセスのリソースが利用可能であれば、そのプロセスが処理を続行できます。

ハイパースレッディングは、オペレーティングシステムで同時マルチスレッドのサポートを必要とするだけでなく、ハイパースレッディングに特化して最適化されたオペレーティングシステムでのみ適切に利用できます。[ 6 ]

概要

ハイパースレッディングテクノロジーを搭載したインテルPentium 4プロセッサの3GHzモデル[ 7 ]

ハイパースレッディング・テクノロジーは、インテルが導入した同時マルチスレッド技術の一種であり、その背後にある概念はサン・マイクロシステムズによって特許取得されています。アーキテクチャ的には、ハイパースレッディング・テクノロジーを搭載したプロセッサは、コアごとに2つの論理プロセッサで構成され、各論理プロセッサは独自のプロセッサ・アーキテクチャ状態を持ちます。各論理プロセッサは、同じ物理コアを共有する他の論理プロセッサとは独立して、個別に停止、割り込み、または特定のスレッドの実行を指示することができます。[ 8 ]

従来の2つの独立した物理プロセッサを使用するデュアルプロセッサ構成とは異なり、ハイパースレッドコア内の論理プロセッサは実行リソースを共有します。これらのリソースには、実行エンジン、キャッシュ、システムバスインターフェースが含まれます。リソースの共有により、2つの論理プロセッサは互いにより効率的に連携し、論理プロセッサはストールした論理コアからリソースを借りることができます(両方の論理コアが同じ物理コアに関連付けられていると仮定)。プロセッサは、現在のスレッドの処理を完了するために要求したデータを待機する必要がある場合、ストールします。ハイパースレッドプロセッサ(マルチコアプロセッサ)の使用によるメリットの度合いは、ソフトウェアのニーズ、およびソフトウェアとオペレーティングシステムがプロセッサを効率的に管理するようにどれだけ適切に記述されているかによって異なります。[ 8 ]

ハイパースレッディングは、プロセッサの特定のセクション(アーキテクチャ状態を保存するセクション)を複製することで機能しますが、主要な実行リソースは複製しません。これにより、ハイパースレッディングプロセッサは、ホストオペレーティングシステムに対して通常の「物理」プロセッサに加えて追加の「論理」プロセッサとして認識されます(HTT非対応オペレーティングシステムは2つの「物理」プロセッサとして認識します)。これにより、オペレーティングシステムは2つのスレッドまたはプロセスを同時に適切にスケジュールできます。ハイパースレッディングプロセッサの実行リソースが現在のタスクによって使用されていない場合、特にプロセッサがストールしている場合、それらの実行リソースは別のスケジュールされたタスクを実行するために使用できます。(プロセッサは、キャッシュミス分岐予測ミス、またはデータ依存性のためにストールする可能性があります。)[ 9 ]

この技術は、オペレーティングシステムやプログラムに対して透過的です。ハイパースレッディングを活用するために最低限必要なのは、オペレーティングシステムにおける対称型マルチプロセッシング(SMP)のサポートです。これは、論理プロセッサがオペレーティングシステムにとって物理プロセッサと何ら変わらないように見えるためです。

ハイパースレッディング対応のマルチプロセッサシステムでは、オペレーティングシステムの動作を最適化することができます。たとえば、ハイパースレッディングに対応した 2 つの物理プロセッサ (合計 4 つの論理プロセッサ) を備えた SMP システムを考えてみましょう。オペレーティングシステムのスレッドスケジューラがハイパースレッディングを認識しない場合、4 つの論理プロセッサすべてを同じように扱います。実行可能なスレッドが 2 つだけの場合、同じ物理プロセッサに属する 2 つの論理プロセッサにそれらのスレッドをスケジュールすることが選択されることがあります。そのプロセッサは非常にビジーになり、実行リソースを共有することになりますが、もう 1 つのプロセッサはアイドル状態のままになります。その結果、スレッドが異なる物理プロセッサにスケジュールされた場合よりもパフォーマンスが低下します。この問題は、スケジューラを改良して論理プロセッサを物理プロセッサとは異なる方法で扱うようにすることで回避できます。これは、ある意味で、NUMAシステムに必要なスケジューラの変更の限定的な形です。

歴史

現在、汎用コンピュータにおけるハイパースレッディングとして知られている技術について記述した最初の論文は、エドワード・S・デイビッドソンとレナード・E・シャーによって1973年に発表されました。[ 10 ]

Denelcor社は1982年にHeterogeneous Element Processor (HEP)でマルチスレッド化を導入しました。HEPパイプラインは、同一プロセスからの複数の命令を保持できませんでした。パイプラインには、あるプロセスから同時に1つの命令しか存在できませんでした。あるプロセスからの命令がパイプをブロックした場合、パイプラインが空になった後も、他の​​プロセスからの命令は継続して処理されます。

ハイパースレッディングを支える技術の米国特許は、 1994年11月にサン・マイクロシステムズのケネス・オキンに付与されました。当時はCMOSプロセス技術がまだ十分に進んでおらず、コスト効率の高い実装は不可能でした。[ 11 ]

Intel は、2002 年に Foster MP ベースのXeonで、x86 アーキテクチャ プロセッサにハイパースレッディングを実装しました。これは同じ年に 3.06 GHz Northwood ベースの Pentium 4 にも含まれ、その後、すべての Pentium 4 HT、Pentium 4 Extreme Edition、Pentium Extreme Edition プロセッサの機能として残っています。Pentium 4 モデル ラインの後継である Intel Core および Core 2 プロセッサ ライン (2006 年) では、ハイパースレッディングは使用されませんでした。Coreマイクロアーキテクチャに基づくプロセッサにハイパースレッディングがなかったのは、Core マイクロアーキテクチャが古いP6 マイクロアーキテクチャの後継であったためです。P6 マイクロアーキテクチャは、Pentium プロセッサの初期のイテレーション、つまりPentium ProPentium IIPentium III (および当時のCeleronおよびXeon派生製品)で使用されていました。 Windows 2000 SP3 およびWindows XP SP1では、ハイパースレッディングのサポートが追加されました。

インテルは2008年11月にNehalem マイクロアーキテクチャ(Core i7) をリリースし、ハイパースレッディングが復活しました。第 1 世代の Nehalem プロセッサには 4 つの物理コアがあり、実質的に 8 つのスレッドにスケーリングされていました。それ以降、2 コアと 6 コアのモデルがリリースされ、それぞれ 4 スレッドと 12 スレッドにスケーリングされています。[ 12 ]初期のIntel Atomコアはインオーダー プロセッサであり、ハイパースレッディング機能を備えているものもあり、低電力のモバイル PC や低価格のデスクトップ PC 向けでした。[ 13 ] Itanium 9300 、強化されたハイパースレッディング テクノロジにより、プロセッサあたり 8 つのスレッド (コアあたり 2 つのスレッド) で発売されました。次のモデルである Itanium 9500 (Poulson) は 12 ワイド イシュー アーキテクチャを採用し、8 つの CPU コアがあり、ハイパースレッディングによりさらに 8 つの仮想コアをサポートしています。[ 14 ] [ 15 ] [ 16 ]

パフォーマンスに関する主張

インテルによれば、最初のハイパースレッディングの実装では、同等の非ハイパースレッディング プロセッサよりもダイ面積が5% しか大きくならなかったが、パフォーマンスは 15~30% 向上したという。 [ 17 ] [ 18 ]インテルは、同時マルチスレッドではない他の同一の Pentium 4 と比較して、最大 30% のパフォーマンス向上を実現したと主張している。Tom 's Hardware は次のように述べている。「場合によっては、HT をオンにして 3.0 GHz で動作する P4 が、HT をオフにして 3.6 GHz で動作する P4 に勝つことさえある。」[ 19 ]インテルはまた、ハイパースレッディング対応の Pentium 4 プロセッサにより、一部の人工知能アルゴリズムで大幅なパフォーマンス向上が実現したと主張している。

ハイパースレッディングの性能史は、当初は概して良い点と悪い点が混在していました。2002年11月に発表された高性能コンピューティングに関するある論評では、次のように述べられています。[ 20 ]

ハイパースレッディングは一部のMPIアプリケーションのパフォーマンスを向上できますが、すべてのアプリケーションのパフォーマンスを向上できるわけではありません。クラスタ構成、そして最も重要な点として、クラスタ上で実行されるアプリケーションの性質に応じて、パフォーマンスの向上は変化し、場合によってはマイナスになることもあります。次のステップは、パフォーマンスツールを使用して、どの領域がパフォーマンス向上に寄与し、どの領域がパフォーマンス低下に寄与しているかを把握することです。

その結果、パフォーマンスの向上はアプリケーションに大きく依存します。[ 21 ]しかし、プロセッサの完全な負荷を必要とする2つのプログラムを実行している場合、ハイパースレッディング・テクノロジを有効にすると、実際にはどちらか一方または両方のプログラムの速度がわずかに低下するように見えることがあります。[ 22 ]これは、 Pentium 4のリプレイシステムが貴重な実行リソースを占有し、2つのプログラム間でプロセッサリソースを均等化することで、実行時間が変動するためです。Pentium 4「Prescott」およびXeon「Nocona」プロセッサには、リプレイシステムに必要な実行時間を短縮し、パフォーマンスの低下を完全に克服するリプレイキューが搭載されています。[ 23 ]

インテルによる2009年11月の分析によると、ハイパースレッディングのパフォーマンスへの影響は、スレッドの実行によって全体的なスループットが大幅に向上しない場合、全体的なレイテンシの増加につながります。スループットの向上はアプリケーションによって異なります[ 21 ]。言い換えれば、ハイパースレッディングによって全体的な処理レイテンシが大幅に増加しますが、ハイパースレッディングによって提供される追加のハードウェアリソース利用率を効果的に使用できる同時スレッドが増えるにつれて、悪影響は小さくなります。[ 24 ]同様のパフォーマンス分析は、ネットワークインターフェイスコントローラー(NIC)によって生成される割り込み要求の処理など、ネットワークトラフィックの管理に関連するタスクを処理するためにハイパースレッディングを使用する場合の効果についても利用できます。 [ 25 ]別の論文では、割り込み処理にハイパースレッディングを使用してもパフォーマンスの向上は見られないと主張されています。[ 26 ]

欠点

最初のHTプロセッサがリリースされた当時、多くのオペレーティングシステムはハイパースレッディング技術に最適化されていませんでした(例:Windows 2000や2.4より前のLinux)。[ 27 ]

2006年、ハイパースレッディングはエネルギー効率の悪さを批判されました。[ 28 ]例えば、低消費電力CPU設計に特化したARMは、同時マルチスレッドは通常のデュアルコア設計に比べて最大46%多くの電力を消費する可能性があると述べています。さらに、SMTではキャッシュスラッシングが42%増加するのに対し、デュアルコアでは37%減少すると主張しています。[ 29 ]

2010年にARMは将来のチップに同時マルチスレッドを搭載する可能性があると発表したが[ 30 ]、2012年の64ビット設計が採用されたため却下された。[ 31 ] ARMは2018年にSMTコアを生産した。[ 32 ]

2013年、インテルはSilvermontプロセッサコアでSMTを廃止し、アウトオブオーダー実行を採用しました。これは、SMTでコア数を減らすよりも、アウトオブオーダー実行の方がパフォーマンスと電力効率が向上することがわかったためです。[ 33 ]

2017年、IntelのSkylakeおよびKaby Lakeプロセッサにハイパースレッディングの実装にバグがあり、データ損失を引き起こす可能性があることが明らかになりました。[ 34 ]その後、この問題に対処するためにマイクロコードのアップデートがリリースされました。[ 35 ]

2019年、Coffee Lakeで、Intelは、最上位のCore i9パーツまたはPentium Gold CPUを除く、主流のCore i7デスクトッププロセッサへのハイパースレッディングの組み込みを一時的に中止しました。[ 36 ]また、 HTを無効にすることで軽減できる新しいCPU脆弱性攻撃が明らかになったため、ハイパースレッディングを無効にすることを推奨し始めました。 [ 37 ]

安全

2005年5月、コリン・パーシバルは、Pentium 4上の悪意のあるスレッドがタイミングベースのサイドチャネル攻撃を用いて、キャッシュを共有する別のスレッドのメモリアクセスパターンを監視し、暗号情報を盗むことができることを実証しました。これは実際にはタイミング攻撃ではありません。悪意のあるスレッドは自身の実行時間のみを測定するからです。この問題の解決策としては、プロセッサがキャッシュの追い出し戦略を変更するか、オペレーティングシステムが同じ物理コア上で異なる権限を持つスレッドの同時実行を阻止することが考えられます。[ 38 ] 2018年、OpenBSDオペレーティングシステムは、 Foreshadow/L1TFの脆弱性によって「アプリケーションから他のソフトウェアへのデータ漏洩の可能性を回避するため」ハイパースレッディングを無効化しました。[ 39 ] [ 40 ] 2019年には、一連の脆弱性が発見され、セキュリティ専門家はすべてのデバイスでハイパースレッディングを無効にすることを推奨しました。[ 41 ]

参照

参考文献

  1. ^ Stokes, Jon (2002年10月3日). 「マルチスレッディング、スーパースレッディング、ハイパースレッディング入門」 Ars Technica pp.  2– 3 . 2015年9月30日閲覧
  2. ^ Deborah T. Marr、Frank Binns、David L. Hill、Glenn Hinton、David A. Koufaty、J. Alan Miller、Michael Upton (2006年12月12日). 「ハイパースレッディング技術のアーキテクチャとマイクロアーキテクチャ」(PDF) . cs.sfu.ca. 2015年9月23日時点のオリジナル(PDF)からのアーカイブ。 2015年9月30日閲覧
  3. ^ Anand Lal Shimpi (2012年10月5日). 「Haswellフロントエンド - IntelのHaswellアーキテクチャの分析」 . AnandTech . 2012年10月7日時点のオリジナルよりアーカイブ2015年9月30日閲覧。
  4. ^ 「Intel Pentium 4 3.06GHz CPU with Hyper-Threading Technology: Killing Two Birds with a Stone.」 X-bit labs. 2014年5月31日時点のオリジナルよりアーカイブ。 2014年6月4日閲覧
  5. ^ 「インテル® ハイパースレッディング・テクノロジー(インテル® HT テクノロジー)」。インテル。 2021年10月24日閲覧
  6. ^ HT テクノロジー搭載インテル Pentium 4 プロセッサーのインテル必須コンポーネント互換性リストには、ハイパースレッディング テクノロジーの最適化を含むオペレーティング システムのリストが含まれています。これには、Windows XP Professional 64、Windows XP MCE、Windows XP Home、Windows XP Professional、COSIX Linux 4.0、RedHat Linux 9 (Professional 版および Personal 版)、RedFlag Linux Desktop 4.0、SuSe Linux 8.2 (Professional 版および Personal 版) などの一部の Linux バージョンが含まれます。
  7. ^ 「Intel プロセッサー仕様ファインダー: SL6WK」
  8. ^ a b Thomadakis, Michael E. (2011年3月17日). 「NehalemプロセッサとNehalem-EP SMPプラットフォームのアーキテクチャ」(PDF) . テキサスA&M大学. p. 23. 2014年8月11日時点のオリジナル(PDF)からアーカイブ。 2014年3月21日閲覧
  9. ^ヘネシー, ジョン・L.; パターソン, デイビッド・A. (2017年12月7日).コンピュータアーキテクチャ:定量的アプローチ.アサノヴィッチ, クルステ, バコス, ジェイソン・D., コルウェル, ロバート・P., バッタチャルジー, アビシェク, 1984-, コンテ, トーマス・M., 1964- (第6版). ケンブリッジ, マサチューセッツ州. ISBN 978-0128119051. OCLC  983459758 .{{cite book}}: CS1 メンテナンス: 場所の発行元が見つかりません (リンク)
  10. ^「パイプライン処理によるマルチミニプロセッサシステム実装」、Leonard Shar、Edward Davidson著、IEEE Computer、1974年2月、pp. 42-51、第7巻https://www.computer.org/csdl/magazine/co/1974/02/4251/13rRUyoyhIt
  11. ^ Okin, Kenneth (1994年11月1日)、米国特許: 5361337 - コンピュータシステムにおけるプロセスの迅速な切り替え方法および装置、 2015年9月21日時点のオリジナルからアーカイブ、 2016年5月24日閲覧
  12. ^ 「インテル® Core™ i7 プロセッサー エクストリーム・エディションによる究極のゲーム体験」 www.intel.com 。 2008年12月1日時点のオリジナルよりアーカイブ
  13. ^ 「Intel® Atom™ プロセッサー マイクロアーキテクチャー」 Intel.com、2011年3月18日。 2011年4月5日閲覧
  14. ^ 「Intel、Itanium Poulsonの新機能を公開」 Tomshardware.com、2011年8月24日。 2017年7月2日閲覧
  15. ^ 「サーバープロセッサインデックスページ」 Intel.com、2011年3月18日。 2011年4月5日閲覧
  16. ^ 「Intel Xeon プロセッサー 5500 シリーズ」 . Intel.com . 2011年4月5日閲覧
  17. ^ 「ハイパースレッディング・テクノロジー」(PDF) . Intel Technology Journal 06 ( 1). 2012年2月14日. ISSN 1535-766X . 2012年10月19日時点のオリジナル(PDF)からのアーカイブ 
  18. ^ 「アプリケーションにおけるハイパースレッディング・テクノロジの有効性を判断する方法」software.intel.com、 2011年4月28日。2010年2月2日時点のオリジナルよりアーカイブ
  19. ^ 「要約:場合によってはP4 3.0HTが3.6GHzバージョンに勝る:シングルCPUでデュアルオペレーション:ハイパースレッディングテクノロジ搭載P4 3.06GHz」。Tomshardware.com。2002年11月14日。 2011年4月5日閲覧
  20. ^ Tau Leng、Rizwan Ali、Jenwei Hsieh、Christopher Stanton (2002年11月). 「高性能コンピューティングクラスターにおけるハイパースレッディングの調査」(PDF) . Dell. p. 4. 2012年11月12日閲覧.
  21. ^ a b Joel Hruska (2012年7月24日). 「パフォーマンスの最大化:ハイパースレッディングとソフトウェアアップデートの効果の比較」 extremetech.com . 2015年3月2日閲覧
  22. ^ 「CPUパフォーマンス評価 - ベンチマーク - Pentium 4 2.8および3.0」 . users.telenet.be . 2021年2月24日時点のオリジナルよりアーカイブ。 2011年4月12日閲覧
  23. ^ 「Replay: Unknown Features of the NetBurst Core. Page 15」 . Replay: Unknown Features of the NetBurst Core . Xbitlabs. 2011年5月14日時点のオリジナルよりアーカイブ。 2011年4月24日閲覧
  24. ^ Valles, Antonio (2009年11月20日). 「Performance Insights to Intel Hyper-Threading Technology」 . Intel . 2015年2月17日時点のオリジナルよりアーカイブ2015年2月26日閲覧。
  25. ^ 「ネットワークのチューニングとパフォーマンス」calomel.org2013年11月12日。 2015年2月26日閲覧
  26. ^ 「Linuxカーネルドキュメント:Linuxネットワークスタックのスケーリング」 . kernel.org . 2014年12月1日. 2015年3月2日閲覧. CPUごとの負荷はmpstatユーティリティで確認できますが、ハイパースレッディング(HT)対応プロセッサでは、各ハイパースレッドが個別のCPUとして表されることに注意してください。割り込み処理に関しては、初期テストではHTによるメリットが見られなかったため、キューの数はシステム内のCPUコア数に制限してください。
  27. ^ 「ハイパースレッディング・テクノロジー - ハイパースレッディング・テクノロジー向けの最適化が組み込まれたオペレーティング・システム」 Intel.com、2011年9月19日。 2012年2月29日閲覧
  28. ^持続可能な実践:概念、方法論、ツール、アプリケーション. 情報資源管理協会. 2013年12月. 666ページ. ISBN 9781466648524
  29. ^ 「ARMはハイパースレッディングを支持しない」 theinquirer.net、2006年8月2日。2009年9月6日時点のオリジナルよりアーカイブ2012年2月29日閲覧。
  30. ^ Jermoluk, Tom (2010年10月13日). 「About MIPS and MIPS | TOP500 Supercomputing Sites」 . Top500.org . 2011年6月13日時点のオリジナルよりアーカイブ2011年4月5日閲覧。
  31. ^ 「ARM、サーバーおよびスマートフォン向け初の64ビットプロセッサコアを発表」 Tech Design Forum、2012年10月30日。
  32. ^ 「Arm、初のSMT対応Cortexコアを発表 | bit-tech.net」 . bit-tech.net . 2023年12月2日閲覧
  33. ^ Rik Myslewski (2013年5月8日). 「Intel初のモバイル向けプロセッサ「Silvermont」の真相」 The Register . 2014年1月13日閲覧
  34. ^ Chirgwin, Richard (2017年6月25日). 「IntelのSkylakeとKaby Lake CPUには厄介なハイパースレッディングバグがある」 The Register . 2017年7月4日閲覧
  35. ^ 「Skylake、Kaby Lakeチップ、ハイパースレッディングを有効にするとクラッシュするバグ発生」 Ars Technica、2017年6月26日。 2017年11月25日閲覧
  36. ^ Cutress, Ian (2019年4月23日). 「Intel 第9世代Coreプロセッサー:デスクトップおよびモバイル向け45W CPU全機種発表」 AnandTech . 2019年4月23日時点のオリジナルよりアーカイブ
  37. ^ Armasu, Lucian (2019年5月14日). 「Intelの新たなSpectreに類似した欠陥は2008年以降に製造されたチップに影響を与える」 . Tom's Hardware . 2019年8月4日時点のオリジナルよりアーカイブ。
  38. ^ Percival, Colin (2005年5月14日). 「Cache Missing for Fun and Profit」(PDF) . Daemonology.net . 2016年6月14日閲覧
  39. ^ 「OpenBSD、CPUデータ漏洩の懸念からIntelのハイパースレッディングを無効化」 。 2018年8月24日閲覧
  40. ^ "「すべての Intel BIOS で SMT/ハイパースレッディングを無効にする」 - MARC」 . marc.info . 2018 年8 月 24 日閲覧
  41. ^ Greenberg, Andy (2019年5月14日). 「メルトダウン再来:Intelの欠陥によりハッカーが数百万台のPCから秘密情報を盗み出すことが可能に」 WIRED . 2019年5月14日閲覧