なぜすべてのコアが同じ速度であり、異なる速度の組み合わせではないCPUがあるのですか?


79

一般に、新しいコンピューターを購入する場合は、予想されるワークロードによって、購入するプロセッサーを決定します。ゲームのパフォーマンスはシングルコアの速度によって決まる傾向がありますが、ビデオ編集などのアプリケーションはコアの数によって決まります。

市場で入手可能なものに関しては、すべての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つのコア(最大4x4 GHz〜16 GHz)の代わりに、たとえば4.0 GHzで実行する2つのコアと2 GHzで実行する4つのコア(つまり2x4.0 GHz)のCPUはどうでしょうか+ 4x2.0 GHz〜16 GHz最大)。2番目のオプションは、シングルスレッドのワークロードでも同等に優れているのではないでしょうか?

私はこの質問を一般的なポイントとして尋ねます-上記にリストしたCPUや特定の特定のワークロードについてではありません。パターンがそのままである理由について私はちょうど興味があります。


15
高速コアと低速コアを備えた多くのモバイルがあり、ほとんどすべての最新のマルチコアサーバーでは、CPUコアは負荷に応じてクロックに依存せず、一部のコアは使用されていないときにコアをオフにします。エネルギーを節約するように設計していない汎用コンピューターでは、2種類のコア(CPUとGPU)しか持たないため、プラットフォームの柔軟性が向上します。
eckes

5
スレッドスケジューラは、使用するコアについてインテリジェントな選択を行う前に、プロセスが複数のコアを利用できるかどうかを判断する必要があります。これを確実に行うことは、非常に問題が多く、エラーが発生しやすくなります。特に、これがアプリケーションのニーズに応じて動的に変更できる場合。多くの場合、最適なコアが使用されている場合、スケジューラは次善の選択をしなければなりません。同一のコアは、物事をシンプルにし、最大限の柔軟性を提供し、一般的に最高のパフォーマンスを発揮します。
LMiller7

33
クロック速度は、あなたが説明した方法で加法的であると合理的に言うことはできません。4 Ghzで実行する4つのコアがあるからといって、合計16 GHzになるわけではなく、この16 Ghzを2 GHzで実行する8プロセッサまたは1 GHzで実行する16プロセッサに分割できるわけでもありません。
ボブジャービス

16
質問の前提は単純に間違っています。最新のCPUは、さまざまな速度でコアを実行することができます
-phuclv

回答:


84

これはヘテロジニアスマルチプロセッシング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を使用します。これは、OpenCLCUDAなどのAPIを使用して実行できます。シングルチップソリューションに関しては、AMDはAPUでGPUアクセラレーションのハードウェアサポートを促進します。これは、ヘテロジニアスシステムアーキテクチャと同じチップ上に従来のCPUと高性能統合GPUを組み合わせたものです。いくつかの特殊なアプリケーションの。


1
Windowsには、既に「アプリ」、「バックグラウンドプロセス」、「Windowsプロセス」という概念があります。だから、これはハードウェアレベルに拡張されませんか?
ジェイミー

2
@Jamie「バックグラウンド」プロセスのタイムスライスは小さくなり、中断される可能性が高くなります。Windows 10は、HMPシステムをある程度まで考慮していますが、どのようになっているのかについてはまだ多くの情報はありません。
ボブ

だから、編集後、@ bwDracoが私にほとんど答えてくれたと思う。「混合」プロセッサがあれば、そのように構築されていれば同じ命令セットを簡単にサポートできるため、適切なコアを選択するために何らかのスケジューラが必要になります。私は、たくさんの小さなコアに行くことで恩恵を受けるアプリケーションは、本当にたくさんの本当に小さいコアに行くことでさらに恩恵を受けるだろうと考えています。したがって、GPUアクセラレーションがあります。
ジェイミー

3
GPUケースでは、2つの大きなコアを10個の小さな低速コアと交換するのではなく、2つの大きなコアを1024個の小さな低速コアと交換する(非常に大雑把な)ことに注意してください。わずかに並列ではなく、超並列です。
-Yakk

4
Intelはおそらく、シリコンをあまり追加せずにAVX2命令を実行するGoldmontコアを取得できます(ゆっくりと、128b opのペアにデコードすることにより)。Knight's Landing(Xeon Phi)にはAVX512を備えたSilvermontベースのコアがあるため、Silvermontを変更することは不可能ではありません。しかし、KNLはベクトル命令のアウトオブオーダー実行を追加しますが、通常のSilver / Goldmontは整数に対してのみOOOOを実行するため、おそらくKNLよりもGoldmontの近くに設計したいと思うでしょう。とにかく、insnセットは実際の問題ではありません。OSサポートと小さな利点が、低消費電力コアにダイエリアを費やすことの本当の障害です。
ピーター・コーデス

