No. 129 / project of 147 on the ladder

Scheduler arrival/service decoupling

introduces — shadow frontend arrival contract; backend service counters; ready/valid boundary audit

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

P129 asks whether the current frontend/backend split is a real abstraction yet. It keeps P128’s queue-lifetime model and adds separate frontend arrival and backend service counters for integer, memory, and control work. The architectural core is unchanged.

checkresult
Verilator buildPASS
BusyBox shell workload reaches P129-FILE-OKPASS
Arrival/service counters emittedPASS
Hardened layoutNOT RUN
arrival/service counterintegermemorycontrol
arrivals13,098,0263,245,3586,310,289
backend services13,098,0263,245,2996,310,289
full drops000
max occupancy111
ready-mask countervalue
samples50,443,768
single ready50,443,768
dual ready0
triple ready0
integer ready27,849,874
memory ready9,973,316
control ready12,620,578
two-issue opportunity cycles0
three-issue opportunity cycles0
trap flush clears58
metricP128P129
post-load cycles218,746,401218,413,661
shell window cycles64,776,98564,498,976
retired instructions86,351,27386,239,296
CPI2.53322.5326
S_FETCH cycles7,627,0877,622,465
S_MEM cycles27,750,59127,700,817

This is a useful negative result. Even after moving arrival accounting earlier than P128’s accepted-record queues, the arrival and service counts still track each other almost exactly. Each queue maxes at occupancy 1. The current split is still instrumentation around a monolithic in-order FSM, not a proper ready/valid frontend/backend contract.

P130 should extract that contract explicitly with plain LibreLane-friendly ready/valid modules and attach counters to handshake events rather than inferred FSM windows.

shell phases label P129 shell workload cycles 218,413,661 cpi 2.53
  1. kernel banner to /init 116,719,267 53.6%
  2. /init to shell banner 1,088,406 0.5%
  3. shell banner to first command 35,478,945 16.3%
  4. echo command 1,649 0%
  5. uname -a 2,398,302 1.1%
  6. ls /bin /usr/share 31,840,050 14.6%
  7. cat sample file 2,664,016 1.2%
  8. touch/write/cat/rm /tmp file 11,365,294 5.2%
  9. 8x ash loop with file I/O 16,228,985 7.5%
  10. final marker 680 0%
state breakdown label P129 scheduler arrival/service workload cycles 218,413,661 cpi 2.53
  1. fetch 3.5% 7,622,465
  2. execute 39.5% 86,264,008
  3. mem 12.8% 27,979,869
  4. walker 1.2% 2,683,350
  5. writeback 39.5% 86,239,296
  6. mul/div 3.5% 7,622,957