FPGA開発日記

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

Kriste Asanovic教授のVector Phd Paper輪読メモ (9. T0-Vector Microprocessor)

people.eecs.berkeley.edu

3.3 T0マイクロアーキテクチャ

3.3.2 TSIP

3.3.3 命令フェッチとデコード

図3.2はT0のパイプライン構造を示している。

  • フェッチとデコードステージは全命令で共通
    • 外部メモリポートが空いていれば、キャッシュミスがあった場合に備えて、同じアドレスをプリフェッチする。
    • プリフェッチのミスは2サイクルだが、そうでない場合は3サイクルとなる
    • プリフェッチをより積極的にすることにより、スカラーコードの命令フェッチ性能を向上させる可能性があるが、余分な回路が必要となる
  • デコードステージでは、スカラレジスタファイルが読み込まれ、バイパスが行われる
    • インターロックが存在しない場合、命令は適切なユニットにディスパッチされて実行される
    • すべての命令は、スカラパイプラインを使用して例外チェックを実行する
    • ベクトル命令は、ベクトル機能ユニットを複数サイクル占有する場合がある

3.3.4 スカラーユニット

  • スカラALU命令はXステージで実行され、すべての整数ALU演算は1サイクルのレイテンシでバイパスされる
    • ただし整数乗算と除算は除く
  • 高速外部メモリにより、スカラデータのキャッシュは存在していない。外部メモリは完全にパイプライン化され、3サイクルのレイテンシでスカラロードを返す
    • メモリアクセスのアドレス生成には、別のアドレス加算器が使用されている。
    • ベクトルメモリアクセス命令の動作中、アドレス加算器はさらなる命令実行が可能である。
    • ロードデータは、Mステージの終わりまでに、ベクトルユニット内のラッチに渡される。
    • Nステージでは、データの整列と符号拡張を行っている。
    • Wステージの最初では、スカラの結果をレジスタファイルに書き戻している。
    • Wステージの後半では、レジスタファイルからスカラの結果を読み出すことができる。
T0のパイプライン構成

3.3.5 ベクトルレジスタファイル

  • T0ベクトルレジスタは16エントリ。最初のベクトルレジスタ0は、値ゼロに固定されている
    • 32-bit x 32要素 = 1024-bit
    • 8つの並列レーンずつに分割されている
    • 各レーン
    • VMPに1-read Port, 1-write Port
    • VP0 / VP1 2-read Ports, 2-write Port
  • ベクトル・メモリ・ユニット
    • Dステージの終了後にベクトルメモリユニットコントローラにディスパッチされる
      • ベクトルメモリパイプラインに対してパイプライン制御信号を生成する小さなステートマシンである
      • Rステージ:ベクトルレジスタファイル読み出し
        • 前半:ベクトルレジスタファイルの読み出しアドレス決定
        • 後半:ベクトルレジスタファイル読み出し
          • メモリローテートネットワークとバイトイネーブル信号もこのステージで生成される
      • Mステージ:ベクトルメモリアクセス
        • 異なるレーンからのステアデータを、ストアアラインメントクロスバーによって正しいバイト位置に調整される
        • ロード命令の場合は、データが外部メモリから戻され、クロス場によって正しい位置に調整される
      • Wステージ:ベクトルレジスタファイル書き込み
        • 前半:ロード命令の場合は、Mステージの後半でラッチされたロードデータが整列され、ベクトルレジスタに書き込まれる
        • 後半:スカラロードまたは巣から抽出命令からのスカラデータが、バイパスによって転送される
      • スカラロード命令も実行することができる。
      • ベクトルレジスタの読み出しと書き込みポートは独立している
      • ベクトル抽出命令では、リードポートとライトポートを同時に使用することにより、2つのポートでベクトルインデックスロードを簡単化している。
      • ベクトルインデックスロード・ストア命令は、ベクトルレジスタファイルカラスからデータパスのアドレス生成器にアドレスをインデックスを送信する必要があるため、複雑になる
        • インデックス付きロード:ベクトルレジスタのインデックスが、アドレス生成器に到着するのを待つため、3サイクルのペナルティが発生する。
        • インデックス付きストア:インデックスとベクトルレジスタ値が必要となり、複数回の読み出しが必要となる

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com