\r\n\r\n

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

新しいCPUの比較をたくさんしたことがある人は、組み合わせが違うというより、すべてのコアがスピードを持っているように見えることに気がついたのではないでしょうか。なぜ?本日のスーパーユーザーQ&Aは、読者の皆様から寄せられた質問にお答えします。

新しいCPUを購入するためにいろいろと比較をしたことがある人は、組み合わせが違うというよりも、すべてのコアがスピードを持っているように見えることに気がついたのではないでしょうか。なぜ?本日のスーパーユーザーQ&Aは、読者の皆様から寄せられた質問にお答えします。

本日のQ&Aセッションは、コミュニティ主導のQ&Aサイト群であるStack Exchangeの分派であるSuperUserの提供によるものです。

ご質問

Superuserの読者であるJamieは、なぜCPUコアがすべて同じ速度で、異なる速度でないのかを知りたがっていました:。

一般に、新しいコンピュータを購入する場合、コンピュータの予想される作業量に基づいて購入するプロセッサを決定することになります。ビデオゲームではシングルコアの速度で性能が決まりがちですが、ビデオ編集などのアプリケーションではコアの数で性能が決まります。市販されているものでは、どのCPUもほぼ同じ速度で、主な違いはスレッド数が多いか、コア数が多いか、ということのようです。

例えば、こんな感じです。

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

なぜ、コアが増えても、すべてのコアのクロックが同じというパターンが見られるのでしょうか?なぜクロック数の異なるバリエーションがないのでしょうか?例えば、2つの「大きな」コアとたくさんの**全コアです。

例えば4.0GHzで4コア(=4×4GHz、最大16GHz)ではなく、4.0GHzで2コア、2.0GHzで4コア(=2×4.0GHz + 4×2.0GHz 、最大16GHz)のCPUはいかがでしょうか。2番目のオプションは、シングルスレッド・ワークロードでは同等に優れているが、マルチスレッド・ワークロードでは潜在的に優れているのでしょうか?

これは一般的な質問であり、上記のCPUや特定のワークロードに関して特別に質問しているわけではありません。ただ、なぜそのようなパターンになっているのかが気になるところです。

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

回答

スーパーユーザーコントリビューターのbwDracoさんより、回答をいただきました。

これはヘテロジニアス・マルチプロセッシング(HMP)と呼ばれ、モバイル機器に広く採用されている。big.LITTLEを実装したARMベースのデバイスでは、プロセッサには性能と電力プロファイルが異なるコアがあります。つまり、高速に動作するが大量の電力を消費するコア(高速アーキテクチャまたは高クロック)と、エネルギー効率は高いが低速なコア(低速アーキテクチャまたは低クロック)があります。ある一定のレベルを超えると、性能を上げると消費電力が不釣り合いに増える傾向があるため、これは有効です。必要なときに性能を発揮し、そうでないときはバッテリーライフを確保するというのが、ここでの考え方です。

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

また、現在のデスクトップやノートPCのプロセッサは、たとえ短時間でも一部のコアが他のコアより高速に動作する必要があるほど、熱的・電気的な制限がないものがほとんどです。個々のコアを高速化するのは基本的に限界があるので、一部のコアを低速なものに置き換えても、残りのコアが高速に動作することはありません。

デスクトップ用プロセッサの中には、1つか2つのコアを他のコアより高速に動作させることができるものがいくつかありますが、この機能は現在、一部の非常にハイエンドなインテルプロセッサに限られており(Turbo Boost Max Technology 3.0として知られています)、高速動作できるコアの性能をわずかに向上させるだけとなっています。

従来のx86プロセッサでも、高速な大型コアと、より低速なコアの両方を搭載して、ヘビー・スレッド・ワークロードに最適化することは可能ですが、この場合、プロセッサ設計が非常に複雑になるため、アプリケーション側が適切にサポートできる可能性は低くなります。

高速なKaby Lake(第7世代)コアを2個、低速なGoldmont(Atom)コアを8個搭載したプロセッサを仮想してみましょう。合計10コアを持つことになり、この種のプロセッサに最適化されたヘビー・スレッドのワークロードは、通常のクアッドコアのKaby Lakeプロセッサよりも性能と効率が向上する可能性があります。しかし、コアの種類によって性能は大きく異なり、遅いコアは速いコアがサポートするインストラクション***(AVXなど)にも対応していません(ARMは、ビッグコアとリトルコアの両方が同じインストラクション***をサポートすることを要求することでこの問題を回避しています)。

繰り返しますが、ほとんどの Windows ベースのマルチスレッドアプリケーションは、すべてのコアが同じかほぼ同じレベルの性能を持ち、同じ命令を実行できることを想定しています。Intelは低速コアを改造して高度な命令サポートを追加し、すべてのコアがすべての命令を実行できるようにすることはできますが、これではヘテロジニアスプロセッサのソフトウェアサポートの問題は解決できません。

アプリケーション設計の別のアプローチとして、おそらくあなたが質問で考えていることに近いのですが、アプリケーションの高度な並列部分の高速化のためにGPUを使用します。これは、OpenCLやCUDAなどのAPIを使って行うことができます。シングルチップのソリューションとして、AMDは従来のCPUと高性能な統合GPUを同一チップに組み込んだAPUでGPUアクセラレーションのハードウェアサポートをヘテロジニアスシステムアーキテクチャとして推進していますが、これは一部の特殊なアプリケーション以外ではあまり業界に浸透していないようです****。


何か補足することはありますか?コメント欄でご意見をお聞かせください。他の技術に精通したStack Exchangeユーザーからもっと答えを知りたいですか?ディスカッションスレッドの全文はこちらでご確認ください。

写真提供:Mirko Waltman (Flickr)

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