No. 133 / project of 147 on the ladder

Dispatch payload class audit

introduces — payload class audit counters; module-owned dispatch classification proof; backend refactor decision point

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

P133 keeps architectural execution unchanged and asks one specific question: when the dispatch queue module owns a payload record, does its class agree with the older integer, memory, and control classifiers?

checkresult
Verilator buildPASS
BusyBox shell workload reaches P133-FILE-OKPASS
Payload counters emittedPASS
Payload invariant errorsPASS
Payload class mismatchesPASS
Hardened layoutNOT RUN
class audit countervalue
total payload class audits22,662,361
payload class mismatches0
integer payload audits13,103,082
memory payload audits3,247,041
control payload audits6,312,238
payload countervalue
accepts22,662,361
services22,662,289
flush clears71
append without storage0
invariant errors0
module countervalue
samples64,770,651
arrival-fire cycles22,662,361
service-fire cycles22,662,289
backpressure cycles0
dual-ready cycles0
triple-ready cycles0
per-class counterintegermemorycontrol
arrival fires13,103,0823,247,0416,312,238
service fires13,103,0823,246,9696,312,238
max occupancy111
count at end010
metricP132P133
post-load cycles218,410,456218,556,365
shell window cycles64,505,05264,581,917
retired instructions86,240,32286,293,679
CPI2.53262.5327
S_FETCH cycles7,622,3957,626,643
S_MEM cycles27,699,39127,727,937

This is still a refactor rung, not a speedup rung. The useful result is the zero mismatch count after a full Linux and BusyBox shell run.

The larger backend story is now clear: P123-P129 showed that the current backend does not naturally create independent ready work. P130 through P133 made the dispatch boundary real enough to trust: named valid/ready/fire, module-owned queue state, module-owned payload, and class-audited payload ownership. The breakthrough has not happened yet; the point is that the next active experiment now has a clean module boundary instead of another loose counter cluster in top.sv.

shell phases label P133 shell workload cycles 218,556,365 cpi 2.53
  1. kernel banner to /init 116,720,821 53.6%
  2. /init to shell banner 1,073,372 0.5%
  3. shell banner to first command 35,552,188 16.3%
  4. echo command 1,649 0%
  5. uname -a 2,358,939 1.1%
  6. ls /bin /usr/share 31,111,847 14.3%
  7. cat sample file 4,292,501 2%
  8. touch/write/cat/rm /tmp file 10,618,707 4.9%
  9. 8x ash loop with file I/O 16,197,594 7.4%
  10. final marker 680 0%
state breakdown label P133 dispatch payload audit workload cycles 218,556,365 cpi 2.53
  1. fetch 3.5% 7,626,643
  2. execute 39.5% 86,318,523
  3. mem 12.8% 28,007,495
  4. walker 1.2% 2,689,652
  5. writeback 39.5% 86,293,679
  6. mul/div 3.5% 7,618,657