1

NUMA アーキテクチャ (不均一メモリ アクセス) では、各プロセッサが独自の第 1 レベル キャッシュを持っているため、プロセッサ通信用のプロトコル (MESI) があります。しかし、各プロセッサを他のプロセッサのキャッシュに直接接続できないのはなぜでしょうか? 「接続が単に十分に速くない」と読みましたが、それはあまり説明しませんでした.

ありがとう。

4

1 に答える 1

5

まず、L1 キャッシュを持つことはNUMAアーキテクチャを意味するものではありません。マザーボード トポロジーは依然として、マシンのUMAまたはNUMAを構成する主要な要素です。

次に、使用されているキャッシュ コヒーレンスプロトコルはアーキテクチャに依存し、 MESIとは異なる場合があります(実際には、 NUMAマシンにはMESIFの方が適しています)。


あなたの質問に目を向けます

各プロセッサは、他の各プロセッサ キャッシュに接続できます。実際、すべてのキャッシュ コヒーレンス プロトコルはこれを行っていますが、再利用性が低く、多くの労力が必要になるため、直接の読み取り/書き込みを許可していません。

ただし、CPU を別の CPU キャッシュに直接接続することは可能であり、実際には Intel CPU に何らかの方法で実装されています。
論理コア (つまり、HyperThreading コア) は L2 キャッシュを共有する場合があり、同じパッケージ内の一部の物理コアは L3 キャッシュを共有する場合があります。
ただし、ここには 2 つの重要な側面があります。1 つ目は、キャッシュを共有する CPU の数が少ないこと、2 つ目は同じコア/パッケージ内にあることです。

すべてのキャッシュを直接接続すると、CPU の内部(全体) とCPU の外部の境界が失われます。
CPU を分離することで、非常にカスタマイズ可能なモジュラー システムを作成できます。外部プロトコルは、実装の詳細を隠すことができるインターフェイスです。これは、密接に接続されたキャッシュによって得られる速度の向上よりも価値があります。
そのような速度が必要な場合は、コプロセッサなどの専用の統合システム コンポーネントを構築します。

キャッシュが直接接続されていないのにはさまざまな理由があります。業界のリーダーを代表して話すことはできませんが、ここではいくつかの一般的な考えを示します。

  1. スケーリングしません
    2 プロセッサは 1 リンクを意味し、3 プロセッサは 3 リンクを意味し、4 プロセッサは 6 リンクを意味します。
    n 個のプロセッサには、n * (n-1) / 2 リンクである C(n, 2) リンクが必要です。
    また、互換性のあるキャッシュ インターフェイスを持つ CPU のみを接続できます。これは、同一の CPU のみを接続できることを意味する場合があります。キャッシュ アーキテクチャは頻繁に変更されるものであり、行が大きくなる可能性があり、連想性が変更される可能性があり、信号のタイミングが速くなる可能性があります。
    最後に、CPU にあと 4 つの CPU のみを接続するのに十分なピンがある場合、クアッド CPU システムのみを作成できます。
  2. たくさんのピンが必要です。
    キャッシュへのアクセスには多くのピンが必要です。コアごとに 2 つまたは 3 つのキャッシュがあり、それぞれをアドレス指定して制御する必要があります。これには多くのピンを公開する必要があります。シリアル インターフェイスは遅すぎるため、オプションではありません。 .
    各プロセッサを相互に接続する必要があることを追加すると、ピンの数は二次的に爆発します。
    キャッシュ間で共有バスを使用する場合、実際にはMESIのようなプロトコルを使用しています。これは、バスの輻輳を回避しようとするプロトコルです。CPU が少ない場合でも、共有バス上のトラフィックが非常に激しくなり、キャッシュの待機に時間がかかるためです。それを使用する順番は、CPU の速度を低下させます (ストア バッファーと無効化キューを使用しても)。
  3. 遅いです。
    キャッシュはコアと高度に統合されており、複数の読み取り/書き込みポートや、並列化を促進するその他のインターフェイスをサポートする場合があります。これらすべては、多数のピン (およびサイズとコストの大幅な増加) なしではパッケージ/コアから露出させることはできません。キャッシュは物理的にコアの近くにあり、これにより伝播遅延が最小限に抑えられます。3GHz
    CPU の周期は1/3 * 10 ^-9であると考えてください。往復し、信号は光の速度で伝播しません。
    さらに、キャッシュがコアによってのみアクセスされる場合、設計者はコアの内部アーキテクチャに基づいていくつかの最適化を行うことができます。コアが別の、おそらく異なる CPU に属している場合、これは不可能です。
  4. 複雑です。
    複数の CPU がキャッシュにアクセスできるようにするには、多くの回路を複製する必要があります。たとえば、キャッシュを連想させる場合、アドレスが要求されると、可能な候補のセット間でタグを検証する必要があり、この回路を複製して許可する必要があります。他の CPU は非同期でキャッシュを読み書きします。

簡単に言えば、キャッシュを直接接続することは可能かもしれませんが、個別のコンポーネントには価値がありません。統合コンポーネントに対して行われます

于 2015-07-12T14:23:34.577 に答える