CPP Linux: о RDTSC - PullRequest
       28

CPP Linux: о RDTSC

3 голосов
/ 16 января 2012

Я использую следующую функцию в моем коде:

static __inline__ unsigned long long rdtsc(void){
  unsigned long long int x;
  __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
  return x;
}

Эта функция возвращает количество тактов с момента последней загрузки? Где я могу найти документацию по этой функции?

1 Ответ

1 голос
/ 16 января 2012

RDTSC получает количество циклов процессора с момента последнего сброса, см. wikipedia .

Руководство по набору инструкций Intel, том 2A и B, как более надежный источник:

Процессор монотонно увеличивает счетчик меток времени MSR каждый такт и сбрасывает его на 0 каждый раз, когда процессор сбрасывается. Смотрите «Счетчик меток времени» в главе 16 Intel® 64 и IA-32 Руководство разработчика программного обеспечения для архитектуры, том 3B, для конкретных сведения о поведении счетчика меток времени.

в качестве примечания: вы не должны излучать байты, просто используйте действительную мнемонику RTDSC инструкции, что делает ее намного более читаемой.

...