No. 123 / project of 147 on the ladder

Dispatch/issue split sketch

introduces — shadow dispatch queue opportunity model; frontend-ready/backend-busy counters; issue-drain pressure

harden statelast run2026-05-06
signoff
  • DRCNOT RUN
  • LVSNOT RUN
  • antennaNOT RUN

P123 keeps the P122 four-entry ROB ring and adds a separate shadow dispatch/issue opportunity model. It does not let younger operations change architectural state yet. It asks a narrower question: how often does the frontend already have work queued while the serialized backend is still busy?

checkresult
Verilator buildPASS
BusyBox shell workload reaches P123-FILE-OKPASS
Dispatch/issue opportunity counters emittedPASS
Hardened layoutNOT RUN
dispatch / issue countervalue
frontend-ready/backend-busy cycles40,404,653
serial backend block cycles40,404,653
dispatch opportunities40,404,653
modeled dispatch allocs40,404,653
modeled issue drains40,404,652
modeled full blocks0
modeled occupancy at end1
modeled max occupancy1
modeled occupancy-0 cycles67,914,985
modeled occupancy-1 cycles150,006,182
modeled occupancy-2/3/4 cycles0
metricP122P123
post-load cycles219,016,787217,921,168
shell window cycles65,109,74464,008,910
retired instructions86,435,66286,078,334
CPI2.53392.5317
S_FETCH cycles7,628,9777,615,306
S_MEM cycles27,785,99627,640,594

The cycle numbers are the measured P123 profile, but this rung should not be read as a speedup claim. The dispatch model is shadow-only; the important result is the 40.40M-cycle window where a real dispatch stage could be doing work while the old backend waits to retire the current instruction.

That gives the next rung a sharper target: add a shadow issue slot with explicit block reasons for memory operations, CSR/trap/fence behavior, control-flow repair, and unresolved dependencies. A ROB ring becomes interesting only after dispatch and issue can actually get ahead of writeback.

shell phases label P123 shell workload cycles 217,921,168 cpi 2.53
  1. kernel banner to /init 116,722,502 53.7%
  2. /init to shell banner 1,078,743 0.5%
  3. shell banner to first command 35,482,946 16.3%
  4. echo command 1,649 0%
  5. uname -a 2,477,956 1.1%
  6. ls /bin /usr/share 31,936,047 14.7%
  7. cat sample file 3,118,950 1.4%
  8. touch/write/cat/rm /tmp file 10,412,164 4.8%
  9. 8x ash loop with file I/O 16,061,464 7.4%
  10. final marker 680 0%
state breakdown label P123 dispatch/issue split workload cycles 217,921,168 cpi 2.53
  1. fetch 3.5% 7,615,306
  2. execute 39.5% 86,103,010
  3. mem 12.8% 27,919,152
  4. walker 1.2% 2,692,933
  5. writeback 39.5% 86,078,334
  6. mul/div 3.4% 7,510,717