P146 follows the negative result from P145. It rolls the active execute-prefetch repair policy back to the P144 one-word budget, then shadow-counts several candidate usefulness predicates.
| check | result |
|---|---|
| Verilator build | PASS |
| BusyBox userspace build | PASS |
| Linux image rebuilt with P146 initramfs | PASS |
BusyBox shell workload reaches P146-FILE-OK | PASS |
| Aux-load queue full drops | PASS |
| Aux response errors/cancels | PASS |
| Hardened layout | NOT RUN |
| metric | P144 | P145 | P146 |
|---|---|---|---|
| post-load cycles | 219,161,535 | 220,074,276 | 220,667,218 |
| shell window cycles | 64,192,833 | 65,101,034 | 65,663,039 |
| retired instructions | 85,905,855 | 86,210,825 | 86,410,376 |
| CPI | 2.5512 | 2.5527 | 2.5537 |
| S_FETCH cycles | 7,601,896 | 7,621,660 | 7,642,687 |
| S_MEM cycles | 29,215,063 | 29,346,230 | 29,435,054 |
P146 is a speed FAIL: 1,470,206 cycles slower than P144. Since the active policy is meant to match P144, this is an audit-cost/noise result rather than a candidate speedup.
| predicate | opportunities | fills | first hits | repeat hits | first+repeat / fill |
|---|---|---|---|---|---|
seq_adjacent | 66,754 | 20,552 | 0 | 0 | 0.00% |
word_not_last | 27,251,657 | 26,593,038 | 559,031 | 181,183 | 2.78% |
uncompressed_not_last | 26,351,464 | 25,694,746 | 142,998 | 14,827 | 0.61% |
predicted_not_taken | 25,113,202 | 24,454,891 | 537,689 | 173,981 | 2.91% |
quiet_backend | 27,838,837 | 24,720,301 | 434,920 | 141,722 | 2.33% |
The P145 seq_adjacent idea is dead in this run: 20,552 fills, zero
later fetch hits. predicted_not_taken is the best single predicate, but
2.91% is still weak. That argues for either a strict composite guard or
stopping this execute-prefetch repair thread.
| class | repair fills | first hits | repeat hits | first+repeat ratio |
|---|---|---|---|---|
| demand fetch | 1,025,603 | 484,404 | 332,688 | 79.67% |
| execute prefetch | 29,178,276 | 560,266 | 181,237 | 2.54% |
| load prefetch | 2,443,160 | 134,968 | 15,586 | 6.16% |
| writeback prefetch | 409,477 | 171,106 | 54,023 | 54.98% |
| aux prefetch | 110,230 | 37,129 | 24,257 | 55.70% |
The good repair sources have not changed: demand, writeback-prefetch, and aux-prefetch still have high payback. Execute-prefetch is still the low-payback bucket.
- kernel banner to /init 117,338,463 53.3%
- /init to shell banner 1,089,335 0.5%
- shell banner to first command 35,947,562 16.3%
- echo command 1,649 0%
- uname -a 1,987,210 0.9%
- ls /bin /usr/share 32,967,878 15%
- cat sample file 2,713,230 1.2%
- touch/write/cat/rm /tmp file 10,308,899 4.7%
- 8x ash loop with file I/O 17,683,493 8%
- final marker 680 0%
- fetch 3.5% 7,642,687
- execute 39.2% 86,435,552
- mem 13.5% 29,715,088
- walker 1.2% 2,697,712
- writeback 39.2% 86,410,376
- mul/div 3.5% 7,764,087