67

あなたが求めているのは、現在のシステム が非対称マルチプロセッシングではなく 対称マルチプロセッシングを使用している理由です 。

非対称マルチプロセッシングは、コンピューターが巨大で複数のユニットに収容されていた昔に使用されていました。

最新のCPUは、1つのダイに1つのユニットとしてキャストされます。異なるタイプのCPUは、すべて同じバスとRAMを共有するため、混在させない方がはるかに簡単です。

CPUサイクルとRAMアクセスを制御するクロックの制約もあります。これは、異なる速度のCPUを混在させると不可能になります。クロックレスの実験用コンピューターは実際に存在し、非常に高速でしたが、現代のハードウェアの複雑さにより、よりシンプルなアーキテクチャが必要になりました。

たとえば、L3キャッシュバスはコアと同じクロック速度で実行されるため、Sandy BridgeとIvy Bridgeコアを同時に異なる速度で実行することはできません。または駐車する/オフにする(リンク:IntelのSandy Bridge Architecture Exposed)。(Skylakeについては、以下のコメントでも確認されています。)

[編集]一部の人々は、私の答えを、CPUの混合は不可能だと言っていると誤解しています。彼らの利益のために、私は述べます:異なるCPUの混合は今日の技術を超えていませんが、行われていません-「なぜ」が問題です。上記で回答したように、これは技術的に複雑であるため、コストがかかり、金銭的利益がほとんどないかまったくないため、製造業者には興味がありません。

以下にいくつかのコメントに対する回答を示します。

ターボブーストによりCPU速度が変更されるため、変更できます

ターボブーストは、クロックを高速化し、いくつかの乗数を変更することで行われます。これは、ハードウェアがそれを行うことを除いて、人々がオーバークロックするときに行うこととまったく同じです。クロックは同じCPU上のコア間で共有されるため、CPU全体とそのすべてのコアが均一に高速化されます。

一部の電話機には、速度の異なる複数のCPUが搭載されています

このような電話機には通常、2つの別個のCPU(またはCPUとGPU)のように、各CPUに関連付けられたカスタムファームウェアとソフトウェアスタックがあり、システムメモリの単一ビューがありません。この複雑さはプログラミングが難しく、非対称のマルチプロセッシングは、汎用デスクトップOSによって回避される低レベルのハードウェアに近いソフトウェア開発を必要とするため、モバイル分野に残されました。これが、そのような構成がPCに見つからない理由です(定義を十分に拡張した場合のCPU / GPUを除く)。

2x Xeon E5-2670 v3(HTを備えた12コア)を搭載したサーバーには、現在、1.3 GHz、1.5 GHz、1.6 GHz、2.2 GHz、2.5 GHz、2.7 GHz、2.8 GHz、2.9 GHz、および他の多くの速度のコアがあります。

コアはアクティブまたはアイドルです。同時にアクティブになっているすべてのコアは、同じ周波数で実行されます。表示されているのは、タイミングまたは平均化のアーティファクトです。また、Windowsは長時間コアをパークしないが、リソースモニターのリフレッシュレートよりはるかに高速ですべてのコアを個別にパーク/パーク解除することにも注意しましたが、この動作の原因はおそらくわかりません上記の発言。

Intel Haswellプロセッサには、すべてのコアで個別の電圧と周波数を有効にする電圧レギュレーターが統合されています

個々の電圧レギュレータはクロック速度とは異なります。すべてのコアが同一というわけではありません-一部は高速です。より高速のコアにはわずかに少ない電力が与えられ、より弱いコアに与えられる電力を高めるためのヘッドルームが作成されます。現在のクロック速度を維持するために、コア電圧レギュレータは可能な限り低く設定されます。CPUの電源制御ユニットは電圧を調整し、品質が異なるコアに必要な場合はOS要求をオーバーライドします。概要:個々のレギュレータは、すべてのコアを同じクロック速度で経済的に動作させるためのものであり、個々のコア速度を設定するためのものではありません


3
あ。もっと短く、要点まで。+1
ヘネス

6
@harrymcには、それを完璧に管理するシンクロナイザーブロックがあります。DRAMはコア速度よりも遅く実行され、同じチップ上でIntelコアを異なる速度で動的に実行できます。
pjc50

