← Back to Architecture Visualizer Hub

Shoumei RV64G CPU — Instruction Performance & Benchmark Suite

Cycle-accurate performance (Instructions Per Cycle — IPC) measured across all 171 RV64G + Zb* instructions in Verilator RTL simulation (higher is better)
196
Instructions Benchmarked
1.933 IPC
Peak Dual-Issue ALU (IPC)
1.013 IPC
Pipelined FPU Peak (IPC)
0.015–0.040 IPC
Iterative Integer / FP SRT Divide
0.102 IPC
Zb* Microcode Fallback (Serialized)

⚠ Architectural Caveats & Performance Notes

Instruction Extension Peak IPC (Throughput) Dependent IPC (Latency) Pipeline Unit / Execution Path
addRV64I (Base)1.9331.237ALU0 / ALU1
add_uwRV64I (Word)0.093—ALU0 / ALU1
addiRV64I (Base)1.9331.237ALU0 / ALU1
addiwRV64I (Word)1.9331.237ALU0 / ALU1
addwRV64I (Word)1.9331.237ALU0 / ALU1
amoadd_dRV64A0.257—LSU / StoreBuffer (atomic)
amoadd_wRV64A0.257—LSU / StoreBuffer (atomic)
amoand_dRV64A0.257—LSU / StoreBuffer (atomic)
amoand_wRV64A0.257—LSU / StoreBuffer (atomic)
amomax_dRV64A0.257—LSU / StoreBuffer (atomic)
amomax_wRV64A0.257—LSU / StoreBuffer (atomic)
amomaxu_dRV64A0.257—LSU / StoreBuffer (atomic)
amomaxu_wRV64A0.257—LSU / StoreBuffer (atomic)
amomin_dRV64A0.257—LSU / StoreBuffer (atomic)
amomin_wRV64A0.257—LSU / StoreBuffer (atomic)
amominu_dRV64A0.257—LSU / StoreBuffer (atomic)
amominu_wRV64A0.257—LSU / StoreBuffer (atomic)
amoor_dRV64A0.257—LSU / StoreBuffer (atomic)
amoor_wRV64A0.257—LSU / StoreBuffer (atomic)
amoswap_dRV64A0.257—LSU / StoreBuffer (atomic)
amoswap_wRV64A0.257—LSU / StoreBuffer (atomic)
amoxor_dRV64A0.257—LSU / StoreBuffer (atomic)
amoxor_wRV64A0.257—LSU / StoreBuffer (atomic)
andRV64I (Base)1.9331.237ALU0 / ALU1
andiRV64I (Base)1.9331.237ALU0 / ALU1
andnZbb0.102—FallbackSequencer (microcode)
auipcRV64I (Base)1.776—ALU0 / ALU1
bclrZbs0.102—FallbackSequencer (microcode)
bclriRV64I (Base)0.102—ALU0 / ALU1
beqRV64I (Control)1.0130.372BranchExecUnit
bextZbs0.102—FallbackSequencer (microcode)
bextiRV64I (Base)0.102—ALU0 / ALU1
bgeRV64I (Control)1.0130.372BranchExecUnit
bgeuRV64I (Control)1.0130.372BranchExecUnit
binvZbs0.102—FallbackSequencer (microcode)
binviRV64I (Base)0.102—ALU0 / ALU1
bltRV64I (Control)1.0130.372BranchExecUnit
bltuRV64I (Control)1.0130.372BranchExecUnit
bneRV64I (Control)1.0130.372BranchExecUnit
bsetZbs0.102—FallbackSequencer (microcode)
bsetiRV64I (Base)0.102—ALU0 / ALU1
clmulZbc0.102—FallbackSequencer (microcode)
clmulhRV64I (Base)0.102—ALU0 / ALU1
clmulrRV64I (Base)0.102—ALU0 / ALU1
clzRV64I (Base)0.113—ALU0 / ALU1
clzwRV64I (Word)0.085—ALU0 / ALU1
cpopRV64I (Base)0.113—ALU0 / ALU1
cpopwRV64I (Word)0.102—ALU0 / ALU1
csrrcZicsr0.0060.046CSRFile (serialized)
csrrciZicsr0.006—CSRFile (serialized)
csrrsZicsr0.0060.046CSRFile (serialized)
csrrsiZicsr0.006—CSRFile (serialized)
csrrwZicsr0.0060.046CSRFile (serialized)
csrrwiZicsr0.006—CSRFile (serialized)
ctzRV64I (Base)0.113—ALU0 / ALU1
ctzwRV64I (Word)0.113—ALU0 / ALU1
divRV64M0.0150.019Divider (iterative SRT)
divuRV64M0.0150.019Divider (iterative SRT)
divuwRV64M0.0150.019Divider (iterative SRT)
divwRV64M0.0150.019Divider (iterative SRT)
fadd_dRV64D1.0120.311FPExecUnit (pipelined)
fadd_sRV64F1.0120.311FPExecUnit (pipelined)
fclass_dRV64D1.012—FPExecUnit (pipelined)
fclass_sRV64F1.012—FPExecUnit (pipelined)
fcvt_d_lRV64F1.012—FPExecUnit (pipelined)
fcvt_d_luRV64F1.012—FPExecUnit (pipelined)
fcvt_d_sRV64F1.0130.622FPExecUnit (pipelined)
fcvt_d_wRV64F1.012—FPExecUnit (pipelined)
fcvt_d_wuRV64F1.012—FPExecUnit (pipelined)
fcvt_l_dRV64D1.012—FPExecUnit (pipelined)
fcvt_l_sRV64F1.012—FPExecUnit (pipelined)
fcvt_lu_dRV64D1.012—FPExecUnit (pipelined)
fcvt_lu_sRV64F1.012—FPExecUnit (pipelined)
fcvt_s_dRV64D1.0130.622FPExecUnit (pipelined)
fcvt_s_lRV64F1.012—FPExecUnit (pipelined)
fcvt_s_luRV64F1.012—FPExecUnit (pipelined)
fcvt_s_wRV64F1.012—FPExecUnit (pipelined)
fcvt_s_wuRV64F1.012—FPExecUnit (pipelined)
fcvt_w_dRV64D1.012—FPExecUnit (pipelined)
fcvt_w_sRV64F1.012—FPExecUnit (pipelined)
fcvt_wu_dRV64D1.012—FPExecUnit (pipelined)
fcvt_wu_sRV64F1.012—FPExecUnit (pipelined)
fdiv_dRV64D0.0180.022FPU Divider / Sqrt
fdiv_sRV64F0.0400.049FPU Divider / Sqrt
fenceZifencei1.991—Pipeline drain / flush
feq_dRV64D1.012—FPExecUnit (pipelined)
feq_sRV64F1.012—FPExecUnit (pipelined)
fldRV64F0.515—FPExecUnit (pipelined)
fle_dRV64D1.012—FPExecUnit (pipelined)
fle_sRV64F1.012—FPExecUnit (pipelined)
flt_dRV64D1.012—FPExecUnit (pipelined)
flt_sRV64F1.012—FPExecUnit (pipelined)
flwRV64F0.515—FPExecUnit (pipelined)
fmadd_dRV64D1.0120.156FPExecUnit (pipelined)
fmadd_sRV64F1.0120.208FPExecUnit (pipelined)
fmax_dRV64D1.0130.622FPExecUnit (pipelined)
fmax_sRV64F1.0130.622FPExecUnit (pipelined)
fmin_dRV64D1.0130.622FPExecUnit (pipelined)
fmin_sRV64F1.0130.622FPExecUnit (pipelined)
fmsub_dRV64D1.0120.156FPExecUnit (pipelined)
fmsub_sRV64F1.0120.208FPExecUnit (pipelined)
fmul_dRV64D1.0120.311FPExecUnit (pipelined)
fmul_sRV64F1.0120.415FPExecUnit (pipelined)
fmv_d_xRV64F1.012—FPExecUnit (pipelined)
fmv_w_xRV64F1.012—FPExecUnit (pipelined)
fmv_x_dRV64D1.012—FPExecUnit (pipelined)
fmv_x_wRV64F1.012—FPExecUnit (pipelined)
fnmadd_dRV64D1.0120.156FPExecUnit (pipelined)
fnmadd_sRV64F1.0120.208FPExecUnit (pipelined)
fnmsub_dRV64D1.0120.156FPExecUnit (pipelined)
fnmsub_sRV64F1.0120.208FPExecUnit (pipelined)
fsdRV64F1.012—FPExecUnit (pipelined)
fsgnj_dRV64D1.0130.622FPExecUnit (pipelined)
fsgnj_sRV64F1.0130.622FPExecUnit (pipelined)
fsgnjn_dRV64D1.0130.622FPExecUnit (pipelined)
fsgnjn_sRV64F1.0130.622FPExecUnit (pipelined)
fsgnjx_dRV64D1.0130.622FPExecUnit (pipelined)
fsgnjx_sRV64F1.0130.622FPExecUnit (pipelined)
fsqrt_dRV64D0.0180.022FPU Divider / Sqrt
fsqrt_sRV64F0.0400.049FPU Divider / Sqrt
fsub_dRV64D1.0120.311FPExecUnit (pipelined)
fsub_sRV64F1.0120.311FPExecUnit (pipelined)
fswRV64F1.012—FPExecUnit (pipelined)
jalRV64I (Control)0.170—BranchExecUnit
jalrRV64I (Control)0.378—BranchExecUnit
lbRV64I (Load/Store)0.5150.415LSU / L1D Cache
lbuRV64I (Load/Store)0.5150.415LSU / L1D Cache
ldRV64I (Load/Store)0.5150.415LSU / L1D Cache
lhRV64I (Load/Store)0.5150.415LSU / L1D Cache
lhuRV64I (Load/Store)0.5150.415LSU / L1D Cache
lr_dRV64A0.343—LSU / StoreBuffer (atomic)
lr_wRV64A0.343—LSU / StoreBuffer (atomic)
luiRV64I (Base)1.776—ALU0 / ALU1
lwRV64I (Word)0.5150.415ALU0 / ALU1
lwuRV64I (Load/Store)0.5150.415LSU / L1D Cache
maxZbb0.102—FallbackSequencer (microcode)
maxuZbb0.102—FallbackSequencer (microcode)
minZbb0.102—FallbackSequencer (microcode)
minuZbb0.102—FallbackSequencer (microcode)
mulRV64M1.0130.415Multiplier (pipelined)
mulhRV64M1.0130.415Multiplier (pipelined)
mulhsuRV64M1.0130.415Multiplier (pipelined)
mulhuRV64M1.0130.415Multiplier (pipelined)
mulwRV64M1.0130.415Multiplier (pipelined)
orRV64I (Base)1.9331.237ALU0 / ALU1
orc_bRV64I (Base)0.113—ALU0 / ALU1
oriRV64I (Base)1.9331.237ALU0 / ALU1
ornZbb0.102—FallbackSequencer (microcode)
remRV64M0.0150.019Divider (iterative SRT)
remuRV64M0.0150.019Divider (iterative SRT)
remuwRV64M0.0150.019Divider (iterative SRT)
remwRV64M0.0150.019Divider (iterative SRT)
rev8RV64I (Base)0.113—ALU0 / ALU1
rolZbb0.102—FallbackSequencer (microcode)
rolwRV64I (Word)0.102—ALU0 / ALU1
rorZbb0.102—FallbackSequencer (microcode)
roriRV64I (Base)0.102—ALU0 / ALU1
roriwRV64I (Word)0.102—ALU0 / ALU1
rorwRV64I (Word)0.102—ALU0 / ALU1
sbRV64I (Load/Store)1.012—LSU / L1D Cache
sc_dRV64A0.515—LSU / StoreBuffer (atomic)
sc_wRV64A0.515—LSU / StoreBuffer (atomic)
sdRV64I (Load/Store)1.012—LSU / L1D Cache
sext_bRV64I (Base)0.093—ALU0 / ALU1
sext_hRV64I (Base)0.093—ALU0 / ALU1
shRV64I (Load/Store)1.012—LSU / L1D Cache
sh1addZba0.102—FallbackSequencer (microcode)
sh1add_uwRV64I (Word)0.093—ALU0 / ALU1
sh2addZba0.102—FallbackSequencer (microcode)
sh2add_uwRV64I (Word)0.093—ALU0 / ALU1
sh3addZba0.102—FallbackSequencer (microcode)
sh3add_uwRV64I (Word)0.093—ALU0 / ALU1
sllRV64I (Base)1.9331.237ALU0 / ALU1
slliRV64I (Base)1.9331.237ALU0 / ALU1
slli_uwRV64I (Word)0.093—ALU0 / ALU1
slliwRV64I (Word)1.9331.237ALU0 / ALU1
sllwRV64I (Word)1.9331.237ALU0 / ALU1
sltRV64I (Base)1.9331.237ALU0 / ALU1
sltiRV64I (Base)1.9331.237ALU0 / ALU1
sltiuRV64I (Base)1.9331.237ALU0 / ALU1
sltuRV64I (Base)1.9331.237ALU0 / ALU1
sraRV64I (Base)1.9331.237ALU0 / ALU1
sraiRV64I (Base)1.9331.237ALU0 / ALU1
sraiwRV64I (Word)1.9331.237ALU0 / ALU1
srawRV64I (Word)1.9331.237ALU0 / ALU1
srlRV64I (Base)1.9331.237ALU0 / ALU1
srliRV64I (Base)1.9331.237ALU0 / ALU1
srliwRV64I (Word)1.9331.237ALU0 / ALU1
srlwRV64I (Word)1.9331.237ALU0 / ALU1
subRV64I (Base)1.9331.237ALU0 / ALU1
subwRV64I (Word)1.9331.237ALU0 / ALU1
swRV64I (Word)1.012—ALU0 / ALU1
xnorZbb0.102—FallbackSequencer (microcode)
xorRV64I (Base)1.9331.237ALU0 / ALU1
xoriRV64I (Base)1.9331.237ALU0 / ALU1
zext_hRV64I (Base)0.093—ALU0 / ALU1