21/07/03 16:15:43.51 oZ9okFcZ0.net
>>243
U-type忘れてた
RISC-Vで即値を伴う命令は他にLUIとAUIPCとJAL
AUIPC命令は上位20bit即値下位12bit0の即値+プログラムカウンタの計算結果をregdに書き込む
プログラムカウンタの値と即値をALUに送って加算するので、即値の送り先はALU(AGUでもよい)
JAL命令は無条件分岐で、プログラムカウンタ+即値のアドレスに分岐し、プログラムカウンタ+4を出力レジスタに書き込む
プログラムカウンタの値と即値をALUに送って加算して次のプログラムカウンタにするので、即値の送り先はALU(AGUでもよい)
プログラムカウンタ+4は次のプログラムカウンタとして計算される値の出力先を変える
LUI命令は上位20bit即値下位12bit0の即値をそのまま出力レジスタに書き込む
これはALUに送らなくても直接即値の値を出力レジスタに送ることで実装できる
ただ、多くの場合ゼロレジスタと即値をALUに送って加算した値をレジスタに書き込む形で実装するので、即値の送り先はALU
なぜならばゼロレジスタと即値の加算でならレジスタ即値演算回路をそのまま使えて余分な回路が不要だから
RISC-Vの即値関係のマイクロアーキテクチャはだいたいこんなかんじで、一部の命令に配慮した最適化は必要ない