By: Travis Downs (travis.downs.delete@this.gmail.com), March 6, 2021 12:00 am
Room: Moderated Discussions
To work around an erratum, it looks like move elimination has been disabled in Ice Lake, at least as far back as the November microcode update (surprised nobody noticed until now).
I guess this might regress some workloads by a few %.
If anyone has TGL or any other post-ICL hardware, you could test this out by running uarch-bench like so:
The second version uses perf and gives extra-definitive confirmation (but requires perf paranoid to be set up and rdpmc access, so sometimes is a bit trickier: try running as root).
Results like so indicate no elimination (smaller numbers indicate elimination):
I guess this might regress some workloads by a few %.
If anyone has TGL or any other post-ICL hardware, you could test this out by running uarch-bench like so:
./uarch-bench.sh --test-name=misc/mov-elim*
./uarch-bench.sh --timer=perf --extra-events=uops_executed.core --test-name=misc/mov-elim*
The second version uses perf and gives extra-definitive confirmation (but requires perf paranoid to be set up and rdpmc access, so sometimes is a bit trickier: try running as root).
Results like so indicate no elimination (smaller numbers indicate elimination):
** Running group misc : Miscellaneous tests **
Benchmark Cycles uops_e
8 chained moves 7.99 9.00
8 chained movs and inc 8.00 9.00