XiangShan
XiangShan copied to clipboard
bpu: disable ittage when no indirect branch
Quick and dirty approach. If the timing doesn't meet, will try ahead pipeline.
[Generated by IPC robot] commit: 8e003d09b744bcf603340eaf9b04391d75d17fbc
commit | astar | copy_and_run | coremark | gcc | gromacs | lbm | linux | mcf | microbench | milc | namd | povray | wrf | xalancbmk |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8e003d0 | 1.854 | 0.449 | 2.103 | 1.185 | 2.170 | 2.181 | 2.332 | 0.973 | 1.412 | 1.294 | 2.742 | 2.592 | 2.283 | 2.951 |
master branch:
commit | astar | copy_and_run | coremark | gcc | gromacs | lbm | linux | mcf | microbench | milc | namd | povray | wrf | xalancbmk |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
dc5a918 | ||||||||||||||
bad6084 | ||||||||||||||
c686adc | 1.854 | 0.449 | 2.103 | 1.182 | 2.170 | 2.181 | 2.335 | 0.972 | 1.386 | 1.294 | 2.742 | 2.589 | 2.283 | 2.951 |
bc3d558 | 1.854 | 0.449 | 2.100 | 1.182 | 2.170 | 2.181 | 2.329 | 0.972 | 1.380 | 1.294 | 2.742 | 2.589 | 2.283 | 2.951 |
a58f171 | 1.854 | 0.449 | 2.104 | 1.182 | 2.170 | 2.181 | 2.329 | 0.972 | 1.386 | 1.294 | 2.742 | 2.586 | 2.283 | 2.951 |
ff74867 | 1.898 | 0.448 | 2.105 | 1.186 | 2.173 | 2.175 | 2.335 | 0.960 | 1.372 | 1.288 | 2.745 | 2.583 | 2.285 | 2.958 |
20e09ab | 1.898 | 0.448 | 2.105 | 1.186 | 2.173 | 2.175 | 2.333 | 0.960 | 1.372 | 1.288 | 2.745 | 2.584 | 2.285 | 2.958 |
aab8ef9 | 1.862 | 0.450 | 2.092 | 1.174 | 2.178 | 2.174 | 2.331 | 0.966 | 1.379 | 1.253 | 2.738 | 2.556 | 2.283 | 2.930 |
d67f093 | 1.862 | 0.450 | 2.091 | 1.189 | 2.178 | 2.174 | 2.334 | 0.966 | 1.389 | 1.253 | 2.738 | 2.566 | 2.283 | 2.930 |
545d7be | 1.862 | 0.450 | 2.092 | 1.175 | 2.178 | 2.174 | 2.333 | 0.966 | 1.370 | 1.253 | 2.738 | 2.556 | 2.283 | 2.930 |
This PR may introduce timing violations. Wait for PT result.
[Generated by IPC robot] commit: 2a0baffab464332dba7aa7318d1413361c270975
commit | astar | copy_and_run | coremark | gcc | gromacs | lbm | linux | mcf | microbench | milc | namd | povray | wrf | xalancbmk |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2a0baff | 1.854 | 0.450 | 2.103 | 1.190 | 2.468 | 2.593 | 2.331 | 0.962 | 1.378 | 1.427 | 3.123 | 2.649 | 2.451 | 2.960 |
master branch:
commit | astar | copy_and_run | coremark | gcc | gromacs | lbm | linux | mcf | microbench | milc | namd | povray | wrf | xalancbmk |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1e018fb | 1.854 | 0.450 | 2.103 | 1.190 | 2.468 | 2.593 | 2.330 | 0.962 | 1.377 | 1.427 | 3.123 | 2.639 | 2.451 | 2.960 |
3c71816 | 1.854 | 0.450 | 2.103 | 1.190 | 2.468 | 2.593 | 2.330 | 0.962 | 1.377 | 1.427 | 3.123 | 2.639 | 2.451 | 2.960 |
dfe034b | 1.854 | 0.449 | 2.103 | 1.182 | 2.170 | 2.181 | 2.328 | 0.972 | 1.386 | 1.294 | 2.742 | 2.592 | 2.283 | 2.951 |
bdc1606 | 1.854 | 0.449 | 2.101 | 1.182 | 2.170 | 2.181 | 2.329 | 0.973 | 1.386 | 1.294 | 2.742 | 2.589 | 2.283 | 2.951 |
dc5a918 | 1.854 | 0.449 | 2.103 | 1.181 | 2.170 | 2.181 | 2.329 | 0.973 | 1.386 | 1.294 | 2.742 | 2.589 | 2.283 | 2.951 |
bad6084 | 1.854 | 0.449 | 2.103 | 1.182 | 2.170 | 2.181 | 2.329 | 0.972 | 1.386 | 1.294 | 2.742 | 2.589 | 2.283 | 2.951 |
c686adc | 1.854 | 0.449 | 2.103 | 1.182 | 2.170 | 2.181 | 2.335 | 0.972 | 1.386 | 1.294 | 2.742 | 2.589 | 2.283 | 2.951 |
bc3d558 | 1.854 | 0.449 | 2.100 | 1.182 | 2.170 | 2.181 | 2.329 | 0.972 | 1.380 | 1.294 | 2.742 | 2.589 | 2.283 | 2.951 |
a58f171 | 1.854 | 0.449 | 2.104 | 1.182 | 2.170 | 2.181 | 2.329 | 0.972 | 1.386 | 1.294 | 2.742 | 2.586 | 2.283 | 2.951 |
ff74867 | 1.898 | 0.448 | 2.105 | 1.186 | 2.173 | 2.175 | 2.335 | 0.960 | 1.372 | 1.288 | 2.745 | 2.583 | 2.285 | 2.958 |
On dhrystone, around 82% of BPU fire now does not use ITTAGE.
However, ITTAGE is literally unused is dhrystone (see ittage_provided_at_pred below)
[PERF ][time= 68488] TOP.SimTop.l_soc.core_with_l2.core.frontend.bpu.predictors.ittage: ittage_closed_due_to_uftb_info, 35840
[PERF ][time= 68488] TOP.SimTop.l_soc.core_with_l2.core.frontend.bpu.predictors.ittage: ittage_used, 7778
[PERF ][time= 68488] TOP.SimTop.l_soc.core_with_l2.core.frontend.bpu.predictors.ittage: ittage_provided_at_pred, 21
The other 20% ITTAGE usage is due to uftb miss when no branch is detected.
The 20% can be further optimized after #2963 is ready. If uftb miss && ftb closed, usually means there is no branch, and ITTAGE is obviously useless.
Timing doesn't meet, so turn to a less aggressive plan.