自作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サイクル必要なので、次の命令のウェイクアップに余裕をもって動作できる。波形で動作を確認できた。