P145 tries the obvious repair-policy refinement after P144. Execute-prefetch fills get a second repair word only when the already-returned prefetch instruction says the next sequential PC is the adjacent word in the same I-cache line.
| check | result |
|---|---|
| Verilator build | PASS |
BusyBox shell workload reaches P145-FILE-OK | PASS |
| Aux-load queue full drops | PASS |
| Aux response errors/cancels | PASS |
| Hardened layout | NOT RUN |
| metric | P142 | P144 | P145 |
|---|---|---|---|
| post-load cycles | 218,856,863 | 219,161,535 | 220,074,276 |
| shell window cycles | 63,926,691 | 64,192,833 | 65,101,034 |
| retired instructions | 85,799,045 | 85,905,855 | 86,210,825 |
| CPI | 2.5508 | 2.5512 | 2.5527 |
| S_FETCH cycles | 7,598,133 | 7,601,896 | 7,621,660 |
| S_MEM cycles | 29,199,830 | 29,215,063 | 29,346,230 |
This is a speed FAIL. P145 is 908,201 cycles slower than P144 and 1,174,343 cycles slower than P142.
| counter | P144 | P145 | delta |
|---|---|---|---|
| background repair fills | 32,979,525 | 33,087,489 | +107,964 |
| first later fetch hits | 1,383,118 | 1,385,394 | +2,276 |
| repeat later fetch hits | 606,411 | 607,427 | +1,016 |
| demand second-word grants | 2,728,297 | 2,736,584 | +8,287 |
| prefetch second-word grants | 22,115,553 | 22,281,434 | +165,881 |
The condition is too narrow to recover the useful locality P142 found, and the extra traffic is not buying enough hits to pay for itself.
| class | repair fills | first hits | repeat hits | first+repeat ratio |
|---|---|---|---|---|
| demand fetch | 1,023,366 | 483,130 | 332,364 | 79.68% |
| execute prefetch | 29,110,829 | 559,692 | 181,269 | 2.55% |
| load prefetch | 2,435,053 | 134,976 | 15,577 | 6.18% |
| writeback prefetch | 408,650 | 171,039 | 54,030 | 55.07% |
| steer prefetch | 0 | 0 | 0 | 0.00% |
| aux prefetch | 109,591 | 36,557 | 24,187 | 55.43% |
| unknown | 0 | 0 | 0 | 0.00% |
The next rung should be audit-only: keep P144’s active behavior and count multiple candidate execute-prefetch usefulness predicates before changing the repair budget again.
- kernel banner to /init 117,333,618 53.5%
- /init to shell banner 1,105,760 0.5%
- shell banner to first command 35,905,045 16.4%
- echo command 1,649 0%
- uname -a 2,439,451 1.1%
- ls /bin /usr/share 32,110,057 14.6%
- cat sample file 3,158,643 1.4%
- touch/write/cat/rm /tmp file 10,985,859 5%
- 8x ash loop with file I/O 16,404,695 7.5%
- final marker 680 0%
- fetch 3.5% 7,621,660
- execute 39.2% 86,235,573
- mem 13.5% 29,625,182
- walker 1.2% 2,695,859
- writeback 39.2% 86,210,825
- mul/div 3.5% 7,683,461