11

HT/SMT の背後にある主なアイデアは、1 つのスレッドが停止したときに、同じコアの別のスレッドがそのコアの残りのアイドル時間を取り込んで透過的に実行できるというものでした。

2013 年、Intel は SMT を廃止し、Silvermont プロセッサ コアのアウトオブオーダー実行を支持しました。これによりパフォーマンスが向上することがわかったためです。

ARM は SMT をサポートしなくなりました (エネルギー上の理由から)。AMD はそれをサポートしていませんでした。実際には、それをサポートするさまざまなプロセッサがまだあります。

私の見解では、データとアルゴリズムがキャッシュ ミスとそれに続く処理の失速を何としてでも回避するように構築されている場合、HT はマルチコア システムの冗長な要素になるのでしょうか? 2 つの HyperThreads の個別のハードウェアが同じ物理コア内に存在するため、関連するコンテキスト スイッチングのオーバーヘッドが少ないことは理解していますが、これがコンテキスト スイッチングをまったく行わないよりも優れているとは思えません。

私は、HyperThreadingが必要になるということは、ソフトウェア設計に欠陥があることを示していると示唆しています。ここに欠けているものはありますか?

4

5 に答える 5

6
  1. すべてのプログラマーが、効率的でキャッシュに適したプログラムを作成するのに十分な知識、時間、およびその他の多くのことを持っているわけではありません。ほとんどの場合、重要な部分だけが必要に応じて最適化されます。他の部分には多くのキャッシュミスがある可能性があります

  2. プログラムがキャッシュ効率を念頭に置いて作成されたとしても、キャッシュ ミスを完全になくすことはできません。キャッシュの可用性は、実行時にのみ認識される動的な情報であり、プログラマーもコンパイラーも、メモリ アクセスを最適化するためにそれを認識していません。

    • Itanium が失敗した理由の 1 つは、キャッシュの予測不能性です。コンパイラは算術演算の順序を変更できますが、マルチスレッド環境でこれらのキャッシュ情報を推測して、メモリのロード/ストアを効率的に順序変更することはできません。
    • キャッシュ ミスが発生するたびに、何百ものサイクルが無駄になり、他の目的に役立つ可能性があります。一部の CPU はアウトオブオーダー実行(OoO) を行います。しかし、OoO の実行にも限界があり、ある時点でブロックされます。すべてのメモリの問題が解決されるのを待っている間、別の CPU スレッドに切り替えて実行を続けることができます。
  3. Peter Cordes が言ったように、OoO が役に立たない、分岐予測ミスや単純に低い命令レベルの並列処理など、他にも避けられないストールがあります。実行前にそれらを解決する方法はありません

  4. 現在SMTを使用しているのはインテルだけではありません。AMD Bulldozerには、部分的な SMT であるモジュールのマルチスレッド化があります。SPARC、MIPS、PowerPC など、SMT を使用するアーキテクチャは他にもまだたくさんあります。12 コア 96 スレッドのPOWER8 CPUや SPARC T3 のように、コアあたり 8 または 16 スレッドの CPU さえあります。

    AMD モジュールのマルチスレッド

    https://en.wikipedia.org/wiki/Simultaneous_multithreading#Modern_commercial_implementations

アップデート:

AMD は現在、 Zen マイクロアーキテクチャで完全な SMT に移行しています

ゼンSMT

于 2014-04-15T10:02:46.403 に答える
4

コードがマシン上でどれだけ適切に記述され実行されていても、CPU が何かが起こるのを待っているだけの比較的長い CPU アイドル時間が発生します。キャッシュ ミスは問題のサブセットであり、I/O やユーザー入力などを待機すると、CPU で長時間の停止が発生し、レジスタの 2 番目のセットで処理が続行される可能性があります。また、計画できないキャッシュ ミスの原因がいくつかあります (例としては、実行可能ファイルがすべてレベル 3 キャッシュに収まらないため、ブランチに新しい命令をプッシュすることが挙げられます)。

Silvermont が HT から離れた主な理由の 1 つは、22 nm では (比較的) 扱うダイが多いという事実です。その結果、より多くの物理コアを使用して並列処理を向上させることができます。

ハイパー スレッディングは Intel 独自のテクノロジであるため、ARM と AMD は実装していません。

于 2014-04-15T09:00:42.763 に答える
0

私が知る限り、スループット計算の多い分野の開発者として経験した限りでは、SMT/HT には 1 つの有用なアプリケーションしかなく、他のすべてのアプリケーションではせいぜい事態を悪化させることはありません。

仮想化では、SMT/HT は (スレッド) コンテキスト スイッチングのコストを削減するのに役立ち、同じコアを共有する複数の VM を操作する際のレイテンシを大幅に削減します。

しかし、スループットに関しては、SMT/HT が実際に速度を低下させなかったものに実際に遭遇したことはありません。理論的には、OS がプロセスを最適にスケジュールする場合、遅くも速くもなりませんが、実際には、SMT により同じコアで 2 つの要求の厳しいプロセスがスケジュールされ、スループットが低下します。

そのため、高性能計算に使用されるすべてのマシンで、HT と SMT を無効にします。すべてのテストで、計算が約 10 ~ 20% 遅くなります。

smt/HT が実際に速度を落とさなかった現実の世界 (レイテンシーではなく htput) の例を誰かが持っている場合、私は非常に興味があります。

于 2021-01-09T12:58:04.603 に答える
-1

仮想化で 8 コアの Atom を使用した後、HT でそのようなチップが実現する可能性に唾液を流しました。ほとんどのワークロードについてはそうではないかもしれませんが、ESXi については同意しますか? HT を本当に印象的に使用できます。低消費電力は、私にとってそれらの取引を封印するだけです. ESXi で 16 の論理コアを取得できれば、価格/パフォーマンスは本当に屋根を突き破るでしょう。つまり、8 コアと HT を備えた現在の Intel チップを購入する余裕はありません。また、Vsphere と Vsphere 用の製品はプロセッサごとにライセンスが付与されるため、デュアル プロセッサ ホストは真の中小企業にとってコスト面でもはや意味がありません。

于 2015-06-19T16:38:25.167 に答える