Home | History | Annotate | Download | only in x86
History log of /src/sys/rump/librump/rumpkern/arch/x86/rump_x86_cpu_counter.c
RevisionDateAuthorComments
 1.2  15-Jun-2020  msaitoh Serialize rdtsc using with lfence, mfence or cpuid to read TSC more precisely.

x86/x86/tsc.c rev. 1.67 reduced cache problem and got big improvement, but it
still has room. I measured the effect of lfence, mfence, cpuid and rdtscp.
The impact to TSC skew and/or drift is:

AMD: mfence > rdtscp > cpuid > lfence-serialize > lfence = nomodify
Intel: lfence > rdtscp > cpuid > nomodify

So, mfence is the best on AMD and lfence is the best on Intel. If it has no
SSE2, we can use cpuid.

NOTE:
- An AMD's document says DE_CFG_LFENCE_SERIALIZE bit can be used for
serializing, but it's not so good.
- On Intel i386(not amd64), it seems the improvement is very little.
- rdtscp instruct can be used as serializing instruction + rdtsc, but
it's not good as [lm]fence. Both Intel and AMD's document say that
the latency of rdtscp is bigger than rdtsc, so I suspect the difference
of the result comes from it.
 1.1  12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.10.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1  12-Feb-2014  tls file rump_x86_cpu_counter.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1  12-Feb-2014  yamt file rump_x86_cpu_counter.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2  18-May-2014  rmind sync with head
 1.1.4.1  12-Feb-2014  rmind file rump_x86_cpu_counter.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000

RSS XML Feed