Parallel-computer-architecture-convergence

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

並列アーキテクチャの収束

並列マシンは、いくつかの異なるアーキテクチャで開発されています。 このセクションでは、異なる並列コンピュータアーキテクチャとそれらの収束の性質について説明します。

通信アーキテクチャ

並列アーキテクチャは、通信アーキテクチャを使用して、コンピュータアーキテクチャの従来の概念を強化します。 コンピュータアーキテクチャは、重要な抽象化(ユーザーシステムの境界やハードウェアとソフトウェアの境界など)および組織構造を定義し、通信アーキテクチャは基本的な通信および同期操作を定義します。 また、組織構造にも対応しています。

抽象化の層

プログラミングモデルは最上層です。 アプリケーションはプログラミングモデルで記述されています。 並列プログラミングモデルには以下が含まれます-

  • 共有アドレス空間
  • メッセージパッシング
  • データ並列プログラミング
  • 共有アドレス*プログラミングは、掲示板を使用するようなもので、特定の場所に情報を投稿することにより、1人または複数の個人と通信できます。 個々のアクティビティは、誰がどのタスクを実行しているかを記録することで調整されます。
  • メッセージの受け渡し*は、特定の受信者が特定の送信者から情報を受信する電話や手紙のようなものです。
  • データ並列*プログラミングは、組織化された形の協力です。 ここでは、複数の個人がデータセットの個別の要素に対して同時にアクションを実行し、情報をグローバルに共有しています。

共有メモリ

共有メモリマルチプロセッサは、並列マシンの最も重要なクラスの1つです。 マルチプログラミングワークロードのスループットが向上し、並列プログラムがサポートされます。

共有メモリマルチプロセッサ

この場合、すべてのコンピューターシステムでは、プロセッサと一連のI/Oコントローラーがハードウェアの相互接続によってメモリモジュールのコレクションにアクセスできます。 メモリモジュールを追加するとメモリ容量が増加し、I/Oコントローラにデバイスを追加するか、I/Oコントローラを追加するとI/O容量が増加します。 より高速なプロセッサーが使用可能になるのを待つか、プロセッサーを追加することにより、処理能力を増やすことができます。

すべてのリソースは、中央のメモリバスを中心に編成されています。 バスアクセスメカニズムにより、すべてのプロセッサがシステム内の物理アドレスにアクセスできます。 すべてのプロセッサはすべてのメモリロケーションから等距離にあるため、すべてのプロセッサのアクセス時間またはレイテンシはメモリロケーションで同じです。 これは*対称型マルチプロセッサ*と呼ばれます。

メッセージ受け渡しアーキテクチャ

メッセージパッシングアーキテクチャは、並列マシンの重要なクラスでもあります。 明示的なI/O操作としてプロセッサ間の通信を提供します。 この場合、通信はメモリシステムではなく、I/Oレベルで結合されます。

メッセージパッシングアーキテクチャでは、実際の通信操作を含む、多くの低レベルのアクションを実行するオペレーティングシステムまたはライブラリ呼び出しを使用して実行されるユーザー通信。 その結果、物理ハードウェアレベルでのプログラミングモデルと通信操作の間には距離があります。

送信*および*受信*は、メッセージパッシングシステムで最も一般的なユーザーレベルの通信操作です。 送信は、ローカルデータバッファ(送信される)と受信リモートプロセッサを指定します。 Receiveは、送信プロセスと、送信データが配置されるローカルデータバッファーを指定します。 送信操作では、 *identifier または tag がメッセージに添付され、受信操作は特定のプロセッサからの特定のタグまたは任意のプロセッサからのタグなどの一致ルールを指定します。

送信と一致する受信の組み合わせにより、メモリ間のコピーが完了します。 各エンドは、ローカルデータアドレスとペアごとの同期イベントを指定します。

収束

ハードウェアとソフトウェアの開発により、共有メモリとメッセージパッシングキャンプの明確な境界が薄れています。 メッセージパッシングと共有アドレススペースは、2つの異なるプログラミングモデルを表します。それぞれが、共有、同期、通信のための透過的なパラダイムを提供します。 ただし、基本的なマシン構造は、共通の組織に収束しています。

データ並列処理

並列マシンのもう1つの重要なクラスは、プロセッサアレイ、データ並列アーキテクチャ、および単一命令複数データマシンと呼ばれています。 プログラミングモデルの主な特徴は、大規模な通常のデータ構造(配列や行列など)の各要素で操作を並列に実行できることです。

データ並列プログラミング言語は通常、プロセッサごとに1つのプロセスグループのローカルアドレス空間を表示して、明示的なグローバル空間を形成することにより実施されます。 すべてのプロセッサが相互に通信し、すべての操作のグローバルビューがあるため、共有アドレススペースまたはメッセージパッシングを使用できます。

基本的な設計の問題

プログラミングモデルの開発では、コンピューターの効率を高めることはできず、ハードウェアの開発だけでそれを行うこともできません。 ただし、コンピューターアーキテクチャの開発により、コンピューターのパフォーマンスに違いが生じる可能性があります。 プログラムがマシンをどのように使用し、どの基本技術が提供されるかに焦点を当てることで、設計上の問題を理解できます。

このセクションでは、通信の抽象化とプログラミングモデルの基本要件について説明します。

コミュニケーションの抽象化

通信の抽象化は、プログラミングモデルとシステム実装の間の主要なインターフェイスです。 これは、多くの実装で同じプログラムを正しく実行できるプラットフォームを提供する命令セットのようなものです。 このレベルでの操作は単純でなければなりません。

通信の抽象化は、ハードウェアとソフトウェアの間の契約のようなもので、作業に影響を与えることなく柔軟性を向上させることができます。

プログラミングモデルの要件

並列プログラムには、データで動作する1つ以上のスレッドがあります。 並列プログラミングモデルは、スレッドが name できるデータ、名前付きデータに対して実行できる operations 、および操作が続く順序を定義します。

プログラム間の依存関係が適用されていることを確認するには、並列プログラムがそのスレッドのアクティビティを調整する必要があります。