クアッドコア3 GHzプロセッサが12 GHzシングルコアほど高速にならない主な理由は、そのプロセッサで実行されているタスクの動作方法、つまりシングルスレッドまたはマルチスレッドに関係しています。 アムダールの法則は、実行しているタスクの種類を考慮するときに重要です。
本質的に線形であり、(非常に単純なプログラム)などのステップごとに正確に実行する必要があるタスクがある場合
10: a = a + 1
20: goto 10
次に、タスクは前のパスの結果に大きく依存し、'a'
各コピーが'a'
異なる時間に値を取得して異なる方法で書き戻すため、値を破損することなく、それ自体の複数のコピーを実行できません。これにより、タスクが単一のスレッドに制限されるため、タスクは常に単一のコアでのみ実行できます。複数のコアで実行すると、同期の破損が発生します。これにより、デュアルコアシステムのCPUパワーの1/2、またはクアッドコアシステムの1/4に制限されます。
次のようなタスクを実行します。
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10
これらの行はすべて独立しており、最初のように4つの別々のプログラムに分割して同時に実行できます。各プログラムは、同期の問題なくコアの1つの能力を最大限に活用できます。これがアムダールの法則です。入ってくる。
したがって、ブルートフォース計算を実行するシングルスレッドアプリケーションがある場合、単一の12 GHzプロセッサが勝ちます。何らかの方法でタスクを別々の部分に分割してマルチスレッドにすると、4つのコアに近づくことができますが、アムダールの法則と同じパフォーマンス。
マルチCPUシステムが提供する主なものは、応答性です。一生懸命動作しているシングルコアマシンでは、ほとんどの時間を1つのタスクで使用し、他のタスクは大きなタスク間で短いバーストでのみ実行されるため、システムが遅く見えることがあります。 。マルチコアシステムでは、重いタスクが1つのコアを取得し、他のすべてのタスクは他のコアで実行され、ジョブを迅速かつ効率的に実行します。
「6コアx 0.2GHz = 1.2Ghz」という議論は、タスクが完全に並列で独立している場合を除き、あらゆる状況でごみです。非常に並列なタスクが多数ありますが、それでも何らかの形の同期が必要です。 Handbrakeは、利用可能なすべてのCPUの使用に非常に優れているビデオトランスコーダーですが、他のスレッドをデータで満たし、処理されたデータを収集するコアプロセスが必要です。
- 実際、各コアは1秒あたりx回の計算を行っているため、計算の合計数はx(cores)です。
ワークロードが適切な並列であると仮定すると、各コアは1秒あたりxの計算を実行できます。線形プログラムでは、1コアしかありません。
- クロック速度は、プロセッサーが1秒間に通過するサイクル数のカウントであり、すべてのコアが同じ速度で実行されている限り、各クロックサイクルの速度はコアの数に関係なく同じままです。 。つまり、Hz =(core1Hz + core2Hz + ...)/ coresです。
4 x 3GHz = 12GHzが数学の動作を許可したと考えるのは誤りだと思いますが、リンゴとオレンジを比較しているので、合計が正しくありません。すべての状況でGHzを単純に加算することはできません。4 x 3GHz = 4 x 3GHzに変更します。