P143 keeps P142’s repair policy and adds attribution. Every background-repaired I-cache word now records which foreground fill class created it, and the harness reports first/repeat later fetch hits per class.
| check | result |
|---|---|
| Verilator build | PASS |
BusyBox shell workload reaches P143-FILE-OK | PASS |
| Classifier totals match global counters | PASS |
| Aux-load queue full drops | PASS |
| Aux response errors/cancels | PASS |
| Hardened layout | NOT RUN |
| metric | P142 | P143 |
|---|---|---|
| post-load cycles | 218,856,863 | 219,787,362 |
| shell window cycles | 63,926,691 | 64,756,820 |
| retired instructions | 85,799,045 | 86,097,554 |
| CPI | 2.5508 | 2.5528 |
| S_FETCH cycles | 7,598,133 | 7,607,357 |
| S_MEM cycles | 29,199,830 | 29,346,505 |
P143 is an audit PASS, not a speed PASS. The shell window is 830,129 cycles slower than P142, but the new counters answer the policy question.
| class | repair fills | first hits | repeat hits | first ratio | first+repeat ratio |
|---|---|---|---|---|---|
| demand fetch | 913,159 | 428,227 | 279,295 | 46.90% | 77.48% |
| execute prefetch | 39,099,312 | 811,814 | 293,944 | 2.08% | 2.83% |
| load prefetch | 2,481,880 | 131,692 | 13,985 | 5.31% | 5.87% |
| writeback prefetch | 390,678 | 166,954 | 52,189 | 42.73% | 56.09% |
| steer prefetch | 0 | 0 | 0 | 0.00% | 0.00% |
| aux prefetch | 109,323 | 36,401 | 24,161 | 33.30% | 55.40% |
| unknown | 0 | 0 | 0 | 0.00% | 0.00% |
The answer is blunt: execute-prefetch repair creates 39.10M of 42.99M repair fills and has the weakest payback. Demand, writeback-prefetch, and aux-prefetch repairs have high ratios; load-prefetch repair is much smaller and modestly useful.
P144 should stop giving execute-prefetch fills a second repair word by default, while keeping the higher-payback classes.
- kernel banner to /init 117,353,435 53.6%
- /init to shell banner 1,091,269 0.5%
- shell banner to first command 35,956,986 16.4%
- echo command 1,649 0%
- uname -a 2,609,410 1.2%
- ls /bin /usr/share 31,580,524 14.4%
- cat sample file 3,054,146 1.4%
- touch/write/cat/rm /tmp file 10,989,474 5%
- 8x ash loop with file I/O 16,520,937 7.5%
- final marker 680 0%
- fetch 3.5% 7,607,357
- execute 39.2% 86,122,222
- mem 13.5% 29,625,509
- walker 1.2% 2,681,536
- writeback 39.2% 86,097,554
- mul/div 3.5% 7,651,468