Parallel-computer-architecture-cache-coherence-synchronization

提供:Dev Guides
移動先:案内検索

キャッシュの一貫性と同期

この章では、マルチキャッシュの不整合の問題に対処するためのキャッシュ一貫性プロトコルについて説明します。

キャッシュの一貫性の問題

マルチプロセッサシステムでは、隣接するレベル間またはメモリ階層の同じレベル内でデータの不整合が発生する場合があります。 たとえば、キャッシュとメインメモリに同じオブジェクトの一貫性のないコピーがある場合があります。

複数のプロセッサが並列に動作し、独立して複数のキャッシュが同じメモリブロックの異なるコピーを所有する可能性があるため、これにより*キャッシュの一貫性の問題*が発生します。 *キャッシュコヒーレンススキーム*は、キャッシュされたデータブロックごとに均一な状態を維持することにより、この問題を回避するのに役立ちます。

書き込み可能なデータの共有の不一致

Xを、2つのプロセッサP1とP2によって参照されている共有データの要素とします。 最初は、Xの3つのコピーに一貫性があります。 プロセッサP1が write-through policy を使用して新しいデータX1をキャッシュに書き込むと、同じコピーが共有メモリにすぐに書き込まれます。 この場合、キャッシュメモリとメインメモリ間で矛盾が発生します。 *ライトバックポリシー*が使用されている場合、キャッシュ内の変更されたデータが置換または無効化されると、メインメモリが更新されます。

一般的に、不整合の問題には3つの原因があります-

  • 書き込み可能なデータの共有
  • プロセス移行 *I/Oアクティビティ

スヌーピーバスプロトコル

スヌーピープロトコルは、バスベースのメモリシステムを通じて、キャッシュメモリと共有メモリ間のデータの一貫性を実現します。* Write-invalidate および *write-update ポリシーは、キャッシュの一貫性を維持するために使用されます。

ブロックXの一貫性のあるコピー

書き込み無効化操作

この場合、ローカルキャッシュメモリと共有メモリにデータ要素「X」の一貫したコピーを持つ3つのプロセッサP1、P2、およびP3があります(図-a)。 プロセッサP1は、 write-invalidate protocol を使用して、キャッシュメモリにX1を書き込みます。 したがって、他のすべてのコピーはバスを介して無効になります。 これは「I」で示されます(図-b)。 無効化されたブロックは dirty とも呼ばれます。 使用しないでください。 write-update protocol は、バスを介してすべてのキャッシュコピーを更新します。 *ライトバックキャッシュ*を使用すると、メモリコピーも更新されます(図-c)。

更新操作の書き込み

キャッシュイベントとアクション

次のイベントとアクションは、メモリアクセスおよび無効化コマンドの実行時に発生します-

  • 読み取りミス-プロセッサがブロックを読み取りたいが、それがキャッシュにない場合、読み取りミスが発生します。 これにより、 bus-read 操作が開始されます。 ダーティコピーが存在しない場合、一貫性のあるコピーを持つメインメモリは、要求元のキャッシュメモリにコピーを提供します。 ダーティコピーがリモートキャッシュメモリに存在する場合、そのキャッシュはメインメモリを制限し、要求元のキャッシュメモリにコピーを送信します。 どちらの場合も、キャッシュコピーは読み取りミスの後に有効な状態になります。
  • Write-hit -コピーがダーティまたは*予約済み*状態の場合、書き込みはローカルで行われ、新しい状態はダーティです。 新しい状態が有効な場合、write-invalidateコマンドがすべてのキャッシュにブロードキャストされ、それらのコピーが無効になります。 共有メモリへの書き込みが完了すると、最初の書き込み後に結果の状態が予約されます。
  • Write-miss -プロセッサがローカルキャッシュメモリへの書き込みに失敗した場合、コピーはメインメモリまたはダーティブロックを備えたリモートキャッシュメモリから取得する必要があります。 これは、すべてのキャッシュコピーを無効にする read-invalidate コマンドを送信することで実行されます。 次に、ローカルコピーがダーティ状態で更新されます。
  • Read-hit -状態の遷移を引き起こしたり、無効化にスヌーピーバスを使用したりすることなく、常にローカルキャッシュメモリで読み取りヒットが実行されます。
  • ブロック置換-コピーが汚れている場合、ブロック置換方法によってメインメモリに書き戻されます。 ただし、コピーが有効または予約済みまたは無効な状態の場合、置換は行われません。

ディレクトリベースのプロトコル

マルチステージネットワークを使用して数百のプロセッサを備えた大規模なマルチプロセッサを構築するには、ネットワーク機能に合わせてスヌーピーキャッシュプロトコルを変更する必要があります。 ブロードキャストは多段ネットワークで実行するのに非常にコストがかかるため、整合性コマンドはブロックのコピーを保持するキャッシュにのみ送信されます。 これが、ネットワークに接続されたマルチプロセッサ用のディレクトリベースのプロトコルの開発の理由です。

ディレクトリベースのプロトコルシステムでは、共有されるデータはキャッシュ間の一貫性を維持する共通ディレクトリに配置されます。 ここで、ディレクトリはフィルターとして機能し、プロセッサはプライマリメモリからキャッシュメモリにエントリをロードする許可を求めます。 エントリが変更された場合、ディレクトリはそれを更新するか、そのエントリを持つ他のキャッシュを無効にします。

ハードウェア同期メカニズム

同期は、データ制御の代わりに、同じまたは異なるプロセッサに存在する通信プロセス間で情報が交換される特別な形式の通信です。

