Parallel-computer-architecture-models

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

並列コンピューターアーキテクチャ-モデル

並列処理は、実際のアプリケーションでの高性能、低コスト、および正確な結果の要求を満たすために、現代のコンピューターの効果的なテクノロジーとして開発されました。 同時イベントは、マルチプログラミング、マルチプロセッシング、またはマルチコンピューティングの実践により、今日のコンピューターでは一般的です。

最新のコンピューターには、強力で広範なソフトウェアパッケージがあります。 コンピューターのパフォーマンスの開発を分析するには、最初にハードウェアとソフトウェアの基本的な開発を理解する必要があります。

  • コンピューター開発のマイルストーン-コンピューターの開発には、*機械*または*電気機械*の2つの主要な段階があります。 現代のコンピューターは、電子部品の導入後に進化しました。 電子計算機の高移動度電子は、機械計算機の動作部品に取って代わりました。 情報伝送では、ほぼ光の速度で進む電気信号が機械式ギアまたはレバーに取って代わりました。
  • 現代のコンピューターの要素-現代のコンピューターシステムは、コンピューターハードウェア、命令セット、アプリケーションプログラム、システムソフトウェア、ユーザーインターフェイスで構成されています。

現代のコンピューターシステムの要素

計算の問題は、数値計算、論理的推論、およびトランザクション処理に分類されます。 一部の複雑な問題では、3つの処理モードすべての組み合わせが必要になる場合があります。

  • コンピュータアーキテクチャの進化-過去40年間で、コンピュータアーキテクチャは革命的な変化を遂げました。 Von Neumannアーキテクチャから始めて、今ではマルチコンピューターとマルチプロセッサーを持っています。
  • コンピューターシステムのパフォーマンス-コンピューターシステムのパフォーマンスは、マシンの機能とプログラムの動作の両方に依存します。 優れたハードウェア技術、高度なアーキテクチャ機能、効率的なリソース管理により、マシンの機能を改善できます。 プログラムの動作は、アプリケーションや実行時の条件に依存するため予測不可能です

マルチプロセッサとマルチコンピューター

このセクションでは、2種類の並列コンピューターについて説明します-

  • マルチプロセッサ
  • マルチコンピューター

共有メモリマルチコンピューター

3つの最も一般的な共有メモリマルチプロセッサモデルは次のとおりです-

Uniform Memory Access(UMA)

このモデルでは、すべてのプロセッサが物理メモリを均一に共有します。 すべてのプロセッサは、すべてのメモリワードへのアクセス時間が等しくなっています。 各プロセッサにはプライベートキャッシュメモリがあります。 周辺機器についても同じルールに従います。

すべてのプロセッサがすべての周辺機器に同等にアクセスできる場合、システムは*対称型マルチプロセッサ*と呼ばれます。 周辺機器にアクセスできるプロセッサが1つまたは少数の場合、システムは「非対称マルチプロセッサ」と呼ばれます。

UMAマルチプロセッサ

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

NUMAマルチプロセッサモデルでは、アクセス時間はメモリワードの場所によって異なります。 ここでは、共有メモリはローカルメモリと呼ばれるすべてのプロセッサに物理的に分散されています。 すべてのローカルメモリのコレクションは、すべてのプロセッサがアクセスできるグローバルアドレス空間を形成します。

マルチプロセッサシステムのNUMAモデル

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

COMAモデルは、NUMAモデルの特殊なケースです。 ここでは、すべての分散メインメモリがキャッシュメモリに変換されます。

マルチプロセッサのCOMAモデル

  • 分散-メモリマルチコンピューター-分散メモリマルチコンピューターシステムは、メッセージパッシングネットワークによって相互接続されたノードと呼ばれる複数のコンピューターで構成されます。 各ノードは、プロセッサ、ローカルメモリ、および場合によってはI/Oデバイスを備えた自律型コンピュータとして機能します。 この場合、すべてのローカルメモリはプライベートであり、ローカルプロセッサのみがアクセスできます。 これが、従来のマシンが* no-remote-memory-access(NORMA)*マシンと呼ばれる理由です。

メッセージパッシングマルチプロセッサの一般的なモデル

マルチベクターおよびSIMDコンピューター

このセクションでは、ベクトル処理とデータ並列処理のためのスーパーコンピューターと並列プロセッサーについて説明します。

ベクトルスーパーコンピューター

