レイテンシートレランス

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

バスベースのシステムでは、プロセッサとメモリの間に高帯域幅のバスを確立すると、メモリからデータを取得するまでの待ち時間が長くなる傾向があります。メモリが物理的に分散されている場合、ネットワークとネットワークインターフェイスの遅延は、ノード上のローカルメモリにアクセスする遅延に追加されます。

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

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

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

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

明示的なメッセージパッシングにおける遅延許容度

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

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

共有アドレス空間での遅延許容度

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

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

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

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

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

共有アドレス空間での過去の長い待ち時間のイベントの進行

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

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

事前通信は、商用マイクロプロセッサですでに広く採用されている手法であり、今後その重要性が増す可能性があります。プリフェッチ命令は、データアイテムの実際の読み取りを置き換えるものではなく、オーバーラップによってレイテンシを隠すという目標を達成するためには、プリフェッチ命令自体が非ブロッキングである必要があります。

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

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

さまざまなタイプのレイテンシーを隠すという点では、ハードウェアでサポートされているマルチスレッドはおそらく用途の広い手法です。他のアプローチに比べて、次のような概念上の利点があります。

  • 特別なソフトウェア分析やサポートは必要ありません。

  • 動的に呼び出されるため、予測可能な状況だけでなく、キャッシュの競合などの予測不可能な状況も処理できます。

  • プリフェッチと同様に、スレッド内のアクセスを並べ替えないため、メモリ整合性モデルは変更されません。

  • 以前の手法はメモリアクセスの待ち時間を隠すことを目的としていますが、マルチスレッドは、イベントが実行時に検出できる限り、待ち時間の長いイベントの待ち時間を簡単に隠すことができる可能性があります。これには、同期と命令レイテンシも含まれます。

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