マルチプロセッサシステムは、ハードウェアメカニズムを使用して低レベルの同期操作を実装します。 ほとんどのマルチプロセッサには、メモリの読み取り、書き込み、読み取り-変更-書き込みなどのアトミック操作を課して同期プリミティブを実装するハードウェアメカニズムがあります。 アトミックメモリ操作以外に、プロセッサ間割り込みの一部は同期目的でも使用されます。

共有メモリマシンのキャッシュコヒーレンシ

プロセッサにローカルキャッシュメモリが含まれる場合、マルチプロセッサシステムではキャッシュの一貫性を維持することが問題になります。 このシステムでは、異なるキャッシュ間でデータの不整合が簡単に発生します。

主な関心分野は-

  • 書き込み可能なデータの共有
  • プロセス移行
  • I/Oアクティビティ

書き込み可能なデータの共有

2つのプロセッサ(P1およびP2)のローカルキャッシュに同じデータ要素(X)があり、1つのプロセス(P1)がデータ要素(X)に書き込む場合、キャッシュはP1のライトスルーローカルキャッシュであるため、メインメモリは更新されました。 P2がデータ要素(X)を読み取ろうとすると、P2のキャッシュ内のデータ要素が古くなっているため、Xが見つかりません。

書き込み可能なデータの共有

プロセス移行

最初の段階では、P1のキャッシュにはデータ要素Xがありますが、P2には何もありません。 P2のプロセスは最初にXに書き込み、次にP1に移行します。 ここで、プロセスはデータ要素Xの読み取りを開始しますが、プロセッサP1に古いデータがあるため、プロセスはそれを読み取ることができません。 したがって、P1のプロセスはデータ要素Xに書き込み、その後P2に移行します。 移行後、P2のプロセスはデータ要素Xの読み取りを開始しますが、メインメモリで古いバージョンのXを検出します。

プロセスの移行

I/Oアクティビティ

図に示すように、2プロセッサマルチプロセッサアーキテクチャでは、I/Oデバイスがバスに追加されます。 最初は、両方のキャッシュにデータ要素Xが含まれています。 I/Oデバイスは新しい要素Xを受け取ると、新しい要素をメインメモリに直接保存します。 現在、P1またはP2(P1を想定)が要素Xを読み取ろうとすると、古いコピーが取得されます。 したがって、P1は要素Xに書き込みます。 現在、I/OデバイスがXを送信しようとすると、古いコピーが取得されます。

入力出力アクティビティ

Uniform Memory Access(UMA)

Uniform Memory Access(UMA)アーキテクチャは、共有メモリがシステム内のすべてのプロセッサで同じであることを意味します。 一般的に(ファイル)サーバーに使用されるUMAマシンのクラスは、いわゆる対称型マルチプロセッサ(SMP)です。 SMPでは、メモリ、ディスク、その他のI/Oデバイスなどのすべてのシステムリソース。 プロセッサは均一な方法でアクセスできます。

不均一メモリアクセス(NUMA)

NUMAアーキテクチャには、内部間接/共有ネットワークを持つ複数のSMPクラスターがあり、それらはスケーラブルなメッセージパッシングネットワークで接続されています。 したがって、NUMAアーキテクチャは、論理的に共有される物理的に分散されたメモリアーキテクチャです。

NUMAマシンでは、プロセッサのキャッシュコントローラーが、メモリ参照がSMPのメモリに対してローカルかリモートかを判断します。 リモートメモリアクセスの数を減らすために、NUMAアーキテクチャは通常、リモートデータをキャッシュできるキャッシュプロセッサを適用します。 ただし、キャッシュが関係する場合、キャッシュの一貫性を維持する必要があります。 したがって、これらのシステムはCC-NUMA(キャッシュコヒーレントNUMA)とも呼ばれます。

キャッシュオンリーメモリアーキテクチャ(COMA)

COMAマシンはNUMAマシンに似ていますが、COMAマシンのメインメモリがダイレクトマップまたはセットアソシエイティブキャッシュとして機能するという唯一の違いがあります。 データブロックは、アドレスに従ってDRAMキャッシュ内の場所にハッシュされます。 リモートでフェッチされたデータは、実際にはローカルのメインメモリに保存されます。 さらに、データブロックにはホームロケーションが固定されておらず、システム全体を自由に移動できます。

COMAアーキテクチャには、ほとんどの場合、階層的なメッセージパッシングネットワークがあります。 そのようなツリーのスイッチには、サブツリーとしてデータ要素を持つディレクトリが含まれます。 データにはホームロケーションがないため、明示的に検索する必要があります。 つまり、リモートアクセスでは、必要なデータをディレクトリで検索するために、ツリー内のスイッチに沿ってトラバースする必要があります。 そのため、ネットワーク内のスイッチが同じデータに対するサブツリーから複数の要求を受信した場合、それらをスイッチの親に送信される単一の要求に結合します。 要求されたデータが返されると、スイッチはそのサブツリーに複数のコピーを送信します。

COMA対CC-NUMA

COMAとCC-NUMAの違いは次のとおりです。

  • COMAは、OSを必要とせずにデータの移行と複製を透過的にサポートするため、CC-NUMAよりも柔軟性が高い傾向があります。
  • COMAマシンは、非標準のメモリ管理ハードウェアを必要とし、コヒーレンシプロトコルを実装するのが難しいため、構築が高価で複雑です。
  • COMAのリモートアクセスは、データを見つけるためにツリーネットワークを走査する必要があるため、CC-NUMAのリモートアクセスよりも遅いことがよくあります。