10
Intel Coreシリーズプロセッサは、同じダイ上で常に異なる速度で実行されます。
ニックT

9
big.LITTLEアーキテクチャとコアに依存しないクロックブーストの唯一の存在は、間違いを証明します。異種マルチプロセッシングが主流です。それはすることができ、それが、行われている携帯電話ではなく、ために行われ、何らかの理由ではないのデスクトップに。
Agent_L

9
@Agent_L:理由は複雑さです。デスクトップCPUはすでに十分に高価です。だから私は繰り返します:すべてが可能ですが、実際の問題は、それが実行できるかどうかではなく、なぜ実行されないのかということです。これは不可能だと主張しているように私を攻撃しないでください-私が言うのは、それが複雑すぎて費用がかかり、利益が少なすぎて製造業者が興味を持たないということです。
harrymc

47

クロック速度が異なるバリアントがないのはなぜですか?すなわち。2つの「大きな」コアと多数の小さなコア。

あなたのポケットの中の電話がまさにその配置をしている可能性があります-ARM big.LITTLEはあなたが説明したとおりに動作します。そこでは、クロック速度の違いだけでなく、完全に異なるコアタイプになる可能性があります。通常、低速のクロックコアは「ダンバー」です(順不同の実行やその他のCPU最適化はありません)。

基本的にバッテリーを節約するのは良い考えですが、独自の欠点があります。異なるCPU間でデータを移動するためのブックキーピングはより複雑であり、周辺機器との通信はより複雑であり、最も重要なことは、そのようなコアを効果的に使用するためにタスクスケジューラは非常にスマートでなければならない(そしてしばしば「推測」する) 。

理想的な取り決めは、「小さな」コアで非タイムクリティカルなバックグラウンドタスクまたは比較的小さなインタラクティブタスクを実行し、大きな長い計算のためにのみ「大きな」ものをウェイクアップすることです(小さなコアに費やされる余分な時間が終わる)より多くのバッテリーを消費する)またはユーザーが小さなコアで動きが鈍い中規模のインタラクティブタスクに使用します。

ただし、スケジューラーは、各タスクが実行している可能性のある作業の種類に関する情報を制限しており、それらをスケジュールする場所を決定するために、ヒューリスティック(または特定のタスクにアフィニティマスクを強制するなどの外部情報)に頼る必要があります。これがうまくいかない場合、遅いコアでタスクを実行するために多くの時間/電力を浪費し、悪いユーザーエクスペリエンスを与えるか、優先度の低いタスクに「大きな」コアを使用して、電力/それらを必要とするタスクからそれらを盗みます。

また、非対称マルチプロセッシングシステムでは、通常、タスクをSMPシステムよりも別のコアに移行する方がコストがかかるため、スケジューラは通常、ランダムな空きコアで実行して移動する代わりに、適切な初期推測を行う必要がありますそれについては後で。


ここでのIntelの選択は、非常に積極的な周波数スケーリングを備えた、同一のインテリジェントで高速なコアの数を減らすことです。CPUがビジーになると、CPUは最大クロック速度まですばやくランプアップし、作業を可能な限り高速で実行してから、最小消費電力モードに戻るように縮小します。これにより、スケジューラに特別な負荷がかかることはなく、上記の悪いシナリオを回避できます。もちろん、低クロックモードであっても、これらのコアは「スマート」なコアなので、おそらく低クロックの「愚かな」big.LITTLEコアよりも多く消費します。


1
ヒューリスティックは非常に単純でなければなりません。意図しないタスクの切り替え(フルタイムスライスの使用)は、遅いCPUがタスクに不適切であることを示しています。非常に低い使用率とすべての自発的なタスクの切り替えは、タスクを低速のCPUに移動できることを示しています。
R ..

3
別の問題は、4つの愚か2GHzのコアは2つのスマート4GHzのコアよりもダイサイズをとることができ、またはそれらは小さくなると4 GHzのコアよりもはるかに少ない電力を取るだけでなく、はるかに遅いを実行することである
phuclv

2
@R .:原則に沿ってあなたに同意しますが、これに対して基本的なスケジューラサポートを有効にしても、使用したARMボード上でばかげたコアジョスリングが見られたので、何か他のものがあるはずです。さらに、ほとんどの「通常の」マルチスレッドソフトウェアはSMPを念頭に置いて記述されているため、スレッドプールがコアの合計数と同じくらい大きく、ジョブが低速のコアにドラッグすることは珍しくありません。
マッテオイタリア

