Parallel-computer-architecture-latency-tolerance

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

レイテンシートレランス

マイクロプロセッサの速度は10年ごとに10倍以上に増加しましたが、コモディティメモリ(DRAM)の速度は2倍になりました。つまり、アクセス時間が半分になりました。 したがって、プロセッサクロックサイクルに関するメモリアクセスのレイテンシは、10年で6倍に増加します。 マルチプロセッサが問題を強化しました。

バスベースのシステムでは、プロセッサとメモリの間に高帯域幅バスを確立すると、メモリからデータを取得するレイテンシが増加する傾向があります。 メモリが物理的に分散されると、ネットワークおよびネットワークインターフェイスのレイテンシが、ノード上のローカルメモリにアクセスするレイテンシに追加されます。

通常、ノードの数が多いほど計算に関連する通信が多くなり、一般的な通信のためのネットワーク内のジャンプが多くなり、競合が増えるため、マシンのサイズに応じて遅延が増加します。 ハードウェア設計の主な目標は、高いスケーラブルな帯域幅を維持しながら、データアクセスの遅延を削減することです。

レイテンシートレランスの概要

遅延許容値の処理方法は、マシンのリソースとその使用方法を確認することで最もよく理解できます。 プロセッサの観点から見ると、あるノードから別のノードへの通信アーキテクチャはパイプラインと見なすことができます。 パイプラインのステージには、送信元と宛先のネットワークインターフェイス、および途中のネットワークリンクとスイッチが含まれます。 アーキテクチャが通信を管理する方法に応じて、通信アシスト、ローカルメモリ/キャッシュシステム、およびメインプロセッサにも段階があります。

ベースライン通信構造の使用率の問題は、プロセッサまたは通信アーキテクチャが特定の時間でビジーであり、通信パイプラインでは、送信される単一ワードが送信元から宛先に移動するため、一度に1つのステージのみがビジーです。 レイテンシトレランスの目的は、これらのリソースの使用を可能な限り重複させることです。

明示的なメッセージパッシングでのレイテンシートレランス

メッセージ受け渡しにおけるデータの実際の転送は、通常、送信操作を使用して送信者が開始します。 受信操作自体は、データを通信するように動機付けるのではなく、着信バッファからアプリケーションのアドレス空間にデータをコピーします。 受信者が開始した通信は、データのソースであるプロセスに要求メッセージを発行することにより行われます。 その後、プロセスは別の送信を介してデータを送り返します。

同期送信操作の通信遅延は、メッセージ内のすべてのデータを宛先に通信するのにかかる時間、受信処理の時間、および確認応答が返される時間に等しくなります。 同期受信操作の遅延は、処理のオーバーヘッドです。これには、データをアプリケーションにコピーすること、およびデータがまだ到着していない場合の追加の待ち時間が含まれます。 可能であればオーバーヘッドを含め、これらのレイテンシを両端で非表示にしたいと思います。

共有アドレススペースでのレイテンシトレランス

ベースライン通信は、共有アドレス空間での読み取りと書き込みを介して行われます。 便宜上、これは読み取り/書き込み通信と呼ばれます。 受信者が開始した通信は、読み取り操作で行われ、その結果、別のプロセッサのメモリまたはキャッシュからのデータがアクセスされます。 共有データのキャッシュがない場合、送信者が開始した通信は、リモートメモリに割り当てられたデータへの書き込みによって行われます。

キャッシュコヒーレンスを使用すると、書き込みの効果はより複雑になります。書き込みが送信者につながるか、受信者が開始する通信はキャッシュコヒーレンスプロトコルに依存します。 受信者が開始するか送信者が開始するかのどちらかで、ハードウェアでサポートされる読み取り書き込み共有アドレス空間での通信は、当然のことながらきめ細かく、これにより許容遅延が非常に重要になります。

共有アドレススペースでのデータ転送のブロック

共有アドレス空間では、ハードウェアまたはソフトウェアのいずれかによって、データの結合とブロック転送の開始をユーザープログラムで明示的に、またはシステムによって透過的に実行できます。 明示的なブロック転送は、ユーザープログラムでの送信と同様のコマンドを実行することにより開始されます。 送信コマンドは通信アシストによって説明されます。通信アシストは、ソースノードから宛先にパイプライン方式でデータを転送します。 宛先で、通信アシストはネットワークインターフェイスからデータワードを取得し、指定された場所に保存します。

送受信メッセージの受け渡しには2つの主な違いがあります。これらの場所は共有アドレス空間にあるため、送信プロセスがデータを宛先に配置するプログラムデータ構造を直接指定できるという事実から生じます。 。

共有アドレススペースでの過去の長時間のイベントの進行

メモリ操作が非ブロック化されると、プロセッサはメモリ操作を通過して他の命令に進むことができます。 書き込みの場合、これは通常、書き込みが書き込みバッファーに入れられ、バッファーがメモリシステムに書き込みを発行し、必要に応じてその完了を追跡する間、プロセッサーが動作する場合に実装するのが非常に簡単です。 違いは、書き込みとは異なり、読み取りの後に返される値を必要とする命令が通常すぐに読み取られることです。

共有アドレス空間での事前通信

事前通信は、市販のマイクロプロセッサで既に広く採用されている技術であり、その重要性は将来増加する可能性があります。 プリフェッチ命令は、データ項目の実際の読み取りに置き換わるものではありません。オーバーラップによりレイテンシを隠すという目標を達成するためには、プリフェッチ命令自体が非ブロッキングでなければなりません。

この場合、共有データはキャッシュされないため、プリフェッチされたデータはプリフェッチバッファと呼ばれる特別なハードウェア構造に取り込まれます。 次の反復でワードが実際にレジスタに読み込まれるとき、メモリからではなくプリフェッチバッファの先頭から読み込まれます。 非表示のレイテンシが単一ループの反復を計算する時間よりもはるかに大きい場合、先にいくつかの反復をプリフェッチし、一度にプリフェッチバッファに複数のワードが存在する可能性があります。

共有アドレス空間でのマルチスレッド

さまざまなタイプのレイテンシを非表示にするという点では、ハードウェアでサポートされているマルチスレッドはおそらく多目的なテクニックです。 他のアプローチよりも次の概念的な利点があります-

  • 特別なソフトウェア分析やサポートは必要ありません。
  • 動的に呼び出されるため、キャッシュの競合などの予測不可能な状況を処理できます。 同様に予測可能なもの。
  • プリフェッチのように、スレッド内のアクセスを並べ替えないため、メモリ一貫性モデルは変更されません。
  • 以前の手法はメモリアクセスの遅延を隠すことを目的としていましたが、マルチスレッドは、実行時にイベントを検出できる限り、潜在的に長い遅延イベントの遅延を簡単に隠すことができます。 これには、同期と命令レイテンシも含まれます。

プロセッサの速度と比較してレイテンシがますます長くなっているため、この傾向は将来変化する可能性があります。 また、マルチスレッド用に拡張できるメソッドを既に提供しているより洗練されたマイクロプロセッサ、およびマルチスレッドと命令レベルの並列性を組み合わせるために開発されている新しいマルチスレッド技術により、この傾向は確かに将来変化しているようです。