マルチ CPU は最初のバージョンでした。1 つまたは複数の CPU チップを搭載した 1 つまたは複数のメインボードがありました。ここでの主な問題は、邪魔にならないように、CPU が内部データの一部を他の CPU に公開する必要があることでした。
次のステップはハイパースレッディングでした。メインボードには 1 つのチップが搭載されていますが、内部には 2 つのパーツがあり、同時に 2 つの命令を実行できました。
現在の開発はマルチコアです。これは基本的には元のアイデア (複数の完全な CPU) ですが、単一のチップです。利点: チップ設計者は、同期信号用の追加ワイヤを簡単にチップに配置できます (それらをピンに配線してから、混み合ったメインボードを経由して 2 番目のチップに配線する必要がありません)。
今日のスーパー コンピューターはマルチ CPU、マルチコアです。多くのメインボードに通常 2 ~ 4 個の CPU が搭載されており、各 CPU はマルチコアで、それぞれに独自の RAM があります。
[編集] あなたはそれをかなり正しく理解しました。いくつかのマイナーポイント:
ハイパースレッディングは、1 つのコアで 2 つのコンテキストを同時に追跡し、順序の狂った CPU コアにより多くの並列処理を公開します。これにより、1 つのスレッドがキャッシュ ミス、分岐の予測ミス、または高レイテンシの命令からの結果の待機でストールした場合でも、実行ユニットに作業が供給され続けます。これは、多くのハードウェアをレプリケートせずに合計スループットを向上させる方法ですが、どちらかといえば、各スレッドを個別に遅くします。 詳細については、この Q&A を参照してください。また、この段落の前の文言のどこが間違っていたのかについての説明もあります。
マルチ CPU の主な問題は、それらで実行されているコードが最終的に RAM にアクセスすることです。N 個の CPU がありますが、RAM にアクセスするためのバスは 1 つだけです。したがって、a) 各 CPU がかなりの量の RAM アクセスを取得すること、b) RAM の同じ部分へのアクセスが問題を引き起こさないこと、c) 最も重要なこととして、CPU 2 に通知されることを確認するハードウェアが必要です。 CPU 1 が、CPU 2 が内部キャッシュに持っているメモリアドレスに書き込むとき。それが起こらない場合、CPU 2 はキャッシュされた値を喜んで使用し、それが古いという事実に気付かない
リストにタスクがあり、それらを利用可能なすべての CPU に分散させたいと想像してみてください。したがって、CPU 1 はリストから最初の要素をフェッチし、ポインターを更新します。CPU 2 も同じことを行います。効率上の理由から、両方の CPU は数バイトをキャッシュにコピーするだけでなく、「キャッシュ ライン」全体 (それが何であれ) をコピーします。バイト X を読み取ると、すぐに X+1 も読み取ることが想定されています。
これで、両方の CPU のキャッシュにメモリのコピーが作成されました。次に、CPU 1 がリストから次の項目を取得します。キャッシュ同期がなければ、CPU 2 がリストを変更したことにも気付かず、CPU 2 と同じアイテムで作業を開始します。
これが事実上、マルチ CPU を非常に複雑にしている理由です。この副作用により、コード全体が単一の CPU でのみ実行された場合よりもパフォーマンスが低下する可能性があります。ソリューションはマルチコアでした。キャッシュを同期するために必要な数のワイヤを簡単に追加できます。あるキャッシュから別のキャッシュにデータをコピーすることもできます (フラッシュしてリロードすることなくキャッシュ ラインの一部を更新する) など。 CPU 1 が変更を行うまで、CPU 2 を数ナノ秒間ブロックするだけです。
[編集 2] マルチコアがマルチ CPU よりも単純である主な理由は、メインボードでは、同期を有効にするために必要な 2 つのチップ間のすべてのワイヤを単純に走らせることができないためです。さらに、信号は 30cm/ns トップ (光の速度。ワイヤでは、通常ははるかに低速) しか移動しません。また、多層メインボードでは、信号が互いに影響し合う (クロストーク) ことを忘れないでください。0 が 0V で 1 が 5V であると考えがちですが、実際には "0" は -0.5V (ラインを 1 から 0 にドロップするときのオーバードライブ) と .5V の間の値で、"1" は 0.8V を超える値です。
単一のチップ内にすべてが含まれている場合、信号ははるかに高速に実行され、好きなだけ持つことができます (まあ、ほぼ :)。また、信号のクロストークは制御がはるかに簡単です。