web-dev-qa-db-ja.com

マルチコアプロセッサでのクロック速度の計算方法を教えてください。

たとえば、4つのコアがそれぞれ3GHzで実行されているプロセッサは、実際には12GHzで実行されているプロセッサであると言って間違いありませんか?

私はかつて、Macは1Ghzマシンとしてのみ宣伝されていると主張している知人と「Mac vs. PC」の議論(ところで、このトピックの焦点では​​ありません...それぞれが500MHzで動作するデュアルプロセッサG4でした。

当時私はほとんどの人に明らかであると思う理由でこれが大したものであることを知っていましたが、私はこのウェブサイトで「6コアx 0.2GHz = 1.2Ghz」の効果についてのコメントを見ただけで、これには本当の答えがあります。

したがって、これはクロック速度計算のセマンティクスに関する多かれ少なかれ哲学的/深い技術的な質問です。私は2つの可能性を考えています。

  1. 実際、各コアは1秒あたりx回の計算を行っているため、計算の総数はx(コア)です。
  2. クロック速度は、プロセッサが1秒間に通過するサイクル数のカウントであり、すべてのコアが同じ速度で実行されている限り、コアの数に関係なく、各クロックサイクルの速度は同じです。 。つまり、Hz =(core1Hz + core2Hz + ...)/ coresです。
23
NReilingh

クアッドコア3GHzプロセッサが12GHzシングルコアほど高速ではない主な理由は、そのプロセッサで実行されているタスクがどのように機能するか、つまりシングルスレッドまたはマルチスレッドであるかです。 アムダールの法則 は、実行しているタスクのタイプを検討するときに重要です。

本質的に線形で、(非常に単純なプログラム)などのステップバイステップで正確に実行する必要があるタスクがある場合

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つのフルパワーを効果的に使用できます。 アムダールの法則 がそれに入る。

したがって、ブルートフォース計算を実行するシングルスレッドアプリケーションがある場合、単一の12GHzプロセッサは勝つでしょう。どういうわけか、タスクを個別の部分に分割してマルチスレッド化できる場合、4つのコアは近くなりますが、完全には到達しません。アムダールの法則と同じパフォーマンス。

マルチCPUシステムが提供する主なものは、応答性です。ハードコアのシングルコアマシンでは、ほとんどの場合1つのタスクが他のタスクを使用でき、他のタスクは大きなタスクの間の短いバーストでしか実行されないため、システムが遅くなったり、不安定になったりする可能性があります。 。マルチコアシステムでは、重いタスクは1つのコアを取得し、他のすべてのタスクは他のコアで再生され、ジョブを迅速かつ効率的に実行します。

「6コアx 0.2 GHz = 1.2 GHz」という議論は、タスクが完全に並列で独立している場合を除いて、すべての状況でごみです。高度に並列化されたタスクは多数ありますが、それらには依然として何らかの形の同期が必要です。 Handbrake は、使用可能なすべてのCPUの使用に非常に優れているビデオトランスコーダーですが、他のスレッドにデータを入力し続け、処理されたデータを収集するにはコアプロセスが必要です。

  1. 実際、各コアは1秒あたりx回の計算を行っているため、計算の総数はx(コア)です。

各コアは、ワークロードが適切な並列であると仮定して、1秒あたりx回の計算を実行できます。

  1. クロック速度は、プロセッサが1秒間に通過するサイクル数のカウントであり、すべてのコアが同じ速度で実行されている限り、コアの数に関係なく、各クロックサイクルの速度は同じです。 。つまり、Hz =(core1Hz + core2Hz + ...)/ coresです。

4 x 3GHz = 12GHzと考えるのは誤りであると思いますが、数学はうまくいきますが、リンゴとオレンジを比較すると、合計が正しくないため、あらゆる状況でGHzを単純に加算することはできません。 4 x 3GHz = 4 x 3GHzに変更します。

35
Mokubai

その他は、技術的な観点から良い議論をしました。代わりに、簡単なアナロジーをいくつか作成します。4* 3GHzが1 * 12GHzと等しくない理由を説明します。

たとえば、1人の女性が9か月で1人の赤ちゃんを製造できます。 9人の女性が1か月で1人の赤ちゃんを製造することができますか?いいえ、妊娠は並列化できないためです(少なくとも、この技術レベルでは)。

ここにもう1つあります。私が最近訪れた水力発電所では、発電機の1つがアップグレードされていました。彼らは発電機の固定子を船で輸送しなければなりませんでした。固定子の6分の1はトラックで輸送できますが、固定子全体を輸送する必要がありました。そのため、6台のトラックではなく、1台の船を使用する必要がありました。

別のケースは、イベントの正確なタイミングかもしれません。正確なタイマーとしてコンピュータープロセッサが使用される場合があります(ほとんどのプロセッサではクロックが可変であるため、この方法は推奨されません。代わりに高精度のイベントタイマーを使用する必要があります)。比較的安定した12GHzクロックのプロセッサーがあると仮定すると、それを使用して、3GHzクロックのプロセッサーよりもはるかに高い分解能で時間を測定できます。 3GHzコアがいくつあっても、12GHzコアの解像度に到達することはできません。これは、4つの時計に7セグメントディスプレイがあり、各時計が正しい時間を時間単位で表示するようなものです。どれほど正確に時間を示していても、それらを使用して1秒の範囲の時間間隔を測定することはできません。

6
AndrejaKo

私はこの問題の専門家ではありませんが、コンピュータエンジニアリングの学位は持っています。 理論(これは非常に概念的な答えです)では、クアッドコア3GHzの各プロセッサcanたとえば、4つのセットがある場合、1つの12GHzプロセッサと同等です単一の最終結果に必要な計算。それがいわゆる並列処理です。

ロジックを簡略化するために、デュアルコアプロセッサについて話しているとしましょう。一連の計算があったとすると、

a = b + 1;

c = d + 1;

次に、これら2つの計算は別々のコアで実行でき、xGHzプロセッサはシングルコア2 * xGHzプロセッサと同等になります。これは、2つの計算は、x速度で行われますが、同時に処理されるためです。一方、シングルコアプロセッサは2 * xの速度で次々とそれらを実行できます。 2つのCPUがこのコードを同時に実行した場合、同時に終了します。ただし、コードが次の場合:

a = b + 1;

c = a + 1;

その場合、2番目の命令ではaの値が最初の命令では依存であり、並列実行できないため、デュアルコアプロセッサはシングルコアプロセッサの2倍の時間がかかります。これは、一部のソフトウェアがマルチスレッドプロセッサを利用できる方法です。

したがって、理論的には、12GHzシングルコアプロセッサは常に3GHzクアッドコアプロセッサと同じ速さ(または高速)で実行できますが、その逆はできません。

3

4コア@ 3 GHzは12 GHzとは言えないようです。

共有メモリ、キャッシュの競合、その他のリソースなどのさまざまな制約もすべてのコアに共通であるため、これらのコアで並列にコードを実行することは、12 Ghzプロセッサで実行する場合ほど効率的ではありません(このようなプロセッサを構築することは困難ですが) )。

