Since the RDTSC is independent of any input (it does not accept any arguments), in principle, the OOO pipeline will start it as soon as possible. The reason you add instructions for serialization before it prevents RDTSC from executing earlier.
There is an answer from John McCalpin here , this may seem useful to you. It explains the LLC reordering for the RDTSCP instruction (which behaves differently than RDTSC), which you prefer to use instead.
source share