ベクトルコンピューターでは、オプション機能としてベクトルプロセッサがスカラープロセッサに接続されます。 ホストコンピューターは、最初にプログラムとデータをメインメモリに読み込みます。 次に、スカラー制御ユニットがすべての命令をデコードします。 デコードされた命令がスカラー操作またはプログラム操作である場合、スカラープロセッサはスカラー機能パイプラインを使用してこれらの操作を実行します。

一方、デコードされた命令がベクトル演算である場合、命令はベクトル制御ユニットに送信されます。

ベクタースーパーコンピューターのアーキテクチャ

SIMDスーパーコンピューター

SIMDコンピューターでは、「N」個のプロセッサーが制御ユニットに接続され、すべてのプロセッサーに個別のメモリーユニットがあります。 すべてのプロセッサは相互接続ネットワークで接続されています。

SIMDコンピューターの運用モデル

PRAMおよびVLSIモデル

理想的なモデルは、物理的な制約や実装の詳細を考慮せずに並列アルゴリズムを開発するための適切なフレームワークを提供します。

モデルを実行して、並列コンピューターで理論的なパフォーマンスの限界を取得したり、チップを製造する前にチップ面積と動作時間でVLSIの複雑さを評価したりできます。

並列ランダムアクセスマシン

Sheperdson and Sturgis(1963)は、従来のユニプロセッサコンピューターをランダムアクセスマシン(RAM)としてモデル化しました。 Fortune and Wyllie(1978)は、メモリアクセスのオーバーヘッドと同期がゼロの理想的な並列コンピュータをモデル化するための並列ランダムアクセスマシン(PRAM)モデルを開発しました。

PRAMモデル

NプロセッサPRAMには共有メモリユニットがあります。 この共有メモリは、プロセッサ間で集中化または分散できます。 これらのプロセッサは、同期された読み取りメモリ、書き込みメモリ、および計算サイクルで動作します。 したがって、これらのモデルは、読み取りおよび書き込みの同時操作の処理方法を指定します。

可能なメモリ更新操作は次のとおりです-

  • 排他的読み取り(ER)-この方法では、各サイクルで1つのプロセッサのみが任意のメモリ位置から読み取ることができます。
  • 排他的書き込み(EW)-この方法では、少なくとも1つのプロセッサが一度にメモリ位置に書き込むことができます。
  • 同時読み取り(CR)-複数のプロセッサが同じサイクルで同じメモリ位置から同じ情報を読み取ることができます。
  • 同時書き込み(CW)-同じメモリ位置への同時書き込み操作が可能です。 書き込みの競合を避けるために、いくつかのポリシーが設定されています。

VLSI複雑度モデル

並列コンピュータはVLSIチップを使用して、プロセッサアレイ、メモリアレイ、および大規模なスイッチングネットワークを製造します。

現在、VLSIテクノロジーは2次元です。 VLSIチップのサイズは、そのチップで使用可能なストレージ(メモリ)スペースの量に比例します。

アルゴリズムのVLSIチップ実装のチップ面積(A)により、アルゴリズムの空間複雑度を計算できます。 Tがアルゴリズムの実行に必要な時間(レイテンシ)である場合、A.Tはチップ(またはI/O)で処理されるビットの総数の上限を示します。 特定のコンピューティングでは、下限f(s)が存在します。

A.T ^ 2 ^> = O(f(s))

ここで、A =チップ面積およびT =時間

建築開発トラック

私は次のトラックに沿って広がる並列コンピュータの進化-

  • 複数のプロセッサトラック
  • マルチプロセッサトラック
  • マルチコンピュータートラック
  • 複数のデータトラック
  • ベクトルトラック
  • SIMDトラック
  • 複数のスレッドの追跡
  • マルチスレッドトラック
  • データフロートラック
  • マルチプロセッサトラック*では、異なるスレッドが異なるプロセッサで同時に実行され、共有メモリ(マルチプロセッサトラック)またはメッセージパッシング(マルチコンピュータトラック)システムを介して通信することが想定されています。
  • 複数のデータトラック*では、大量のデータに対して同じコードが実行されると想定されています。 これは、一連のデータ要素で同じ命令を実行する(ベクトルトラック)か、同様のデータセットで同じ命令を実行する(SIMDトラック)ことによって行われます。
  • 複数スレッドトラック*では、異なるプロセッサで実行されるスレッド間の同期遅延を隠すために、同じプロセッサでさまざまなスレッドのインターリーブされた実行が想定されています。 スレッドインターリーブは、粗い(マルチスレッドトラック)または細かい(データフロートラック)にできます。