即値命令、RISC-VにおけるJAL命令は分岐予測の実装としては非常に単純だ。
即値命令は比較の必要もなく、またジャンプ先も常に固定だ。予測が容易であるため、実装も簡単だ。 一つだけ難しいのは、レジスタ参照の即値ジャンプの場合。これはレジスタの内容によってジャンプ先が変わるので、予測が難しく、 実装も難しいのでここではパスする。 (ただ、自己書き換えが起こるような状況では、別のことも考慮しなければならない。これは、分岐予測全般に言えることだ)。
即値ジャンプ命令の分岐予測実行
RISC-V自作プロセッサにおいて、即値命令に対して分岐予測を実装した場合のサイクル数を比較した。
Coremarkの比較において、1割程度改善した。こいつはいいぞ!
サイクル数 | 比率 | |
---|---|---|
JAL即値分岐予測無し | 429650 | 1.00 |
JAL即値分岐予測 | 387781 | 0.90 |