1
@Ramhound:120Wの10コアパーツには、コアあたり12Wの電力バジェットがあります(シングルコアターボモードを除く)。これが最高のシングルコアクロックがクアッドコアパーツにある理由です。たとえば、Intel i7-6700kは4コアで91Wの電力バジェットを持ちます。 Prime95のようなAVX2 + FMAワークロード)。これが、シングルコアターボヘッドルームがわずか0.2GHzであるのに対し、2.2GHz base @ 145W、3.6GHzターボを搭載した22コアBroadwell E5-2699v4である理由でもあります。
ピーターコーデス

@Ramhound:これを拡張する回答を追加しまし。メニーコアXeonは、まさに OPが求めているもののようです。できるだけ多くの低電力コアを操作するか、可能な場合はシングルスレッドを高速で実行する(ターボ)ために多くの電力を消費します。
ピーター・コーデス

14

ゲームのパフォーマンスは、シングルコアの速度によって決まる傾向があり、

過去(DOS時代のゲーム):正しい。
最近では、それはもはや真実ではありません。最近のゲームの多くはスレッド化されており、複数のコアの恩恵を受けています。一部のゲームはすでに4つのコアで非常に満足しており、その数は時間とともに増加するようです。

一方、ビデオ編集などのアプリケーションはコアの数によって決まります。

本当の並べ替え。

コアの数*コアの速度*効率。
単一の同一のコアを同一のコアのセットと比較する場合、ほとんど正しいです。

市場で入手可能なものに関しては、すべてのCPUがほぼ同じ速度であるように見えますが、主な違いはスレッドまたはコアが多いことです。例えば:

Intel Core i5 7600k、Base Freq 3.80 GHz、4コアIntel Core i7 7700k、Base Freq 4.20 GHz、4コア、8スレッドAMD Ryzen 1600x、Base Freq 3.60 GHz、6コア、12スレッドAMD Ryzen 1800x、Base Freq 3.60 GHz、 8コア、16スレッド

異なるアーキテクチャを比較するのは危険ですが、OK ...

それで、すべてのコアが同じクロック速度を持っているのに、コアを増やすこのパターンを見ているのはなぜですか?

障壁にぶつかったからです。クロック速度を上げると、さらに多くの電力が必要になり、より多くの熱が発生します。より多くの熱は、より多くの電力が必要であることを意味しました。私たちはその方法を試してみましたが、結果は恐ろしいペンティアム4でした。冷めにくい。スマートに設計されたPentium-Mよりも高速ではありません(3.0GHzのP4は1.7GHzのP-mobとほぼ同じ速さでした)。

それ以来、私たちはクロック速度のプッシュをほとんどあきらめ、代わりにスマートなソリューションを構築しました。その一部は、生のクロック速度で複数のコアを使用することでした。

たとえば、単一の4GHzコアは、3つの2GHzコアと同じくらいの電力を消費し、発熱する可能性があります。ソフトウェアが複数のコアを使用できる場合、はるかに高速になります。

すべてのソフトウェアがそれを実行できるわけではありませんが、通常は最新のソフトウェアが実行できます。

これは、複数のコアを持つチップがある理由と、異なる数のコアを持つチップを販売する理由の一部に答えています。

クロック速度については、3つのポイントを特定できると思います。

  • 低消費電力のCPUは、生の速度が必要ないかなりの場合に意味があります。たとえば、ドメインコントローラー、NASセットアップ、...これらのために、より低い周波数のCPUがあります。場合によっては、より多くのコアを使用することもあります(たとえば、Webサーバーでは8倍の低速CPUが有効です)。
  • 残りについては、通常、現在の設計が熱くなりすぎることなく実行できる最大周波数に近づいています。(現在の設計では3〜4 GHzと言います)。
  • さらに、ビニングを行います。すべてのCPUが均等に生成されるわけではありません。一部のCPUはチップの一部のスコアが低いか、スコアが低いため、それらのパーツを無効にして別の製品として販売しています。

この典型的な例は、4コアのAMDチップです。1つのコアが破損した場合、無効化され、3コアチップとして販売されました。これらの3つのコアに対する需要が高い場合、4つのコアでさえ3コアバージョンとして販売され、適切なソフトウェアハックがあれば、4番目のコアを再度有効にできます。

そして、これはコアの数だけでなく、速度にも影響します。一部のチップは他のチップよりも高温になります。温度が高すぎるため、低速のCPUとして販売します(周波数が低いほど、発熱も少なくなります)。

