マルチコアプロセッサのクロック速度を計算するにはどうすればよいですか?


23

たとえば、それぞれが3GHzで実行されている4つのコアを持つプロセッサが、実際には12GHzで実行されているプロセッサであると言うのは正しいでしょうか?

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

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

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

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

ここでの回答の多くは、たとえばクアッドコア2 GHzプロセッサがシングルコア8 GHzプロセッサと必ずしも等しいとは限らない理由を説明するのに適しています。ただし、特定の速度とコアの数を要件にリストするアプリケーションに対するシステムの適合性を判断する際に、マルチコアプロセッサの速度をどのように考慮する必要があるかを考えるのは困難です。(例:Borderlands 2には2.4 GHzデュアルコアプロセッサが必要です。低速のクアッドコア、または高速のシングルコアでも同様に動作するはずですか?)それとも別の質問ですか?
イッツィ

@Isziこれは別の質問ですが、Borderlandsは要件に「デュアルコア」が含まれている場合、複数のスレッドに対して最適化されている可能性があります。その場合、シングルコアプロセッサは推奨されませんが、2コア以上を利用できるかどうかは不明です。
NReilingh

クロック速度とコアの数がプロセッサの「速度」だけを決定するわけではないことを覚えておくことが重要です。たとえば、キャッシュのサイズと速度は、プロセッサが命令とデータの待機に費やす時間に影響します。さらに、サイクルごとの命令(ある意味、「効率」は、電力効率とは異なり、電力効率に関連しています)も計算速度に影響します。プロセッサが異なると、同じ命令を実行するのに異なる時間がかかります。
ボブ

回答:


35

クアッドコア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. 実際、各コアは1秒あたりx回の計算を行っているため、計算の合計数はx(cores)です。

ワークロードが適切な並列であると仮定すると、各コアは1秒あたりxの計算を実行できます。線形プログラムでは、1コアしかありません。

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

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


素敵な投稿.. 1票以上は投票できませんでした:-(
Gopalakrishnan Subramani

ただし、アムダールの法則は、ハードウェアの問題ではなく、ロックによって引き起こされるプログラミングの問題です。同期する必要がない場合、各コアはできるだけ速く命令を実行できます。コア間で完全に分割される並列プログラム(単純なプログラム)を設計できます。ハードウェアメーカーはこの生の価値を宣伝しませんか?
ジャスティンマイナーズ

明確にするために、3 GHzの4コアが実際には12 GHzほど高速ではないが、マルチコアのクロック速度の計算方法の一部ではない理由の質問にこれが答える理由を理解します。
ジャスティンマイナーズ

コアあたりの@JustinMeinersクロック速度は、単にコアが実行されるクロック速度です。シングルコアをマルチコアと同等にする魔法の計算はありません。複数のコアは、より多くの別個のタスクを同時に実行できることを意味します。アムダールの法則はソフトウェアのために適用されます。同期とロックが必要なため、ソフトウェアと同じくらいハードウェアでタスクが「完璧」になるのを防ぎます。共有キャッシュとメモリにより、競合とロックが発生します。
木梅

@Mokubai明確にするために、メーカーがクロック速度をリストすると、各コアはその速度で実行されますか?
ジャスティンマイナーズ

6

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

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

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

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


あまり技術的でない人のための有用な答え。また、私は類推が好きです:)
aff 14年

3

私はこのテーマの専門家ではありませんが、コンピューター工学の学位を持っています。理論(これは非常に概念的な答えである)、クアッドコア3GHzの各プロセッサができ、例えば、シングルエンドの結果のために必要な計算の四組があった、場合は、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倍の時間がかかります。これは、2番目の命令では、aの値が最初の命令に依存しているため、並列に実行できないためです。これは、一部のソフトウェアがマルチスレッドプロセッサを活用する方法です。

そのため、理論的には、12GHzシングルコアプロセッサは常に3GHzクアッドコアプロセッサよりも高速(または高速)で実行できますが、その逆はできません。


