FPGA開発日記

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

自作CPUにベクトル命令を追加する実装検討 (10. VLEN != DLENの実装検討2)

自作CPUにおいて、ある程度ベクトル移動命令が動作するようになってきた。

ある程度基本的な算術演算命令が動くようになってきたので、今度はVLEN != DLENの動作について考えてみる。 VLEN != DLENの場合は、VLEN/DLENの回数だけ命令が流れていき、順番に処理が進んでいくことになる。

よく考えてみると、ベクトルレジスタのアップデートをリネームユニットに渡すのができていなかったので、長いテストを流すと落ちる。

リネームユニットを確認して、チェイン動作を確認する。つまり、VLEN!=DLENのときの最初の要素が書き込まれると、すぐに次の依存する命令を起動する。

        subw    a4, a1, a5
        vsetvli a4, a4, e64, m1, ta, mu
        vmv.v.x v24, a5
        vmv.v.x v25, a1
    vadd.vv v30, v24, v25
    vadd.vv v31, v30, v24
    vadd.vv v0 , v31, v30
    vadd.vv v1 , v0 , v31

1命令の完了に4サイクル必要なので、次の命令のウェイクアップに余裕をもって動作できる。波形で動作を確認できた。

Generated by DALL-E 3 from ChatGPT