ホームページ » の仕方 » マルチコアプロセッサのプロセッサ速度はどのように計算しますか?

    マルチコアプロセッサのプロセッサ速度はどのように計算しますか?

    経済的なコンシューマーグレードのマルチコアプロセッサの出現は、多くのユーザーにとって疑問を投げかけています。マルチコアシステムの実際の速度をどのように効果的に計算するのですか? 4コア3Ghzシステムは本当に12Ghzですか?調べて読む.

    本日の質疑応答セッションでは、コミュニティ主導のQ&A Webサイトのグループである、Stack Exchangeの1部門であるSuperUserのご好意により、当社にお越しいただきます。.

    質問

    SuperUserの読者NReilinghは、マルチコアシステムのプロセッサ速度が実際にどのように計算されるかについて興味がありました。

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

    私はかつて「Mac vs. PC」の議論(これはちょっとこの話題の焦点では​​ありません…それは中学時代に戻ってきました)に、Macは2GHzのマシンとして1GHzのマシンとしてしか宣伝されていないと主張した知人と話しました500MHzで動作するマルチプロセッサG4.

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

    それで、これはクロック速度計算の意味論に関する多かれ少なかれ哲学的/深い技術的な質問です。 2つの可能性があります。

    1. 各コアは実際には毎秒x回の計算を行っているので、計算の総数はx(コア)です。.
    2. クロック速度は、プロセッサが1秒間に通過するサイクル数のカウントです。すべてのコアが同じ速度で動作している限り、各クロックサイクルの速度は、コアがいくつ存在していても同じままです。 。つまり、Hz =(core1Hz + core2Hz +…)/ cores.

    そのため、合計クロック速度を表すのに適切な方法は何ですか。さらに重要なことに、マルチコアシステムでシングルコア速度の命名法を使用することさえ可能です。?

    答え

    SuperUserの貢献者であるMokubaiは物事を一掃するのを助けます。彼は書く:

    クアッドコアの3GHzプロセッサが12GHzのシングルコアほど速くないという主な理由は、そのプロセッサ上で実行されているタスクがどのように機能するか、すなわちシングルスレッドまたはマルチスレッドで行うことにある。アムダールの法則は、実行しているタスクの種類を考慮するときに重要です。.

    あなたが本質的に線形であり、そして(非常に単純なプログラムのように)段階的に正確に行われなければならない仕事があるならば。

    10:a = a + 1
    20:後藤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:後藤10 

    これらの行はすべて独立しており、最初のように4つの別々のプログラムに分割して同時に実行できます。それぞれが同期の問題なしに1つのコアのフルパワーを有効に活用できます。これがアムダールの法則です。それに入る.

    だから、もしあなたがブルートフォース計算をするシングルスレッドアプリケーションを持っているなら、シングル12GHzプロセッサは何とかしてタスクを別々の部分とマルチスレッドに分割させることができれば4コアは近づくことができるがアムダールの法則と同じ性能.

    マルチCPUシステムがあなたに与える主なことは応答性です。 1つのタスクでほとんどの時間が使用され、他のタスクが大きなタスクの間で短時間で実行されるため、システムの動作が遅くなることがあります。 。マルチコアシステムでは、重いタスクは1つのコアを取得し、他のすべてのタスクは他のコアで実行され、迅速かつ効率的にジョブを実行します。.

    「6コア×0.2GHz = 1.2Ghz」という議論は、タスクが完全に並列で独立している場合を除き、あらゆる状況でごみになります。高度に並列化された多数のタスクがありますが、それでも何らかの形の同期が必要です。 Handbrakeは利用可能な全てのCPUを使うのが得意なビデオトランスコーダですが、他のスレッドをデータでいっぱいにしてそれらが行ったデータを集めるコアプロセスが必要です。.

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

    ワークロードが適切な並列処理であると仮定すると、各コアは毎秒x回の計算を実行できます。.

    1. クロック速度は、プロセッサが1秒間に通過するサイクル数のカウントです。すべてのコアが同じ速度で動作している限り、各クロックサイクルの速度は、コアがいくつ存在していても同じままです。 。つまり、Hz =(core1Hz + core2Hz +…)/ cores.

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

    説明に追加するものがありますか?コメントの中で消してください。他の技術に精通したStack Exchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッドをチェックしてください。.