[ CnUnix ] in KIDS 글 쓴 이(By): LinLing (링링) 날 짜 (Date): 2005년 8월 10일 수요일 오후 10시 31분 59초 제 목(Title): Re: 계산시간 측정? 최근 저도 ARM계열 시스템에서 비슷한 문제를 겪어봤는데 꽤 골치아픈 문제더군요. 그렇게 짧은 시간을 (수 msec 이하) 정확하게 잴 수 있는 architecture / OS independent 한 방법이 있을까요? gettimeofday()얘기가 나왔는데 Linux 커널의 gettimeofday()는 커널 버전과 system architecture에 따라 죄다 구현이 다릅니다. 그나마 펜티엄 이후의 x86 gettimeofday()는 TSC 사용하는 걸로 통일된 것 같은데, ARM 계열의 코드를 보면 같은 Instruction Architecture를 가지는 CPU라도 SoC나 보드에 따라 gettimeofday()의 구현이 제각각 다르더군요. ARM기반 칩이라도 코어 칩의 기능을 이용해서 sub-jiffy resolution을 얻을 수 있는 경우가 있는가 하면 Z80시절처럼 외장 타이머의 인터럽트에 의존하는 놈도 있고... -_-; 갑자기 POSIX의 gettimeofday() 스펙에서는 최소 해상도를 어떻게 규정하고 있는지 궁금하네요. 어쨌든, x86계열이면 context switch, page fault 등의 요인을 제거한 후 RDTSC등의 어셈블리 코드를 집어넣는게 가장 무난한 방법 같은데요. 프로그래밍 시점에서 cache miss나 conditional branch를 완벽하게 예측할 수 있는 단순한 코드라면 어셈블리어로 뽑아놓고 손으로 계산하는게 더 정확할겁니다. |