そして、生産とマーケティングがあり、それはさらにそれを台無しにします。

クロック速度が異なるバリアントがないのはなぜですか?すなわち。2つの「大きな」コアと多数の小さなコア。

します。理にかなっている場所(携帯電話など)では、低速のコアCPU(低電力)といくつかの高速のコアを備えたSoCがよくあります。ただし、一般的なデスクトップPCでは、これは行われません。それにより、セットアップがはるかに複雑になり、より高価になり、消耗するバッテリーがなくなります。


1
私が指摘したように、「私はこの質問を一般的な点として尋ねます-上記にリストしたCPUについては特にではありません」2つのシナリオを1.すべての大きなコア、および2. 2つの大きなコアと2つの小さなコアとして扱う場合、言及したすべてのポイントは両方のケースに当てはまると思います。理論上の最大シングルコア速度、チップのビニング、使用していないときのダウンクロック。
ジェイミー

単一の最大速度コアは、選択されない場合にはそれほど興味深いものではありません。スケジューラは、実際には高速コアを優先するように更新する必要があります。
ヘネス

10

クロック速度が異なるバリアントがないのはなぜですか?たとえば、2つの「大きな」コアと多数の小さなコア。

消費電力について非常に懸念している場合を除き、追加のコアに関連するすべてのコストを受け入れ、そのコアから可能な限り多くのパフォーマンスを得ることは意味がありません。最大クロック速度は主に製造プロセスによって決定され、チップ全体は同じプロセスで作成されます。それでは、いくつかのコアをサポートする製造プロセスよりも遅くすることの利点は何でしょうか?

すでに、電力を節約するために速度を落とすことができるコアがあります。ピークパフォーマンスを制限するポイントは何ですか?


2
これが私が考えていたことです。すべてのエリートになる可能性があるのに、なぜいくつかの下位コンポーネントを意図的に使用するのですか?+1。
MPW

1
@MPW選択は、大きなコアを作成してから中性化することではなく、すべての大きなコアといくつかの大きなコアと多くの小さなコアの間です。シングルスレッドパフォーマンスとマルチスレッドパフォーマンスの2つの競合シナリオがあるため、両方を最大化しないのはなぜですか?少数の大きなコアと多数の小さなコアを備えたチップを製造できないことを知っていますか?
ジェイミー

@Jamieいくつかの大きなコアと小さなコアを備えたチップを製造できます。しかし、小さなコアは、より低いクロック速度で動作しません。
デビッドシュワルツ

そのように設計されていれば、彼らはそうするでしょう...問題は、既存の製造プロセスを採用してそれを廃止せずに、なぜ最初からそのように設計しないのかということです。
ジェイミー

@ジェイミー私はあなたが言っていることを理解していません。CPU全体を同じ製造プロセスで作成する必要があり、最大クロック速度は主に製造プロセスの特性です。同じ製造レベルの低いクロック速度は、一般的になる必要はコアより複雑で、より多くのスペースを取り、そうでない場合は、なぜ彼らは低クロック速度を必要としますか?
デビッドシュワルツ

9

クロック速度が異なるバリアントがないのはなぜですか?たとえば、2つの「大きな」コアと多数の小さなコア。

ほとんどすべての大型プロセッサは、クロック速度を上げたり下げたりする機能を備えているため、ほとんどの大型プロセッサにとって、公称クロック速度はあまり意味がありません。異なるコアを独立して上下にクロックできるかどうかを尋ねています。

私は他の多くの答えにちょっと驚いています。現代のプロセッサはこれを実行できます。これは、たとえば、スマートフォンでCPU-Zを開くことでテストできます。私のGoogle Pixelは、異なるコアを異なる速度で実行できます。

公称2.15 Ghzですが、2つのコアは1.593 Ghzで、2つのコアは1.132 Ghzです。

実際、2009年のメインストリームIntel CPUには、他のコアをアンダークロックしながら個々のコアをより高くブーストするロジックがあり、TDP予算内に収まりつつ、より優れたシングルコアパフォーマンスを実現しています:http : //www.anandtech.com/show/2832/4

「Favored Core」(Intelのマーケティング用語)を備えた新しいIntelプロセッサーは、工場で各コアの特性が確認されており、最速のコアがさらに高いレベルに引き上げられます。http//www.anandtech.com/show/11550/the-intel -skylakex-review-core-i9-7900x-i7-7820x-and-i7-7800x-tested / 7

AMDのブルドーザーチップには、これのプリミティブバージョンがあります:http : //www.anandtech.com/show/4955/the-bulldozer-review-amd-fx8150-tested/4

