CPP Linux: о RDTSC
Я использую следующую функцию в моем коде:
static __inline__ unsigned long long rdtsc(void){
unsigned long long int x;
__asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
return x;
}
Эта функция возвращает количество тактов с момента последней загрузки? Где я могу найти документацию по этой функции?
1 ответ
RDTSC
получает количество циклов процессора с момента последнего сброса, см. википедию.
Руководство по набору инструкций Intel, том 2А и В, в качестве более надежного источника:
Процессор монотонно увеличивает счетчик меток времени MSR каждый тактовый цикл и сбрасывает его в 0 при каждом сбросе процессора. См. "Счетчик меток времени" в главе 16 Руководства разработчика программного обеспечения для архитектуры Intel® 64 и IA-32, том 3B, для получения подробной информации о поведении счетчика меток времени.
в качестве примечания: вы не должны излучать байты, а используйте RTDSC
инструкция мнемоническая, делает ее намного более читаемой.