CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): 구르미 (구르미)
날 짜 (Date): 2007년 1월 16일 화요일 오후 07시 30분 09초
제 목(Title): Re: [Q] SMP에서 rdtsc가 돌려주는 값??


RDTSC가 읽어 들이는 clock tick counter register는 각 CPU마다 있는 것으로 
booting이후의 clock tick count 정보를 담고 있는데 시간이 오래 흐르다 보면 
각 CPU마다 값이 달라질 수 있다는 것은 오래 전부터 잘 알려진 사실입니다.

분산시스템에서 NTP가 time drift를 해결하려고 하는 것과 scale만 다를 뿐  
같은 맥락의 문제이지요.
 
Linux시스템에서 이를 해결하기 위한 라이브러리(+소스)를  누군가가 공개한 
적이 있었는 데 너무 오래되어서 레퍼런스를 기억을 못하겠네요.

아예 커널 레벨에서 정기적으로 couter regsiter들을 reset하는 방법도 제안된
적이 있었는 데 현재 채택되지는 않고 있는 듯 합니다.

제가 프로그램을 micro measurement할 때 애용하는 거라 관심이 많았죠.

원래부터 tsc register가 64bit이었는데 64bit architecture가 되었는데도
backward compatibility를 유지하느라 rdtsc를 실행하고 나면 eax와 ebx에
결과가 기록되어서 다시 합쳐 주어야 한다는 점이 매우 안타깝던 참이었습니다.

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.