P142 extends P141 by giving a second repair word to prefetch fills that are immediately consumed by the frontend. Demand-fetch lines still get two repair words. Plain auxiliary/background prefetch fills stay at one.
| check | result |
|---|---|
| Verilator build | PASS |
BusyBox shell workload reaches P142-FILE-OK | PASS |
| Aux-load queue full drops | PASS |
| Aux response errors/cancels | PASS |
| Hardened layout | NOT RUN |
| metric | P134 | P141 | P142 |
|---|---|---|---|
| post-load cycles | 218,247,567 | 219,252,781 | 218,856,863 |
| shell window cycles | 64,221,642 | 64,289,267 | 63,926,691 |
| retired instructions | 86,139,760 | 85,956,781 | 85,799,045 |
| CPI | 2.5336 | 2.5507 | 2.5508 |
| S_FETCH cycles | 7,617,695 | 7,613,755 | 7,598,133 |
| S_MEM cycles | 27,799,343 | 29,236,897 | 29,199,830 |
P142 is a speed PASS. It beats P141 by 362,576 shell-window cycles, P140 by 1,108,790 cycles, and P134 by 294,951 cycles.
| repair-usefulness counter | P141 | P142 |
|---|---|---|
| background repair word fills | 32,151,196 | 42,853,866 |
| first later fetch hits | 1,351,543 | 1,575,004 |
| repeat later fetch hits | 602,447 | 663,894 |
| first-hit usefulness ratio | 4.20% | 3.68% |
| first + repeat fetch-hit ratio | 6.08% | 5.22% |
| P142 policy bucket | count |
|---|---|
| repair starts | 51,970,292 |
| demand second-word grants | 2,636,400 |
| prefetch second-word grants | 48,846,507 |
| budget stops | 17,527,553 |
| already-valid word skips | 106,365 |
| budget at end | 0 |
The ratio got worse, but the absolute useful-hit count improved enough to win. That is the useful story: P139’s full repair stream was too expensive, P141’s demand-only second word was nearly right, and P142 shows that some prefetch repair deserves budget too.
The next rung should split the prefetch-consumer bucket. Right now the new counter says 48.85M prefetch second-word grants, which is too broad. P143 should identify which prefetch consumers actually pay for themselves.
- kernel banner to /init 117,353,521 53.8%
- /init to shell banner 1,104,548 0.5%
- shell banner to first command 35,843,251 16.4%
- echo command 1,649 0%
- uname -a 2,251,657 1%
- ls /bin /usr/share 31,655,825 14.5%
- cat sample file 3,007,339 1.4%
- touch/write/cat/rm /tmp file 10,744,396 4.9%
- 8x ash loop with file I/O 16,265,145 7.5%
- final marker 680 0%
- fetch 3.5% 7,598,133
- execute 39.2% 85,823,609
- mem 13.5% 29,477,350
- walker 1.2% 2,659,820
- writeback 39.2% 85,799,045
- mul/div 3.4% 7,497,190