AMDの新しいRyzenチップにもおそらくこれがありますが、ここでは明示的に説明していません:http : //www.anandtech.com/show/11170/the-amd-zen-and-ryzen-7-review-a-deep-dive -on-1800x-1700x-and-1700 / 11


別の質問に答えています。問題は、2つのシナリオのメリットである、いくつかの大きなコアといくつかの小さなコアに対する、多くの大きなコアに関するものです。どちらの状況でも、需要に応じてクロックを上げたり下げたり、コアをブーストできます。
ジェイミー

3
それは私が質問を読む方法ではありません。この質問では、「ビッグ」と「スモール」という言葉を使用しているにもかかわらず、アーキテクチャ的に異なるコアについては言及していません。クロック速度のみに焦点を当てています。
グラント呉

8

近代的なシステムでは、あなたは、多くの場合行う異なる速度で実行されている全てのコアを持っています。頻繁に使用されないコアをクロックダウンすると、電力使用量と熱出力が削減されますが、これは優れています。また、「ターボブースト」などの機能により、他のコアがアイドル状態である限り、1つまたは2つのコアの実行速度が大幅に向上するため、電力使用量が削減されますパッケージ全体の熱出力が高くなりすぎないようにします。このような機能を備えたチップの場合、リストに表示される速度は、すべてのコアで一度に得られる最高速度です。そして、なぜすべてのコアが同じ最大速度を持っているのでしょうか?まあ、それらはすべて同じデザインで、同じ物理チップ上にあり、同じ半導体プロセスで設計されているので、なぜ違うのですか?

すべてのコアが同一である理由は、ある時点であるコアで実行されているスレッドが別の時点で別のコアで実行を開始するのが最も簡単になるためです。他の場所で述べたように、同一のコアのこの原則に従わない一般的に使用されるチップ、すなわちARM「big.LITTLE」CPUがあります。私の考えでは、「大きな」コアと「小さな」コアの最も重要な違いは、クロック速度ではありません(「大きな」コアは、より高価で、より多くの命令をクロックごとに取得する、より洗練された、より投機的なコアになる傾向があります) 「小さな」コアは、ARMの単一の問題、順序どおり、低電力のルートに近づきますが、

また、ヘテロジニアスコンピューティングの領域にさらに進むと、同じチップに「CPU」および「GPU」コアが統合されることも一般的になりつつあります。これらは完全に異なる設計を持ち、異なる命令セットを実行し、異なる方法でアドレス指定され、一般に異なる方法でクロックされます。


7

IntelのXeon E5-2699v4のようなCPUで得られるのは、高速なシングルスレッドパフォーマンスと非常に高いマルチスレッドスループットです

22コアのBroadwellです。持続クロック速度は、すべてのコアがアクティブな状態(ビデオエンコーディングなど)で2.2GHzですが、シングルコアの最大ターボは3.6GHzです。

そのため、並列タスクの実行中、145Wの電力バジェットを22 6.6Wコアとして使用します。しかし、数個のスレッドのみでタスクを実行している間、同じ電力バジェットにより、いくつかのコアが最大3.6GHzまでターボできます。(大きなXeon低いシングルコアメモリとL3キャッシュ帯域幅は、 3.6GHzのデスクトップクアッドコアほど高速に実行できない可能性があることを意味します。デスクトップIntel CPUのシングルコアは、より多くの合計メモリ帯域幅。)

2.2GHzの定格クロック速度は、温度制限のために低いです。CPUのコアが多いほど、すべてがアクティブなときに実行するのが遅くなります。この効果は、質問で言及した4コアCPUと8コアCPUではそれほど大きくありません。8コアはそれほど多くないコアであり、電力バジェットが非常に高いためです。 熱狂的なデスクトップCPUでさえ、この効果を顕著に示しています。IntelのSkylake-X i9-7900Xは、ベース3.3GHz、最大ターボ4.5GHzの10c20t部品です。 これは、i7-6700k(オーバークロックなしの4.0GHz持続/ 4.2GHzターボ)よりもはるかにシングルコアのターボヘッドルームです。

周波数/電圧スケーリング(DVFS)により、同じコアを広範囲のパフォーマンス/効率曲線で動作させることができます。Skylakeの電源管理に関するこのIDF2015のプレゼンテーション も参照してください。CPUが効率的に実行できることに関する多くの興味深い詳細と、設計時とDVFSのオンザフライの両方でパフォーマンスと効率のトレードオフがあります。

