Operación de recuperación de TSC de la CPU, especialmente en un entorno de múltiples procesadores multinúcleo

En el mundo de Linux, para obtener nano segundos de temporizador de precisión / clockticks uno puede usar:

#include <sys/time.h>

int foo()
{
   timespec ts;

   clock_gettime(CLOCK_REALTIME, &ts); 
   //--snip--      
}

Esta respuesta sugiere unasm enfoque para consultar directamente el reloj de la CPU con elRDTSC instrucción.

En una arquitectura de varios núcleos y varios procesadores, ¿cómo se sincroniza este reloj con el valor del temporizador a través de múltiples núcleos / procesadores? Mi entendimiento es que allí en la esgrima inherente se está haciendo. ¿Es correcto este entendimiento?

¿Puede sugerir alguna documentación que explique esto en detalle? Estoy interesado en las microarquitecturas Intel Nehalem y Sandy Bridge.

EDITAR

Limitar el proceso a un solo núcleo o CPU no es una opción, ya que el proceso es realmente enorme (en términos de recursos consumidos) y desea utilizar de manera óptima todos los recursos en la máquina que incluyen todos los núcleos y procesadores.

Editar

Gracias por la confirmación de que el TSC está sincronizado entre núcleos y procesadores. Pero mi pregunta original es ¿cómo se hace esta sincronización? ¿Es con algún tipo de esgrima? ¿Conoce alguna documentación pública?

Conclusión

Gracias por todas las entradas: Aquí está la conclusión para esta discusión: Los TSC se sincronizan en la inicialización utilizando un RESET que ocurre en todos los núcleos y procesadores en un sistema de múltiples procesadores / núcleos. Y después de eso, cada Núcleo está solo. Los TSC se mantienen invariantes con un bucle de bloqueo de fase que normalizaría las variaciones de frecuencia y, por lo tanto, las variaciones de reloj.dentro de un núcleo dado y así es como el TSC permanece sincronizado entre los núcleos y los procesadores.

Respuestas a la pregunta(4)

Su respuesta a la pregunta