なぜ、すべてのコアが同じ速度のCPUがあり、異なる速度の組み合わせがないのでしょうか?
一般に、新しいコンピュータを購入する場合、どのプロセッサを購入するかは、予想される作業負荷によって決定されます。ゲームの性能はシングルコアの速度で決まり、ビデオ編集などのアプリケーションはコア数で決まる傾向があります。
市場に出回っているCPUを見ると、どのCPUもほぼ同じ速度で、主な違いはスレッド数かコア数の多さです。
例えば、こんな感じです。
- インテル Core i5-7600K、ベース周波数3.80GHz、4コア、4スレッド
- インテル Core i7-7700K、ベース周波数4.20GHz、4コア、8スレッド
- AMD Ryzen 5 1600X、ベース周波数3.60GHz、6コア、12スレッド
- AMD Ryzen 7 1800X、ベース周波数3.60GHz、8コア、16スレッド
**それではなぜ、すべてのコアのクロックが同じで、コアが増えるというパターンが見られるのでしょうか?
**なぜ、クロックが異なるバリエーションがないのでしょうか?例えば、2つの 'big' コアとたくさんの小さなコアがあります。
例えば、4.0GHzの4コア(つまり4×4GHz~最大16GHz)ではなく、4.0GHzの2コアのCPUはどうでしょう。0 GHz と 2 GHz で動作する 4 コアの CPU ではどうでしょうか(つまり 2x4.0 GHz + 4x2.0 GHz ~ 16 GHz 最大)。2番目のオプションは、シングルスレッド・ワークロードでは同等ですが、マルチスレッド・ワークロードではより優れている可能性があるのではないでしょうか?
この質問は一般論であり、上に挙げたCPUや特定のワークロードについてではありません。なぜこのようなパターンになるのか、知りたいだけなのです。
79
3
なぜ、現在のシステムで、このようなことが行われているのか? 対称型マルチプロセッシング ではなく 非対称型マルチプロセッシング。
非対称型マルチプロセッシングは、昔、コンピュータが巨大だった時代に使われていました。 巨大で、複数のユニットにまたがって収容されている。
最近のCPUは1つのダイに1つのユニットとして鋳造されており、この方がよりシンプルになります。 バスやRAMを共有するため、異なるタイプのCPUを混在させることができます。
また、CPUのサイクルを司るクロックの制約もあります。 RAMへのアクセス。異なるCPUを混在させることは不可能になります。 速度です。クロックレスの実験用コンピュータは存在し、かなりの速度で動作しました。 しかし、現代のハードウェアは複雑なため、よりシンプルなものが要求されます。 アーキテクチャを採用しています。
例えば、Sandy BridgeとIvy Bridgeのコアは、L3キャッシュバスがコアと同じクロック速度で動作するため、同時に異なる速度で動作させることはできず、同期の問題を防ぐためには、すべてその速度で動作するか、パーク/オフする必要があります(リンク先:Sandy BridgeとIvy Bridgeのコア)。Intel's Sandy Bridge Architecture Exposed。(また、Skylakeについては以下のコメントで検証しています)。
[編集] 私の回答が、"某国 "であると誤解している人がいます。 CPUの混在は不可能です。そのような方のために、次のように述べます。異なるCPUを混在させることは なぜしないのか? 上記のように、技術的に複雑で、コストがかかるからです。 また、経済的な利益もほとんどないため、メーカーは興味を示さない。
以下は、いくつかのコメントに対する答えです。
ターボブーストは、クロックの高速化と一部のマルチプライヤーを変更することで行われます。 これはオーバークロックの際に人々が行うことと全く同じですが、ハードウェ がやってくれるんです。クロックは同じCPUのコア間で共有されます。 そのため、CPU全体とそのすべてのコアを均一に高速化することができます。
このような携帯電話では、通常、カスタムファームウェアとソフトウェアスタックが関連付けられています。 各CPUは、2つの別々のCPU(またはCPUとGPU)のようなものであり、また、CPUとGPUのようなものはありません。 システムメモリを一望できる。この複雑さはプログラミングが困難なため 非対称型マルチプロセッシングは、モバイル領域に残されました。 ハードウェアに近い低レベルのソフトウェア開発が必要なためです。 汎用のデスクトップOSでは敬遠される。 PCでこのような構成が見られないのは、このためです。 (ただし、CPU/GPUの定義を十分拡大した場合は除く)。
2x Xeon E5-2670 v3(HTで12コア)を搭載した私のサーバは、現在1.3GHz、1.5GHz、1.6GHz、2.2GHz、2.5GHz、2.7GHz、2.8GHz、2.9GHz、その他多くのスピードのコアを搭載しています。
コアはアクティブかアイドルのどちらかです。同時にアクティブになっているコアはすべて同じ周波数で動作します。あなたが見ているものは、タイミングか平均化のどちらかのアーチファクトに過ぎません。 私自身も、Windowsはコアを長時間パークしないことに注目しています。 むしろ、リフレッシュレートよりもはるかに速く、すべてのコアを個別にパーク/アンパークします。 しかし、この動作の理由はわかりません。 おそらく、上記のような指摘がなされた背景には、このようなことがあるのでしょう。
Intel Haswellプロセッサは、各コアの個別の電圧と周波数を可能にする電圧レギュレータを内蔵しています。
個々の電圧レギュレータは、クロック速度によって異なります。すべてのコアが同じではなく、より高速なコアもあります。高速なコアには少し低い電力が供給され、弱いコアに供給される電力を高めるためのヘッドルームが作られます。コア電圧レギュレータは、現在のクロック速度を維持するために、可能な限り低く設定される。CPUの電源制御ユニットは電圧を調整し、品質が異なるコアに対して、必要に応じてOSの要求を上書きします。まとめ:個別レギュレータは全コアを同じクロックで経済的に動作させるためのものであり、個々のコアの速度を設定するためのものではない
例えば、2つの大きなコアとたくさんの小さなコアがあります。
ARM big.LITTLE]1は、まさにおっしゃるとおりの仕組みです。一般的に、クロックの遅いものは、さらに間抜けです(アウトオブオーダー実行やその他のCPU最適化がない)。
異なるCPU間で物を移動させるための簿記がより複雑になり、他の周辺機器との通信もより複雑になりますし、最も重要なのは、そのようなコアを効果的に使用するには、タスクスケジューラが非常に賢くなければならない(そしてしばしば正しく推測しなければならない)ことです。
理想的な配置は、タイムクリティカルでないバックグラウンドタスクや比較的小さな対話型タスクはquot;little"コアで実行し、大きな長時間の計算(小さなコアで過ごす余分な時間は結局多くのバッテリーを消費します)または小さなコアではユーザーが遅いと感じる中規模の対話型タスクのときだけquot;big"を起用するというものです。
しかし、スケジューラは、各タスクが実行している可能性のある作業の種類に関する情報が限られており、それらをどこにスケジュールするかを決めるために、何らかのヒューリスティック(または、与えられたタスクに何らかのアフィニティマスクを強制するなど外部情報)に頼らざるを得ない。これを誤ると、遅いコアでタスクを実行するために多くの時間と電力を浪費してしまい、悪いユーザーエクスペリエンスを与えることになります。
また、非対称型マルチプロセッシングシステムでは、通常、タスクを別のコアに移行するのはSMPシステムよりもコストがかかるので、スケジューラは一般に、ランダムに空いているコアで実行しようとして後でそれを移動させるのではなく、最初に良い推測をする必要があります。
この場合、Intelの選択は、同一のインテリジェントで高速なコアの数は少なくても、周波数スケーリングを非常に積極的に行うことです。CPUが忙しくなると、最大クロックまで素早く立ち上げ、可能な限り高速に処理を行い、その後、最小電力使用モードに戻るために周波数を下げます。このため、スケジューラには特に負担がかからず、上記のような悪いシナリオを回避することができます。もちろん、低クロックモードであっても、これらのコアは「賢い」コアなので、低クロックの「愚かな」コアであるbig.LITTLEよりも消費電力が大きいでしょう。
昔(DOS時代のゲーム)は。正解です。
最近は、もうそんなことはありません。最近のゲームの多くはスレッド化されており、マルチコアの恩恵を受けています。一部のゲームはすでに4コアでかなり満足していますし、その数は時代とともに増えているようです。
ある意味、真実ですね。
コアの数 コアの速度 効率の倍。
同一コア1個と同一コアの集合を比較するのであれば、ほぼ正解と言えるでしょう。
市場に出回っているものでは、どのCPUも同じように見えます。 主な違いは、スレッド数が多いか少ないかで、ほぼ同じ速度になります。 コアの数が多い。例えば、以下のようなものです。
異なるアーキテクチャを比較するのは危険だけど、まあいいか...。
ではなぜ、すべてのコアが同じで、コアが増えるというパターンが見られるのでしょうか? クロックは同じですか?
その理由のひとつは、壁にぶつかったからです。クロックを上げれば上げるほど、消費電力が増え、発熱量も増える。発熱量が増えれば、さらに電力が必要になる。私たちはその方法を試しましたが、その結果は恐ろしいペンティアム4でした。熱くて電力を食う。冷やすのは難しい。しかも、賢く設計されたPentium-Mより全然速くない(3.0GHzのP4は1.7GHzのP-mobとほぼ同じ速さだった)。
それ以来、私たちはクロックスピードを上げることをあきらめ、よりスマートなソリューションを構築するようになりました。その一環として、クロックスピードよりもマルチコアを使うようになったのです。
例えば、4GHzのコア1個は、2GHzのコア3個と同じだけの電力を消費し、同じだけの熱を発生させるかもしれません。もし、ソフトウェアが複数のコアを使うことができれば、より高速に動作するようになります。
すべてのソフトウェアがそうできるとは限りませんが、最近のソフトウェアはたいていそうなっています。
これが、マルチコアを搭載したチップや、コア数の異なるチップを販売する理由の一部です。
クロックスピードについては、3つのポイントを挙げることができると思います。
その典型的な例が、AMDの4コアチップでした。1つのコアが壊れたら、それを無効にして3コアのチップとして売っていたのです。この3コアの需要が高いときには、4コアのものでさえ3コア版として販売され、適切なソフトウェアハックで4番目のコアを再び有効にすることができたのです。
また、これはコアの数だけでなく、速度にも影響します。チップによっては、熱くなるものもあります。熱すぎると低速CPUとして売る(ここで周波数が低いと発熱も少ない)。
そして、生産とマーケティングがあり、それがさらに混乱させる。
なぜクロックスピードの異なるバリエーションがないのでしょうか。
ありますよ。それが理にかなっている場所(携帯電話など)では、遅いコアのCPU(低消費電力)と、いくつかの速いコアを持つSoCがよく使われます。 しかし、一般的なデスクトップPCでは、このようなことはしません。セットアップが非常に複雑になり、コストも高くなりますし、バッテリーを消耗することもありません。