RISC-V

RISC-Vのベクトル命令一覧

全部で309命令+3命令だと思う(数え間違いがなければ...) 要素幅EEWとレジスタグループ幅LMULとはほぼ直交しているのでIntrinsicにすると1万命令くらいある。 実装的にはレジスタグループを考えなければ簡単な部類な命令が多い。 64bit整数の乗算/積和とか1…

RISC-Vの浮動小数と整数レジスタの分離ができない命令

命令 レジスタ(R→W)f:浮動小数レジスタx:整数レジスタ fld flw x→f fsd fsw x,f→ feq.d flt.d fle.d f,f→x fclass.d f→x fcvt.w.d fcvt.l.d f→x fcvt.d.w fcvt.d.l x→f fmv.d.x x→f fmv.x.d f→x 浮動小数レジスタには整数表現が乗らないので、「IEEE754を…

RV64GBでOp fusionできそうな命令列

最近RV64GBの命令列を見ていてOp fusionできそうな命令が結構あったので、抜き出してみた。 rs1をrs2の整数倍になるように切り捨て div rd, rs1, rs2 mul rd, rd, rs2 実装は以下のようになりレイテンシをmulからsubへ置き換えることができる rem rd, rs1, r…

RISC-Vのゼロレジスタが必要な疑似命令

疑似命令 展開 nop addi zero, zero, 0 li rd, imm addi rd, zero, imm neg rd, rs sub rd, zero, rs negw rd, rs subw rd, zero, rs snez rd, rs sltu rd, zero, rs sltz rd, rs1 slt rd, rs, zero sgtz rd, rs1 slt rd, zero, rs beqz rs offset beq rs, z…

RV64の32bit用命令について

RV64命令セットの32bit用命令 RV64命令セットでは通常のadd命令では64bit幅で計算を行うが、sraw addw add.uwのような32bit用の命令が定義されている。 呼び出し規約曰く The C types char and unsigned char are 8-bit unsigned integers and are zero-exte…

Milk-V Jupiter(SpacemiT K1)のコアの性能評価

この記事はなに? Milk-V Jupiterを買って半年ほど使い、どうも性能がおかしいときがある。 なので色々とベンチマークプログラムを組みリバースエンジニアリングし、ボトルネックの調査を行った。 SpacemiT K1 Milk-V JupiterにはSpacemiT社のK1というSoCが…