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 x 4 GHz、16 GHz)、2つのコアが4.0 GHzで動作し、4つのコアが2.0 GHzで動作するCPU(2 x 4.0 GHz + 4 x 2.0)はどうでしょうか。 GHz、最大16 GHz) 2番目のオプションはシングルスレッドのワークロードでも同様に優れていますが、マルチスレッドのワークロードではより優れている可能性があります。?
私はこれを一般的な質問として頼みますが、特に上記のCPUや特定の作業負荷に関してではありません。私はパターンがそれが何であるかという理由についてちょうど興味があります.
なぜCPUコアはすべて異なる速度ではなく同じ速度を持つのですか?
答え
SuperUserの寄稿者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 Lake(7世代)コアと8つの低速Goldmont(Atom)コアを備えた仮想プロセッサを考えてみましょう。合計10個のコアがあり、この種類のプロセッサ用に最適化された高度にスレッド化されたワークロードでは、通常のクアッドコアのKaby Lakeプロセッサよりもパフォーマンスと効率が向上する可能性があります。ただし、異なる種類のコアではパフォーマンスレベルが大幅に異なり、AVXのように低速コアでは高速コアでサポートされている命令もサポートされていません(ARMでは、ビッグコアとLITTLEコアの両方で同じ命令をサポートする必要があります).
繰り返しますが、ほとんどのWindowsベースのマルチスレッドアプリケーションは、すべてのコアが同じまたはほぼ同じレベルのパフォーマンスを持ち、同じ命令を実行できると想定しているため、この種の非対称は理想的とは言えないパフォーマンス、おそらく遅いコアではサポートされていない命令を使用するとクラッシュします。 Intelは低速コアを変更してすべてのコアがすべての命令を実行できるように高度な命令サポートを追加することができましたが、これによって異種プロセッサのソフトウェアサポートに関する問題が解決されることはありません。.
あなたがおそらくあなたの質問で考えているものに近い、アプリケーション設計への異なるアプローチは、アプリケーションの高度に平行した部分の加速のためにGPUを使用するでしょう。これはOpenCLやCUDAのようなAPIを使って行うことができます。シングルチップソリューションについては、AMDはAPUでGPUアクセラレーションのハードウェアサポートを推進しています。これは、異機種システムアーキテクチャと同様に、従来のCPUと高性能統合GPUを同一チップに統合したものです。いくつかの特殊なアプリケーションの.
説明に追加するものがありますか?コメントで音を消す。他の技術に精通したStack Exchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッドをチェックしてください。.
画像のクレジット:Mirko Waltermann(Flickr)