journal 2026-05-06

P121 - ROB commit model

P121 grew the P120 PRF sketch into a one-entry ROB lifetime model. The important part is still negative space: no architectural behavior changes, no out-of-order execution, no scheduler. The record allocates a new physical tag in S_EXECUTE, keeps the old tag in a ROB-shaped slot, frees it at S_WB commit, and rolls the mapping back if a trap/flush arrives while the slot is live.

The BusyBox shell workload passed:

P121-FILE-OK @ cycle 218,473,688
post-load cycles  : 218,473,545
shell window      : 64,541,922
instr retired     : 86,265,218
CPI               : 2.5326

The new counters are the reason for the rung:

PRF allocs      : 59,182,360
PRF commits     : 59,182,181
PRF frees       : 59,182,360
max live PRFs   : 33
ROB allocs      : 59,182,360
ROB commits     : 59,182,181
ROB flushes     : 179
ROB busy cycles : 83,705,603
ROB full waits  : 0
missing commits : 0

So the one-entry model is internally balanced: commits plus flushes explain frees, and no writeback tried to commit without a shadow ROB entry. The next useful backend rung is a tiny multi-entry ROB/free-list sketch, because only then will live physical-register pressure rise beyond the one-in-flight shape.