Following in footsteps of not-total-failure of the first schedule profile
produced with the new next-gen tools like llvm-exegesis (BdVer2 (Piledriver), D52779),
let's continue the trend.
Here i present the scheduler model for AMD K10 CPU.
Much like with D52779, this is pretty much exclusively based on llvm-exegesis,
with some cross-referencing with some other sources (Agner, AMD SOG).
The time doesn't stand still, llvm-exegesis saw many improvements since
i've originally started looking into BdVer2 model, so this time around it took
not 6 months but just ~3 weeks :S
This is by no means perfect. But i'm actually going to claim that it is in
a comparable or better shape than the BdVer2 model was at the time of commit.
I didn't do any really heavy benchmarking, but i did use "internal" public real-world benchmark
i understand - RawSpeed raw image decoding library.
Aggregate | Wall time change | Total CPU time change |
min | -18.4600% | -15.7800% |
max | 6.9000% | 6.8900% |
median | -0.9050% | -0.8950% |
average | -0.8623% | -0.7703% |
sqrt(sum(x^2)) | 0.2624 | 0.2442 |
cbrt(sum(x^3)) | -0.1775 | -0.1479 |
So looks like an improvement overall, with some regressions, not unexpectedly.
Some further cleanup will be needed for sure, i've put my eye on some inconsistencies in sched model,
but i don't feel like cleaning them up right away via InstRW because that will relieve immediate pressure
and may delay proper cleanup via splitting SchedWrite classes.
I shouldn't promise anything, but i'm hoping to look into AMD K8 afterwards.
llvm_unreachable ?