4

私は最近読んでいsystem architectureて、のトピックはmulti-threading技術の最新の改善について詳しく説明されていません. 検索の一部を行いましたが、次の回答が見つかりませんでした。

質問は次のとおりです。

1)multi-threadingに依存していsystem architecuture (CPU)ます。すべてのCPU (single core)サポートを行いmulti-threadingますか? multi-threadedそうでない場合、それらのマシンでアプリケーションを実行するとどうなりますか

ここで引用されているのは

Intel CPUs support multithreading, but only two threads per CPU.
AMD CPUs do not support multithreading and AMD often sites Microsoft's 
recommendations to turn off Hyperthreading on Intel CPUs when running applications 
like peoplesoft and Exchange.

2) では、ここでしか言わないのはどういう意味ですかtwo threads per CPU。いつでも、CPU (single core)のみを処理できますthread。もう一方threadは正しく処理されるのを待っていますか?

10 threads3) たとえば、生成され、実行されるのを待機するアプリケーションとの違いは何ですか。CPU がせいぜい にしか対処できないのであれば、two threadsプログラマーはその事実を考慮して を書くべきではありませんmulti-threaded applications

multi-core processors (say quad-core)最大でも、ただし同時に処理できるのは8 threads can be queuedだけです。4 threads

PS:少し読んだことがありますが、hyper-threadingそれがここに関連しているかどうか、およびすべてのプロセッサがサポートしているかどうかはわかりませんhyper-threading

4

2 に答える 2

2

1)何よりもオペレーティングシステムに依存します。シングル コア アーキテクチャの場合でも、マルチスレッドをサポートできますが、スレッドは並行して実行されません。OS がスレッド間でコンテキストを切り替えます。

2) Intel は通常、各スレッドにパイプラインが割り当てられる双方向ハードウェア スレッド (同時マルチスレッドとも呼ばれます) をサポートします。したがって、2 つのスレッドを持つプロセスがある場合、それらは両方とも同じコアで同時に実行できます。

3) 1 を参照してください。基本的に、オペレーティング システムは、割り当てられなかったスレッド間のコンテキスト スイッチを計画する前に、ハードウェアにできるだけ多くのスレッドを割り当てます。このプロセスは OS のスケジューラーに依存しており、Linux のスケジューラーについて読んで、何が起こっているのかをよく理解することができます。

編集: ハイプスレッディングは基本的に、私が言及したハードウェア スレッド機能です。

于 2014-01-16T19:05:35.480 に答える
1

あなたの質問では、CPU はコアを意味します。

1) そうです。ARM でのメモリ アクセスは言葉によるものだと思います。したがって、char への書き込みはアトミックではありません。また、メモリの順序が異なります。最新の OS (DOS 以外のもの) は、コンテキストの切り替えをサポートしています。1 つのスレッドが実行されている間、他のスレッドは待機します。すべての Windows プロセスのスレッドの合計数は約 1000 です。一般的な時間単位 (CPU をロードする時間) は 1 ~ 10 ミリ秒です。1 コア マルチスレッドは計算能力を向上させませんが、非同期タスクを可能にします。たとえば、GUI はネットワーク アクティビティ中にフリーズしません。1 つのスレッドはネットで待機し、別のスレッドはユーザー アクティビティに応答します。

2) はい

3) (仮想) コアの数に等しい数のスレッドを生成するのが一般的な方法です。つまり、AMD ではシステム内のコア数、Intel では 2 倍のコア数を生成します。これは、計算スレッドにのみ当てはまります。通常、Web サーバーのスレッドはネットで待機し、CPU にあまり負荷をかけないため、何千ものスレッドを生成することをお勧めします。

ハイパースレッディングは、RAM を待機するタスクに最適です。1 つのスレッドがデータを待機している間、別のスレッドが実行されます。数学の場合、通常、パフォーマンスは向上しません。キャッシュに適していないデータ (キャッシュに収まらないリスト、ツリー、ハッシュ テーブル) を扱う場合に適しています。

于 2014-01-17T15:57:38.887 に答える