また、チップに埋め込まれたトランジスタ(CMP)を2倍にすると、速度が40%だけ低下することをどこかで読んだことがあります。これは、このトピックにも重要なヒントを提供します。

2
Harmeet Singh

これは複雑な質問ですが、簡単に言えば、いいえです。

実際のアプリケーションでは、非効率性のため、4つの3Ghzプロセッサは単一の12Ghzプロセッサほど高速ではありません。それらは非常に近いかもしれませんが、処理能力の点では単一のプロセッサとは異なります。

この理由は、複数のプロセッサで実行できるプログラムを処理するときの非効率性が小さいためです。問題のプログラムが並行して実行できると仮定すると、RAMまたはキャッシュとスレッドの同期の問題など、他のリソースについて他のコアと競合する問題が発生します。また、常に並列化できないプログラムの一部であり、単独で単一のコアで実行する必要があります。

この記事を見てください: http://en.wikipedia.org/wiki/Amdahl%27s_law

2
Faken

時速50マイルを走行する2台の車は、時速100マイルに「加算」されません。本当に簡単です。プロセッサのクロック速度はnot作業が行われる速度の尺度であり、クロックがどれだけ速く動くかの尺度です。

1
David Schwartz

実行されるクロックサイクルに関する限り、はい、マルチコアプロセッサは完了しますx * cores 1秒あたりの作業サイクル。従来、クロック速度は比較を容易にするためにコアごとにリストされていました(そうでない場合、2GHz /コアで動作する4GHzデュアルコアチップと1GHz /コアで動作する4GHzクアッドコアチップを簡単に比較するにはどうすればよいでしょうか)。

残念ながら、実際のアプリケーションで異なるプロセッサーを比較しようとすると、問題は複雑になります。

まず、ほとんどのマルチコアプロセッサは、コア間で共有されるいくつかのリソース(CPUキャッシュなど)を持っています。それらはそのキャッシュへのアクセスを共有する必要があるので、両方のコアでデータの格納または読み取りをフルスピードで行うことはできません。これは多くの場合、共有リソースのボトルネックの可能性をより適切に分割するために、複数の共有キャッシュ(たとえば、ほとんどのクアッドコアチップには2つのキャッシュがあり、それぞれがコアのペアによって共有されている)によって軽減されます。

第二に、おそらく技術者以外の世界ではあまり知られていませんが、クロック速度の比較は、リンゴとオレンジの比較に似ている場合があります。 CPUが異なれば、1クロックサイクルで異なる量の処理を実行するので、1 GHzと1.2 GHzがあると言っても素晴らしいように聞こえますが、1 GHzチップは実際には、一定の時間間隔でより多くの処理を実行できます。 Pentium 4はこのポイントを家に持ち帰り、 メガヘルツ神話 に至りました(この投稿を書くまで、名前が作られたのは知りませんでした)。

1
Jimmy