/ /なぜCPUコアはすべて異なる速度ではなく同じ速度を持っているのですか?

CPUコアがすべて異なるのではなく同じ速度を持っているのはなぜですか?

比較ショッピングをしたことがあるなら新しいCPUの場合、コアのすべてが異なるものの組み合わせではなく速度を持っているように見えることに気づいたかもしれません。何故ですか?今日のSuperUser Q&Aの投稿には、読者の好奇心が強い質問に対する答えがあります。

本日の質疑応答セッションは、コミュニティ主導のQ&A WebサイトのグループであるStack Exchangeの下位部門であるSuperUserのご厚意によるものです。

質問

SuperUserリーダーのJamieは、CPUコアの速度が異なるのではなく、すべて同じである理由を知りたいと考えています。

一般に、新しいコンピュータを購入する場合は、コンピュータの予想されるワークロードに基づいて、購入するプロセッサを決定します。ビデオゲームのパフォーマンスはシングルコアの速度で決まる傾向がありますが、ビデオ編集などのアプリケーションはコアの数で決まります。市場で入手可能なものに関しては、すべてのCPUの速度はほぼ同じで、主な違いはスレッド数またはコア数が多いことです。

例えば:

  • Intel Core i5-7600K、基本周波数3.80 GHz、4コア、4スレッド
  • Intel Core i7-7700K、基本周波数4.20 GHz、4コア、8スレッド
  • AMD Ryzen 5 1600X、基本周波数3.60 GHz、6コア、12スレッド
  • AMD Ryzen 7 1800X、基本周波数3.60 GHz、8コア、16スレッド

コアが増加しているにもかかわらず、すべてのコアのクロック速度が同じであるのはなぜですか。クロック速度が異なるバリアントがないのはなぜですか?たとえば、2つの「大きな」コアと多数の小さなコア。

たとえば、4.0 GHzの4つのコア(つまり、 4×4 GHz、最大16 GHz)、2つのコアが4.0 GHzで実行され、4つのコアが2.0 GHzで実行される(つまり、2×4.0 GHz + 4×2.0 GHz、最大16 GHz)CPUはどうでしょうか。 2番目のオプションは、シングルスレッドのワークロードでも同様に優れていますが、マルチスレッドのワークロードでは潜在的に優れているでしょうか。

これは一般的な質問であり、上記のCPUや特定のワークロードに関してではありません。なぜパターンがそれが何であるかについて私はちょうど興味があります。

CPUコアの速度が異なるのではなく、すべて同じであるのはなぜですか?

答え

スーパーユーザーの貢献者であるbwDracoが私たちに答えを提供します。

これは異種マルチプロセッシングとして知られています(HMP)およびモバイルデバイスで広く採用されています。 big.LITTLEを実装するARMベースのデバイスでは、プロセッサに異なるパフォーマンスと電力プロファイルのコアが含まれています。つまり、一部のコアは高速で動作しますが、大量の電力を消費します(より高速なアーキテクチャおよび/またはより高いクロック)一方で、エネルギー効率は高くても遅い(遅いアーキテクチャおよび/または低いクロック)。これは、特定のポイントを超えるとパフォーマンスを向上させると、電力使用量が不釣り合いに増加する傾向があるため便利です。ここでの考え方は、必要なときにパフォーマンスを取得し、不要なときにバッテリ寿命を確保することです。

デスクトッププラットフォームでは、消費電力は問題が少ないので、これは本当に必要ではありません。ほとんどのアプリケーションは、各コアが同様のパフォーマンス特性を持つことを期待しており、HMPシステムのスケジューリングプロセスは、従来の対称型マルチプロセッシング(SMP)システムのスケジューリングよりもはるかに複雑です(技術的に、Windows 10はHMPをサポートしていますが、主にモバイル向けですARM big.LITTLEを使用するデバイス)。

また、今日のほとんどのデスクトップおよびラップトッププロセッサ一部のコアが他のコアよりも高速に実行する必要があるポイントに、熱的または電気的に制限されていません。基本的に、個々のコアをどれだけ高速に作成できるかについて壁にぶつかっています。そのため、一部のコアを低速のコアに置き換えると、残りのコアを高速に実行できなくなります。

いくつかのデスクトッププロセッサがありますが1つまたは2つのコアが他のコアよりも高速に実行できます。この機能は現在、特定の非常にハイエンドのIntelプロセッサー(Turbo Boost Max Technology 3.0と呼ばれます)に限定されており、高速で実行できるコアのパフォーマンスはわずかに向上します。

設計することは確かに可能ですが大きなスレッドのワークロードに最適化するために、大きな高速コアと小さな低速コアの両方を備えた従来のx86プロセッサーは、プロセッサー設計にかなりの複雑さを追加し、アプリケーションが適切にサポートすることはほとんどありません。

2つの高速Kabyを備えた仮想プロセッサを取り上げますレイク(第7世代)コアと8つの低速ゴールドモント(Atom)コア。合計10のコアがあり、この種類のプロセッサ用に最適化されたスレッドの多いワークロードでは、通常のクアッドコアKaby Lakeプロセッサよりもパフォーマンスと効率が向上する可能性があります。ただし、コアのタイプによってパフォーマンスレベルは大きく異なり、低速コアは高速コアがサポートする一部の命令(AVXなど)もサポートしません(ARMは、ビッグコアとリトルコアの両方が同じ命令をサポートするように要求することでこの問題を回避します)。

繰り返しますが、ほとんどのWindowsベースのマルチスレッドアプリケーションは、すべてのコアが同じまたはほぼ同じレベルのパフォーマンスを持ち、同じ命令を実行できると想定しているため、この種の非対称性は、理想的とは言えないパフォーマンスをもたらす可能性が高く、おそらく、遅いコア。インテルは低速コアを変更して高度な命令サポートを追加し、すべてのコアがすべての命令を実行できるようにしますが、これは異種プロセッサのソフトウェアサポートの問題を解決しません。

アプリケーション設計への別のアプローチ、あなたがおそらくあなたの質問で考えていることに近いものは、アプリケーションの高度に並列化された部分の加速にGPUを使用するでしょう。これは、OpenCLやCUDAなどのAPIを使用して行うことができます。シングルチップソリューションに関しては、AMDはAPUでGPUアクセラレーションのハードウェアサポートを促進します。これは、従来のCPUと高性能統合GPUを異機種システムアーキテクチャと同じチップに結合しますが、これは外部での業界の取り込みがあまり見られませんいくつかの特殊なアプリケーションの。


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

画像クレジット:Mirko Waltermann(Flickr)