これらの計算は、マルチスレッド化されている場合にのみ高速になり、それでもわずかなオーバーヘッドがあることに注意してください。しかし、はい、できるだけ多くの計算を実行できるシングルコアプロセッサを作成することはできますが、熱やその他の要因により単純に妥当ではありません。
Phoshi

この答えは2つの理由で誤解を招きます。まず、現代のコアは一度に複数のことを行います。第二に、答えはコア速度が作業が行われる速度と同じであると仮定しています。12GHzシングルコアプロセッサは、同じ作業を達成するためにシングルコアプロセッサが大幅に多くのクロックサイクルを必要とする場合、3GHzクアッドコアプロセッサほど速く動作しません。(これは、12GHzのプロセッサにはさらに長いパイプラインが必要になるためです。)
デビッドシュワルツ

2

これは答えが複雑な質問ですが、短い答えは次のとおりです。いいえ

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

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

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


あなたは正しいと間違っています。「現実世界」のアプリケーションでは、4つの3GHzプロセッサが単一の12GHzプロセッサよりも高速である可能性が高いでしょう。最近、ますます多くのプログラムがマルチスレッドを使用しています。あなたが提供したリンクは、理論上のシングルスレッドアプリケーションに関するものです。12ghzの単一のプロセッサにはスレッドが1つしかないため、「現実の世界」のプログラムが提供するマルチスレッドの利点は失われます。業界は、マルチコアテクノロジーの利点が高速シングルコアテクノロジーの利点をはるかに上回るため、高速コアの数を減らすのではなく、より低速のコアを目指しています。
ユビキバコン

3
@typoknig:それはまったく真実ではありません。アプリがすべてのスレッドを最大限に活用していると仮定すると、6GHzのシングルコアプロセッサは、3GHzのデュアルコアプロセッサとほぼ同じ速度でマルチスレッドアプリケーションを実行します。ワールドアプリケーション」ですが、それは別の引数です)。12GHzプロセッサは、遅いためではなく、現在の技術では難しすぎるため見られません。
サーシャチェディゴフ

4
@typoknig:いくつかのマルチスレッドプログラムをプログラミングしましたが、単一の12Ghzプロセッサがあれば、代わりにそれを使用します。シングルスレッドプログラミングは、マルチスレッドプログラミングよりも10倍簡単ではるかに効率的です。業界が2番目のmuticoreプロセッサを動かしている本当の理由は、それらが高速であるためではなく、個々のCPUをこれ以上高速に実行できないためです!これは、p4日間のIntelのネットバーストテクノロジーで概説されました。少なくとも10Ghzプロセッサと推定されていましたが、それは量子物理学が顔を平手打ちして「noob!」と言ったまでです。
フェイケン

2
@typokning:F22はpowerPCプロセッサのアレイを使用して、1秒あたり100億命令を達成します。これは10Ghzとはまったく異なります。Radion HD5970が4600Ghzで動作すると言っているようなものです。4.6 TFLOPSに対応していますが、これは高度な並列性があるためです。
フェイケン

1
@typoknig:CPU周波数とIPS(1秒あたりの命令数)の違いを理解していないことは明らかです。これらは同じものではありません。お読みください:en.wikipedia.org/wiki/Instructions_per_second
フェイケン

2

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

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

また、チップに埋め込まれたトランジスタ(CMP)を2倍にすると、得られる速度はわずか40%になることをどこかで読みました。これは、このトピックにも重要なヒントを提供します。


1

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

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

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

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


クロック速度は「コアごと」にリストされていません。速度は決して「あたり」ではありません。車が時速50マイルで走行している場合、速度は時速50マイルです。2台の車が時速50マイルで走行している場合、速度は時速50マイルのままです。「1台あたりの速度」という考え方は無意味で一貫性がありません。
デビッドシュワルツ

1

毎時50マイル走行する2台の車は、毎時100マイルに「加算」されません。本当に簡単です。プロセッサのクロック速度は、作業が行われる速度の尺度ではなく、クロックが刻む速度の尺度です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.