No. 127 / project of 147 on the ladder

Scheduler wakeup/issue eligibility

introduces — shadow scheduler ready mask; class-ready pair counters; priority issue sketch

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

P127 adds a shadow scheduler readiness snapshot above the P124-P126 backend records. It asks whether the held integer, memory, and control records ever become ready together. The architectural core still runs the same in-order FSM.

checkresult
Verilator buildPASS
BusyBox shell workload reaches P127-FILE-OKPASS
Scheduler counters emittedPASS
Hardened layoutNOT RUN
scheduler countervalue
sampled cycles with any held record43,660,332
any ready37,181,060
none ready6,479,272
single ready37,181,060
dual ready0
triple ready0
integer ready14,855,374
memory ready9,758,720
control ready12,566,966
integer+memory ready0
integer+control ready0
memory+control ready0
two-issue opportunity cycles0
waiting-on-sources cycles6,479,272
metricP126P127
post-load cycles218,372,668218,572,787
shell window cycles64,451,35264,621,346
retired instructions86,230,11386,294,693
CPI2.53242.5329
S_FETCH cycles7,621,5177,625,156
S_MEM cycles27,697,97327,732,094

This is a useful negative result. There are 37.18M ready cycles, but every one is single-class. A multi-issue selector has nothing to select yet because the shadow records still do not coexist with independent lifetime. P128 should add queue/lifetime depth before any architectural issue change.

shell phases label P127 shell workload cycles 218,572,787 cpi 2.53
  1. kernel banner to /init 116,719,440 53.6%
  2. /init to shell banner 1,085,542 0.5%
  3. shell banner to first command 35,518,392 16.3%
  4. echo command 1,649 0%
  5. uname -a 2,368,559 1.1%
  6. ls /bin /usr/share 31,885,393 14.6%
  7. cat sample file 3,248,918 1.5%
  8. touch/write/cat/rm /tmp file 11,029,426 5.1%
  9. 8x ash loop with file I/O 16,086,721 7.4%
  10. final marker 680 0%
state breakdown label P127 scheduler wakeup workload cycles 218,572,787 cpi 2.53
  1. fetch 3.5% 7,625,156
  2. execute 39.5% 86,319,469
  3. mem 12.8% 28,011,400
  4. walker 1.2% 2,691,318
  5. writeback 39.5% 86,294,693
  6. mul/div 3.5% 7,629,035