SMTとは何か、アプリケーションでどのように機能するか-賛否両論

私は「Windows Performance Station」に関する詳細な技術記事を書くことで、グラフォマニアック中毒に満足していますが、SMTがプロセッサー「AMD」と「Intel」にもたらす良い点と悪い点、および「Windows Performance Station」がどのように役立つかについての考えを共有したいと思いました。



画像






このトピックに興味がある人のために、猫の下で歓迎…





まず、SMTとは何かを決めましょう。



ウィキペディアが言うように、SMT(英語の同時マルチスレッドから)は同時マルチスレッドです。 「一時的なマルチスレッド化」の場合のように、複数のスレッドが同時に実行され、連続して実行されることはありません。



多くの人がこのテクノロジーを「Intel Hyper-Threading」という名前で知っていますが、すべてが長い間書かれていますが、これまでのところ、多くの開発者、さらには普通の人々は、いくつかのコマンドの「同時」実行の主要な本質を理解していないという事実に出会いました1つのプロセッサコアとそれがもたらす問題。



まず、一時的なマルチスレッドについて説明しましょう。 「ハイパースレッディング」の形式でSMTテクノロジーを実装する前は、「一時的なマルチスレッド」のテクノロジーが使用されていました。



ここではすべてが単純です。数字の操作を実行して結果を書き込む1つのパイプラインと1つのワーカー(CPUコア)があるとします。 これらの操作にドライバーとレンチが必要だとします。 オペレーティングシステム(OS)は、ドライバーを1回、ドライバーの1回の作業を行うために、作業員をコンベアに配置します。 一度に1人の作業者がレンチまたはドライバーのみで操作できます。 したがって、異なる数の異なるブロックをレイアウトして、OSは異なるアプリケーションから特定の操作を実行する優先順位を決定します。 プロセスの優先度を示すときに、OS内の1つのブロックの別のブロックに対する割合を示すことができます。 これは、すべてのタスクマネージャーが行うこととまったく同じです。 およびWindows Performance Station。 この優先順位付けは、SMTメカニズムにまで拡張され、すべてパイプラインで機能します。



画像



SMTの出現により、状況はもう少し複雑になります。



コンベアと2人のドライバーと1つのレンチを持っている2人の労働者を想像してください。 同時に、各ドライバーはドライバーのみ、またはレンチのみで操作できます。 1つのコンベヤーは、条件に応じて2つの半分に分割されます。 SMTでは、このようなコンベヤーに2つの番号を一度に追加できます。1つはドライバーでの作業用、もう1つはレンチでの作業用であるため、これらの作業者のアクションは次のようになります。



-最初の作業者はドライバーの操作を受け取り、2番目の作業者は反対側に立って同時にレンチの操作を受け取り、その後両方とも結果を記録します。



画像



これに基づいて、操作(AとB)が一方ではコンベヤー上にあり、他方では(DおよびE)である場合、すべては問題ありませんが、計算チェーンを並列化する場合、2つの問題が発生する可能性があります:



1.コンベヤーの片側でアクション(AおよびB)= C、もう片側(DおよびE)= Cであることが判明しました。

つまり 最初にCの1つの値を書き込み、次にCの2番目の値を書き込みますが、同時に書き込みません(制御の競合)。



2.コンベヤーの片側でアクション(AおよびB)= C、もう片側(AおよびC)= Dであることが判明しました。

つまり 最初にCを計算し、次にDを計算する必要がありますが、同時にではありません(データの競合)。



両方の競合は、命令の実行の遅延を引き起こし、コマンドの順次実行により解決されます。 このような遅延を減らすために、遷移予測とプロセッサキャッシュと呼ばれるプロセッサ要素が導入されました。



名前が示すように、遷移の予測子は予測を行います:) 1つの数値で異なる変換が発生する場合、最初の問題が発生する確率を予測します。



