FPGA開発日記

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

Kriste Asanovic教授のVector Phd Paper輪読メモ (2. 背景と動機)

people.eecs.berkeley.edu

2. 背景と動機

  • 何でベクトルプロセッサが廃れたのか?
    • マイクロプロセッサの性能向上が以外とすごかった。
    • スーパスカラ・アウトオブオーダ実行の効果が大きい。単一の命令ストリームから命令レベル並列性を引き出す。ベクトル化可能かどうかは関係なく、すべての命令ストリームから引き出せる。
    • じゃあ、ベクトル命令はもはや不要ではないか?という議論になる
  • 本論文では、ベクトルアーキテクチャの独自のメリットについて議論する。
    • 命令レベル並列性・スレッドレベル並列性・データレベル並列性において、ベクトルは最も安価である。
    • 従来の科学技術系スーパコンピュータの分野以外でも、ベクトル実行に適しているということを議論する。
  • スカラ命令を性能向上するために大量の回路面積を挿入するよりは、ベクトル命令のために回路面積を使った方がマシ。
    • たとえベクトル化可能なプログラムが全く存在していなかったとしても、同じ面積のスカラ実装で性能向上できる割合はわずか。
    • メモリアクセスのピン帯域に制約されているというのは間違っており、ベクトル命令はより多くの帯域幅を出せるために有利である。
  • 様々なデータ並列性が存在する
    • 命令レベル並列性 (Instruction Level Parallelism)
    • スレッドレベル並列性 (Thread Level Parallelism)
    • データレベル並列性 (Data Level Parallelism)
    • このうち、データレベル並列性はもっとも柔軟性が低く、ILP, TLPでも抽出が可能である。
    • しかし、柔軟性が低いがゆえに、単一のフェッチで大量のデータ処理を行うことができる。
  • ベクトル処理について。
    • スカラ命令は1つの命令につき1つのオペコードとオペランドを持っている。
    • ベクトル命令は1つのオペコード、ベクトルオペランド、ベクトル長を指定して演算を実行する。

 C_i = A_i + B_i\qquad(i = 0..\text{VL})

ここで、 $\text{VL}$はベクトル長である。

  • ベクトル・メモリ・アーキテクチャとベクトル・レジスタアーキテクチャの違い
  • ベクトルレジスタアーキテクチャのユーザプログラミングモデル
    • スカラユニット
    • ベクトルユニット
      • VLMAX個の要素かならぬベクトルデータレジスタを含む
      • ベクトル長レジスタVLR:各ベクトル命令で処理する要素数を設定する
      • 構成によっては、ベクトル要素に1ビットずつ条件実行を制御するためのフラグレジスタを用意する場合がある
      • ベクトルレジスタからソース値を読み取り、ベクトルレジスタに結果を書き込む
      • スカラのオペランドを置き換える命令も用意されている
      • ベクトルメモリ命令
        • ユニットストライド:メモリ上で要素が連続している場合
        • ストライドアクセス:要素が一定の変位で区切られている場合
        • インデックス付きアクセス:要素はメモリ上の任意の場所に置かれる
          • ギャザー・スキャター
      • マスク付きベクトル命令
        • 条件付き実行分を含むループのベクトル化
      • スカラ命令は、ベクトルレジスタ内の1つの要素にアクセスするための命令がある
        • ベクトルからデータを抽出するため
      • Compress・Expand
        • Compress:ベクトルレジスタから、フラグレジスタで指定される一の要素を圧縮してベクトルレジスタに格納する
        • Expand:その逆
        • Crayでは、Compressの実装するために圧縮インデックスベクトルを利用してギャザー命令を使用する
    • 仮想プロセッサについて
      • ベクトルユニットを仮想プロセッサ(VP)の集合体としてみなすことができる
      • VPごとに1つのローカルレジスタファイルの配列として扱う
        • 演算がベクトルユニット内の利用可能な物理処理要素にまたがって時間多重化されるため、「仮想」である

msyksphinz.hatenablog.com