2009-09-04 2 views
1

RDTSC (읽기 타임 스탬프 카운터)를 사용할 수 있지만 동적 시계 조정을 수행하는 최신 프로세서에서는 반환 된 클럭 사이클의 수에 정확한 기간이 반영되지 않습니다. 시각. 나는 동적 인 시계 조정이 무력화 될 수 있다고 생각하지만, Nehalem과 같은 새로운 프로세서에서는 속도 향상의 이점을 잃어 버리게됩니다. 서브 마이크로 초 시간 측정에 사용할 수있는 고정밀 고정 주파수 카운터가 있습니까?인텔 프로세서에서 정확한 고정밀 타임 스탬프를 얻는 방법

답변

2

옛날 옛적에 누군가 원자 시계를 사용하여 커널 코드를 벤치마킹하는 마스터 논문을 보았습니다. 그는 시계가 줍는 선을 치고 시계는 시간을 기록 할 수 있었다. 이 접근법의 명백한 단점은 추가적인 (상당히 비싼) 하드웨어가 필요하다는 것입니다. 그러나 이것은 문제 일 수도 있고 아닐 수도 있습니다.

1

좋은 질문입니다. 그것의 잘 인식 된 문제.

"솔루션"은 시스템의 프로세서/칩셋에 포함되거나 포함될 수있는 HPET (High Precision Event Timer)입니다. 그것은 10 MHz와 500 MHz 사이에서 실행됩니다.

Windows의 경우 QueryPerformanceCounter()는 을 사용합니다. 가장 유용한 소스는입니다. 따라서 HPET가 사용 가능하다면 RDETC 또는 그렇지 않은 경우 다른 소스를 의미합니다. 내가 (알고있는) 알리는 유일한 방법은 주파수를 계산하고 소스를 추론하는 것입니다.

More info here... 이것은 간단해야합니다!

정보의 유용한 비트 GetSystemTimeAsFileTime() (및 기타는 Win32 방법) 당신에게 해상도을 줄 것이다하지만, 당신이 (15ms의 ~ <) 연속으로 너무 빨리 호출하면이 때문에 같은 결과를 반환하는 것입니다 커널이 업데이트하는 방식으로 ...

관련 문제