FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Decoupled vector architectures を読む (1. 概要)

ちょっと古い論文だが、"Decoupled Vector Architectures"という論文を読んでいる。

https://ieeexplore.ieee.org/document/501193

この論文は、ベクトルプロセッサにおけるデカップリング技術の使用が、ベクトルプログラムの性能を大幅に向上させることを示すことを目的としている。

  • 現実的なメモリレイテンシで2倍以上の性能向上
  • レイテンシのない理想的なメモリシステムでも最大50%の性能向上
  • ロード/ストアキュー間のバイパス技術の導入
    • 最大22%の性能向上、平均20%のメモリトラフィックの削減が可能

この論文の重要な部分は、アーキテクチャの異なるキューの適切なサイズを選択する際のトレードオフを研究することであり、キューのハードウェアコストを最小限に抑えつつ、デカップリングの性能上の利点を保持できるようにしている。

現在のスーパー・スカラ・プロセッサは、キャッシング、マルチスレッディング、デカップリングという主に3つの技術を通じてメモリ・レイテンシの問題に取り組んでいる。Decoupledスカラプロセッサ[20, 17, 12]は、プログラムの実行を「データの移動」と「すべての算術命令の実行」という2つの異なるタスクに分割することに焦点を当てている。Decoupledプロセッサは通常、これら2つのタスクを非同期に実行し、アーキテクチャ・キューを介して通信する2つの独立したプロセッサ(アドレスプロセッサと計算プロセッサ)を持っている。

ベクトル・マシンは伝統的に長いベクトルを使用してレイテンシ問題に対処してきているが、ベクトル・マルチ・プロセッサ・システムでは、メモリ・モジュールと相互接続ネットワークの競合によりメモリレイテンシが非常に高くなる可能性がある。ベクトル・マシン実際のプログラムでのベクトルアーキテクチャの性能は機械の理論上のピーク性能からは程遠いことがいくつかの研究で示されている[16, 7]。

この論文では、ベクトルプロセッサのメモリ応答時間を改善するために、デカップリングの原則を使用することが、メモリ問題によるロストサイクルの数を減らす技術として有効であることを示している。また、デカップリングが標準の動作モードに比べて有利であり、より現実的なレイテンシに対しては、デカップルされたベクトルアーキテクチャが非デカップルされたベクトルアーキテクチャよりも大幅に優れた性能を発揮することを示す。

また、ロード/ストアキュー間のバイパス技術を導入し、これにより全体の実行時間を短縮し、トータルメモリトラフィックを削減する方法についても説明する。

次に、デカップリングされたベクトルアーキテクチャの性能利点を評価するために、トレース駆動アプローチが取られています。

ベンチマーク: Perfect Club

Convex C3480マシンでコンパイルされ、Dixieというツールを使用して、プログラムの完全な実行を詳細に記述するトレースが生成される。

ベースとなるベクトル・アーキテクチャについては、Convex C3400アーキテクチャの密接なモデルとして設計されている。このアーキテクチャは、1つのメモリポートと2つの機能ユニットを持つベクトルコンピュータのクラスに限定されている。

リファレンス・アーキテクチャは、スカラ部分と独立したベクトル部分から構成されている。ベクトル部分は、2つの計算ユニット(FU1とFU2)と1つのメモリアクセスユニット(LD)から構成されている。FU2ユニットは、すべてのベクトル命令を実行できる汎用算術ユニットであり、FU1ユニットは、乗算、除算、平方根以外のすべてのベクトル命令を実行する制限された機能ユニットである。どちらの機能ユニットも完全にパイプライン化されている。

次に、6つのベンチマークプログラムの実行を分析するセクションでは、リファレンス・アーキテクチャの3つのベクトル機能ユニット(FU2、FUI、LD)のみを考慮していく。

  • メモリレイテンシの増加に伴い、ピーク浮動小数点速度で進行するサイクルの割合は低くなる。
  • メモリレイテンシは、比較的小さいベクトル長を持つプログラム(DYFESM、TRFD、SPEC77)の全体的な実行時間に大きな影響を与える。

提案されたデカップルされたベクトルアーキテクチャは、命令ストリームを3つの異なるストリームに分割する。

  • ベクトル計算命令、メモリアクセス命令(ベクトルおよびスカラ)、およびスカラモードで実行される計算命令)

これらは、3つのプロセッサ(ベクトル・プロセッサ、アドレス・プロセッサ、スカラ・プロセッサ)を介して独立して進行する。これらのプロセッサ間のすべての通信は、一連の実装キューを介して行われ、フェッチ・プロセッサは、すべての命令をフェッチして、実行するプロセッサに分配する役割を担う。アドレス・プロセッサは、すべてのメモリ・アクセス(スカラおよびベクトル)とすべてのアドレス計算を実行する。ベクトル・アクセスはキャッシュを介さずに直接メインメモリにアクセスする。

ストア命令は2段階のプロセスで処理され、常に厳格なプログラム順序で実行される。ロード命令も2段階のプロセスで実行され、最初にすべてのストアキュー内のストアとの非一致をチェックする。