汎用レジスタは、1サイクル遅延を挿入してBlockRAMを使えるようにしたので、ベクトル・レジスタも1サイクル遅延を挿入してBlockRAMを使えるようにした。 この時にいろいろと改変しないといけない場所で最も面倒なのが、STQからキャッシュに書き込みをする際の書き込みベクトル・レジスタの読み出しだ。
このために、1サイクルステージを挿入する必要がある。
この時に、L1DがBusyだった時にどう待ち合わせるかというと、L1Dに書き込みをするValid & Readyが有効でない限り、次のリクエストはベクトルレジスタに対して要求を出し続ける。 0サイクルでデータを取得できるので、前の命令が書き込みを完了させると、即時次のベクトル・レジスタ・データを渡すことができる。
これを1サイクルほどベクトル・レジスタの読み込みを挿入させるとどうなるか。基本的にはデータを取得した状態で、書き込みポートのFFを停止させるので、その次のデータ読み出しはリクエストを出し続けて、前の命令がL1Dへの書き込みを完了させると、次の書き込みポートのFFを更新すればよいということになる。 つまり、下記の図のB3は、L1DのValid & Readyが完了するまでレジスタ・リードのArbitrationを取得し続けておく必要があるということか。このように論理を変える必要がある。