スペクトルのもう一方の端では、Intel Core-M CPUは、4.5Wで1.2GHzのような非常に低い持続周波数を持っていますが、最大2.9GHzまでターボできます。複数のコアをアクティブにすると、巨大なXeonのように、より効率的なクロック速度でコアを実行できます。

ほとんどのメリットを得るために、異機種混合のbig.LITTLEスタイルのアーキテクチャは必要ありません。ARM big.LITTLEの小さなコアは、計算作業に適さない、かなりくだらない順序のコアです。ポイントは、非常に低い電力でUIを実行することです。それらの多くは、ビデオのエンコードやその他の深刻な数値計算には適していません。(@LưuVĩnhPhúcは、x86にbig.LITTLEがない理由についていくつかの議論を見つけました。基本的に、非常に低電力の超低速コアに余分なシリコンを費やすことは、一般的なデスクトップ/ラップトップの使用には価値がありません。)


一方、ビデオ編集などのアプリケーションはコアの数によって決まります。[マルチスレッドワークロードの場合、4 GHzの4倍よりも4.0 GHzの2倍+ 2.0 GHzの4倍の方が優れていませんか。

これが重要な誤解です。より多くのコアに分散する場合、1秒あたりの合計クロックティック数と同じ数がより有用であると考えているようです。そうではありません。もっと似てる

cores * perf_per_core * (scaling efficiency)^cores

perf_per_core3GHz Pentium4は3GHz Skylakeよりもクロックサイクルあたりの作業量がはるかに少ないため、クロック速度とは異なります。)

さらに重要なことは、効率が1.0であることは非常にまれです。いくつかの厄介な並列タスクは、ほぼ直線的にスケーリングします(複数のソースファイルのコンパイルなど)。しかし、ビデオのエンコードはそうではありません x264の場合、スケーリングは数コアまでは非常に良好ですが、コアが増えると悪化します。たとえば、1コアから2コアに移行すると速度はほぼ2倍になりますが、32コアから64コアに移行すると、一般的な1080pエンコードでははるかに役立ちます。速度がプラトーになるポイントは、設定によって異なります。(-preset veryslow各フレームでより多くの分析を行い、より多くのコアをビジー状態に保つことができます-preset fast)。

非常に低速のコアが多数あると、x264のシングルスレッド部分がボトルネックになります。(たとえば、最終的なCABACビットストリームエンコーディング。h.264のgzipに相当し、並列化されません。)OSがスケジュール方法を知っていた場合(またはx264が適切なスレッドを固定した場合、高速コア)。

x265は、x264よりも多くのコアを活用できます。これは、実行する分析が多く、h.265のWPP設計により、エンコードおよびデコードの並列性が向上するためです。しかし、1080pであっても、ある時点で悪用するために並列処理が不足します。


複数のビデオをエンコードする場合、L3キャッシュの容量と帯域幅、メモリ帯域幅などの共有リソースをめぐる競合を除き、複数のビデオを並行して適切にスケーリングします。問題の非常に多くの異なる部分を一度に処理する必要がないので、より高速なコアが少ないほど、同じ量のL3キ​​ャッシュからより多くの利益を得ることができます。


4

さまざまな部分が異なる独立した速度で実行されるコンピューターを設計することは可能ですが、リソースの調停では、多くの場合、最初にサービスを提供する要求を迅速に決定できる必要があります。 。ほとんどの場合、そのようなことを決定することは非常に簡単です。「クイズブザー」回路のようなものは、わずか2つのトランジスタで実装できます。問題は、信頼できる迅速な決定を下すことです明確なのは難しいです。多くの場合、これを行う唯一の実用的な方法は、「シンクロナイザー」と呼ばれる決定を使用することです。これにより、あいまいさを回避できますが、2サイクルの遅延が生じます。アービトレーションの勝者を決定するためにすべての操作で2サイクルの遅延を許容する場合は、別々のクロックで2つのシステム間で確実にアービトレーションするキャッシングコントローラーを設計できます。ただし、競合していないリクエストでも2サイクルの遅延があるため、競合がない場合にキャッシュがすぐにリクエストに応答するようにしたい場合、このようなアプローチはあまり有用ではありません。

すべてを共通のクロックで実行すると、同期の必要がなくなり、クロックドメイン間で情報を受け渡したり、信号を制御したりする必要があるたびに2サイクルの通信遅延が発生しなくなります。


4

デスクトップコンピューターは既にこれを実行しています。

