4

誰かがそれに光を当てることができますか?

i7 プロセッサは 8 つのスレッドを実行できますが、JAVA または C++ プログラムで 8 つ以上のスレッドを作成できると確信しています (確かではありません)。私は i5 プロセッサを使用しており、並行性を研究しているときに、割り当て用に 10 個のスレッドを作成しました。CPUのコア評価がスレッドにどのように関連しているかを理解しようとしています。

4

5 に答える 5

1

「スレッド」は、プログラムを介した単一の自己一貫性のある実行パスを定義するソフトウェアの抽象化です。ほとんどの最新のシステムでは、スレッドの数は基本的にメモリによってのみ制限されます。ただし、 CPUが同時に実行できるスレッドは比較的少数です。大まかに言えば、「コア数」とは、CPU が実際に並行して実行できるスレッドの数です。使用可能なコア数よりも実行したいスレッドが多い場合、オペレーティング システムは何らかのタイム スライスを使用して、すべてのスレッドを実行できるようにします。スレッドの実行には時間がかかります。

「コア」に関しては、さまざまな用語が飛び交っています。

  • プロセッサー数: システムのマザーボード上の物理 CPU チップの数。複数のコアを持つ CPU が利用可能になるまで、これは重要な唯一の数値でした。
  • 論理コア数: システム ハードウェアが並行して実行できるスレッドの数
  • 物理コア数: システムが持つ CPU 実行ハードウェアのコピー数 -- これは、単一のハードウェアを使用して実行するSMT (「同時マルチスレッド化」)などの機能により、論理コア数と常に等しいとは限りません。複数のスレッドを並行して
  • モジュール数: 最近の (ブルドーザーから派生した) AMD プロセッサは、SMT と標準の物理コアごとに 1 つの論理コア モデルとのハイブリッドであるアーキテクチャを使用しています。これらの CPU には、論理コアごとに整数実行ハードウェアの個別のコピーがありますが、2 つの論理コアが浮動小数点ユニットとフェッチおよびデコード フロントエンドを共有します。AMD では、2 つの論理コアを含むユニットをモジュールと呼んでいます。

また、GPU、グラフィックス カードには膨大な数のコアがあり、膨大な数 (数千) のスレッドを並行して実行することも簡単に述べておく必要があります。トレードオフは、GPU コアのメモリが非常に少なく、多くの場合、プログラミング モデルが大幅に制限されることです。

于 2013-08-16T02:39:50.457 に答える
0

いいえ、いいえ、いいえ... I7 には 8 つの実行スレッドがあり、一度に 8 つのスレッドを実行できます。

1000 以上のスレッドがプロセッサー時間を待機している可能性があります。

thread.sleep を呼び出すと、スレッドが実行コアから離れてメモリに戻り、起動されるまで待機します。

于 2013-08-16T02:38:23.133 に答える
0

スレッドは、OS のスケジューラによって処理されます。CPU のコア数によって、同時に実行できるスレッド数が決まります。

スレッドは、すべてが同時に実行されているという「錯覚」を与えるために、スケジューラによって常に切り替えられることに注意してください。

興味のある方はこちらをご覧ください。

于 2013-08-16T01:55:12.213 に答える