0

単純な質問ですが、パフォーマンスに直接関係するコアを増やしますか?

私の理解 (間違っている場合は親切に訂正してください) はマルチコア システムであり、通信オーバーヘッドとメモリ レイテンシは、シングル コアと比較してパフォーマンスの制限要因です。大規模な L1 および L2 キャッシュを備えたシングル コア システムは、Core 2 Duos よりもはるかに優れたパフォーマンスを発揮できるでしょうか? しかし、なぜほとんどすべての新しいアーキテクチャでコア数が増えているのでしょうか。私が知るためにここにいる理由があるに違いありません。

手伝ってくれてありがとう!

4

3 に答える 3

1

それはあなたのソフトウェアに依存します。外部通信をあまり使用せず、並列処理を必要とする CPU 集中型の計算タスクがある場合、マルチコアは垂直方向にスケーリングするための方法です。シングルコアCPUと比較すると、はるかに優れたパフォーマンスを発揮します...計算タスクを並行して実行できるためです(これも、並行実行を利用する特定のタスクによって異なります)。たとえば、DB サーバーは通常、並列処理を利用し、マルチコア CPU で大幅にスケーリングします。

垂直制限がなくなると、クラスターに複数のノードを導入することで水平方向にスケーリングでき、タスクの実行を調整する必要があります。

だからあなたの質問に:

しかし、なぜほとんどすべての新しいアーキテクチャでコア数が増えているのでしょうか。

その理由の 1 つは、ソフトウェアが並列処理を利用するように進化し、ハードウェアがこの要求を満たそうとしていることです。

于 2013-04-11T13:49:34.797 に答える
1

一般に、システム内のコア数をスケールアップする場合、メモリ レイテンシや帯域幅が問題になります。注: おそらく特殊な例外がありますが、概して、最新のシステムのほとんどは、6 つ以上のハードウェア コアがメモリにアクセスするまでメモリ ボトルネックに陥ることはありません。

ただし、通信のオーバーヘッドは非常に高くつく可能性があります。これの技術的な理由は非常に複雑であり、私の回答の範囲を超えています.いくつかの側面はハードウェアに関連していますが、他の側面は単に計算を完了するために別のコアをブロックするコストに関連しています..両方とも悪い. このため、複数のコアを利用するプログラム/アプリケーションは通常、コア間の通信をできるだけ少なくする必要があります。これにより、個別のコアにオフロードできるタスクの種類が制限されます。

新しいシステムは、技術的に実現可能であるという理由だけで、より多くのコアを追加しています。たとえば、シングル コアのパフォーマンスを向上させることは、技術的にも経済的にももはや実行可能ではありません。私が知っているほとんどすべてのアプリケーション プログラマーは、12 個のコアを効率的に利用する方法を考え出すよりも、単一の超高速コアを絶対に好むでしょう。しかし、たとえ数千万ドルを支払ったとしても、チップ メーカーはそのようなコアを製造することはできませんでした。

光の速度が一定である限り、並列処理は存続します。今日のように、CPU で見られる速度向上の多くは、個々の命令の並列処理によるものです。可能な限り、Core 2 Duo (たとえば) は最大 4 つの命令を並行して実行します。これが機能するのは、多くのプログラムでは、命令のシーケンスが互いに直接依存しないことが多いためです。

  1. = g_Var1 + 1;
  2. b = g_Var2 + 3;
  3. c = b * a;
  4. d = g_Var3 + 5;

最新の CPU は、実際には 1、2、4 行を並行して実行し、その後 2 倍にして 3 行目を終了します。通常は、5、6 行目などと並行して実行します。(「c」変数の結果はそれらのいずれにも必要ないと仮定します)。これが必要なのは、単一の命令を実行するパイプラインを高速化または短縮する能力が非常に限られているためです。その代わりに、エンジニアは「広く行く」ことに焦点を当ててきました - より多くの命令を並行して、より多くのコアを並行して、より多くのコンピューターを並行して (後者はクラウド コンピューティング、BOINC、または @home プロジェクトに似ています)。

于 2013-04-11T16:08:00.440 に答える
1

あなたは、コアが有益に複雑になる可能性があると想定しています。現時点では、それは安全な仮定ではありません。

一度により多くの命令を実行する (「より広い」) か、より高い周波数でより多くのパイプライン処理を行う (「より深い」) ことができます。

これらのアプローチは両方とも、利益が減少します。幅の広いチップは、命令レベルで利用可能な並列処理に依存しています。これは、最良の場合でも約 3 幅を超えず、通常は ~1 です。より深いチップには、電力と熱の問題があり (電力は通常、電圧の増加により周波数に応じて 2 次的に増加しますが、コア数に比例して増加します)、ブランチの予測ミスの回復時間が損なわれます。

私たちがマルチコア チップを使用するのは、そうしたいからではなく、より優れた代替品がないからです。

于 2013-04-11T16:55:59.320 に答える