87

マルチ CPU、マルチコア、ハイパースレッドの違いを説明してくれる人はいますか? 私はいつも、これらの違いと、さまざまなシナリオにおける各アーキテクチャの長所と短所について混乱しています。

オンラインで学び、他の人のコメントから学んだ後の私の現在の理解は次のとおりです。

  1. ハイパースレッドはその中で最も劣る技術だと思いますが、安価です。その主なアイデアは、コンテキスト切り替え時間を節約するためにレジスタを複製することです。
  2. マルチプロセッサはハイパースレッドよりも優れていますが、異なる CPU が異なるチップ上にあるため、異なる CPU 間の通信はマルチコアよりも遅延が長く、複数のチップを使用すると、マルチコアよりも費用と消費電力が大きくなります。 ;
  3. マルチコアはすべての CPU を 1 つのチップに統合するため、異なる CPU 間の通信の遅延はマルチプロセッサと比較して大幅に短縮されます。単一のチップを使用してすべての CPU を搭載しているため、消費電力が少なく、マルチ プロセッサ システムよりも安価です。

これは正しいです?

4

3 に答える 3

88

マルチ 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 を超える値です。

単一のチップ内にすべてが含まれている場合、信号ははるかに高速に実行され、好きなだけ持つことができます (まあ、ほぼ :)。また、信号のクロストークは制御がはるかに簡単です。

于 2009-03-25T08:39:23.650 に答える
4

Intel の Web サイトまたはイェール大学の短い記事で、デュアル CPU、マルチコア、およびハイパースレッディングに関する興味深い記事を見つけることができます。

必要な情報がすべてここにあることを願っています。

于 2009-03-25T08:46:51.637 に答える
2

一言で言えば、マルチ CPU またはマルチプロセッサ システムには複数のプロセッサがあります。マルチコア システムは、同じダイに複数のプロセッサを搭載したマルチプロセッサ システムです。ハイパースレッディングでは、複数のスレッドが同じプロセッサで実行できます (つまり、これらの複数のスレッド間のコンテキスト切り替え時間は非常に短くなります)。

マルチプロセッサは 30 年前から存在していますが、ほとんどがラボで使用されています。マルチコアは、新しい人気のマルチプロセッサです。最近のサーバー プロセッサは、マルチプロセッサとともにハイパースレッディングを実装しています。

これらのトピックに関するウィキペディアの記事は、非常にわかりやすいものです。

于 2009-03-25T08:40:25.177 に答える