RDTSCP を使用して LFENCE;RDTSC シーケンスを置き換え、またプロセッサ ID を取得して、スレッドが別の CPU に再スケジュールされた後に TSC 値を比較していることがわかるようにします。
古いマシンで RDTSCP を実行しないようにするために、(libcpuid を使用して) CPUID をチェックした後に RDTSC にフォールバックします。CPUID 呼び出しの代わりに、gcc の複数ターゲット属性機能を使用してみたいと思います。
int core2_func (void) __attribute__ ((__target__ ("arch=core2")));
gcc マニュアルには、多数の CPU ファミリ (haswell、skylake など) がリストされています。最初に RDTSCP を導入した CPU ファミリを見つけるにはどうすればよいですか?