次に、式(AおよびC)= Dの解を停止し、実行結果(AおよびB)= Cをキャッシュに書き込み、その後すぐに(AおよびC)=を計算する場合、2番目の問題を迅速に解決するためにプロセッサーキャッシュが必要ですD.



公平に言うと、パイプラインの並列化の問題はSMTのないマルチコアプロセッサにも見られますが、2人のワーカーに1つのドライバーがある場合、プロセッサがアイドル状態になる瞬間はありません。 この用語では、各作業者が独自のドライバーとレンチを持っています。



画像



現在の操作を並列化する方法を推測するプロセッサの周りのこれらすべてのダンスは、さまざまなタイプのタスクがSMTコアで飢えている場合、深刻なエネルギー損失と目に見えるフリーズにつながります。



一般に、Intelは最初のマルチコアXeonプロセッサの作成と同時にハイパースレッディングを開発したことを覚えておく価値があります。実際、1つのコアにダブルパイプラインがインストールされている場合、このテクノロジーは一種の妥協と見なすことができます。



マーケティング担当者の提案では、単一のコアが複数のタスクを同時に実行できること、および「使用シナリオによっては」生産性がどの程度向上するかを賞賛するのが慣習ですが、SMTコンセプトに固有の問題については黙秘するのが慣習です。



Intelのサイトで、コマーシャルがハイパースレッディングよりもデュアルコアを示していることは注目に値します。



ビデオからの画像:



画像



より正確な画像:



画像







ここでどのような結論を出すことができ、何を改善できますか?



Windowsで論理コアのロードを表示する機能により、SMTを使用したコアの実際のワークロードに関する情報について混乱が生じます。 隣接する2つのコアがビジー状態であることがわかった場合、約50%は、次の2つのことを意味します。

1)両方のコアが2つの並列計算を実行し、50%でロードされます(ここではすべて問題ありません)。

2)両方のコアが1つの計算を交互に実行します(まるで2つのワーカーがクロックサイクルを通じて互いにレンチを渡したかのように)。

したがって、SMTを搭載したプロセッサーのすべてのコアが50%でロードされ、負荷が上に上昇しない場合、これはおそらくプロセッサーが100%で使用されているが、SMTに分割できない同じタイプのタスクでビジーであることを意味します!



明らかな利点に加えて、SMTは時間依存のタスク(ゲームでビデオ/音楽またはFPSを再生する)にフリーズをもたらします。 SMT /ハイパースレッディングが有効な場合、多くのゲーマーがFPSの低下を見ているのはそのためです。



前に書いたように、Windows Performance Stationアプリケーションは、OSカーネルによるタスクの処理段階でも、パイプライン上にレイアウトされたブロックをソートできます。 優先順位を使用し、プロセッサコアごとにプロセスを分割することにより、コンベア上の特定のブロックを適切な量でレイアウトし、さまざまな種類のタスクがput死しないように、さまざまな種類のブロックをさまざまな仮想コアに配置できます。 ニューラルネットワークとタスクマネージャーを組み合わせたのは、「Windows Performance Station」のこの動的分析タスクです。 その結果、ニューラルネットワークはタスクを分析し、異なるルールに従って受信データに応じてタスクを分解し、SMTペアの各コアが異なるタスクを実行するようにします。



画像



このアプローチのおかげで、WindowsのSMTプロセッサは、マルチタスクおよびマルチスレッドプロセスでより効率的に動作できます。 そして、それが、新しいAMD RyzenプロセッサにSMTが登場したことを非常に喜んだ理由です。



「Windows Performance Station」アプリケーションは無料で、広告は含まれていません。スポイラーのリンクを使用して、当社のWebサイトからダウンロードできます。

ダウンロードする
winperst.ru/download





Windows Performance Stationの詳細については、以前の記事をご覧ください。

Windows Performance Stationまたはコンピューターに効率的に動作するように教えた方法
habrahabr.ru/post/320110





最後まで読んでくださった皆さんに感謝します。



All Articles