一度にアクティブになるスレッドは1〜72のCPU(のセット)と、16〜7168のコンピューティングユニットのGPU(のセット)があります。

グラフィックスは、大規模な並列作業が効率的であることがわかったタスクの例です。GPUは、グラフィックスを実行したい種類の操作を実行するように最適化されています(ただし、これに限定されません)。

これは、いくつかの大きなコアと多くの小さなコアを持つコンピューターです。

一般に、X FLOPSの1つのコアをX / 2 FLOPSの3つのコアに交換する価値はありません。しかし、X FLOPSで1つのコアをX / 5 FLOPSで100コアと交換することは非常に価値があります。

このためのプログラミングでは、CPUとGPUで非常に異なるコードを生成します。GPUはGPUで最適に実行されるタスクを取得し、CPUはCPUで最適に実行されるタスクを取得します。

超並列コードを正しく実行するのは難しいため、CPU用のコードを書くのは間違いなくはるかに簡単です。そのため、ペイオフが大きい場合にのみ、マルチコアの状況でシングルコアのパフォーマンスと引き換えに価値があります。GPUを適切に使用すると、大きな見返りが得られます。

現在、モバイルデバイスは別の理由でこれを行っています。彼らは非常に遅い低消費電力コアを持っていますが、計算単位あたりの消費電力もかなり少なくなっています。これにより、CPUを集中的に使用するタスクを実行していないときに、バッテリーの寿命を大幅に延ばすことができます。ここには、異なる種類の「大きな見返り」があります。パフォーマンスではなく、電力効率。これを正しく動作させるには、OS側とアプリケーションライター側で依然として多くの作業が必要です。大きな見返りだけが価値がありました。


-1

一般的なシステムが同じ速度でコアを使用する理由は、単純な数学の問題です。単一の定数セットに基づく入力および出力タイミング(最適化あり)(スケーラブル=多数のユニットで乗算可能)。

そして、ここの誰かは、モバイルデバイスは異なる速度のマルチCPUを持っていると言いました。それは本当ではありません。中央処理装置でない場合、中央処理装置ではありません。製造業者がそれがそうであるかそうでないかに関わらず。その場合[CPUではなく]単なる「サポートパッケージ」です。


-10

OPは基本的な電子機器を理解しているとは思わない。すべてのコンピューターが機能するには、時計が1つ必要です。内部クロックによって生成されるクロックサイクルは、すべてのデータの移動のメトロノームです。同期性を実現するには、すべての操作を共通のクロックに関連付ける必要があります。これは、分離されたコンピューターでの内部データ実行とネットワーク全体の両方に当てはまります。

CPU上のコアを異なる周波数で実行することで分離したい場合、そのようなプラットフォームを設計できます。ただし、個々のコアをマザーボード機能の独立したサブセットに結び付けるマザーボードソリューションを設計する必要があります。クアッドコアコンピューターではなく、4台のコンピューターが残ります。

または、別の人が指摘したように、コアの周波数を個別に調整するコードをカーネルに追加できます。ただし、これによりパフォーマンスが低下します。速度または電力効率を上げることができますが、両方を同時に使うことはできません。


1
そうではないので、私の質問です。Intel i5 7600とi5 7600kを比較すると、ベースクロックは両方とも100mhzであり、違いはコア比です。したがって、100MHzの同じベースクロックで異なるコア比を持つ2つのコアを使用できます。このシナリオは同期要件に違反しますか?
ジェイミー

4
ええ、これはあまりにも単純化しすぎです。すべての操作を同じクロックに結び付けなければならないというのは本当ではありません。多くのクロックドメインがあり、異なるコアを同じ速度で実行することは完全に可能です。バスクロックは内部クロックなどとは
異なります。– pjc50

11
最新のチップにはすでに複数のクロックドメインがあります(安価でダムのあるマイクロコントローラーのRTCでさえ、通常は個別の32.7kHzドメインで実行されます)。クロックドメイン間で同期する必要があります。共通のクロックでも、2、4、8などで除算できます。
マイケル

1
すべて本当。しかし、それでも操作の効率は低下します。そして、それはパフォーマンスに関して常に目標です。それが私のポイントでした。もちろんできます。しかし、パフォーマンスに打撃を与えます。
RyRoUK

「パフォーマンスの低下」-何と比較?同じクロックで実行されているn個のプロセッサーがある基本状態を想定しています。そうである必要はありません。プロセッサーX +プロセッサーYは、プロセッサーYが何であっても、プロセッサーX単独よりも強力で柔軟なソリューションです。
hmijail
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.